Software design
Common misunderstandings
(by experience):
-
A design tool can solve a design
problem
-
A design language (as UML) can
solve a design problem
Unfortunately:
-
A design tool can only support
to draw diagrams based on a design language
-
A design language is only a
language (as natural languages), you must by yourselves invent everything
you say using this language- a language is necessary to be able to
speak, contents (for example to write a novel) is quite a different
thing
-
It takes a lot of time to
learn a new natural language, it is same with design languages- people
tolerate the situation with natural languages but not (usually) with design
languages
-
All design languages looks
better in books and training courses, because examples are chosen to
prove that a language is good and fits well to (all) problems
-
A design language is not (generally)
a fully formal method, you do not get one and only correct solution
to a problem using a design language, but as many solutions as there are
designers. Some of these are not good at all (the same situation again
as with natural languages, all poems written using some language are not
good, it depends on the writer!)
-
Any design language is not best
to all possible design problems
-
There are always situations
that some special feature coming up in a design process of a system is
difficult to express with the language used
-
Every time some design language
is fashionable, any language is not the final solution to for all times
and problems
-
It can be difficult to continue
with implementation, new problems arise
Then, how to learn a design
language?
-
Learn the basic notations and
principles (not necessary all of them)
-
Learn to use a design tool
-
Understand, that notations and
syntax are a very small first step in the learning process
-
The whole design process is
the most difficult thing, how to put everything together in a real system
Take CASE studies, see
how the language is used in a real system design, then notations are connected
to a common framework. This course unit uses the CASE- study method.
-
Learn more special features
of the language
-
Make lot of your own designs
(do not be disappointed if first of them are not good at all)
Some precautions
-
Do not start with a new design
language in a real life project, if you are not experienced and the
project has a tight time schedule or budget
-
In real life projects, budget
the learning process, make a prototype, probably first designs are
garbage
-
Be critical, notice also
critical opinions about any design language