Page 51 -
P. 51

22            PART ONE  THE PRODUCT AND THE PROCESS


                         •  How will the entity (and the solution) be realized?
                         •  How will the entity be constructed?
         WebRef
                         •  What approach will be used to uncover errors that were made in the design
         Crosstalk is a journal that  and construction of the entity?
         provides pragmatic
         software engineering  •  How will the entity be supported over the long term, when corrections, adap-
         advice and comment. On-  tations, and enhancements are requested by users of the entity.
         line issues are available at
         www.stsc.hill.af.mil
                       Throughout this book, we focus on a single entity—computer software.  To engineer
                       software adequately, a software engineering process must be defined. In this section,
                       the generic characteristics of the software process are considered. Later in this chap-
                       ter, specific process models are addressed.
                          The work associated with software engineering can be categorized into three
                       generic phases, regardless of application area, project size, or complexity. Each phase
                       addresses one or more of the questions noted previously.
         Software is engineered
         by applying three  The definition phase focuses on what. That is, during definition, the software engi-
         distinct phases that  neer attempts to identify what information is to be processed, what function and per-
         focus on definition,  formance are desired, what system behavior can be expected, what interfaces are to
         development, and  be established, what design constraints exist, and what validation criteria are required
         support.
                       to define a successful system. The key requirements of the system and the software
                       are identified. Although the methods applied during the definition phase will vary
                       depending on the software engineering paradigm (or combination of paradigms) that
                       is applied, three major tasks will occur in some form: system or information engi-
                       neering (Chapter 10), software project planning (Chapters 3, 5, 6, and 7), and require-
                       ments analysis (Chapters 11, 12, and 21).
         “Einstein argued that  The development phase focuses on how. That is, during development a software
          there must be a  engineer attempts to define how data are to be structured, how function is to be imple-
          simplified
          explanation of  mented within a software architecture, how procedural details are to be implemented,
          nature, because God  how interfaces are to be characterized, how the design will be translated into a pro-
          is not capricious or  gramming language (or nonprocedural language), and how testing will be performed.
          arbitrary. No such  The methods applied during the development phase will vary, but three specific tech-
          faith comforts the
          software engineer.  nical tasks should always occur: software design (Chapters 13–16, and 22), code gen-
          Much of the  eration, and software testing (Chapters 17, 18, and 23).
          complexity that he  The support phase focuses on change associated with error correction, adaptations
          must master is  required as the software's environment evolves, and changes due to enhancements
          arbitrary    brought about by changing customer requirements. The support phase reapplies the
          complexity.”
                       steps of the definition and development phases but does so in the context of existing
          Fred Brooks
                       software. Four types of change are encountered during the support phase:
                            Correction. Even with the best quality assurance activities, it is likely that the
                            customer will uncover defects in the software. Corrective maintenance changes
                            the software to correct defects.
                            Adaptation. Over time, the original environment (e.g., CPU, operating system,
                            business rules, external product characteristics) for which the software was
   46   47   48   49   50   51   52   53   54   55   56