The software life cycle
An early definition of software engineering was proposed by Fritz Bauer at the first major conference dedicated to the subject: the establishment and use of sound engineering principles in order to obtain economical mically software that is reliable and works efficiently on real machines [1].
Although extends more comprehensive definitions have been proposed, all reinforce [2] the importance of engineering discipline in software development.
Software Engineering is an outgrowth [3] of hardware and system engineering. it encompasses a set of three key elements-methods, tools, and procedures-that enable the manager to control the process of software development and provide the practitioner with a foundation for building high-quality software in a productive manner.
Fig.8-1 analyze strates the classic life cycle [4] paradigm for software engineering. sometimes called the "Waterfall Model [5]", the life cycle paradigm demands a systematic, sequential approach to software development that begins at the system level and progresses through analysis, design, coding, testing, and maintenance. modeled after the conventional engineering cycle, the life cycle paradigm encompasses the following activities:
Software lifecycle
The early definition of software engineering was proposed by frez Bauer at the first conference on the subject: the establishment and adoption of secure engineering principles, obtain a software discipline that can work reliably and efficiently on real machines in a frugal manner.
Although many more complex definitions are proposed. However, they all emphasize the importance of engineering rules in software development.
Software Engineering is the product of hardware and system engineering. It contains three key elements: methods, tools, and processes. These three elements enable managers to control the software development process and provide a foundation for software developers to build high-quality software.
Figure 8. 1 shows a classic example of the software engineering lifecycle. A life cycle example is sometimes called a waterfall model. It requires software development to start from the system level in a systematic and sequential manner in the stages of analysis, design, coding, testing, and maintenance. Imitating the regular engineering cycle, the life cycle examples of the software include the following activities.
System Engineering and analysis. because software is always part of a larger system, work begins by establishing requirements for all system elements and then allocating some subset of these requirements to software. this system view is essential when software must interface with other elements such as hardware, people, and databases. system Engineering and analysis encompass requirements gathering at the system level with a small amount of top-level [6] design and analysis.
software requirements analysis. the requirements gathering process is intensified and focuses specifically on software [7]. to understand the nature of the Program (s) to be built, the Software Engineer (Analyst) must understand the information domain for the software, as well as required function, performance, and interfacing. requirements for both the system and the software are already ented and reviewed with the customer.
Design. software design is actually a multistep process that focuses on three distinct attributes of the program: data structure, software architecture, and procedural detail. the design process translates requirements into a representation of the software that can be assessed for quality before coding begins. like requirements, the design is already ented and becomes part of the software configuration.
Coding. The design must be translated into a machine-readable form. The coding step performs this task. If design is already med in a detailed manner, coding can be accomplished mechanic istically.
Testing. once code has been generated, program testing begins. the testing process focuses on the logical internals of the software, assuring that all statements have been tested, and on the functional externals, that is, conducting tests to assure that defined input will produce actual results that agree with required results.
maintenance. software will undoubtedly, undergo change after it is delivered to the customer (a possible exception is embedded software ). change will occur because errors have been encountered, because the software must be adapted to accommodate changes in its external environment (E. g. A change required because of a new operating system or peripheral device), or because the customer requires functional or performance enhancements. software maintenance applies each of the preceding life cycle steps to an existing program rather than a new one.
the classic life cycle is the oldest and the most widely used paradigm for software engineering. however, over the past few years, criticism of the paradigm has eaused even active supporters to question its applicability in all situations. among the problems that are sometimes encountered when the classic Life Cycle paradigm is applied are:
(1) real projects rarely follow the sequential flow that the model proposes. iteration always occurs and creates problems in the application on the paradigm.
(2) it is often difficult in the beginning for the customer to state all requirements explicitly. the classic life cycle requires this and has difficulty accommodating the natural uncertainty that exists at the beginning of specified projects.
(3) the customer must have patience. a working version of the program (s) will not be available until late in the project time span. A major blunder undetected until the working program is reviewed can be disastrous.
Each of these problems is real. however, the classic Life Cycle paradigm has a definite and important place in software engineering work. it provides a template into which methods for analysis, design, coding, testing, and maintenance can be placed. the classic life cycle remains the most widely used procedural model for software engineering. while it does have weaknesses, it is significantly better than a haphazard approach to software development.
System Engineering and analysis because software is always part of a large system, work begins with creating requirements for all system elements, and then assigning a subset of the software requirements to the software. When the software must interface with other factors such as hardware, personnel, and databases, the system viewpoint is indispensable. System Engineering and analysis includes system-level requirement collection and a small amount of top-level design and analysis.
Software Requirement Analysis. Strengthen the requirement collection process, with a special focus on the software aspect to understand what needs to be establishedProgramThe nature of the Software Engineer ("analyst") must understand the scope of the software information and the required functions, performance, and interfaces. Document System and software requirements and review them with the customer.
Design. Software design is actually a multi-step process. It focuses on three notable features of the program: data structure, software system check, and process details. Prior to coding, the design process translates requirements into evaluable quality software representation. As required, the design should also document and become part of the software configuration.
Encoding. The design must be translated into machine readable form. The coding stage is to do this. If the design is detailed, coding can be done mechanically.
Test. OnceCodeGenerate and test the program. The testing process focuses on the internal logic and external functions of the software. For the former, it mainly ensures that all statements are tested. For the latter, it mainly ensures that the defined input can produce actual results that conform to the requirements.
Maintenance. There is no doubt that the software must be modified after being delivered to the user (except for embedded software ). Due to some errors, the software must be adjusted to adapt to changes in the external environment (for example, changes due to new operating systems or external devices) or user requirements to improve functionality and performance, therefore, modification is inevitable. Each step of software maintenance in the aforementioned cycle applies to existing programs (not new programs ).
The classic life cycle is the earliest and most widely used example in software engineering. However, in recent years there has been criticism of this example, and even the active supporters of this example have questioned whether it is suitable for all situations. The following problems may occur when the traditional life cycle examples are used.
(1) The actual project seldom follows the sequence flow proposed in the model. This example is often used repeatedly and causes some problems.
(2) It is often difficult to explicitly indicate all requirements at the beginning. The classic life cycle requires this, but it is difficult to meet this requirement due to the natural uncertainty in many projects at the beginning.
(3) The user must be patient and the working version of the program can only be used later in the project. It would be disastrous to fail to check the work procedure.
All these problems actually exist. Even so, the classic Life Cycle example plays an important role in software engineering. It proposes a template that includes analysis, design, coding, testing, and maintenance methods. The classic life cycle is still the most widely used Process Model in software engineering. Although it has some shortcomings, it is much better than disorganized software development.
Notes
[1] The establishment... real machines: This is a compound noun phrase, not a sentence. The infinitus resulting from in order to is used as an attribute to modify principle; that guides an Attribute Clause to modify software.
[2] reinforce: V. Enhanced, emphasized.
[3] outgrowth: N. Product, by-product.
[4] Classic life cycle: Classic life cycle.
[5] Waterfall Model: waterfall model.
[6] top-level design: top-level design.
[7] The requirements... on software: here gathering is a noun, a noun phrase consisting of requirements and modifies process. Strengthen the collection process, with special emphasis on software.
Exercises
1. Fill in the blanks using appropriate definition or term.
(1) In software development ______ is most important.
(2) software engineering is an outgrowth ______.
(3) Sometimes we call the life cycle paradigm of software engineering ______.
(4) It is often difficult in the beginning for customer ______.
(5) When software must interface with hardware, people and databases ______ is necessary.
(6) software design shocould become a part ______.
(7) ______ undetected until the working program is reviewed can be disastrous.
(8) after ______ program testing begins.
(9) The design process translates requirements ______.
(10) The life time Paradigm of software has been modeled through ______.
A. The "waterfall model"
B. The conventional engineering cycle
C. A major blunder
D. Engineering Discipline
E. Software Configuration
F. State all requirements explicitly
G. A System View
H. Code has been generated
I. Hardware and System Engineering
J. a representation of the software
2. Multiple choices.
(1) Software Engineering encompasses the following key
A. Programming
B. Procedures
C. Tools
D. Elements
(2) The Life Cycle paradigm of Software Engineering requires approach.
A. A systematic
B. A random
C. A Sequential
D. A conventional engineering-modeled
(3) software design focuses on
A. Data Structure
B. Software Architecture
C.doc ument
D. procedural detail
(4) coding in software engineering can be
B. Translated into a machine-readable form
C. Taken before Maintenance
D. Taken after maintenance
(5) testing process focuses on
A. The functional Internals
B. The logical Internals
C. The functional externals
D. The logical externals
(6) maintenance is necessary because
A. Software undergoes change after it is delivered to the customer
B. Software is embedded
C. Some errors have been encountered
D. The customer requires performance enhancements
(7) The classic Life Cycle paradigm has
A. a definite place in software engineering
B. A template for analysis, design, coding, testing and maintenance
C. A definition of Software Engineering
D. been criticized over the past few years
(8) The classic Life Cycle cycle des
A. Design
B. Coding
C. Analysis
D. Maintenance
(9) software requirements analysis documdes
A. Understanding the nature of the programs
B. Understanding the information domain
C. understanding required developers
D. Gathering Process
(10) goal of software engineering is
A. To obtain economical mically Software
B. To obtain efficiently work on real computer
C. To obtain reliable work on real machine
D. To provide sound software engineering principles
Key:
1. (1) D (2) I (3) A (4) f (5) g (6) E (7) C (8) H (9) J (10) B
2. (1) B, c, d (2) a, c, d (3) a, B, c, d (4) A, B, C (5) B, c
(6) a, c, d (7) a, B, c, d (8) a, B, c, d (9) a, B, d (10) a, B, c, d