Page 168 -
P. 168

6.1   Architectural design decisions  151


                                 6.1 Architectural design decisions


                                       Architectural design is a creative process where you design a system organization
                                       that will satisfy the functional and non-functional requirements of a system. Because
                                       it is a creative process, the activities within the process depend on the type of system
                                       being developed, the background and experience of the system architect, and the
                                       specific requirements for the system. It is therefore useful to think of architectural
                                       design as a series of decisions to be made rather than a sequence of activities.
                                         During the architectural design process, system architects have to make a number
                                       of  structural  decisions  that  profoundly  affect  the  system  and  its  development
                                       process. Based on their knowledge and experience, they have to consider the follow-
                                       ing fundamental questions about the system:


                                       1.  Is there a generic application architecture that can act as a template for the sys-
                                          tem that is being designed?

                                       2.  How will the system be distributed across a number of cores or processors?
                                       3.  What architectural patterns or styles might be used?
                                       4.  What will be the fundamental approach used to structure the system?
                                       5.  How will the structural components in the system be decomposed into sub-
                                          components?
                                       6.  What strategy will be used to control the operation of the components in the system?

                                       7.  What architectural organization is best for delivering the non-functional require-
                                          ments of the system?

                                       8.  How will the architectural design be evaluated?
                                       9.  How should the architecture of the system be documented?

                                         Although  each  software  system  is  unique,  systems  in  the  same  application
                                       domain often have similar architectures that reflect the fundamental concepts of the
                                       domain. For example, application product lines are applications that are built around
                                       a core architecture with variants that satisfy specific customer requirements. When
                                       designing a system architecture, you have to decide what your system and broader
                                       application classes have in common, and decide how much knowledge from these
                                       application architectures you can reuse. I discuss generic application architectures in
                                       Section 6.4 and application product lines in Chapter 16.
                                         For embedded systems and systems designed for personal computers, there is
                                       usually only a single processor and you will not have to design a distributed architec-
                                       ture for the system. However, most large systems are now distributed systems in
                                       which the system software is distributed across many different computers. The
                                       choice of distribution architecture is a key decision that affects the performance and
   163   164   165   166   167   168   169   170   171   172   173