1.1 Introduction
The mission of a software company is to develop high-quality innovative products and services at a competitive price to its customers, and to do so ahead of its competitors. This requires a clear vision of the business, a culture of innovation, an emphasis on quality, detailed knowledge of the business domain, and a sound product development strategy.
It also requires a focus on customer satisfaction and software quality to ensure that the desired quality is built into the software product, and that customers remain loyal to the company. Customers today have very high expectations on quality, and expect high-quality software products to be consistently delivered on time. The focus on quality requires that the organization define a sound software development infrastructure to enable quality software to be consistently produced.
This book describes approaches used in current software engineering to build quality into software. This involves project planning and tracking, software lifecycles, software inspections and testing, configuration management, software quality assurance, etc. The capability maturity model integrated (CMMI) is discussed in detail and the CMMI provides a framework that assists organizations in software process improvement. It allows them to assess the current capability or maturity of selected software processes and to prioritize improvements.
The assessment (or SCAMPI appraisal ) of an organization against the CMMI reveals strengths and weaknesses of the management and engineering processes in the organization. The output from the appraisal is used to formulate an improvement plan, which is then tracked to completion. The execution of the plan may take 1 or more years of effort.
Quality improvement also requires that the organization be actively aware of industrial best practice, as well as emerging technologies from various research programs. Piloting or technology transfer of innovative technology is a key part of continuous improvement.
The history of quality and some of the key people who have contributed to the quality movement are discussed later in the chapter. This includes well-known quality gurus such as Shewhart, Deming, Juran, and Crosby, and these grandfathers of quality played an important role in promoting quality in business. Watts Humphrey is considered the father of software quality, and his important contributions to software process improvement are discussed.
1.1.1 The Software Engineering Challenge
The challenge in software engineering is to deliver high-quality software on time to customers. The Standish Group research [
Fig. 1.1
Standish research Project cost estimation accuracy in 1998
Project management and estimating project cost, effort and schedule accurately are software engineering challenges. Consequently, organizations need to determine how good their estimation process actually and to improve it. The actual project effort versus estimated project estimate and the actual project schedule versus projected project schedule are determined.
Risk management is a key part of project management, and the objective is to identify potential risks early in the project, to determine the probability of their occurrence and their impact should they occur. The management of a risk involves actions to eliminate or reduce the probability of its occurrence or its impact should it occur, or to have a contingency plan should the risk materialize. Risks need to be managed throughout the project lifecycle.
Projects sometimes fail and there are many examples of project being abandoned prior to completion. For example, the Taurus project at the London stock exchange is a well-known disaster, and the original budget was 6 million. The project was eventually abandoned, and at that stage it was 11 years late, i.e., 13,200 % late and had cost the city of London hundreds of millions [].
It is essential that requirements are properly managed as changing requirement (or the introduction of new requirements late in the software development lifecycle) may have a negative effect on the project. It may be necessary to accept the late requirement change if it is demanded by a customer, but there may be risks to the project schedule and quality. However, a good requirements process will ensure that changes to the requirements are minimized and controlled, and the requirements process may include prototyping or joint user reviews to ensure that they match the needs of the customer.
The implementation of the requirements involves design, development and testing activities. It may also involve the production of user manuals and training materials as well as the technical documentation. Changes to requirements may occur, and any change requests must be approved and communicated to the project team. Quality must be built into the software and testing activities are carried out to verify the correctness of the software, and that it correctly implements the requirements. The project manager is responsible for delivering the project on time, and recovering the schedule when the project falls behind schedule.
The challenges in software engineering are also faced in many other disciplines. Bridges have been constructed by engineers for several millennia and bridge building is a mature engineering activity. However, civil engineering projects occasionally fall behind schedule or suffer design flaws; for example, the infamous Tacoma Narrows bridge (or Galloping Gertie as it was known) collapsed in 1940 due to a design flaw.
The Tacoma Narrows Bridge was known for its tendency to sway in windstorms. The shape of the bridge was like that of an aircraft wing, and under windy conditions it would generate sufficient lift to become Unstable. A large windstorm in November, 1940 caused catastrophic failure. The significance of the Tacoma Bridge is its collapse and the subsequent investigation by engineers. They realized that aero-dynamical forces in suspension bridges were not sufficiently understood in the design of the bridge, and that new research was needed. It was recommended that wind tunnel tests be used to aid in the design of the replacement bridge.