Software Engineering Lecture 2 - Updated
Software Engineering Lecture 2 - Updated
Software Engineering Lecture 2 - Updated
Engineering
(Spring 2020)
Lecture 2
Software Process and
Process Models
2/17/2020 CSE291 - Introduction to Software Engineering 2
Waterfall model.
V Model
Evolutionary development.
Component-Based development model (CBSE).
Process iteration(incremental and spiral Models)
The other related methodologies are Agile and RAD Model – Rapid
Application Development
2/17/2020 CSE291 - Introduction to Software Engineering 14
Waterfall Model
• First published model
Waterfall Model
The sequential phases in Waterfall model are:
Waterfall Model
Implementation and unit testing: With inputs from system
design, the system is first developed in small programs
called units, which are integrated in the next phase. Each
unit is developed and tested for its functionality which is
referred to as Unit Testing.
Waterfall Model
Deployment of system: Once the functional and non
functional testing is done, the product is deployed in the
customer environment or released into the market.
Waterfall Model
2/17/2020 CSE291 - Introduction to Software Engineering 19
Waterfall Model
Applicability:
• Technology is understood.
2/17/2020 CSE291 - Introduction to Software Engineering 20
Waterfall Model
Advantages:
• Documentation - at each phase
• Phases are processed and completed one at a time.
• Easy to arrange tasks.
Problems:
• Inflexible partitioning of the project into distinct stages
makes it difficult to respond to changing customer
requirements.
2/17/2020 CSE291 - Introduction to Software Engineering 21
V Model
• A variation of the waterfall
model
• It is also known as
Verification and Validation
model.
Validation
• Does the product meet user expectations?
• Have you built the right product?
2/17/2020 CSE291 - Introduction to Software Engineering 23
V Model
2/17/2020 CSE291 - Introduction to Software Engineering 24
V Model
Coding Phase
• The actual coding of the system modules designed in the
design phase is taken up in the Coding phase.
• The best suitable programming language is decided
based on the system and architectural requirements.
• The coding is performed based on the coding guidelines
and standards.
• The code goes through numerous code reviews and is
optimized for best performance before the final build is
checked into the repository.
2/17/2020 CSE291 - Introduction to Software Engineering 27
Integration Testing:
• Integration testing is associated with the architectural
design phase.
• Integration tests are performed to test the coexistence
and communication of the internal modules within the
system.
2/17/2020 CSE291 - Introduction to Software Engineering 28
Acceptance Testing:
• Acceptance testing is associated with requirement analysis
phase and involves testing the product in user environment.
V Model
Applicability:
V Model
Advantages:
• Testing activities like planning, test designing happens
well before coding.
• Higher chances of success over the waterfall model.
• Works well for projects where requirements are easily
understood.
Problems:
• No iteration of phases
• Difficult to handle changes in requirements throughout the
life cycle
2/17/2020 CSE291 - Introduction to Software Engineering 31
Evolutionary Models
Exploratory Model
• The development starts with the parts of the system that are
understood.
Exploratory Models
Initial
Specification
Version
Outline Intermediate
Description Development Version
Validation Final
Version
2/17/2020 CSE291 - Introduction to Software Engineering 34
Exploratory Model
Problems:
Applicability:
Evolutionary Models
Prototyping Model
• By using this prototype, the client can get an “actual feel” of the
system
Evolutionary Models
Prototyping Model
Prototype Model
1. Requirements gathering.
2. Design and build SW prototype.
1/4
3. Evaluate prototype with customer.
Listen to
Customer 4. Refine requirements.
3
2
Customer
Build / Revise
Test-Drives
prototypes
prototypes
2/17/2020 CSE291 - Introduction to Software Engineering 38
Prototyping
Engineer Requirements
Product
No Quick
Yes Design
Changes?
Build
Refine Prototype
Prototype
Evaluate
Prototype (Pressman, 1996)
2/17/2020 CSE291 - Introduction to Software Engineering 39
Prototype Model
Advantages:
• Users are actively involved in the development
• Users get a better understanding of the system being
developed.
• Errors can be detected much earlier.
• Quicker user feedback is available leading to better
solutions.
Disadvantages:
• Practically, this methodology may increase the complexity
of the system as scope of the system may expand beyond
original plans.
2/17/2020 CSE291 - Introduction to Software Engineering 40
Prototype Model
Applicability:
• Process stages
• Component analysis
• Requirements modification
• System design with reuse
• Development and integration
Process Iteration
• Change is necessary in all large software projects.
• What to do?
• Incremental delivery
• Spiral development
2/17/2020 CSE291 - Introduction to Software Engineering 46
Incremental Approach
“The software specification, design and implementation are
broken down into a series of increments that are each
developed in turn”
Incremental Development
Incremental Delivery(Steps)
1. Customer identify—services provided by the system
2. Then identify which of the services are most important
and which are least important
3. No of delivery increments are then identified with sub-
set of the system functionality
4. Highest priority services delivered first
5. Requirements for the first increment are defined in
detail
6. First Increment is developed and delivered ..customer
can put into service
7. During development ….further requirements analysis for
later increments can take place
2/17/2020 CSE291 - Introduction to Software Engineering 49
Incremental Model
Advantages:
• Customer value can be delivered with each increment so
system functionality is available earlier.
• Early increments act as a prototype to help elicit
requirements for later increments.
• Lower risk of overall project failure.
• The highest priority system services tend to receive the most
testing.
Disadvantages:
• Increments should be relatively small (20,000 lines of code).
• Can be difficult to map the customer’s requirements onto
increments of the right size..
2/17/2020 CSE291 - Introduction to Software Engineering 50
Spiral Model
• The spiral model of the software process was originally
proposed by Boehm (Boehm, 1988).
Objective setting
• Specific objectives for that phase of the project are identified
• Detail management plan is drawn up
• Identify Project risks
• Alternative strategies depending on these risks ...may be
planned
2/17/2020 CSE291 - Introduction to Software Engineering 52