BASIC IDEA IN SOFTWARE PROCESS
18.1 BASIC IDEA IN SOFTWARE PROCESS
The concept of a process plays an important role in today’s software develop- ment. Without a repeatable process, the only repeatable results you are likely to produce are errors [1]. In the software engineering context, a process comprises a set of activities that are executed to develop software products. The activities find expressions in the form of methods, techniques, strategies, procedures, and prac- tices. Those activities heavily rely on information repositories such as documents, standards, and policies. Different processes are driven by different goals and avail- ability of resources. The concept of a process is applied not just to develop source code, but to other software-related products, such as a project plan, requirements document, design document, and user manual, as well. It is effective to follow a defined process because of the following benefits:
• The process can be repeated in subsequent projects. • The process can be evaluated by using a variety of metrics, such as cost,
quality, and time to deliver a product. • Actions can be taken to improve the process to achieve better results.
A process for software development consists of several different processes for its different component tasks. For example, gathering the requirements of a system, constructing a functional specification of a system, designing a system, testing a system, and maintaining a system are different tasks to be performed in the life cycle of a software system. Those different tasks, which are quite different from each
Software Testing and Quality Assurance: Theory and Practice , Edited by Kshirasagar Naik and Priyadarshi Tripathy Copyright © 2008 John Wiley & Sons, Inc.
547 other, need different processes to be followed. A requirements gathering process is
18.1 BASIC IDEA IN SOFTWARE PROCESS
fundamentally different from a testing process. Similarly, a design process is very different from a testing process. However, some similarities between a maintenance process and a testing process cannot be ruled out because a maintenance task may involve significant changes to the design of the system as well as rigorous testing.
Software testing is treated as a distinct process because it involves a variety of unique activities, techniques, strategies, and policies as explained in the following:
• Testing is performed to achieve the following objectives: Reveal defects in software products
Show the extent to which a software system possesses different quality attributes, such as reliability, performance, stability, and scalability
• Testing begins almost at the same time as a project is conceptualized, and it lasts as long as the system is in existence.
• Testing is carried out by people with differing responsibilities in differ- ent phases of software development. Those different levels of testing are commonly known as unit testing, integration testing, system testing, and acceptance testing.
A number of techniques can be applied at each level of testing for gener- ating test cases.
A number of different testing strategies can be applied at different levels of testing.
A number of metrics can be monitored to gauge the progress of testing.
A number of metrics can be monitored to accurately reflect the different quality levels of a system.
• Testing is influenced by organizational policies, such as the level of quality to be achieved in a product, the fraction of the total budget for a project to be allocated to testing, and the duration of testing.
• Testing can be performed in a combination of manual and automated modes of execution of test cases.
To be able to improve a defined process, organizations need to evaluate its capabilities and limitations. For example, the capability maturity model (CMM), developed by the Software Engineering Institute (SEI) at Carnegie Mellon Univer- sity, allows an organization to evaluate its software development processes. The model supports incremental process improvement. For an organization, it is more practical to develop a continuously improving process than find one which is “just right.” By recognizing the importance of testing as a distinct process—much differ- ent from an overall process for software development—a separate model, known as a testing maturity model (TMM), has been developed to evaluate a testing pro- cess. In addition, for an organization to be able to improve its testing process, the test process improvement (TPI) model has been developed.
548 CHAPTER 18 MATURITY MODELS