Software Engineering: Subtitle
Software Engineering: Subtitle
Software Engineering: Subtitle
SOFTWARE
ENGINEERING
Subtitle
Content
Describe two major types of development process, the waterfall and incremental models.
Understand the analysis phase and describe two separate approaches in the analysis phase: procedure-oriented
analysis and object-oriented analysis.
Understand the design phase and describe two separate approaches in the design phase: procedure-oriented
design and object-oriented design.
Describe the implementation phase and recognize the quality issues in this phase.
Describe the testing phase and distinguish between glass-box testing and black-box testing.
Recognize the importance of documentation in software engineering and distinguish between user
documentation, system documentation, and technical documentation.
1 - THE SOFTWARE LIFECYCLE
1. Introduction
One of the basic notions of the software development process is SDLC models which
stands for Software Development Life Cycle models. The models specify the various
stages of the process and the order in which they are carried out. The most used,
popular and important SDLC models are given below:
Waterfall model
V model
Incremental model
RAD model
Agile model
Iterative model
Spiral model
Prototype model
3. Waterfall model
One very popular model for the software development process is known as the
waterfall model (Figure 8.2). In this model, the development process flows in only
one direction.
This means that a phase cannot be started until the previous phase is completed.
Figure 8.5 An example of a data flow diagram Figure 8.6 An example of a state diagram
3. Object-oriented analysis
Figure 8.6 An example of a use case diagram Figure 8.7 An example of a class diagram
3 - DESIGN PHASE
1. Introduction
The design phase defines how the system will accomplish what was defined in the analysis phase. In the
design phase, all components of the system are defined
Figure 8.12 A example language programing (C++ & Java) in implementation phase
3. Software quality
Maintainability refers to the ease with which a system can be kept up to date and
running correctly. Many systems require regular changes, not because they were
poorly implemented, but because of changes in external factors.
For example, the payroll system for a company might have to be changed often to
meet changes in government laws and regulations
Transferability refers to the ability to move data and/or a system from one platform
to another and to reuse code. In many situations this is not an important factor. On
the other hand, if we are writing generalized software, it can be critical.
The goal of the testing phase is to find errors, which means that a good testing
strategy is the one that finds most errors. There are two types of testing: white-box
and black-box (Figure 10.11).
The best black-box test method is to test the software for all possible values in the
input domain. However, in complex software the input domain is so huge that it is
often impractical to do so.
In random testing, a subset of values in the input domain is selected for testing. It is
very important that the subset be chosen in such a way that the values are
distributed over the domain input. The use of random number generators can be
very helpful in this case.
Errors often happen when boundary values are encountered. For example, if a
module defines that one of its inputs must be greater than or equal to 100, it is very
important that module be tested for the boundary value 100. If the module fails at
this boundary value, it is possible that some condition in the module’s code such as
x . 100 is written as x . 100.