Lesson 2 Software Engineering
Lesson 2 Software Engineering
Lesson outline
A framework for the activities, actions, and tasks that are required to build
high-quality software.
process flow—describes how the framework activities and the actions and tasks
that occur within each framework activity are organized with respect to
sequence and time.
A linear process flow executes each of the five framework activities in
sequence, beginning with communication and culminating with deployment.
An iterative process flow repeats one or more of the activities before
proceeding to the next.
An evolutionary process flow executes the activities in a “circular” manner.
Each circuit through the five activities leads to a more complete version of the
software.
A parallel process flow executes one or more activities in parallel with other
activities.
Process flow: Pictorial view
Types of process models
Agile models: Emphasize project “agility” and follow a set of principles that lead to a more
informal approach to software process.
It emphasizes maneuverability and adaptability.
It is particularly useful when Web applications are engineered
Dynamic and code reusability
Informal approach
Time box
Constant feedback and client involvement
Fast changing environments.
Requirements unclear
Complex and many stakeholders
Also known as evolutionary models
Prescriptive Modes
Waterfall model
Incremental
V-model
The Waterfall Model
The Waterfall Model
The waterfall model, sometimes called the classic life cycle, suggests a
systematic, sequential approach to software development that begins with
customer specification of requirements and progresses through planning,
modeling, construction, and deployment, culminating in ongoing support
of the completed software.
The waterfall model is the oldest paradigm for software engineering.
However Among the problems that are sometimes encountered when the
waterfall model is applied are:
The classic life cycle leads to “blocking states” in which some project team
members must wait for other members of the team to complete
dependent tasks. In fact, the time spent waiting can exceed the time spent
on productive work.
The difficulty of accommodating change after the process is underway.
characteristics
Integration and system testing: The individual program units or programs are
integrated and tested as a complete system to ensure that the software
requirements have been met. After testing, the software system is delivered
to the customer.
Operation and maintenance: Normally, this is the longest life-cycle phase.
The system is installed and put into practical use. Maintenance involves
correcting errors that were not discovered in earlier stages of the life cycle,
improving the implementation of system units, and enhancing the system’s
services as new requirements are discovered.
In principle, the result of each phase in the waterfall model is one or more
documents that are approved (“signed off”). The following phase should
not start until the previous phase has finished.
Incremental model
increment # n
Co m m u n i c a t i o n
Pl a nn i ng
M ode lin g
a na l y s i s Co n s t ru c t i o n
d es i g n
c od e De p l o y m e n t
t es t d e l i v e ry
fe e d ba c k
deliv ery of
nt h increment
increment # 2
Co m m u n i c a t i o n
Pl a nn i ng
M ode lin g
a n a ly s is Co n s t ru c t i o n
d e s ig n c o de De p l o y m e n t
t est d e l i v e ry
fe e dba c k
deliv ery of
increment # 1 2nd increment
1st increment
When initial requirements are reasonably well defined, but the overall scope
of the development effort preclude a purely linear process. A compelling
need to expand a limited set of new functions to a later system release.
It combines elements of linear and parallel process flows. Each linear
sequence produces deliverable increments of the software.
The first increment is often a core product with many supplementary
features. Users use it and evaluate it with more modifications to better meet
the needs.
Early increments are stripped-down versions of the final product, but they
do provide capability that serves the user and also provide platform for
evaluation by the user.
Example
A quick plan for prototyping and modeling (quick design) occur. Quick
design focuses on a representation of those aspects the software that will
be visible to end users. ( interface and output). Design leads to the
construction of a prototype which will be deployed and evaluated.
Stakeholder’s comments will be used to refine requirements.
Both stakeholders and software engineers like the prototyping paradigm.
Users get a feel for the actual system, and developers get to build
something immediately.
However, engineers may make compromises in order to get a prototype
working quickly.
The less-than-ideal choice may be adopted forever after you get used to it.
prototyping
Q u ick p lan
Quick
C o m m u n i c a t io n plan
communication
M o d e lin g
Modeling
Q u ic k d e s ig n
Quick design
D e p lo y m e n t
Deployment
D e liv e r y
&delivery
F e e d b& ack C o n s t r u c t io n
oConstruction
f
feedback
pof
r oprototype
t ot ype
The Spiral
The spiral model is an evolutionary software process model that couples the
iterative nature of prototyping with the controlled and systematic aspects of the
waterfall model.
It is a risk-driven process model generator that is used to guide multi-stakeholder
concurrent engineering of software intensive systems.
Two main distinguishing features: one is cyclic approach for incrementally
growing a system’s degree of definition and implementation while decreasing
its degree of risk. The other is a set of anchor point milestones for ensuring
stakeholder commitment to feasible and mutually satisfactory system solutions.
A series of evolutionary releases are delivered. During the early iterations, the
release might be a model or prototype. During later iterations, increasingly more
complete version of the engineered system are produced.
Spiral
The first circuit in the clockwise direction might result in the product
specification; subsequent passes around the spiral might be used to
develop a prototype and then progressively more sophisticated versions of
the software.
Each pass results in adjustments to the project plan. Cost and schedule are
adjusted based on feedback. Also, the number of iterations will be adjusted
by project manager.
Good to develop large-scale system as software evolves as the process
progresses and risk should be understood and properly reacted to.
Prototyping is used to reduce risk.
However, it may be difficult to convince customers that it is controllable as it
demands considerable risk assessment expertise.
Spiral
planning
estimation
scheduling
risk analysis
communication
modeling
analysis
design
start
deployment
construction
delivery code
feedback test
Adapting the process model