Chapter 02
Chapter 02
A series of predictable steps - a road map that helps you create a timely,
high-quality result.
Work products of software process are the programs, documents, and data
that are produced as a consequence of the activities and tasks defined by
the process.
Framework activities
work tasks
work products
milestones & deliverables
QA checkpoints
Umbrella activities
Reusability management
Defines criteria for work product reuse (including software components)
and establishes mechanisms to achieve reusable components.
Measurement
Defines and collects process, project, and product measures that assist the team
in delivering software that meets stakeholders’ needs
Risk management
Assesses risks that may affect the outcome of the project or the quality of the
product
It should be agile and adaptable (to the problem, to the project, to the team,
and to the organizational culture)
Different degrees of applying process among projects:
Overall flow of activities, actions, and tasks and the interdependencies among them
Degree to which actions and tasks are defined within each framework activity
Degree to which work products are identified and required
Manner in which quality assurance activities are applied
Manner in which project tracking and control activities are applied
Overall degree of detail and rigor with which the process is described
Degree to which the customer and other stakeholders are involved with the project
Level of autonomy given to the software team
Degree to which team organization and roles are prescribed
Overview
Popular Process Models
The Unified Process
Agile Development
A task set defines the actual work to be done to accomplish the objectives
of a software engineering action.
A list of the task to be accomplished
A list of the work products to be produced
A list of the quality assurance filters to be applied
Why?
Every software team encounters problems as it moves through the software process. It
would be useful if proven solutions to these problems were readily available to the
team so that the problems could be addressed and resolved quickly.
A process pattern
describes a process-related problem that is encountered during software engineering
work,
identifies the environment in which the problem has been encountered, and
suggests one or more proven solutions to the problem.
Stated in more general terms, a process pattern provides you with a template
[Amb98] – a consistent method for describing problem solutions within the
context of the software process.
Waterfall Model
Incremental Process Model
Evolutionary Process Models
Concurrent Models
This model is used only when the requirements are very well known, clear
and fixed.
Product definition is stable.
Technology is understood.
There are no ambiguous requirements
Ample resources with required expertise are available freely
The project is short.
Generates working software quickly and early during the software life
cycle.
This model is more flexible – less costly to change scope and requirements.
It is easier to test and debug during a smaller iteration.
In this model customer can respond to each built.
Lowers initial delivery cost.
Easier to manage risk because risky pieces are identified and handled
during it’d iteration.
This model can be used when the requirements of the complete system are
clearly defined and understood.
Major requirements must be defined; however, some details can evolve
with time.
There is a need to get a product to the market early.
A new technology is being used
Resources with needed skill set are not available
There are some high risk features and goals.
The spiral model is an evolutionary software process model that couples the
iterative nature of prototyping with the controlled and systematic aspects
of the waterfall model. It provides the potential for rapid development of
increasingly more complete versions of the software.
The spiral development model is a risk-driven process model generator that
is used to guide multi-stakeholder concurrent engineering of software
intensive systems. It has two main distinguishing features. One is a cyclic
approach for incrementally growing a system’s degree of definition and
implementation while decreasing its degree of risk. The other is a set of
anchor point milestones for ensuring stakeholder commitment to feasible
and mutually satisfactory system solutions.
1) Our highest priority is to satisfy the customer through early and continuous
delivery of valuable software.
2) Welcome changing requirements, even late in development. Agile processes
harness change for the customer's competitive advantage.
3) Deliver working software frequently, from a couple of weeks to a couple of
months, with a preference to the shorter timescale.
4) Business people and developers must work together daily throughout the
project.
5) Build projects around motivated individuals. Give them the environment and
support they need, and trust them to get the job done.
6) The most efficient and effective method of conveying information to and within
a development team is face–to–face conversation.
the process molds to the needs of the people and team, not the other way
around
key traits must exist among the people on an agile team and the team
itself:
Competence.
Common focus.
Collaboration.
Decision-making ability.
Fuzzy problem-solving ability.
Mutual trust and respect.
Self-organization.
When new changes are needed to be implemented. The freedom agile gives to change is
very important. New changes can be implemented at very little cost because of the
frequency of new increments that are produced.
To implement a new feature the developers need to lose only the work of a few days, or
even only hours, to roll back and implement it.
Unlike the waterfall model in agile model very limited planning is required to get started
with the project. Agile assumes that the end users’ needs are ever changing in a dynamic
business and IT world. Changes can be discussed and features can be newly effected or
removed based on feedback. This effectively gives the customer the finished system they
want or need.
Both system developers and stakeholders alike, find they also get more freedom of time
and options than if the software was developed in a more rigid sequential way. Having
options gives them the ability to leave important decisions until more or better data or
even entire hosting programs are available; meaning the project can continue to move
forward without fear of reaching a sudden standstill.