Information Technology Reference
In-Depth Information
1. Specification : defining the functions to be performed by the software
2. Development : producing the software that meets the specifications
3. Validation : testing the software
4. Evolution : modifying the software to meet the changing needs of the customer
8.7.1 Specification
The process of specification focuses on determining the requirements of the system and
the constraints under which it must operate. Software engineers communicate with the
intended users of the system to determine what their needs are. They must decide if
the software system is feasible given the budget and the schedule requirements of the
customer. If a piece of software is going to replace an existing process, the software
engineers study the current process to help them understand the functions the software
must perform. The software engineers may develop prototypes of the user interface to
confirm that the system will meet the user's needs.
The specification process results in a high-level statement of requirements and per-
haps a mock-up of the user interface that the users can approve. The software engineers
also produce a low-level requirements statement that provides the details needed by
those who are going to actually implement the software system.
8.7.2 Development
During the development phase, the software engineers produce a working software
system that matches the specifications. The first design is based on a high-level, abstract
view of the system. The process of developing the high-level design reveals ambiguities,
omissions, or outright errors in the specification. When these mistakes are discovered,
the specification must be amended. Fixing mistakes is quicker and less expensive when
the design is still at a higher, more abstract level.
Gradually, the software engineers add levels of detail to the design. As this is done,
the various components of the system become clear. Designers pay particular attention
to ensure the interfaces between each component are clearly spelled out. They choose
the algorithms to be performed and data structures to be manipulated.
Since the emergence of software engineering as a discipline, a variety of structured
design methodologies have been developed. These design methodologies result in the
creation of large amounts of design documentation in the form of visual diagrams. Many
organizations use computer-assisted software engineering (CASE) tools to support the
process of developing and documenting an ever-more-detailed design.
Another noteworthy improvement in software engineering methodologies is object-
oriented design. In a traditional design, the software system is viewed as a group of
functions manipulating a set of shared data structures. In an object-oriented design, the
software system is seen as a group of objects passing each other messages. Each object
has its own state and manipulates its own data based on the messages it receives.
Object-oriented systems have several advantages over systems constructed in a more
traditional way:
 
 
 
Search WWH ::




Custom Search