Software Process and Project Management
Software Process and Project Management
A quality assurance group is charged with assuring management that the software-
development work is actually done the way it is supposed to be done.
To be effective, the assurance organization must have an independent reporting line to
senior management and sufficient resources to monitor performance of all key planning,
implementation, and verification activities.
This generally requires an organization of about 5 to 6 percent the sire of the development
organization. Change control. Control of changes in software development is fundamental
to business and financial control as well as to technical stability.
To develop quality software on a predictable schedule, the requirements must be
established and maintained with reasonable stability throughout the development cycle.
Changes will have to be made, but they must be managed and introduced in an orderly
way.
While occasional requirements changes are needed, historical evidence demonstrates that
many of them can be deferred and phased in later. If all changes are not controlled, orderly
design, implementation, and testing is impossible and no quality plan can be effective.
The Repeatable Process:
The Repeatable Process has one important strength over the Initial Process: It provides
commitment control.
This is such an enormous advance over the Initial Process that the people in the
organization tend to believe they have mastered the software problem.
They do not realize that their strength stems from their prior experience at similar
work. Organizations at the Repeatable Process level thus face major risks when they are
presented with new challenges. Examples of the changes that represent the highest risk at
this level are: New tools and methods will likely affect how the process is performed, thus
destroying the relevance of the intuitive historical base on which the organization relies.
Without a defined process framework in which to address these risks, it is even possible
for a new technology to do more harm than good. When the organization must develop a
new kind of product, it is entering ne\+ territory.
For example, a software group that has experience developing compilers will likely have
design, scheduling, and estimating problems if assigned to write a control program.
Similarly, a group that has developed small, self-contained programs will not understand
the interface and integration issues involved in large-scale projects.
These changes again destroy the relevance of the intuitive historical basis for the
organization's work. Major organization changes can be highly disruptive.
In the Repeatable Process organization, a new manager has no orderly basis for
understanding what is going on and new team members must learn the ropes through word
of mouth.
The key actions required to advance from the Repeatable Process to the Defined Process
are:
1. Establish a process group. A process group is a technical group that focuses exclusively
on improving the software development process. In most software organizations, people
are entirely devoted to product work. Until someone is given a full-time assignment to
work on the process, little orderly progress can be made in improving it. The
responsibilities of process groups include defining the development process, identifying
technology needs and opportunities, advising the projects, and conducting quarterly
2
Software Process and Project Management
management reviews of process status and performance. Typically, the process group
should be about 1 to 3 percent the size of the development organization. Because of the
need for a nucleus of skills, groups smaller than about four are unlikely to be fully
effective. Small organizations that lack the experience base to form a proce5s group
should address these issues through specially formed committees of experienced
professionals or by retaining consultants.
2. Establish a software-development process architecture that describes the technical and
management activities required for proper execution of the development process.4 The
architecture is a structural decomposition of the development cycle into tasks, each of
which has entry criteria, functional descriptions, verification procedures, and exit criteria.
The decomposition continues until each defined task is performed by an individual or
single management unit.
3. If they are not already in place, introduce a family of software-engineering methods and
technologies. These include design and code inspections, formal design methods, library-
control systems, and comprehensive testing methods. Prototyping should also be
considered, along with the adoption of modern implementation languages.
The Defined Process:
With the Defined Process, the organization has achieved the foundation for major and
continuing progress.
For example, the development group, when faced with a crisis, will likely
continue to use the Defined Process.
The foundation has now been established for examining the process and deciding how to
improve it.
As powerful as the Defined Process is, it is still only qualitative: There is little data to
indicate what is going on or how effective the process really is. There is considerable
debate about the value of software-process measurements and the best ones to use.
This uncertainty generally stems from a lack of process definition and the
consequent confusion about the specific items to be measured. With a defined process, we
can focus the measurements on specific tasks.
The process architecture is thus an essential prerequisite to effective measurement. The
key steps"' to advance to the Managed Process are:
1. Establish a minimum, basic set of process measurements to identify the quality and cost
parameters of each process step. The objective is to quantify the relative costs and benefits
of each major process activity, such as the cost and yield of error detection and correction
methods.
2.Establish a process database with the resources to manage and maintain it. Cost and
yield data should be maintained centrally to guard against loss, to make it available for all
projects, and to facilitate process quality and productivity analysis.
3.Provide sufficient process resources to gather and maintain this data and to advise
project members on its use. Assign skilled professionals to monitor the quality of the
data before
entry in the database and to provide guidance on analysis methods and interpretation.
4.Assess the relative quality of each product and inform management where quality
targets are not being met. An independent quality-assurance group should assess the
quality actions of each project and track its progress against its quality plan. When this
progress is
3
Software Process and Project Management
to this point, software development managers have largely focused on their products and
will typically only gather and analyze data that directly relates to product improvement.
In the Optimizing Process, the data is available to actually tune the process itself. With a
little experience, management will soon see that process optimization can produce major
quality and productivity improvements.
For example, many errors can be identified and fixed far more economically by code
inspections than through testing. Unfortunately, there is little published data on the costs
of finding and fixing errors.- However, I have developed a useful rule of thumb from
experience
It takes about one to four working hours to find and fix a bug through inspections
and about 15 to 20 working hours to find and fix a bug in function or system test. It is
thus clear that testing is not a cost-effective way to find and fix most bugs.
However, some kinds of errors are either uneconomical or almost impossible to find
except
by machine.
Examples are errors involving spelling and syntax, interfaces, performance,
human factors, and error recovery.
It would thus be unwise to eliminate testing completely because it provides a useful check
against human frailties.
The data that is available with the Optimizing Process gives us a new perspective on
testing. For most projects, a little analysis shows that there are two distinct activities
involved.
The first is the removal of bugs. To reduce this cost, inspections should be emphasized
together \\ith any other cost-effective techniques. The role of functional and system testing
should then be changed to one of finding symptoms that are further explored to see if the
bug is an isolated problem or if it indicates design problems that require more
comprehensive analysis.
In the Optimizing Process, the organization has the means to identify the weakest elements
of the process and fix them. At this point in process improvement, data is available to
justify the application of technology to various critical tasks and numerical evidence is
available on the effectiveness with which the process has been applied to any given
product.
We no longer need reams of paper to describe what is happening because simple yield
curves and statistical plots provide clear and concise indicators. It is now possible to
assure
the process and hence have confidence in the quality of the resulting products. People in
the process.
Any software development process is dependent on the quality of the people who
implement it. Even with the best people, however, there is always a limit to what they can
accomplish.
When engineers are already working 50 to 60 hours a week, it is hard to see how they
could
handle the vastly greater challenges of the future.
The Optimizing Process helps in several \+ays: It helps managers understand where help
is needed and how best to provide the people with the support they require. It lets
professionals communicate in concise, quantitative terms.
This facilitates the transfer of knowledge and minimizes the likelihood of their wasting
18time on problems that have already been solved.
It provides the framework for the professionals to understand their work performance and
to see how to improve it.
Software Process and Project Management
sponsored by the U.S. Department of Defense (DoD). SEI was founded in 1984 to address
software engineering issues and, in a broad sense, to advance software engineering
methodologies. More specifically, SEI was established to optimize the process of developing,
acquiring, and maintaining heavily software-reliant systems for the DoD. Because the processes
involved are equally applicable to the software industry as a whole, SEI advocates industry-wide
adoption of the CMM
The CMM is similar to ISO 9001, one of the ISO 9000 series of standards specified by the
International Organization for Standardization (ISO). The ISO 9000 standards specify an effective
quality system for manufacturing and service industries; ISO 9001 deals specifically with
software development and maintenance. The main difference between the two systems lies in
their respective purposes: ISO 9001 specifies a minimal acceptable quality level for software
processes, while the CMM establishes a framework for continuous process improvement and is
more explicit than the ISO standard in defining the means to be employed to that end.
At the initial level, processes are disorganized, even chaotic. Success is likely to depend on
individual efforts, and is not considered to be repeatable, because processes would not be
sufficiently defined and documented to allow them to be replicated.
At the repeatable level, basic project management techniques are established, and successes
could be repeated, because the requisite processes would have been made established, defined,
and documented.
At the defined level, an organization has developed its own standard software process through
greater attention to documentation, standardization, and integration.
At the managed level, an organization monitors and controls its own processes through data
collection and analysis.
At the optimizing level, processes are constantly being improved through monitoring
feedback from current processes and introducing innovative processes to better serve the
organization's particular needs
Software Process and Project Management
.
Software Process and Project Management
where as CMM Integrated describes both software and system engineering. CMMI also
incorporates the Integrated Process and Product Development and the supplier sourcing.
CMMI:
What is CMMI?
CMM Integration project was formed to sort out the problem of using multiple CMMs. CMMI
product team's mission was to combine three Source Models into a single improvement
framework for the organizations pursuing enterprise-wide process improvement. These three
Source Models are: Capability Maturity Model for Software (SW-CMM) - v2.0 Draft C.
Electronic Industries Alliance Interim Standard (EIA/IS) - 731 Systems Engineering. Integrated
Product Development Capability Maturity Model (IPD-CMM) v0.98 . CMM Integration
Builds an initial set of integrated models. Improves best practices from source models based on
lessons learned. Establishes a framework to enable integration of future models.
management, quality assurance, verification, and validation. Create value for the stockholders:
Mature organizations are more likely to make better cost and revenue estimates than those with
less maturity, and then perform in line with those estimates. CMMI supports quality products,
predictable schedules, and effective measurement to support the management in making accurate
and defensible forecasts. This process maturity can guard against project performance problems
that could weaken the value of the organization in the eyes of investors. Enhance customer
satisfaction: Meeting cost and schedule targets with high quality products that are validated
against customer needs is a good formula for customer satisfaction. CMMI addresses all of these
ingredients through its emphasis on planning, monitoring, and measuring, and the improved
predictability that comes with more capable processes. Increase market share: Market share is a
result of many factors, including quality products and services, name identification, pricing, and
image. Customers like to deal with suppliers who have a reputation for meeting their
commitments.
Gain an industry-wide recognition for excellence: The best way to develop a reputation for
excellence is to consistently perform well on projects, delivering quality products and services
within cost and schedule parameters. Having processes that conform to CMMI requirements can
enhance that reputation.
The CMMI is structured as follows: Maturity Levels (staged representation) or Capability
Levels (continuous representation) Process Areas Goals: Generic and Specific Common
Features Practices: Generic and Specific This chapter will discuss about two CMMI
representations and rest of the subjects will be covered in subsequent chapters. A representation
allows an organization to pursue different improvement objectives. An organization can go for
one of the following two improvement paths. Staged Representation The staged representation is
the approach used in the Software CMM. It is an approach that uses predefined sets of process
areas to define an improvement path for an organization. This improvement path is described by
a model component called a Maturity Level. A maturity level is a well-defined evolutionary
plateau towards achieving improved organizational processes. CMMI Staged Representation
Provides a proven sequence of improvements, each serving as a foundation for the next. Permits
comparisons across and among organizations by the use of maturity levels. Provides an easy
migration from the SW- CMM to CMMI. Provides a single rating that summarizes appraisal
results and allows comparisons among organizations. Thus Staged Representation provides a pre-
defined roadmap for organizational improvement based on proven grouping and ordering of
processes and associated organizational relationships. You cannot divert from the sequence of
steps.
Continuous Representation Continuous representation is the approach used in the SECM and the
IPD-CMM. This approach allows an organization to select a specific process area and make
improvements based on it.
The continuous representation uses Capability Levels to characterize
improvement relative to an individual process area.
CMMI Continuous Representation
Allows you to select the order of improvement that best meets your organization's
business objectives and mitigates your organization's areas of risk.
Enables comparisons across and among organizations on a process-area-byprocess-area basis.
Provides an easy migration from EIA 731 (and other models with a continuous representation)
to CMMI. Thus Continuous Representation provides flexibility to organizations to choose the
processes for improvement, as well as the amount of improvement required.
Software Process and Project Management
CM - Configuration Management
MA - Measurement and Analysis
PPQA - Process and Quality Assurance
REQM - Requirements Management
SAM - Supplier Agreement Management
SD - Service Delivery
WMC - Work Monitoring and Control
WP - Work Planning
Maturity Level 3 - Defined
OT - Organizational Training
RSKM - Risk Management
SCON - Service Continuity
SSD - Service System Development
SST - Service System Transition
STSM - Strategic Service Management
Maturity Level 4 - Quantitatively Managed
Advantages of CMMI
There are numerous benefits of implementing CMMI in an IT / Software Development
Organization, some of these benefits are listed below:
Culture for maintaining Quality in projects starts in the mind of the junior programmers to
the senior programmers and project managers
Centralised QMS for implementation in projects to ensure uniformity in the
documentation
which means less learning cycle for new resources, better management of project status
and health
Incorporation of Software Engineering Best Practices in the Organizations as described in
CMMI Model
Cost saving in terms of lesser effort due to less defects and less rework
This also results in increased Productivity
On-Time Deliveries
Increased Customer Satisfaction
Overall increased Return on Investment
Decreased Costs
Improved Productivity
Disadvantages of CMMI
PCMM:
Software Process and Project Management
Undertaking Gap Analysis to assess the current level of maturity of the organization as against
PCMM®.
This implementation support on assessing People CMM® Practices, covering the concepts and
principles, framework and will help to know how an organization has to assess the status of
People CMM® Goals and Practices being implemented in organizations. The process of
assessment is as follows;
Guidelines on how to map the assessment results to the structural components of People CMM®.
Based on the Maturity Level determined a presentation of Pros and Cons is to be made to the
authorities by making recommendations whether to go for up-gradation in maturity level and
suggesting timelines for such up-gradation. This shall facilitate for easy decision making by the
authorities.
3. Recommendation whether to go for up-gradation in maturity level and suggesting timelines for
such up-gradation.
5. Develop roadmap and action plan for up gradation to the next level along with specific timelines.
A roadmap and action plan for up gradation to next level along with specific timelines with date
wise action plan with the organizational authorities.
Level 2
Staffing
Work Environment
Performance Management
Compensatio
n Level 3
Competency
Analysis
Workforce Planning
Competency Development
Career Development
Competency-Based Practices
Workgroup Development
Participatory Culture
Level 4
Competency Integration
Software Process and Project Management
Empowered Workgroups
Competency-Based Assets
Organizational Capability
Management
Mentoring
Level 5
PSP:
The Personal Software Process (PSP) is a structured software development process that is
designed to help software engineers better understand and improve their performance by bringing
discipline to the way they develop software and tracking their predicted and actual development
of the code. It clearly shows developers how to manage the quality of their products, how to make
a sound plan, and how to make commitments. It also offers them the data to justify their plans.
They can evaluate their work and suggest improvement direction by analyzing and reviewing
development time, defects, and size data. The PSP was created by Watts Humphreyto apply the
underlying principles of the Software Engineering Institute's (SEI) Capability Maturity Model
(CMM) to the software development practices of a single developer. It claims to give software
engineers the process skills necessary to work on a team software process (TSP) team.
Objectives
The PSP aims to provide software engineers with disciplined methods for improving personal
software development processes. The PSP helps software engineers to:
Process
The input to PSP is the requirements; requirements document is completed and delivered to the
engineer.
PSP0, PSP0.1 (Introduces process discipline and measurement)
PSP0 has 3 phases: planning, development (design, code, compile, test) and a post mortem. A
baseline is established of current process measuring: time spent on programming, faults
injected/removed, size of a program. In a post mortem, the engineer ensures all data for the
projects has been properly recorded and analysed. PSP0.1 advances the process by adding a
coding standard, a size measurement and the development of a personal process improvement
plan (PIP). In the PIP, the engineer records ideas for improving his own process.
PSP1, PSP1.1 (Introduces estimating and planning)
Based upon the baseline data collected in PSP0 and PSP0.1, the engineer estimates how large a
new program will be and prepares a test report (PSP1). Accumulated data from previous projects
is used to estimate the total time. Each new project will record the actual time spent. This
information is used for task and schedule planning and estimation (PSP1.1).
PSP2, PSP2.1 (Introduces quality management and design)
PSP2 adds two new phases: design review and code review. Defect prevention and removal of
them are the focus at the PSP2. Engineers learn to evaluate and improve their process by
measuring how long tasks take and the number of defects they inject and remove in each phase of
development. Engineers construct and use checklists for design and code reviews. PSP2.1
introduces design specification and analysis techniques
(PSP3 is a legacy level that has been superseded by TSP.)
Software Process and Project Management
One of the core aspects of the PSP is using historical data to analyze and improve process
performance. PSP data collection is supported by four main elements:
Scripts
Measures
Standards
Forms
The PSP scripts provide expert-level guidance to following the process steps and they provide a
framework for applying the PSP measures. The PSP has four core measures:
Size – the size measure for a product part, such as lines of code (LOC).
Effort – the time required to complete a task, usually recorded in minutes.
Quality – the number of defects in the product.
Schedule – a measure of project progression, tracked against planned and actual completion
dates.
Applying standards to the process can ensure the data is precise and consistent. Data is logged in
forms, normally using a PSP software tool. The SEI has developed a PSP tool and there are also
open source options available, such as Process Dashboard.
The key data collected in the PSP tool are time, defect, and size data – the time spent in each
phase; when and where defects were injected, found, and fixed; and the size of the product parts.
Software developers use many other measures that are derived from these three basic measures to
understand and improve their performance. Derived measures include:
36
Software Process and Project Management
Both Agile and the TSP/PSP share the idea of team members taking responsibility for their own
work and working together to agree on a realistic plan, creating an environment of trust and
accountability. However, the TSP/PSP differs from Agile in its emphasis on documenting the
process and its use of data for predicting and defining project schedules.
Quality[edit]
High-quality software is the goal of the PSP, and quality is measured in terms of defects. For the
PSP, a quality process should produce low-defect software that meets the user needs.
The PSP phase structure enables PSP developers to catch defects early. By catching defects early,
the PSP can reduce the amount of time spent in later phases, such as Test.
The PSP theory is that it is more economical and effective to remove defects as close as possible
to where and when they were injected, so software engineers are encouraged to conduct personal
reviews for each phase of development. Therefore, the PSP phase structure includes two review
phases:
Design Review
Code Review
To do an effective review, you need to follow a structured review process. The PSP recommends
using checklists to help developers to consistently follow an orderly procedure.
The PSP follows the premise that when people make mistakes, their errors are usually predictable,
so PSP developers can personalize their checklists to target their own common errors. Software
engineers are also expected to complete process improvement proposals, to identify areas of
weakness in their current performance that they should target for improvement. Historical project
data, which exposes where time is spent and defects introduced, help developers to identify areas
to improve.
PSP developers are also expected to conduct personal reviews before their work undergoes a peer
or team review.
TSP:
In combination with the personal software process (PSP), the team software process (TSP)
provides a defined operational process framework that is designed to help teams of managers and
engineers organize projects and produce software the principles products that range in size from
small projects of several thousand lines of code (KLOC) to very large projects greater than half a
million lines of code. The TSP is intended to improve the levels of quality and productivity of a
team's software development project, in order to help them better meet the cost and schedule
commitments of developing a software system.
The initial version of the TSP was developed and piloted by Watts Humphrey in the late 1990s[5]
and the Technical Report[6] for TSP sponsored by the U.S. Department of Defense was published
in November 2000. The book by Watts Humphrey,[7] Introduction to the Team Software Process,
presents a view of the TSP intended for use in academic settings, that focuses on the process of
building a software production team, establishing team goals, distributing team roles, and other
teamwork-related activities
Software Process and Project Management