0% found this document useful (0 votes)
20 views

Lecture2 - Software Processes

The document discusses software processes and process models. It explains that a software process is a structured set of activities to develop software, including specification, design, implementation, validation, and evolution. Common process models discussed include waterfall, incremental development, spiral model, and Rational Unified Process (RUP). The RUP uses iterative development and includes phases for inception, elaboration, construction, and transition. Prototyping and incremental delivery can help reduce the costs of changes to requirements. Process improvement aims to enhance quality, reduce costs, and accelerate development.

Uploaded by

Arbaz Ghani
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views

Lecture2 - Software Processes

The document discusses software processes and process models. It explains that a software process is a structured set of activities to develop software, including specification, design, implementation, validation, and evolution. Common process models discussed include waterfall, incremental development, spiral model, and Rational Unified Process (RUP). The RUP uses iterative development and includes phases for inception, elaboration, construction, and transition. Prototyping and incremental delivery can help reduce the costs of changes to requirements. Process improvement aims to enhance quality, reduce costs, and accelerate development.

Uploaded by

Arbaz Ghani
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 37

Lecture # 2

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

Reuse Oriented Software engineering


WaterFall model
Waterfall model problems
 Inflexible partitioning of the project into distinct stages
makes it difficult to respond to changing customer
requirements.
 Therefore, this model is only appropriate when the
requirements are well-understood and changes will be fairly
limited during the design process.
 Few business systems have stable requirements.
 The waterfall model is mostly used for large systems
engineering projects where a system is developed at
several sites.
 In those circumstances, the plan-driven nature of the waterfall
model helps coordinate the work.
Incremental development
Incremental development benefits
 The cost of accommodating changing customer
requirements is reduced. The amount of analysis and
documentation that has to be redone is much less than is
required with the waterfall model.

 It is easier to get customer feedback on the development


work that has been done.

 More rapid delivery and deployment of useful software to


the customer is possible.
Incremental development problems
 The process is not visible.

 System structure tends to degrade as new increments are


added.

 Unless time and money is spent on refactoring to


improve the software, regular change tends to corrupt its
structure.
Boehm’s spiral model
 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.
Boehm’s spiral model of the software
process
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.
Reuse-oriented software engineering

Advantages and disadvantages ???


The Rational Unified Process
 A modern generic process derived from the work on the
UML and associated process.
 Brings together aspects of the 3 generic process models
discussed previously.
 Normally described from 3 perspectives
 A dynamic perspective that shows phases over time;
 A static perspective that shows process activities;
 A practice perspective that suggests good practice.
Phases in the Rational Unified Process
RUP phases
 Inception
 Establish the business case for the system.
 Elaboration
 Develop an understanding of the problem domain and the
system architecture. develop the project plan, and identify key
project risks.
 Construction
 System design, programming and testing.
 Transition
 Deploy the system in its operating environment.
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.
Static workflows in the Rational Unified
Process

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;

 Error checking and recovery may not be included in the


prototype;

 Focus on functional rather than non-functional requirements


such as reliability and security
Throw-away prototypes
 Prototypes should be discarded after development as
they are not a good basis for a production system:
 It may be impossible to tune the system to meet non-
functional requirements;
 Prototypes are normally undocumented;
 The prototype structure is usually degraded through rapid
change;
 The prototype probably will not meet normal organizational
quality standards
Incremental delivery prototyping
 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.
Process Improvement
• Many software companies have turned to software
process improvement as a way of enhancing the
quality of their software, reducing costs or
accelerating their development processes.

• Process improvement means understanding existing


processes and changing these processes to increase
product quality and/or reduce costs and
development time.
 The SEI’s Capability Maturity Model is a framework for
assessing software process maturity in development
organizations
CMM for SE
Level 5
Optimizing

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 !!

You might also like