Program design The activity of progressing from a specification of some required program to a description of the program itself. Most phase models of the software life cycle recognize program design as one of the phases. The input to this phase is a specification of what the program is required to do. During the phase the design decisions are made as to how the program will meet these requirements, and the output of the phase is a description of the program in some form that provides a suitable basis for subsequent implementation.
Frequently the design phase is divided into two subphases,
one of coarse architectural design and one of detailed design. The architectural design produces a description of the program at a gross level; it is normally given in terms of the major components of the program and their interrelationships, the main algorithms that these components employ, and the major data structures. The detailed design then refines the architectural design to the stage where actual implementation can begin.
Software life cycle The complete lifetime of a software system from initial conception through to final obsolescence. The term is most commonly used in contexts where programs are expected to have a fairly long useful life, rather than in situations such as experimental programming where programs tend to be run a few times and then discarded. Traditionally the life cycle has been modeled as a number of successive phases, typically:
user requirements
system requirements
software requirements
overall design
detailed design
component production
component testing
integration and system testing
acceptance testing and release
operation and maintenance
Such a breakdown tends to obscure several important aspects of software production, notably the inevitable need for iteration around the various life-cycle activities in order to correct errors, modify decisions that prove to have been misguided, or reflect changes in the overall requirements for the system. It is also somewhat confusing to treat operation and maintenance as just another life-cycle phase since during this period it may be necessary to repeat any or all of the activities required for initial development of the system. There has therefore been a gradual movement toward more sophisticated models of the software life cycle. These provide explicit recognition of iteration, and often treat the activities of the operation and maintenance period simply as iterations occurring after rather than before release of the system for operational use.
No comments:
Post a Comment