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