Lecture 2-Software Processes - 2023
Lecture 2-Software Processes - 2023
Learning Objectives
We need to address the following…..
• What is a software process?
• What are generic framework activities that are present in every software
process?
• How processes are modeled and what are process patterns?
• What are prescriptive process models and what are their strengths and
weaknesses?
• Why is agility a watchword in modern software engineering work?
• What is agile software development and how does it differ from other
traditional process models?
Why software processes …
Fundamental Assumption:
Good process leads to good software
Good processes reduce risk
Good processes enhance visibility
What is a Process … ?
• When we provide a service or create a product (any) we always
follow a sequence of steps to accomplish a set of tasks
• You do not usually
• put up the drywall before the wiring for a house is installed or
• bake a cake before all the ingredients are mixed together
• A series of activities is referred to as a process
• Any process has the following characteristics
• It prescribes all the major activities
• It uses resources and produces intermediate and final products
• It may include sub-processes and has entry and exit criteria
• The activities are organized in a sequence
• Constraints or controls may apply to activities
(e.g., budget control, availability of resources, legislative requirements )
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 all need to
address similar issues.
This creates a number of generic process steps that must
be part of all software projects
Software process framework
• Each framework activity is populated
by a set of software engineering
actions.
• Each software engineering action is
defined by a task set that identifies:
• the work tasks that are to be
completed,
• the work products that will be
produced
• the quality assurance points that
will be required.
• the milestones that will be used to
indicate progress
Software Processes
• When the process involves the building of some product, we refer to the
process as a life cycle
• Software development process – software development life cycle
(SDLC)
• Planning,
• Specifying, It is essential to distinguish
• Designing, among these aspects and to be
• Implementing, clear which one you are doing at
• Testing, any given moment of your SDLC.
• Deploying, and
• Maintaining software systems
Combining the Process Steps
Design
Operation &
Implementation
Maintenance
The Software Process vs. Software process model
1. Waterfall Model
2. Evolutionary Model
3. Component-based/Reuse-based SWE
4. Iterative Model
5. Agile Software Development
Methodologies
Traditional waterfall Model
Coding
Acceptance tests
Testing
Acceptance
Operation & maintenance
Traditional Waterfall is not enough!
The Waterfall process model
Requirements
definition
Waterfall model
with feedback
System and
software design This is better!
Implementation
and unit testing
Operation and
maintenance
Phases of the Waterfall Model (1)
• Requirements definition and analysis
• The system’s services, constraints, and goals are established in
consultation with system users.
• These requirements are then defined in a manner understandable by
both users.
• During this phase, research about the system is conducted, which
includes brainstorming about the software,
• What it is going to be.
• What purpose it is going to fulfill – The Reason it all Exists PRINCIPLE
• What value-add will it provide to its users
• Defined requirements are presented in detail and produce a System
Requirements Document (SRD) / System Specification Document (SSD).
• SRD must be approved/ signed off.
• It is then that the next phase can proceed.
Phases of the Waterfall Model (2)
• System and Software Design
• Daft the basic system design – on paper
• Focus on major system building blocks
• Identify and describe the fundamental software system
abstractions and relationships.
• System design: Partition the requirements to hardware or
software systems. Establishes an overall system architecture
• Program design: Represent the software system functions in a
form that can be transformed into one or more executable
programs.
Phases of the Waterfall Model (2)
• System and Software Design
Daily transactions
Data
Web browser
html
Java PHP
Script Scripts
Web server
Phases of the Waterfall Model (4)
• Detailed design + Development
• After the basic design gets approved, more elaborate technical design is
planned.
• Functions of each part are decided and the engineering units (program
modules, functions, algorithms) are defined.
• Detailed design document must be signed-off before moving to the next
phase.
HelloWorld
WeatherStation WeatherMap
location location
metereologicalData 1 date-time
1...*
geographicData
collectData() weather
getSummary() summary
gatherData()
printMap()
Phases of the Waterfall Model (5)
• Detailed design + Development (2)
UML CLASS DIAGRAM FOR Mobile Application
Application LocationManager
NetworkInterface
NetworkConnection
open()
send() close()
setNetworkInterface() send()
Ethernet WirelessNet
open() open()
close() close()
send() send()
Phases of the Waterfall Model (6)
• Implementation and Unit Testing
Initial
Specification
version
Outline Intermediate
Development
description versions
Final
Validation
version
Evolutionary SW Process Model (2)
• It interleaves the activities of specification, development, and
validation.
• An initial system is rapidly developed from abstract specifications.
• This is then refined with customer input to produce a system that
satisfies customer’s needs.
• The evolutionary process model is based on the idea of developing
an initial implementation,
• Exposing this to user comments,
• Refining it through many versions until an adequate system has been
developed
Two (2) types of Evolutionary Development
Quick plan
Communication
and design
Delivery of Construction
feedback of prototype
Prototyping (1)
• Iteration occurs as the prototype is tuned to satisfy user needs, while at the
same time enabling you (the developer) to better understand what needs to
be done.
• Ideally, prototyping is a mechanism for identifying and gathering more
software requirements.
• Prototyping allows users gain direct experience with the interfaces of the
system.
• It may be difficult to think abstractly about a user interface
• Prototyping is 2-stage process:
• (1) Very early in the process, you should develop paper prototypes –
mock-ups of screen designs – and walk through them with user.
• (2) Refine design using visual IDE tools; make it available to users for
testing activity simulation
Prototyping (2)
• Communication
• Meet with other stakeholders to define the overall objectives for the
software, identify whatever requirements are known, and outline areas
where further definition is mandatory.
Development System
and integration validation
Component-based software engineering (CBSE) (2)
• The CBSE relies on a large base of reusable software
components and some integrating frameworks for these
components,
• Sometimes these components are systems in their own right (COTS or
commercial-off-the-shelf systems) that may provide specific
functionality.
• Requirements modification
• Requirements are analyzed using information about the components that have
been discovered.
• They are then modified to reflect the available components.
• Where modifications are impossible, the component analysis activity may be re-
entered to search for alternative solutions.
• Key: Component integration issues are considered.
Component-based software engineering (CBSE) (4)
• System design with reuse
• During this phase, the framework of the system is designed or an existing framework
is reused.
• Take into account the components that are reused and organize the framework to
cater for this.
• New components may have to be designed if reusable components are not
available.
• Key: Software architecture is designed to accommodate the components.
• Development and integration
• Normal development for new components happens.
• These new components plus the COTS systems are integrated to create the new
system.
• System integration in this model may be part of the development process rather
than a separate activity.
• Key: Components are integrated into the architecture.
Component-based software engineering (CBSE) (5)