Software Engineering Concepts (CSC 291)
Dr. Assad Abbas
Associate Professor
Department of Computer Science
COMSATS University Islamabad, Islamabad Campus
assadabbas@comsats.edu.pk
Software Process
2
August 23, 2024
The software process (Simplified)
Operation and Maintenance
Requirements
Design Implementation
Feasibility and
Planning
Basic Software Process Steps
These steps may be repeated many times during the development cycle.
4
August 23, 2024
Process Step: Feasibility and Planning
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?
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.
Process Step: Requirement
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.
Process Step: Requirement
This step is occasionally divided into:
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.
Process Step: System Design
Design describes the system from the software developers' viewpoint
System design:
Program design:
Models are used to represent the requirements, system architecture, and program design.
Process Step: Implementation
Implementation (coding)
Program testing
Process Step: Operation and Maintenance
Operation:
Maintenance:
Evolution:
Phase out:
This is called the Software Life Cycle
Sequence of Process Steps
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.
We will look at three categories of software development processes:
Heavy Weight and Light Weight 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.
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.
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.
Quality Control Steps in all Software Development
Some of these steps will be repeated many times during the life of the system
Validating the requirements
Validating the system and program design
Usability testing
Program testing
Acceptance testing
Software Process Models
15
August 23, 2024
Process Models
16
August 23, 2024
The Water Fall Model
The Water Fall Model
18
August 23, 2024
The Water Fall Model
Advantages
Disadvantages
When to use Water Fall Model
20
August 23, 2024
V-Model
21
August 23, 2024
When to Use the V-Model
22
August 23, 2024
Incremental Process Model
23
August 23, 2024
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.
Increment Model
Each linear sequence produces a deliverable increment of the 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.
Increment Model
26
August 23, 2024
Incremental Model
Advantages
Disadvantages
Evolutionary Process Model
28
August 23, 2024
Prototype Model
29
August 23, 2024
Prototype Model
30
August 23, 2024
Prototype Model
31
August 23, 2024
Prototype Model
Communication:
Quick plan is made
Quick design:
Leads the construction of prototype
Deployed and evaluated
Prototype Model
33
August 23, 2024
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
Spiral Model
35
August 23, 2024
Spiral Model
36
August 23, 2024
Spiral Model
Objective setting
Risk assessment and reduction
Each loop in the spiral is split into four sectors
Spiral Model
Development and validation
Planning
Spiral Model
Advantage:
Disadvantage
When to use Spiral Model
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
Significant changes are expected (research and exploration)
Sources
41
August 23, 2024