Page 170 -
P. 170

6.2   Architectural views  153


                                          readily be changed. Producers of data should be separated from consumers and
                                          shared data structures should be avoided.

                                         Obviously there is potential conflict between some of these architectures. For
                                       example, using large components improves performance and using small, fine-grain
                                       components improves maintainability. If both performance and maintainability are
                                       important system requirements, then some compromise must be found. This can
                                       sometimes be achieved by using different architectural patterns or styles for different
                                       parts of the system.
                                         Evaluating an architectural design is difficult because the true test of an architec-
                                       ture is how well the system meets its functional and non-functional requirements
                                       when it is in use. However, you can do some evaluation by comparing your design
                                       against reference architectures or generic architectural patterns. Bosch’s (2000)
                                       description of the non-functional characteristics of architectural patterns can also be
                                       used to help with architectural evaluation.




                                 6.2 Architectural views


                                       I explained in the introduction to this chapter that architectural models of a software
                                       system can be used to focus discussion about the software requirements or design.
                                       Alternatively, they may be used to document a design so that it can be used as a basis
                                       for more detailed design and implementation, and for the future evolution of the sys-
                                       tem. In this section, I discuss two issues that are relevant to both of these:

                                       1.  What views or perspectives are useful when designing and documenting a sys-
                                          tem’s architecture?
                                       2.  What notations should be used for describing architectural models?

                                         It is impossible to represent all relevant information about a system’s architecture in
                                       a single architectural model, as each model only shows one view or perspective of the
                                       system. It might show how a system is decomposed into modules, how the run-time
                                       processes interact, or the different ways in which system components are distributed
                                       across a network. All of these are useful at different times so, for both design and doc-
                                       umentation, you usually need to present multiple views of the software architecture.
                                         There are different opinions as to what views are required. Krutchen (1995), in
                                       his well-known 4+1 view model of software architecture, suggests that there should
                                       be four fundamental architectural views, which are related using use cases or scenar-
                                       ios. The views that he suggests are:


                                       1.  A logical view, which shows the key abstractions in the system as objects or
                                          object classes. It should be possible to relate the system requirements to entities
                                          in this logical view.
   165   166   167   168   169   170   171   172   173   174   175