Department Of Computer Science
1
Software Engineering – I (CSC291)
Lecture 02
Process Models
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Objectives
• To introduce software process models
• To describe three generic process models and when they may be
used
• To describe outline process models for requirements
engineering, software development, testing and evolution
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Topics Covered
• Steps in Software Development Process
• Software process Models
• Sequential Process Model:
• Waterfall Model
• Incremental Model
• V-Model
• Evolutionary Development:
• Prototyping
• The Spiral Model
• Agile Process Model:
• RUP
• RAD
• Process iteration
• Agile SDLC Models
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Build and Fix Model
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Build and Fix Model
• Problems
• No specifications
• No design
• Totally unsatisfactory
• Need a life-cycle model
• Phases
• Milestones
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Steps in Software Development Process
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
What is a Software Process?
• “A set of activities whose goal is the development or evolution of software”.
• Generic activities in all software processes are:
• Specification - what the system should do and its development constraints
where customers and engineers define the software that is to be produced and the constraints on
its operation
• Development - production of the software system
• where the software is designed and programmed
• Validation - checking that the software is what the customer wants
• where the software is checked to ensure that it is what the customer requires.
• Evolution - changing the software in response to changing demands.
• where the software is modified to reflect changing customer and market requirements.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
The Software Process (Simplified)
Feasibility and
Planning Requirements
Design
Implementation
Operation and
Maintenance
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Software Development Activities
• Project Management
• Software Quality Assurance
• Software Configuration Management
• Software Integration
• Requirement Engineering
• Design
• Coding
• Testing
• Rest of the activities
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Software Development Activities
• Project planning and
Management Management
• Configuration
Management
• Quality Assurance
Construction • Installation and Training
etc.
• Requirements
• Design
• Coding
• Testing
• Maintenance etc.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Software Process
• Fundamental Assumption:
Good processes lead to good software
Good processes reduce risk
Good processes enhance visibility
Good processes enable teamwork
Variety of Software Processes
• Software products are very varied. Therefore, there is no standard process for all
software engineering projects
• BUT successful software development projects always need to address similar
issues. This creates a number of process steps that should be part of all software
projects.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Basic Process Steps in all Software Development
Feasibility and Planning
Requirements
These steps may be repeated
System and Program design many times during the
Implementation development cycle.
Acceptance and Release
Operation and Maintenance
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Process Step: Feasibility
• A feasibility study precedes the decision to begin a project.
• What is the scope of the proposed project?
• Is the project technically feasible?
• What are the projected benefits?
• What are the costs, Numerable?
• Are the resources available?
• What are the risks and how can they be managed?
• A feasibility study leads to a decision: go or no-‐go.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Process Step: Requirements
• Requirements define the function of the system from the
client's viewpoint.
• The requirements establish the system's functionality,
constraints, and goals by consultation with the client,
customers, and users.
• They must be developed in a manner that is understandable by
both the client and the development staff.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Process Step: Requirements
• This step is occasionally divided into:
• Requirements Gathering
• Requirements Analysis
• Requirements Definition
• Requirements Specification
• The requirements may be developed in a limited manner , or may
emerge incrementally.
• Failure to agree on the requirements and define them adequately is one
of the biggest cause of software projects failing.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Process Step: System Design
• Design describes the system from the software developers' viewpoint
• System design:
• Establish a system architecture, both hardware and software, that matches the
requirements
• Program design:
• Represent the software functions in a form that can be transformed into one or more
executable programs
• Preliminary user testing is often carried out as part of the design step.
• Models are used to represent the requirements, system architecture, and program
design.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Process Step: Implementation
• Implementation (coding)
• The software design is realized as a set of programs or program units.
• These software components may be written by the development team, acquired from
elsewhere, or modified from existing components.
• Program testing
• Program testing by the development staff is an integral part of implementation.
• Individual components are tested against the design.
• The components are integrated and tested against the design as a complete system.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Process Step: Acceptance and Release
• Acceptance testing
• The system is tested against the requirements by the client, often with selected
customers and users.
• Delivery and release
• After successful acceptance testing, the system is delivered to the client and released
into production or marketed to customers.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Process Step: Operation and Maintenance
• Operation:
The system is put into practical use.
• Maintenance:
Errors and problems are identified and fixed.
• Evolution:
The system evolves over time as requirements change, to add new functions, or adapt to a
changing technical environment.
• Phase out:
The system is withdrawn from service.
• This is called the Software Life Cycle
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Quality Control Steps in all Software Development
Validating the requirements
Validating the system and program design
Usability testing
Program testing
Acceptance testing
Bug fixing and maintenance
Some of these steps will be repeated many times during the
life of the system
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Sequence of Process Steps
• Every software project will include these basic processes, in some
shape or form, but:
• The steps may be formal or informal
• The steps may be carried out in various sequences
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Sequence of Process Steps
• Major alternatives
• We will look at three categories of software development processes:
• Sequential:
• As far as possible, complete each process step before beginning the next. Waterfall model.
• Iterative:
• Go quickly through all process steps to create a rough system, then repeat them to
improve the system. Iterative refinement.
• Incremental:
• A variant of iterative refinement in which small increments of software are placed in
production (sprints). Agile development.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Heavyweight and Lightweight Software Development
• In a heavyweight process, the development team works through the process
steps slowly and systematically, with the aim of fully completing each process
step and deliverables for that step that will need minimal changes and revision.
• Example: Modified Waterfall Model
• In a lightweight process, the development team releases working software in
small increments, and develops the plans incrementally, based on experience.
Each increment includes all the process steps. There is an expectation that
changes will be made based on experience.
• Example: Agile Software Development
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Deliverables
• Deliverables
• A deliverable is some work product that is delivered to the client.
• In a heavyweight process, each process step creates a deliverable,
usually documentation,
e.g., a requirements specification.
• In a lightweight process, the deliverables are incremental working code,
with minimal supporting documentation.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Software Process Models
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Software Life-Cycle Models
• Life-cycle model (formerly, process model)
• SDLC Model: A framework that describes the activities
performed at each stage of a software development project.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
What is a Software Process Model?
• “A simplified representation of a software process,
presented from a specific perspective”.
• Generic process models:
• Waterfall
• Evolutionary development
• Component-based software engineering
• Iterative development
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Process Models
• Perspective Process Models
• The Waterfall Model
• Incremental Process Models
• V-Shaped Model
• Evolutionary Process Models
• Prototyping
• The Spiral Model
• Concurrent Models
• Specialized Process Models
• Component-Based Development
• The Formal Methods Model
• Aspect-Oriented Software Development
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Generic Software Process Models
• Sequential Model: The waterfall model
• Separate and distinct phases of specification and development.
• Evolutionary development
• Specification, development and validation are interleaved.
• Component-based software engineering
• The system is assembled from existing components.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Sequential Model: Waterfall Model
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Sequential Model: Waterfall Model
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Waterfall Model Phases
Requirements analysis and definition
System and software design
Implementation and unit testing
Integration and system testing
Operation and maintenance
• The main drawback of the waterfall model is the difficulty of
accommodating change after the process is underway. One phase has to
be complete before moving onto the next phase.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Waterfall Model
• Requirements – defines needed
information, function, behavior,
performance and interfaces.
• Design – data structures, software
architecture, interface representations,
algorithmic details.
• Implementation – source code,
database, user documentation, testing.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Waterfall Model
• Test – check if all code modules work
together and if the system as a whole
behaves as per the specifications.
• Installation – deployment of system,
user-training.
• Maintenance – bug fixes, added
functionality (an on-going process).
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
The Water Fall Model
Advantages Disadvantages
• Easy to understand, easy to • All requirements must be
use known upfront
• Difficult for the customer to
• Provides structure to state all requirements
inexperienced staff explicitly
• Milestones are well • Integration is one big bang
understood at the end
• Little opportunity for
• Sets requirements stability customer to preview the
system (until it may be too
• Good for management late)
control (plan, staff, track)
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen
Riaz Abbasi
Waterfall Strengths
Easy to understand, easy to use
Provides structure to inexperienced staff
Milestones are well understood
Sets requirements stability
Good for management control (plan, staff, track)
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Waterfall Deficiencies
All requirements must be known upfront
Deliverables created for each phase are considered frozen –
inhibits flexibility
Does not reflect problem-solving nature of software
development – iterations of phases
Integration is one big bang at the end
Little opportunity for customer to preview the system (until it
may be too late)
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
When to use Water Fall Model
• Requirements are very well known
• When it is possible to produce a stable design
• E.g. a new version of an existing product
• E.g. porting an existing product to a new platform.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Modified Waterfall Model
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen
Riaz Abbasi
Sequential Model: Incremental Process Model
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Incremental Process Model
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Incremental Process Model
• Combines elements of the waterfall model applied in an
iterative fashion.
• Incremental applies linear sequences as the calendar time
progress.
• Limited software functionalities and expands functionalities in
later software release.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Incremental Model
• Each linear sequence produces a deliverable increment of the software
• E.g. Word processing software
• First increment is often a core product
• Basic requirements are addressed, but many supplementary remains
undelivered.
• Customers evaluate this core product, and the next increment is planned
based on suggestions and next set of features
• The plan addresses the modification of core product and delivery of
additional features and functionalities.
• Process is repeated until complete product is produced.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Incremental Model
• Construct a partial implementation
of a total system
• Then slowly add increased
functionality
• The incremental model prioritizes
requirements of the system and then
implements them in groups.
• Each subsequent release of the
system adds function to the previous
release, until all designed
functionality has been implemented.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Incremental Model Strengths
• Develop high-risk or major functions first
• Each release delivers an operational product
• Customer can respond to each build
• Uses “divide and conquer” breakdown of tasks
• Lowers initial delivery cost
• Initial product delivery is faster
• Customers get important functionality early
• Risk of changing requirements is reduced
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Incremental Model Weaknesses
• Requires good planning and design
• Requires early definition of a complete and fully functional
system to allow for the definition of increments
• Well-defined module interfaces are required (some will be
developed long before others)
• Total cost of the complete system is not lower
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Incremental Model
Advantages Disadvantages
• Generates working software • Needs good planning and
quickly and early during the
software life cycle. design.
• It is easier to test and debug • Needs a clear and complete
during a smaller iteration. definition of the whole
• Customer can respond to each system before it can be
built.
broken down and built
• Lowers initial delivery cost.
incrementally.
• Easier to manage risk because
risky pieces are identified and • Total cost is higher
handled during iteration. than waterfall.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen
Riaz Abbasi
When to use the Incremental Model
• Risk, funding, schedule, program complexity, or need for early realization of
benefits.
• Most of the requirements are known up-front but are expected to evolve over time
• A need to get basic functionality to the market early
• On projects which have lengthy development schedules
• On a project with new technology
• Useful when
• Staff is unavailable for complete implementation and deadline is tight
• If core product is well received, additional staff can implement next increment
• Increment can be planned to manage technical risks
• Partial functionalities can be delivered to end – user without inordinate delay.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Incremental development 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.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
V-Shaped Model
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
V-Shaped Process Model
• A variant of the Waterfall that
emphasizes the verification and
validation of the product.
• Testing of the product is
planned in parallel with a
corresponding phase of
development
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
V-Shaped Steps
Project and Requirements Planning Coding – transform algorithms into
– allocate resources software
Product Requirements and Unit testing – check that each
Specification Analysis – complete module acts as expected
specification of the software system
Integration and Testing – check that
Architecture or High-Level Design – modules interconnect correctly
defines how software functions
fulfill the design
System and acceptance testing –
check the entire software system in
Detailed Design – develop its environment
algorithms for each architectural
component
Production, operation and
maintenance – provide for
enhancement and corrections
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen
Riaz Abbasi
V-Shaped Strengths
Emphasize planning for verification and validation of the product
in early stages of product development
Each deliverable must be testable
Project management can track progress by milestones
Easy to use
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
V-Shaped Weaknesses
Does not easily handle concurrent events
Does not handle iterations or phases
Does not easily handle dynamic changes in requirements
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
When to use the V-Shaped Model
• Excellent choice for systems requiring high reliability – hospital
patient control applications
• All requirements are known up-front
• When design is stable
• Solution and technology are known
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Evolutionary Development
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Evolutionary Process Model
• These models are more suited to object oriented systems.
• They are iterative.
• They enable the software developer to develop increasingly
more complex versions of the software
• Like all complex systems, software evolves over a period
of time and hence evolutionary models are more suited to
software development.
• Requirements change while software gets developed.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Evolutionary development
• Exploratory development
• Objective is to work with customers and to evolve a final system
from an initial outline specification. Should start with well-
understood requirements and add new features as proposed by the
customer.
• Throw-away prototyping
• Objective is to understand the system requirements. Should start with
poorly understood requirements to clarify what is really needed.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Evolutionary development
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Evolutionary Development
• Problems
• Lack of process visibility;
• Systems are often poorly structured;
• Special skills (e.g. in languages for rapid prototyping) may
be required.
• Applicability
• For small or medium-size interactive systems;
• For parts of large systems (e.g. the user interface);
• For short-lifetime systems.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Evolutionary Process Models
• Evolutionary Process Models
• Prototyping
• The Spiral Model
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Prototyping Model
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Prototyping Model
Developers build a prototype during the requirements phase
Prototype is evaluated by end users
Developer may be unsure about efficiency of algorithm, adaptability
of OS, or human-machine interaction
Users give corrective feedback
Developers further refine the prototype
When the user is satisfied, the prototype code is brought up to
the standards needed for a final product.
• Used as standalone Process model
• Used as a technique implemented in any process model
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Prototyping Steps
A preliminary project plan is developed
A partial high-level paper model is created
The model is source for a partial requirements specification
A prototype is built with basic and critical functions
The designer builds
the database
user interface
algorithmic functions
The designer demonstrates the prototype, the user evaluates for problems and
suggests improvements.
This loop continues until the user is satisfied
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Prototype Model
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Prototyping Strengths
Customers can “see” the system requirements as they are being
gathered
Developers learn from customers
A more accurate end product
Unexpected requirements accommodated
Allows for flexible design and development
Steady, visible signs of progress produced
Interaction with the prototype stimulates awareness of additional
needed functionality
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Prototyping Weaknesses
Tendency to abandon structured program development for “code-
and-fix” development
Bad reputation for “quick-and-dirty” methods
Overall maintainability may be overlooked
Process may continue forever (scope creep)
It is a thrown away prototype when the users are confused with it
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
When to use Prototyping
Requirements are unstable or have to be clarified
As the requirements clarification stage of a waterfall model
Develop user interfaces
New, original development
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Spiral Model
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Spiral Model
• Proposed by Barry Boehm - Evolutionary software process model
• Couples Iterative nature of prototyping + waterfall model
• Potential for rapid development of increasingly more complete version
of software
• Spiral Model - software is developed in a series of evolutionary
releases.
• Early iteration - Paper model / prototype (trial product)
• Later increasingly more complete version of engineering software is
produced
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Spiral Development
• Process is represented as a spiral rather than as a sequence of
activities with backtracking.
• Each loop in the spiral represents a phase in the process.
• No fixed phases such as specification or design - loops in the
spiral are chosen depending on what is required.
• Risks are explicitly assessed and resolved throughout the
process.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Spiral Model
• Adds risk analysis, and 4gl
RAD prototyping to the
waterfall model
• Each cycle involves the
same sequence of steps as
the waterfall process model
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Spiral Model
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Spiral Model Sectors
• Objective setting
• Specific objectives for the phase are identified.
• Risk assessment and reduction
• Risks are assessed and activities put in place to reduce the key risks.
• Development and validation
• A development model for the system is chosen which can be any of
the generic models.
• Planning
• The project is reviewed and the next phase of the spiral is planned.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Spiral Model
Advantage: Disadvantage
• Realistic approach of development in large • Difficult to convince customers
scale • Demands considerable risk assessment
• Developer and customer satisfaction expertise
• Reacts to risk at evolutionary level • Model has not been used as widely as the
• Uses prototype - Risk reduction mechanism linear sequential or prototype paradigm
• Enables developer to apply prototype in any • It is not used for small projects
stage
• Direct consideration of technical risk at all
step.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen
Riaz Abbasi
Spiral Model Strengths
• Provides early indication of insurmountable risks, without much
cost
• Users see the system early because of rapid prototyping tools
• Critical high-risk functions are developed first
• The design does not have to be perfect
• Users can be closely tied to all lifecycle steps
• Early and frequent feedback from users
• Cumulative costs assessed frequently
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Spiral Model Weaknesses
• Time spent for evaluating risks too large for small or low-risk projects
• Time spent planning, resetting objectives, doing risk analysis and
prototyping may be excessive
• The model is complex
• Risk assessment expertise is required
• Spiral may continue indefinitely
• Developers must be reassigned during non-development phase activities
• May be hard to define objective, verifiable milestones that indicate
readiness to proceed through the next iteration
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
When to use Spiral Model
• When creation of a prototype is appropriate
• When costs and risk evaluation is important
• For medium to high-risk projects
• Long-term project commitment unwise because of potential
changes to economic priorities
• Users are unsure of their needs
• Requirements are complex
• New product line
• Significant changes are expected (research and exploration)
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
• Agile Process Model
RUP
RAD
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Agile SDLC’s
• Speed up or bypass one or more life cycle phases
• Usually less formal and reduced scope
• Used for time-critical applications
• Used in organizations that employ disciplined methods
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
What is Agility?
• Effective response to change
• Software being built, changes to the team members, changes
because of new technology,
• Changes of all kinds that may have an impact on the product or on
project
• Agility
• Encourages team structures and attitudes that make
communication
• Rapid delivery of operational software
• Deemphasizes the importance of intermediate work products
• Adopts the customer as a part of the development team
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
What is Agility?
• Agility can be applied to any software process by meeting
following criteria
• The process be designed in a way that allows the project team
to adapt tasks and to streamline them
• Conduct planning in a way that understands the fluidity of an
agile development approach
• Eliminate all but the most essential work products and keep
them lean
• Emphasize an incremental delivery strategy that gets
working software to the customer as rapidly as feasible
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
The Principles of Agile Methods
Principle Description
Customer involvement Customers should be closely involved throughout the development process. Their
role is provide and prioritize new system requirements and to evaluate the
iterations of the system.
Incremental delivery The software is developed in increments with the customer specifying the
requirements to be included in each increment.
People not process The skills of the development team should be recognized and exploited. Team
members should be left to develop their own ways of working without prescriptive
processes.
Embrace change Expect the system requirements to change and so design the system to
accommodate these changes.
Maintain simplicity Focus on simplicity in both the software being developed and in the development
process. Wherever possible, actively work to eliminate complexity from the
system.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
RUP
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
The Rational Unified Process
• A modern process model derived from the work on the UML and
associated process.
• Normally described from 3 perspectives
• A dynamic perspective that shows phases over time;
• A static perspective that shows process activities;
• A proactive perspective that suggests good practice.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
RUP phase model
Phase iteration
Inception Elaboration Cons truction Transition
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
RUP iteration
• In-phase iteration
• Each phase is iterative with results developed incrementally.
• Cross-phase iteration
• As shown by the loop in the RUP model, the whole set of
phases may be enacted incrementally.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
RUP phases
• Inception
• Establish the business case for the system.
• Elaboration
• Develop an understanding of the problem domain and the
system architecture.
• Construction
• System design, programming and testing.
• Transition
• Deploy the system in its operating environment.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
RUP good practice
• Develop software iteratively
• Manage requirements
• Use component-based architectures
• Visually model software
• Verify software quality
• Control changes to software
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
RAD Model
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Rapid Application Model (RAD)
• Requirements planning phase (a workshop utilizing structured
discussion of business problems)
• User description phase – automated tools capture information
from users
• Construction phase – productivity tools, such as code generators,
screen generators, etc. inside a time-box. (“Do until done”)
• Cutover phase -- installation of the system, user acceptance
testing and user training
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Rapid Application Development Model (RAD)
Requirements planning
phase
Prototyping
User design phase
Construction phase
Cutover phase
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
RAD Strengths
• Reduced cycle time and improved productivity with fewer
people means lower costs
• Time-box approach mitigates cost and schedule risk
• Customer involved throughout the complete cycle minimizes
risk of not achieving customer satisfaction and business needs
• Focus moves from documentation to code (WYSIWYG).
• Uses modeling concepts to capture information about business,
data, and processes.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
RAD Weaknesses
• Accelerated development process must give quick responses to
the user
• Risk of never achieving closure
• Hard to use with legacy systems
• Requires a system that can be modularized
• Developers and customers must be committed to rapid-fire
activities in an abbreviated time frame.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
When to use RAD
• Reasonably well-known requirements
• User involved throughout the life cycle
• Project can be time-boxed
• Functionality delivered in increments
• High performance not required
• Low technical risks
• System can be modularized
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Component-based Software Engineering
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Component-based software engineering
• Based on systematic reuse where systems are integrated from
existing components or COTS (Commercial-off-the-shelf) systems.
• Process stages
• Component analysis;
• Requirements modification;
• System design with reuse;
• Development and integration.
• This approach is becoming increasingly used as component
standards have emerged.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Reuse-oriented development
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Choosing a Software Process Model
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Choosing a Software Process
Changes during the software development process are expensive.
• If the requirements are poorly understood, or expected to change,
select a process that keeps flexibility. Iterative refinement, sprints,
phased implementation.
• If a big software systems has many inter-related components, avoid
major changes to the design of a system during development. Sequential
process, such as the modified waterfall model.
• If the market for the software is poorly understood, use a process
that gets operational software in front of customers as quickly as
possible. Incremental, sprints.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Tailored SDLC Models
• No single model fits all projects
• If there is no suitable model for a particular project, pick a model
that comes close and modify it for your needs.
• If project should consider risk but complete spiral model is too
much – start with spiral and simplify it
• If project should be delivered in increments but there are
serious reliability issues – combine incremental model with
the V-shaped model
• Each team must pick or customize a SDLC model to fit its project
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Corporate Processes
Large software development organizations have their own internal processes that
are designed for their needs. For example:
• Amazon.com (Internet commerce) makes extensive use of sprints. Most
software development is divided into increments of about four weeks elapsed
time.
• SAP (business software) emphasizes the functionality that is seen by their
business customers. Much of the development is suitable for a sequential
process.
• Microsoft (PC software) places great emphasis on testing with a very wide
variety of equipment and backward compatibility. Much of the development
uses a spiral process.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Process iteration
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Process iteration
• System requirements ALWAYS evolve in the course of a
project so process iteration where earlier stages are reworked
is always part of the process for large systems.
• Iteration can be applied to any of the generic process models.
• Two (related) approaches
• Incremental delivery
• Spiral development.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Incremental delivery
• Rather than deliver the system as a single delivery, the development and
delivery is broken down into increments with each increment delivering part
of the required functionality.
• User requirements are prioritised and the highest priority requirements are
included in early increments.
• Once the development of an increment is started, the requirements are frozen
though requirements for later increments can continue to evolve.
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Incremental development
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Product and Process
• If the process is weak, the end product will undoubtedly
suffer
• As creative software professional, you should also derive as
much satisfaction from the process as the end product
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Conclusions
• Different life-cycle models
• Each with its own strengths
• Each with its own weaknesses
• Criteria for deciding on a model include:
• The organization
• Its management
• Skills of the employees
• The nature of the product
• Best suggestion
• “Mix-and-match” life-cycle model
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
THANK YOU
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
THANK YOU
CU-Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi