Life Without a Formal Process
Many process improvement experts see the world as black and white.
- They often feel that there are bad software teams without a formal process, and good teams that have one in place.
- But the world is not that simple!
Teams can be effective without a formal software process
- Teams can consist of “jack-of-all-trades” programmers who understand the business of the organization.
- “Skunk works” programmers may often take initiative and build useful software without input.
- A highly capable development manager may be willing to put in an enormous effort.
An organization that produces software always has a software process
- It’s just not formal, or documented and repeatable
- And teams without a formal process can be happy and productive when they can point to their successes!
- Except when their projects fail.
A team without a formal process does not scale up easily.
- Programmers who used to produce lots of software find that their projects have started to feel “bogged down.”
- This often happens when a small programming group with a good track record is faced with having to build a project on a larger scale.
- It also happens when teams expand.
If there are no complaints about the way the team is building software, then there’s no reason to change!
- However, few teams are really in this situation for long.
Expanding the team is not the only place a formal process is useful.
- It can also help in an organization where experts, users, or stakeholders are no longer readily available to the programmers.
Software Process Improvement
Software process improvement is the art and science of changing an organization’s software process in order to build better software. Software process improvement always involves looking at the big picture.
- This means writing down the entire software process as a whole and making sure that it is followed on each project.
- It involves looking at entire projects and identifying areas that can be improved.
Frameworks and Methodologies
Models and certifications that help assess the state of the organization’s process and serve as a framework for improving that process.
- CMM, ISO 9000 and Six Sigma are frameworks
There are also methodologies that an organization can adopt that describe the complete set of activities, roles, and work products needed to build software.
- Rational Unified Process and Extreme Programming are methodologies.
Capability Maturity Model
The CMM defines the characteristics of a mature, capable process in a way that can be measured and compared to processes at other organizations.
- The CMM consists of areas of improvement, goals that must be met for each area, and specific practices to be implemented.
- A software engineering process group within the organization identifies problems and inefficiencies and defines practices to address them.
- Independent assessors verify that an organization is in compliance with CMM practices.
ISO 9000 is a family of quality management standards defined by the International Standards Organization. It is based on core principles:
- Organizations must focus on their customers by understanding current and future customer needs.
- Leaders within the organization must create and maintain an environment in which people can become involved and fulfill the organization’s objectives.
- People at all levels are important to the organization.
- Activities and resources are best managed as a process.
- Organizations have many interrelated processes, which must be understood and managed as a system.
- The organization should continually improve its performance.
- Decisions should be well informed and based on real data and information.
- An organization and its suppliers are in a mutually beneficial relationship.
Six Sigma is an approach to improving quality in manufacturing and business processes.
- The Greek letter sigma refers to standard deviation—Six Sigma means “six standard deviations from the mean.”
DMAIC is a five-phase approach to Six Sigma improvement
- Define opportunities, Measure performance, Analyze opportunity, Improve performance, Control performance
XP consists of a set of rules and practices that govern all areas of software development: planning, designing, coding, and testing.
- The goal of XP is to lower the cost of change. To meet this goal, many XP practices are highly iterative.
- XP is a disciplined and well-defined process.
- By making the stakeholders part of the project team, XP addresses the problem of the hands-off customer.
Rational Unified Process
RUP is a popular off-the-shelf process based on the idea of highly iterative development
- One thing that makes RUP unique is that it is a product in addition to a process.
RUP includes a disciplined approach to requirements management that is based on the idea of managing changes.
- RUP incorporates software design using the Unified Modeling Language (UML), a visual modeling system for graphically representing the use cases, class model, object interactions, and components of the software.
One core element of RUP is the continuous assessment of the quality of the system.