Chapter 2 - Software Engineering Model
Chapter 2 - Software Engineering Model
Lesson 2
SOFTWARE MODELS
Objectives:
At the end of this chapter you should be able to:
• Describe various process models, such as the waterfall and prototyping models, in depth.
• Explain the difference between prescriptive and agile process models.
• Describe the main components of CASE tools, and how they can address system development
problems.
Readings:
Software models
The framework just presented provides a list of generic activities common to most models of the
software process. However, each model treats the activities differently, and each model is suitable for
different projects and for different teams.
It is important to realize that the activities outlined in the process models given below should be
modified, based on:
Prescriptive software models are those which prescribe the components which make up a software
model, including the activities, the inputs and outputs of the activities, how quality assurance is
performed, how change is managed, and so on. A prescriptive model also describes how each of these
elements are related to one another (note that in this sense, “prescriptive” is not meant to indicate that
these methods admit no modification to them, as we previously used the word).
On the other hand, agile software models have a heavy focus on change in the software engineering
process. Agile methods note that not only do the software requirements change, but so do team
members, the technology being used, and so on. We will discuss agile methods later in this chapter.
The waterfall model was the first, and for a time, the only process model. This model is also known as
the “traditional” or “typical” software life cycle.
Note
Some writers use the acronym TLC, standing for “Traditional Life Cycle”. In this module we will refer to
this software model as the “waterfall” model. This model is sometimes also called the “linear
sequential” model.
The name “waterfall” comes from likening this method to a river cascading over a series of waterfalls:
the river is the output from each stage; the output from one stage is the input to another, in strict-
sequence, and at no point do the stages reverse; a project cannot go back to a stage that has previously
been completed.
There are some slight differences in the way the waterfall model is presented between different books,
however these differences are usually related to the number and names of the stages. Any presentation
of the waterfall model will present a very similar sequence of stages to the following:
• Communication
• Planning
• Modelling
• Construction
• Deployment
• The stages consist of well-defined tasks which promotes good scheduling and cost estimation
(if all stages occur in the expected sequence once only).
• The deliverables provide targets or milestones to see how far a team has reached in the
development process.
• The life cycle is broken into well-defined stages — so staff expertise can be used efficiently
(e.g., a data modeler only needs to work on certain stages, a programmer only on other stages,
and so on).
• At any one time the project team knows what should be happening and the deliverable(s) they
are to produce.
However, there are also a number of major limitations of the waterfall model, which occur frequently
in software development:
• It is rare that a software development project will follow the sequential process that the waterfall
model uses.
• Although the requirements are specified early on, user understanding and feedback of the
software will not occur until after the system is implemented, which is possibly too late (or very
costly) to change.
• The user may not be able to describe the requirements of the desired system in any detail early
on.
• The model does not easily allow for the anticipation of change — some systems take years to
develop, but once the early stages have been completed the model commits the project to a
fixed specification of the system.
• Many projects based on the waterfall model stress the importance of certain products
(documents) being delivered at certain times — it is possible for a project to become managed
in a bureaucratic way, with documents being delivered on schedule, but the focus drifting away
from developing a usable, effective system for the users.
• If a problem is identified at a later stage, the model does not make it easy (or cheap) to return
to an earlier stage to rectify the mistake (since all intermediate steps will need to be repeated,
resulting in significant, unplanned, time and resource costs).
For many development projects, the limitations of the waterfall model are usually considered to far
outweigh its advantages.
RAD (Rapid Application Development) is a concept that products can be developed faster and of higher
quality through:
1.Business Modelling: The information flow among business functions is defined by answering
questions like what data drives the business process, what data is generated, who generates it, where
does the information go, who process it and so on.
3. Process Modelling: The information object defined in the data modeling phase are transformed to
achieve the data flow necessary to implement a business function. Processing descriptions are created
for adding, modifying, deleting, or retrieving a data object.
4. Application Generation: Automated tools are used to facilitate construction of the software; even
they use the 4th GL techniques.
5. Testing & Turnover: Many of the programming components have already been tested since RAD
emphasis reuse. This reduces the overall testing time. But the new part must be tested, and all
interfaces must be fully exercised.
o When the system should need to create the project that modularizes in a short span time (2-3
months).
o When the requirements are well-known.
o When the technical risk is limited.
o When there's a necessity to make a system, which modularized in 2-3 months of period.
o It should be used only if the budget allows the use of automatic code generating tools.
The spiral model, initially proposed by Boehm, is an evolutionary software process model that
couples the iterative feature of prototyping with the controlled and systematic aspects of the linear
sequential model. It implements the potential for rapid development of new versions of the software.
Using the spiral model, the software is developed in a series of incremental releases. During the
early iterations, the additional release may be a paper model or prototype. During later iterations,
more and more complete versions of the engineered system are produced.
Objective setting: Each cycle in the spiral starts with the identification of purpose for that cycle,
the various alternatives that are possible for achieving the targets, and the constraints that exists.
Development and validation: The next phase is to develop strategies that resolve uncertainties
and risks. This process may include activities such as benchmarking, simulation, and prototyping.
Planning: Finally, the next step is planned. The project is reviewed, and a choice made whether to
continue with a further period of the spiral. If it is determined to keep, plans are drawn up for the
next step of the project.
The development phase depends on the remaining risks. For example, if performance or user-
interface risks are treated more essential than the program development risks, the next phase may
be an evolutionary development that includes developing a more detailed prototype for solving the
risks.
The risk-driven feature of the spiral model allows it to accommodate any mixture of a specification-
oriented, prototype-oriented, simulation-oriented, or another type of approach. An essential element
of the model is that each period of the spiral is completed by a review that includes all the products
developed during that cycle, including plans for the next cycle. The spiral model works for
development as well as enhancement projects.
Advantages
Disadvantages
V-Model also referred to as the Verification and Validation Model. In this, each phase of SDLC must
complete before the next phase starts. It follows a sequential design process same as the waterfall
model. Testing of the device is planned in parallel with a corresponding stage of development.
Verification: It involves a static analysis method (review) done without executing code. It is the
process of evaluation of the product development process to find whether specified requirements meet.
So, V-Model contains Verification phases on one side of the Validation phases on the other side.
Verification and Validation process is joined by coding phase in V-shape. Thus, it is known as V-Model.
1. Business requirement analysis: This is the first step where product requirements
understood from the customer's side. This phase contains detailed communication to
understand customer's expectations and exact requirements.
2. System Design: In this stage system engineers analyze and interpret the business of the
proposed system by studying the user requirements document.
1. Unit Testing: In the V-Model, Unit Test Plans (UTPs) are developed during the module design
phase. These UTPs are executed to eliminate errors at code level or unit level. A unit is the
smallest entity which can independently exist, e.g., a program module. Unit testing verifies that
the smallest entity can function correctly when isolated from the rest of the codes/ units.
2. Integration Testing: Integration Test Plans are developed during the Architectural Design
Phase. These tests verify that groups created and tested independently can coexist and
communicate among themselves.
3. System Testing: System Tests Plans are developed during System Design Phase. Unlike Unit
and Integration Test Plans, System Tests Plans are composed by the client?s business team.
System Test ensures that expectations from an application developer are met.
4. Acceptance Testing: Acceptance testing is related to the business requirement analysis part.
It includes testing the software product in user atmosphere. Acceptance tests reveal the
compatibility problems with the different systems, which is available within the user atmosphere.
It conjointly discovers the non-functional problems like load and performance defects within the
real user atmosphere.
1. Easy to Understand.
2. Testing Methods like planning, test designing happens well before coding.
ENGR. DENNIS C. TENERIFE, MSIT MODULE ON SOFTWARE ENGINEERING 9
3. This saves a lot of time. Hence a higher chance of success over the waterfall model.
4. Avoids the downward flow of the defects.
5. Works well for small plans where requirements are easily understood.
Incremental Model
Incremental Model is a process of software development where requirements divided into multiple
standalone modules of the software development cycle. In this model, each module goes through
the requirements, design, implementation and testing phases. Every subsequent release of the
module adds function to the previous release. The process continues until the complete system
achieved.
2. Design & Development: In this phase of the Incremental model of SDLC, the design of the
system functionality and the development method are finished with success. When software
develops new practicality, the incremental model uses style and development phase.
3. Testing: In the incremental model, the testing phase checks the performance of each existing
function as well as additional functionality. In the testing phase, the various methods are used to
test the behavior of each task.
4. Implementation: Implementation phase enables the coding phase of the development system.
It involves the final coding that design in the designing and development phase and tests the
functionality in the testing phase. After completion of this phase, the number of the product working
is enhanced and upgraded up to the final system product
The meaning of Agile is swift or versatile. "Agile process model" refers to a software development
approach based on iterative development. Agile methods break tasks into smaller iterations, or parts
do not directly involve long term planning. The project scope and requirements are laid down at the
beginning of the development process. Plans regarding the number of iterations, the duration and the
scope of each iteration are clearly defined in advance.
Each iteration is considered as a short time "frame" in the Agile process model, which typically lasts
from one to four weeks. The division of the entire project into smaller parts helps to minimize the
project risk and to reduce the overall project delivery time requirements. Each iteration involves a team
working through a full software development life cycle including planning, requirements analysis,
design, coding, and testing before a working product is demonstrated to the client.
1. Requirements gathering
2. Design the requirements
3. Construction/ iteration
4. Testing/ Quality assurance
5. Deployment
6. Feedback
2. Design the requirements: When you have identified the project, work with stakeholders to define
requirements. You can use the user flow diagram or the high-level UML diagram to show the work of
new features and show how it will apply to your existing system.
3. Construction/ iteration: When the team defines the requirements, the work begins. Designers
and developers start working on their project, which aims to deploy a working product. The product
will undergo various stages of improvement, so it includes simple, minimal functionality.
4. Testing: In this phase, the Quality Assurance team examines the product's performance and looks
for the bug.
5. Deployment: In this phase, the team issues a product for the user's work environment.
6. Feedback: After releasing the product, the last step is feedback. In this, the team receives feedback
about the product and works through the feedback.
o Scrum
o Crystal
o Dynamic Software Development Method (DSDM)
o Feature Driven Development (FDD)
o Lean Software Development
o eXtreme Programming (XP)
Scrum
SCRUM is an agile development process focused primarily on ways to manage tasks in team-based
development conditions.
o Scrum Master: The scrum can set up the master team, arrange the meeting and remove
obstacles for the process
o Product owner: The product owner makes the product backlog, prioritizes the delay and is
responsible for the distribution of functionality on each repetition.
o Scrum Team: The team manages its work and organizes the work to complete the sprint or
cycle.
This type of methodology is used when customers are constantly changing demands or requirements,
or when they are not sure about the system's performance.
Crystal:
1. Chartering: Multi activities are involved in this phase such as making a development team,
performing feasibility analysis, developing plans, etc.
2. Cyclic delivery: under this, two more cycles consist, these are:
A. Team updates the release plan.
B. Integrated product delivers to the users.
3. Wrap up: According to the user environment, this phase performs deployment, post-
deployment.
DSDM is a rapid application development strategy for software development and gives an agile project
distribution structure. The essential features of DSDM are that users must be actively connected, and
teams have been given the right to make decisions. The techniques used in DSDM are:
1. Time Boxing
2. MoSCoW Rules
3. Prototyping
1. Pre-project
2. Feasibility Study
3. Business Study
4. Functional Model Iteration
5. Design and build Iteration
6. Implementation
7. Post-project
This method focuses on "Designing and Building" features. In contrast to other smart methods, FDD
describes the small steps of the work that should be obtained separately per function.
Lean software development methodology follows the principle "just in time production." The lean
method indicates the increasing speed of software development and reducing costs. Lean development
can be summarized in seven phases.
1. Eliminating Waste
2. Amplifying learning
3. Defer commitment (deciding as late as possible)
4. Early delivery
5. Empowering the team
6. Building Integrity
7. Optimize the whole
1. Frequent Delivery
2. Face-to-Face Communication with clients.
3. Efficient design and fulfils the business requirement.
4. Anytime changes are acceptable.
5. It reduces total development time.
1. Due to the shortage of formal documents, it creates confusion and crucial decisions taken
throughout various phases can be misinterpreted at any time by different team members.
2. Due to the lack of proper documentation, once the project completes and the developers allotted
to another project, maintenance of the finished project can become a difficulty.
In this Model, you can start with some of the software specifications and develop the first version of
the software. After the first version if there is a need to change the software, then a new version of the
software is created with a new iteration. Every release of the Iterative Model finishes in an exact and
fixed period that is called iteration.
The Iterative Model allows the accessing earlier phases, in which the variations made respectively. The
final output of the project renewed at the end of the Software Development Life Cycle (SDLC) process.
1. Requirement gathering & analysis: In this phase, requirements are gathered from customers
and check by an analyst whether requirements will fulfil or not. Analyst checks that need will achieve
within budget or not. After all of this, the software team skips to the next phase.
2. Design: In the design phase, team design the software by the different diagrams like Data Flow
diagram, activity diagram, class diagram, state transition diagram, etc.
3. Implementation: In the implementation, requirements are written in the coding language and
transformed into computer programs which are called Software.
5. Deployment: After completing all the phases, software is deployed to its work environment.
6. Review: In this phase, after the product deployment, review phase is performed to check the
behavior and validity of the developed product. And if there are any error found then the process starts
again from the requirement gathering.
7. Maintenance: In the maintenance phase, after deployment of the software in the working
environment there may be some bugs, some errors or new updates are required. Maintenance involves
debugging and new addition options.
Evolutionary model suggests breaking down of work into smaller chunks, prioritizing them and then
delivering those chunks to the customer one by one. The number of chunks is huge and is the number
of deliveries made to the customer. The main advantage is that the customer’s confidence increases as
he constantly gets quantifiable goods or services from the beginning of the project to verify and validate
his requirements. The model allows for changing requirements as well as all work in broken down into
maintainable work chunks.
Advantages:
• In evolutionary model, a user gets a chance to experiment partially developed system.
• It reduces the error because the core modules get tested thoroughly.
Disadvantages:
• Sometimes it is hard to divide the problem into several versions that would be acceptable to the
customer which can be incrementally implemented and delivered.
A prototype system is a smaller version of part(s) of the final system that gives the user a sense of the
finished system's functionality. It has some of the core features of the final system and, where features
and functions are omitted, it pretends to behave like the final system. Prototypes are typically developed
quickly, may lack unnecessary features, may be buggy, and have poor usability. However, prototypes
can fill an important role in understanding software which does not have clear requirements.
Once the developers and users have a clear idea of the software's requirements, the project can move
into another development life-cycle, and the prototypes are thrown away. This is important, since as
we previously mentioned, the prototypes are generated quickly and are not designed to be robust or
complete.
To prototype quickly and effectively, fourth generation languages (4GLs), graphical user-interface (GUI)
tools (like those that come with Visual Studio, QT and GTK), and off-the-shelf components are
commonly used. The quality of the prototype is only of concern where it would hinder the prototype's
use in understanding the final software being developed. If the prototype is usable enough to meet the
objectives put forward for its development, the prototype has been successful.
As can be seen, after some initial analysis a set of objectives is developed for the prototype. These
objectives may differ between projects — perhaps detailed requirements need to be elicited, perhaps
alternative user interactions are to be evaluated and so on. Each version of the prototype should be
specified so that the software can be correctly designed and implemented — a prototype that does not
ENGR. DENNIS C. TENERIFE, MSIT MODULE ON SOFTWARE ENGINEERING 20
fully test the objectives is a waste of resources, and may be misleading. Once a prototype has been
completed it should be evaluated against its objectives. The evaluation decides whether the prototype
should be extended, a new prototype developed, or — if the specified objectives are met — if the
project can move on to develop the software using another process model.
A major problem with developing “disposable” prototypes is that the customer may believe it to be the
final product. Customers may not understand the need to re-engineer the software and restart
development, and may ask that the prototype be “cleaned up” and released to them.
This unified process is also known as the Rational Unified Process (RUP), after the Rational Corporation
who helped in the model's development. The Rational Corporation also develops CASE tools to support
the use of the model.
The unified process is a unification of the various early object-oriented analysis and design models
proposed in the 80s and 90s. It is an attempt to combine the best features of these various models
which initially resulted in the unified modelling language (UML). The UML has become the standard
diagrammatic language for modelling object-oriented software.
While the UML provides a modelling framework for developing object-oriented software, it does not
provide any process model. This led to the development of the unified process, which is a process
model for developing object-oriented software, and uses the UML as its modelling language.
The unified process is an incremental software process that is architecture driven, focuses on mitigating
risk, and drives development through using use cases. Being architecture-driven, early iterations focus
on building the portions of the software that will define the software's overall architecture. Focusing on
risk, early iterations also focus on developing the high-risk portions of the software. Software
development iterations moves through five phases: inception, elaboration, construction, transition and
production. These phases cannot be directly mapped on to the generic process framework activities:
rather, each iteration contains some of the framework activities.
The inception phase is concerned with project feasibility: what should the software do, in broad terms
rather than specifics, and what are the high-risk areas? Should the development go ahead? Inception
is usually a short phase, often having no more than one iteration. Little development usually occurs
during the inception phase, but the software requirements are discovered using use cases
Programming begins during the iterations of the Elaboration phase. Each iteration develops the
requirements fleshed out in the previous iterations (modelling and construction), and chooses more
requirements to flesh out (communication and planning) for development in the next iteration. The
elaboration phase completes once all of the requirements have been fleshed out. However, this does
not mean that communication and planning activities stop and do not occur in later phases: there is
always constant communication with the customer and an understanding that requirements may
change.
Much of the construction activity occurs in the iterations of the construction phase. While the iterations
of the elaboration phase each had at least one meeting in which some use cases are fleshed-out and
selected for development in the next iteration, all the use cases have already been fleshed out when
the construction phase begins.
The transition phase contains the initial portions of the deployment activity: the software is given to
the customer for evaluation (called beta testing). The customer's feedback will cause the software to
be modified as required, and thus the transition phase includes some communication and construction
activities. The production phase includes the final portion of the deployment activity: the software is
now being used by the customer, and is monitored and supported by the software engineer.
The transition phase employs a technique called beta testing. Beta testing occurs when the software
is given to the user to allow them to use the software and uncover any defects and deficiencies. There
should be a formal communications framework for the customer to report their findings to the
developers, and for the developers to assess these reports and to determine how to proceed.