Page 167 -
P. 167

150   Chapter 6   Architectural design


                                       Hofmeister et al. (2000) propose that a software architecture can serve firstly as a
                                    design plan for the negotiation of system requirements, and secondly as a means of
                                    structuring discussions with clients, developers, and managers. They also suggest
                                    that it is an essential tool for complexity management. It hides details and allows the
                                    designers to focus on the key system abstractions.
                                       System architectures are often modeled using simple block diagrams, as in Figure 6.1.
                                    Each box in the diagram represents a component. Boxes within boxes indicate that the
                                    component has been decomposed to sub-components. Arrows mean that data and or con-
                                    trol signals are passed from component to component in the direction of the arrows. You
                                    can see many examples of this type of architectural model in Booch’s software architec-
                                    ture catalog (Booch, 2009).
                                       Block diagrams present a high-level picture of the system structure, which people
                                    from different disciplines, who are involved in the system development process, can
                                    readily understand. However, in spite of their widespread use, Bass et al. (2003) dis-
                                    like informal block diagrams for describing an architecture. They claim that these
                                    informal diagrams are poor architectural representations, as they show neither the
                                    type of the relationships among system components nor the components’ externally
                                    visible properties.
                                       The apparent contradictions between practice and architectural theory arise
                                    because there are two ways in which an architectural model of a program is used:

                                    1.  As  a  way  of  facilitating  discussion  about  the  system  design A  high-level
                                        architectural view of a system is useful for communication with system stake-
                                        holders and project planning because it is not cluttered with detail. Stake-
                                        holders can relate to it and understand an abstract view of the system. They
                                        can then discuss the system as a whole without being confused by detail. The
                                        architectural model identifies the key components that are to be developed
                                        so managers  can  start  assigning  people  to  plan  the  development  of  these
                                        systems.
                                    2.  As a way of documenting an architecture that has been designed The aim here
                                        is to produce a complete system model that shows the different components in
                                        a system, their interfaces, and their connections. The argument for this is that
                                        such a detailed architectural description makes it easier to understand and evolve
                                        the system.

                                       Block diagrams are an appropriate way of describing the system architecture dur-
                                    ing the design process, as they are a good way of supporting communications
                                    between the people involved in the process. In many projects, these are often the
                                    only architectural documentation that exists. However, if the architecture of a system
                                    is to be thoroughly documented then it is better to use a notation with well-defined
                                    semantics for architectural description. However, as I discuss in Section 6.2, some
                                    people think that detailed documentation is neither useful, nor really worth the cost
                                    of its development.
   162   163   164   165   166   167   168   169   170   171   172