Software Engineering
Software Engineering
Software is first developed by a group of developers. Usually it is in use for a while before modifications are
necessary. Modification is often needed due to errors found in the software, changes in the rules or laws
governing its design, or changes in the company itself. The software therefore needs to be modified before
further use. These two steps, use and modify, continue until the software becomes obsolete. By ‘obsolete’, we
mean that the software loses its validity because of inefficiency, obsolescence of the language, major changes in
user requirements, or other factors.
Analysis - The development process starts with the analysis phase. This phase results in a specification
document that shows what the software will do without specifying how it will be done.
Design - 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.
Implementation - In this phase the programmers write the code.
Testing - The goal of the testing phase is to find errors, which means that a good testing strategy is the
one that finds most errors.
Integration and maintenance are also tasks to be performed in software engineering, in particular when
delivering or deploying software, although it might not be seen as part of the development process itself.
Also note that it is more often than not the practice to perform verification and testing throughout the
development life cycle.
For example, the analysis phase of the whole project should be completed before its design phase is started.
The entire design phase should be finished before the implementation phase can be started.
There are advantages and disadvantages to the waterfall model. One advantage is that each phase is
completed before the next phase starts. The group that works on the design phase, for example, knows
exactly what to do because they have the complete results of the analysis phase. The testing phase can test
the whole system because the entire system under development is ready. However, a disadvantage of the
waterfall model is the difficulty in locating a problem: if there is a problem in part of the process, the entire
process must be checked.
In the second version, more details are added, while some are left unfinished, and the system is tested
again. If there is a problem, the developers know that the problem is with the new functionality. They do not
add more functionality until the existing system works properly. This process continues until all required
functionality has been added.