Software Engineering Chapter2-1
Software Engineering Chapter2-1
Software Engineering
◼ What are the steps: The process you adopt depends on the
software that you are building. One process might be good
for aircraft avionic system, while an entirely different process
would be used for website creation.
7
A Generic Process Model
◼ As we discussed before, a generic process
framework for software engineering defines five
framework activities - )communication, planning,
modeling, construction, and deployment(.
process.
A Generic Process Model
9
A Generic Process Model
◼ Next question is:
10
Process Flow
11
Process Flow
❑ Linear process flow executes each of the five activities in
sequence.
5. Prioritize requirements.
17
The Waterfall Model
next phase.
The waterfall model
20
Waterfall model problems
• Inflexible partitioning of the project into distinct stages makes
it difficult to respond to changing customer requirements.
22
The V-Model
• A variation of waterfall model depicts the relationship of
quality assurance actions to the actions associated with
communication, modeling and early code construction
activates.
• Team first moves down the left side of the V to refine
the problem requirements. Once code is generated, the
team moves up the right side of the V, performing a
series of tests that validate each of the models created
as the team moved down the left side.
23
Advantages of V-model:
• Simple and easy to use.
• Testing activities like planning, test designing
happens well before coding. This saves a lot of time.
Hence higher chance of success over the waterfall
model.
• Proactive defect tracking – that is defects are found
at early stage.
• Avoids the downward flow of the defects.
• Works well for small projects where requirements
are easily understood.
24
Disadvantages of V-model:
• Very rigid and least flexible.
25
When to use the V-model:
• The V-shaped model should be used for small to medium
sized projects where requirements are clearly defined and
fixed.
26
The Incremental Model
27
The Incremental Model
• When initial requirements are reasonably well defined, but
the overall scope of the development effort precludes a
purely linear process. A compelling need to expand a limited
set of new functions to a later system release.
30
Incremental development problems
From a management perspective, the incremental approach has
two problems:
• The process is not visible.
– Managers need regular deliverables to measure progress. If
systems are developed quickly, it is not cost-effective to
produce documents that reflect every version of the system.
models.
Evolutionary Models: Prototyping
• When to use: Customer defines a set of general objectives but
does not identify detailed requirements for functions and
features. Or Developer may be unsure of the efficiency of an
algorithm, the form that human computer interaction should
take.
34
Evolutionary Models: Prototyping
• What step: Begins with communication by meeting with
stakeholders to define the objective, identify whatever
requirements are known, outline areas where further
definition is mandatory. 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.
35
Evolutionary Models: Prototyping
• Stakeholder’s comments will be used to refine requirements.
36
Evolutionary Models: Prototyping
Quick plan
communication
Modeling
Quick design
Deployment
delivery & Construction
feedback Construction
of
prototype
of prototype
37
Evolutionary Models: The Spiral
• It couples the iterative nature of prototyping with the
controlled and systematic aspects of the waterfall model and
is a risk-driven process model generator that is used to guide
multi-stakeholder concurrent engineering of software
intensive systems.
39
Evolutionary Models: The Spiral
40
Evolutionary Models: The Spiral
• 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.
42
Three Concerns on Evolutionary Processes
44
Concurrent Model
• Allow a software team to represent iterative and
concurrent elements of any of the process models.
For example, the modeling activity defined for the
spiral model is accomplished by invoking one or
more of the following actions: prototyping, analysis
and design.
45
Concurrent Model
• The Figure shows modeling may be in any one of
the states at any given time. For example,
communication activity has completed its first
iteration and in the awaiting changes state. The
modeling activity was in inactive state, now makes
a transition into the under development state. If
customer indicates changes in requirements, the
modeling activity moves from the under
development state into the awaiting changes state.
46
Concurrent Model
47
Concurrent Model
• Concurrent modeling is applicable to all types of software
development and provides an accurate picture of the current
state of a project. Rather than confining software
engineering activities, actions and tasks to a sequence of
events, it defines a process network. Each activity, action or
task on the network exists concurrently with other activities,
actions or tasks. Events generated at one point trigger
transitions among the states.
48
Concurrent Model
49
Still Other Process Models
• Component based development—the process to apply
when reuse is a development objective ( like spiral model)
• Formal methods—emphasizes the mathematical
specification of requirements ( easy to discover and
eliminate ambiguity, incompleteness and inconsistency)
• Aspect Oriented software development (AOSD)—provides
a process and methodological approach for defining,
specifying, designing, and constructing aspects
• Unified Process—a “use-case driven, architecture-centric,
iterative and incremental” software process closely aligned
with the Unified Modeling Language (UML) to model and
develop object-oriented system iteratively and
incrementally.
50
The Unified Process (UP)
55
UP Phases
56
UP Work Products
57
Software Process Models Project
1. Agile development methodology
2. Scrum
3. DevOps deployment methodology
4. Lean Model
5. Rapid application development (RAD)
6. Extreme programming (XP)
7. Aspect Oriented software development (AOSD)
8. Object-oriented programming (OOP)
9. Personal Software Process (PSP)
10. Team Software Process (TSP)
11. Dynamic systems development method (DSDM),
12. Agile Unified Process (AUP)
13. Disciplined agile delivery (DAD)
14. Scaled Agile Framework (SAFe)
15. Large-Scale Scrum (LeSS)
16. Feature-Driven Development (FDD)
58