Page 57 -
P. 57

40   Chapter 2   Software processes




                            Structured methods

                     Structured methods are an approach to software design in which graphical models that should be developed as
                     part of the design process are defined. The method may also define a process for developing the models and rules
                     that apply to each model type. Structured methods lead to standardized documentation for a system and are
                     particularly useful in providing a development framework for less-experienced and less-expert software developers.
                                    http://www.SoftwareEngineering-9.com/Web/Structured-methods/


                                    3.  Component design, where you take each system component and design how it will
                                        operate. This may be a simple statement of the expected functionality to be
                                        implemented, with the specific design left to the programmer. Alternatively, it may
                                        be a list of changes to be made to a reusable component or a detailed design model.
                                        The design model may be used to automatically generate an implementation.

                                    4.  Database design, where you design the system data structures and how these are
                                        to be represented in a database. Again, the work here depends on whether an
                                        existing database is to be reused or a new database is to be created.

                                       These activities lead to a set of design outputs, which are also shown in Figure 2.5.
                                    The detail and representation of these vary considerably. For critical systems, detailed
                                    design documents setting out precise and accurate descriptions of the system must be
                                    produced. If a model-driven approach is used, these outputs may mostly be diagrams.
                                    Where agile methods of development are used, the outputs of the design process may not
                                    be separate specification documents but may be represented in the code of the program.
                                       Structured methods for design were developed in the 1970s and 1980s and were
                                    the precursor to the UML and object-oriented design (Budgen, 2003). They rely on
                                    producing graphical models of the system and, in many cases, automatically generat-
                                    ing code from these models. Model-driven development (MDD) or model-driven
                                    engineering (Schmidt, 2006), where models of the software are created at different
                                    levels of abstraction, is an evolution of structured methods. In MDD, there is greater
                                    emphasis on architectural models with a separation between abstract implementation-
                                    independent models and implementation-specific models. The models are developed
                                    in sufficient detail so that the executable system can be generated from them. I discuss
                                    this approach to development in Chapter 5.
                                       The development of a program to implement the system follows naturally from the
                                    system design processes. Although some classes of program, such as safety-critical
                                    systems, are usually designed in detail before any implementation begins, it is more
                                    common for the later stages of design and program development to be interleaved.
                                    Software development tools may be used to generate a skeleton program from a
                                    design. This includes code to define and implement interfaces, and, in many cases, the
                                    developer need only add details of the operation of each program component.
                                       Programming is a personal activity and there is no general process that is usually
                                    followed. Some programmers start with components that they understand, develop
                                    these, and then move on to less-understood components. Others take the opposite
   52   53   54   55   56   57   58   59   60   61   62