Lecture2 - Software Processes
Lecture2 - Software Processes
Software Processes
Ayesha Kanwal
Department of Computing (DoC),
SEECS, NUST
The software process
A structured set of activities required to develop a
software system.
Many different software processes but all involve:
Specification – defining what the system should do;
Design and implementation – defining the organization of the
system and implementing the system;
Validation – checking that it does what the customer wants;
Evolution – changing the system in response to changing
customer needs.
A software process model is an abstract representation
of a process. It presents a description of a process from
some particular perspective
Plan-driven and agile processes
Plan-driven processes are processes where all of the
process activities are planned in advance and progress is
measured against this plan.
In agile processes, planning is incremental and it is easier
to change the process to reflect changing customer
requirements.
In practice, most practical processes include elements of
both plan-driven and agile approaches.
There are no right or wrong software processes.
Software Process Models
Software process models
WaterFall model
Incremental Development
Workflow Description
Business modelling The business processes are modelled using business
use cases.
Requirements Actors who interact with the system are identified and
use cases are developed to model the system
requirements.
Analysis and design A design model is created and documented using
architectural models, component models, object
models and sequence models.
Implementation The components in the system are implemented and
structured into implementation sub-systems.
Automatic code generation from design models helps
accelerate this process.
Static workflows in the Rational Unified
Process
RUP good practice
Develop software iteratively
Plan increments based on customer priorities and deliver
highest priority increments first.
Manage requirements
Explicitly document customer requirements and keep track of
changes to these requirements.
Use component-based architectures
Organize the system architecture as a set of reusable
components.
Visually model software
Use graphical UML models to present static and dynamic views
of the software.
Verify software quality
Ensure that the software meet’s organizational quality
standards.
Control changes to software
Manage software changes using a change management system
and configuration management tools.
Coping with change
Change is inevitable in all large software projects.
Business changes lead to new and changed system
requirements
New technologies open up new possibilities for improving
implementations
Changing platforms require application changes
Change leads to rework so the costs of change include
both rework (e.g. re-analysing requirements) as well as
the costs of implementing new functionality
Reducing the costs of rework
Change anticipation (Prediction), where the software
process includes activities that can anticipate possible
changes before significant rework is required.
For example, a prototype system may be developed to show
some key features of the system to customers.
Change tolerance, where the process is designed so that
changes can be accommodated at relatively low cost.
This normally involves some form of incremental development.
Proposed changes may be implemented in increments that have
not yet been developed. If this is impossible, then only a single
increment (a small part of the system) may have be altered to
incorporate the change.
System prototyping
• where a version of the system or part of the system is developed
quickly to check the customer’s requirements and the feasibility of
design decisions.This approach supports change anticipation.
Incremental delivery
• where system increments are delivered to the customer for
comment and experimentation. This supports both change
avoidance and change tolerance.
Software prototyping
A prototype is an initial version of a system used to
demonstrate concepts and try out design options.
A prototype can be used in:
The requirements engineering process to help with
requirements elicitation and validation;
In design processes to explore options and develop a UI
design;
In the testing process to run back-to-back tests.
Advantages ???
The process of prototype development
Prototype should focus on areas of the product that are not
well-understood;
Le vel 4
Managed
Level 3
Defined
Le vel 2
Repeatable
Level 1
Initial
Initial
The software process is characterized as ad hoc, and occasionally even chaotic.
Few processes are defined, and success depends on individual effort
Repeatable
Basic process management processes are established to track cost, schedule, and
functionality
Defined
The software process for both management and engineering activities is
documented, standardized, and integrated into a standard software process for
the organization
Managed
Detailed measures of the software process and product quality are collected.
Both the software process and products are quantitatively understood and
controlled.
Optimising
Continuous process improvement is enabled by quantitative feedback from the
process and from piloting innovative ideas and technologies.
Thank you !!