You are on page 1of 42

Unit 1

Software Processes
Software Processes: Process and Project
 Process: Sequence of steps performed to achieve goal

 A software project: One instance, and use development process to


achieve it

 Development process takes the project from user and develops


software needed by user

 Other goals: cost schedule and quality, besides delivering software


Software Processes: Process and Project
 Software Process: The sequence of steps performed to produce
software with high quality, within budget and schedule

 Process: Covers actions performed


Actual process, Planned process

 Process specification: A description of the process which


presumably can be followed in some project to achieve the goal
for which the process is designed.

 Process model: A general process, optimum


 Use it as project’s process to develop s/w with high Q&P

 Process: A means to reach goals of high quality, low cost, low


cycle time
Component Software Processes
 Software Process: Deal with technical and management issues of
software development
 Two components in a software process:
 Development process – focuses on development activities needed to
engineer the software
 Project management process – focuses on planning and controlling
the development process to meet cost, schedule, quality, etc.

 Software configuration control process – Deal with managing change

 Product engineering process: above mentioned three processes

 Process management process – Required to improve the s/w process


 Deals with the whole process of understanding the current process,
analyzing its properties, determining how to improve, and then
affecting the improvement
Component Software Processes
 Development process – Programmers, designers, testers, etc.
 Project management process – Project management
 Software configuration control process – Group- Configuration
controller
 Process management process – Software engineering process group
(SEPG)
Software process

Product engineering Process management


process process

Development Project management Software


process process configuration
management process
Software Development Process Models

 Goal to produce high quality s/w product


 Development process – core of s/w process
 Management process – decided based on development process
 Development process – Defines the tasks of the project that should be
performed
- Order in which they should be performed
 Process model – Specifies a general process
As set of stages in which project is divided
Order in which stages should be executed
Conditions and constraints required for execution
 Basic premise – situation for which it is applicable, use it to lead to
low cost, high quality and reduced cycle time
1) Waterfall Model

 Simplest process model, phases organized in linear order


 Proposed by Royce – variations evolved during activities
 Procedure:
1) Project begins with Feasibility Analysis.
2) After successful demonstration of feasibility, Requirement Analysis
& Project Planning begins.
3) Design starts after requirement analysis is complete.
4) Coding begins after design is complete.
5) Once coding is complete, code is Integrated and Testing is done.
6) Upon successful completion of testing, system is Installed.
7) After this, regular Operation and Maintenance of system takes place.
Sofware Process 25
Waterfall Model
Waterfall Model

 Basic idea behind phases – separation of concerns


Each phase deals with a distinct and separate set of concerns.
So, task of building complex problem divided into smaller tasks

 Linear ordering of activities has important consequence


Identify end of phase and beginning of next phase
Employ some certification mechanism at the end of each phase
Done by some verification and validation means, that ensure output of
phase is consistent with its input

 After completion of activities of a phase – some product to be generated


 Output of earlier phases – work products
Present in the form of document
Waterfall Model
 Advantages:
1) Simplicity
2) Straightforward – Divides large task into series of phases
3) Easy to administer – Work product produced after each phase
Some amount of money obtained by developing organization
 Disadvantages:
1) Requirements of system can be frozen
All requirements to be known upfront
2) Freezing requirements requires choosing the hardware
3) Follows big bang approach – entire s/w delivered at the end
all or nothing delivery
4) Encourages requirements bloating
All requirements to be specified at the start, even if not used later
5) Is document driven process – requires formal documents at the end
of each phase
2) Prototyping Model

 Goal- To counter first limitation of waterfall model

 Basic idea-
Instead of freezing requirements before design or coding proceed,
build throwaway prototype to help understand the requirements

 Develop prototype based on currently known requirements

 Development undergoes design, coding, testing, but each of these


phases not done formally or thoroughly
 Using prototype, client get actual feel of system, enabling to better
understand the requirements of desired system

 Results in more stable requirements that change less frequently

 Act as an attractive idea for complicated and large systems, where


no manual process or existing system present to help determine the
requirements

Prototyping Model
Sofware Process 25
Prototyping
 Procedure:
1) Development starts when preliminary version of requirement
specification document is developed.

2) At this stage, there is reasonable understanding of system and its needs


and which needs are unclear.

3) After prototype is developed, end users and clients are given opportunity
to use and explore the prototype, specifying what is correct, what needs to
be modified, what is missing, what is not needed.

4) Based on feedback, prototype is modified to incorporate suggested


changes, then users are again allowed to use the system.

5) Cycle repeats until, judgment of prototype developers and analysts


benefit from further changing the system and obtaining feedback outweigh
cost and time.
Prototyping
Based on feedback, initial requirements are modified to get final
requirements specification, then used to develop the quality system.
Features:
 No point in implementing parts of requirements already understood
 Focus on requirements that are not properly understood
 Minimal documentation to be produced, as prototype to be thrown away
 Another cost cutting measure- reduce testing

 Experience of developing prototype will reduce the cost of actual software


development.
 Requirements will be more stable due to feedback from the prototype,
there will be fewer changes in the requirements.
 Quality of final software is likely to be far superior.
 Developing prototype mitigates many risks that exist in a project where
requirements are not well known.
3) Iterative Development Model
 Counters third and fourth limitation of waterfall model, and
combine benefits of both waterfall and prototyping model

 Basic idea-
Software to be developed in increments, each increment
adding some functional capability to the system until full
system is implemented.

 Iterative enhancement model - one approach


 First step- Simple initial implementation done for a subset of
the overall problem
 Subset- That contains key aspects of the problem, easy to
understand and implement and forms a usable system
Iterative Development

 Create project control list- Contains, in order, all tasks that


must be performed to obtain the final implementation

 PCL gives an idea of how far long the project is at any given
step from the final system

 Each step consists of:


 Removing the next task from the list
 Designing the implementation for the selected task
 Coding and testing the implementation
 Performing analysis of the partial system obtained after this step
 Updating the list as a result of the analysis
 Three phases- design phase, implementation phase and analysis phase

 Process is iterated until the PCL is empty, at which time the final
implementation of the system will be available

Iterative enhancement Model


Sofware Process 48
Iterative Development
 Another approach-
Do requirements and architecture design in waterfall or
prototyping model, but deliver the software iteratively

 View- one iteration to deliver requirements and architecture


plan, and further iterations to deliver software in increments.

 At start of each delivery iteration, decide the requirements to be


implemented in this release, then enhance the design and
develop code to implement the requirements.

 Iteration ends with delivery of a working software system


 Selecting of requirements done based on the value the
requirement provides to end users and how critical they are
for supporting other requirements

Iterative delivery approach Sofware Process 48


Iterative Development
 Advantage of approach-
Requirements are mostly known upfront.
An overall view of the system is available.
A proper architecture can be designed, which can remain
relatively stable.

 Rework in development iterations will diminish.


 Value to the end customer is delivered iteratively so it does not
have all-or-nothing risk.
 Since the delivery is being done incrementally, and planning
and execution of each iteration is done separately, feedback
from an iteration can be incorporated in the next iteration.
4) Rational Unified Process (RUP)

 Another iterative process model designed by Rational, for


object-oriented development using UML

 RUP proposes that development to be divided into cycles, each


cycle delivering a fully working system.

 Each cycle executed as separate project, goal -to deliver some


additional capability to existing system (built by previous cycle).
Rational Unified Process (RUP)

 For a project, the process for a cycle forms the overall process.
Each cycle broken into four consecutive phases:
1) Inception phase
2) Elaboration phase
3) Construction phase
4) Transition phase

Each phase has a distinct purpose, and completion of each phase is


a well defined milestone with some clearly defined outputs.
RUP model
 Inception phase-
Purpose to establish goals and scope of project, and after
completion is the lifecycle objectives milestone.
Milestone specify vision and high -level capability of
eventual system, business benefits, use cases of the system, key
risks , basic plan regarding cost and schedule
Based on output, decision of go/no -go
Milestone represents there’s a shared vision among
stakeholders, agree to project, its vision, benefits, cost, usage,
etc.
Sofware Process 48
RUP
 Elaboration phase-
Designed system architecture based on detailed requirements
analysis and after completion is the lifecycle architecture
milestone.
Expected to identify and specify most requirements
Prepare high-level project plan, showing remaining phases
and iterations in those, and current perception of risks
By the end, decisions regarding choice of technologies,
architecture, etc. taken, and a detailed understanding of the
project exists
RUP
 Construction phase-
Software built and tested
Results in the software product to be delivered, along with
associated user and other manuals, and after successful
completion is the initial operational capability milestone

 Transition phase-
Purpose to move software from development environment
to client’s environment, where it is to be hosted
Complex task, require additional testing, conversion of old
data for this software to work, training of personnel, etc.
Successful execution is the milestone product release.
RUP
In RUP, engineering tasks and phases are separate.
RUP groups the activities into different subprocesses, called
as core process workflows.

Activity level of subprocesses in different phases of RUP.


RUP
 Key difference of RUP from other models is separation of
phases from the tasks.

 In waterfall-based iterative model, a phase was linked to a


particular task performed like requirements, design, etc.
 In RUP these tasks are separated from the stages.
 A project may do detailed requirements only for some features
during elaboration phase, and may do detailing of other
requirements while the construction is going on.

 RUP provides a flexible process model, which follows an


iterative approach at a top level through cycles and, during each
of the phases in a cycle. And in phases, it allows different tasks
to be done as per the needs of the project.
5) Timeboxing Model

 Basic unit time box of fixed duration


 Select requirements or features to be built to fit into time box
 In iterative approaches, select functionality and then determine
time to deliver
 In timeboxing, a high-priority to the schedule
 Divide timebox into sequence of stages, each performs some
clearly defined task and produces a clearly defined output
 Require duration of each stage, time taken to complete task be
same
 Requires a dedicated team for each stage, team for a stage
performs only tasks of that stage
Timeboxing Model

Example- time box of three stages, done in approximately equal


time in an iteration:
requirement specification
build
deployment

•Requirement stage gives a prioritized list of requirements


to be built with a high-level design.
•Build team develops the code, and performs testing.
•Deployment team performs predeployment tests, and then
installs the system for production use.
Timeboxing Model
Pipelined execution of the timeboxing process

Executing the timeboxing process model

Timeboxing is well suited for projects that require a large


number of features to be developed in a short time around a stable
architecture using stable technologies.
Timeboxing Model
Three teams working on the project—the requirements team,
the build team, and the deployment team.
Teamwise activity for the 3-stage pipeline

Tasks of different teams


6) Extreme Programming and Agile Processes
 Agile development approaches evolved in 1990s as a reaction to
documentation and bureaucracy-based processes, particularly the
waterfall approach.

 Agile approaches based on some common principles:


1. Working software- key measure of progress in a project
2. For progress, rapid development and delivery of software in
small increments
3. Entertainment of late changes in the requirements
4. Prefer face-to-face communication over documentation
5. Necessity of continuous feedback and customer involvement in
developing good-quality software
6. Simple design that evolves and improves with time
7. Decision of the delivery dates empowered by teams of talented
individuals
Extreme Programming (XP)

 Popular, well-known approaches in the family of agile methods


 To accommodate change, development process to be lightweight
and quick
 Iterative software development
 Relies on face-to-face communication, simplicity, and feedback
to ensure desired changes to reflect quickly and correctly

 XP project starts with user stories


 User stories
 Short descriptions of what scenarios customers and users want
the system to support
 Do not contain detailed requirements
XP
 Each story written on a separate card
 Development team estimates time to implement user story, stated
in weeks
 Release planning- defines which stories are to be built in which
system release, and the dates of these releases

Overall process in XP
 Development done in iterations, each of few weeks
 Iteration starts with iteration planning, in which select stories to
be implemented, higher priority to high value and high risk
stories
 Handling of failed acceptance tests in previous iteration

An iteration in XP
XP

 Development approach used in iteration:


1) Envisages that development by pairs of programmers
2) To build code, write automated unit tests first and then code to
pass the tests (test-driven development approach)
3) Design devised earlier may become unsuitable for further
development.
Refactoring done to improve design of existing programs
4) Encourages frequent integration of different units.
One pair at a time can release their changes and integrate into
the common code base.
Project Management Process

 Specify number of resources allocated to each activity for the


project
 Monitoring of progress of different activities
 Specifies all activities to be done to meet cost and quality
objectives
 Basic task to plan detailed implementation of the process for
the particular project and then ensure its proper execution
 Activities grouped into three phases: planning, monitoring and
control, and termination analysis
Temporal relationship between development and management process
Project Management Process

 Planning phase-
 Develop a plan for software development to meet project
objectives
 Software plan produced before development activity begins,
and updated as development proceeds and progress of the
project becomes available
 Major activities: cost estimation, schedule and milestone
determination, project staffing, quality control plans, and
controlling and monitoring plans
 Forms basis for monitoring and control
Project Management Process

 Project monitoring and control phase -


 Takes long duration
 Includes all activities while development is in progress, to
ensure objectives are met and development proceeds
according to the developed plan (if required update)
 Activities: monitoring factors as cost, schedule, quality that
affect these. Monitoring potential risks preventing to meet
objectives. Take necessary actions by exerting control.
 Monitoring requires proper information about the project,
obtained from the development process.
Project Management Process

 Termination analysis phase-


 Called postmortem analysis
 Performed after completion of development process
 To provide information about development process and learn
to improve the process
 In iterative development, done after each iteration to
provide feedback to improve execution of further iterations
Thank You

You might also like