how do you do it?
You are given the job of chief architect, what do you do?
Architectural guidelines can largely take the form of patterns: design and analysis
patterns, process and organizational patterns. The job may include not just design
guidelines for the product itself, but also the method of developing it.
Big issues in architecture:
Performance — a system is no good unless it performs well.
But at the same time, the performance requirements must be balanced with decoupling.
The two are usually antagonistic, so a good architect must be able to judge how
to obtain the optimum for the application.
Decoupling — a maintainable design is well decoupled. Most of what
constitutes good architecture boils down to good vertical or horizontal
decoupling. Tools for mapping dependencies are useful in this area.
Layers — the design should be layered, and the guidelines for each layer considered separately.
Frameworks — many architectures involve constructing a central framework in which components fit
Languages — the model of the business domain is an essential starting point for defining the
communications between the components. At another level, defining an architecture can be
seen as defining a language in which to express the parts of the system you want to build.
Templates — design patterns can (in many cases) be seen as template designs,
together with advice on when and how to use them.
Collaborations — object design, particularly at the architectural level,
should focus on collaborations and the roles objects play in them: not on whole individual objects.
For example, the Observer pattern is about an interaction between objects, not about the whole behaviour of either of them.
Component kit — modern architecture is about how to make not just one system,
but many: a system may have different variants in different installations;
and even if it doesn't, it will exist in many versions, seen over a span of time.
To make any aspect of behaviour variable, encapsulate it in a separate plug-in component.
complete solutions for model-based architecture
(consultancy, courses, workshops, mentoring, seminars, development)