To accomplish a set of tasks, it is important to go through a sequence of predictable steps. This sequence of steps refers to a road map, which helps in developing a timely, high quality, and highly efficient product or system. Road map, commonly referred to as software process, comprises activities, constraints, and resources that are used to produce an intended system. Software process helps to maintain a level of consistency and quality in products or services that are produced by different people.
The software development process, also known as the software life cycle, describes the evolution of the software product from its conception through itsdesign, implementation, delivery, and finally to its maintenance. This chapterdiscusses software process, standards used to assess software process, variousprocess models, and the organizational process.
We’ll be covering the following topics in this tutorial:
SOFTWARE PROCESS, PROJECT, AND PRODUCT
Software engineering comprises interrelated and recurring entities, which are essential for software development. Software is developed efficiently and effectively with the help of well defined activities or processes. In general, a process is defined as a series of steps involving activities and resources, which produces the desired output. Software process is defined as a collection of procedures to develop the software product according to certain goals or standards. Generally, the following points are noted about software process.
- It uses resources subject to given constraints and produce intermediate and final products.
- It is composed of sub processes that are organized in such a manner that each sub process has its own process model.
- It is carried out with an entry and exit criteria that helps in monitoring the beginning and completion of the activity.
- It includes guidelines, which explain the objectives of each activity.
- It is vital because it imposes uniformity on the set of activities.
- It is regarded as more than just a procedure, tools or techniques, which are collectively used in a structured manner to produce a product.
- It includes various technical and managerial issues, which are required to develop the software.
The characteristics of software processes are listed in Table.
The extent to which the process is explicitly defined and the ease with which the process definition is understood.
Whether the process activities culminate in clear results so that the progress of the process is visible externally.
The extent to which CASE tools can support the process activities.
The extent to which the defined process is acceptable and usable by the engineers, responsible for producing the software product.
The manner in which the process is designed such that errors in the process are avoided or trapped before they result in errors in the product.
Whether the process can continue in spite of unexpected problems.
Whether the process can evolve to reflect the changing organizational requirements or identify process improvements
The speed with which the complete software can be delivered with given specifications.
A project is defined as a specification essential for developing or maintaining a specific product. Software project is developed when software processes are executed for certain specific requirements of the user. Thus, by using software process, the software project can be easily developed. The activities in software project comprise various tasks for managing resources and developing products. The software project involves people (developers, project manager, end-users, and so on) also referred to as participants who use software processes to create a product according to the user’s requirements. The participants play a major role in the development of the project and select the appropriate process for the project. In addition, a project is efficient if it is developed within the time constraint. The outcome or the result of the software project is known as a product. Thus, a software project uses software processes to create a product.
Software process can be used in the development of many software projects, each of which can produce one or more software products. Software project begins with requirements and ends with the accomplishment of the requirements. Thus, the software process should be performed to develop the final software by accomplishing user’s requirements.
Software Process Components
The objective of the software process is to develop a product, which accomplishes user’s requirements. The major components of the software process include a process management process and a product engineering process. The Process Management Process (PMP) aims at improving software processes so that a cost effective and high-quality product is developed. For this, the existing processes of the completed projects are examined. The process of comprehending the existing process, analyzing its properties, determining how to improve it, and then effecting the improvement is carried out by PMP.A group known as the Software Engineering Process Group (SEPG) performs the activities of the process management.
Based on above mentioned analysis, the product engineering processes are improved, thereby improving the software process. The aim of the product engineering process is to develop the product according to the user’s requirements. The product engineering process comprises three major components, which are listed below.
Development process: It is the process which is used during the development of the software. It specifies the development and quality assurance activities that are to be performed. Programmers, designers, testing personnel, etc., perform these processes.
Project management process: It is concerned with the set of activities or tasks, which are used to successfully accomplish a set of goals. It provides the means to plan, organize, and control the allocated resources to accomplish project costs, time, and performance objectives. For this, various processes, techniques, and tools are used to achieve the objectives of the project. Project management team performs the activities of this process.
Configuration control process: It manages changes that occur as a result of modifying the requirements. In addition, it maintains integrity of the products with the changed requirements. The activities in configuration control processes are performed by a group called the Configuration Control Board (CCB).
Note that the project management process and configuration control process depend on the development process. The management process aims to control the development process, depending on the activities in the development process.
Process framework determines the processes which are essential for completing a complex software project. This framework identifies certain activities, known as framework activities, which are applicable to all software projects regardless of their type and complexity. Some of the framework activities are listed below.
- Communication: It involves communication with the user so that the requirements are easily understood.
- Planning: It establishes a plan for accomplishing the project. It describes the schedule for the project, the technical tasks involved, expected risks, and the required resources.
- Modeling: It encompasses creation of models, which allow the developer and the user to understand software requirements and the designs to achieve those requirements.
- Construction: It combines generation of code with testing to uncover errors in the code.
- Deployment: It implies that the final product (software) is delivered to the user. The user evaluates the delivered product and provides feedback based on the evaluation.
In addition to framework activities, process framework also comprises a set of activities known as umbrella activities, which are used throughout the software process. These activities are listed below.
- Software project tracking and control: It monitors the actual process so that management can take necessary steps if the software project deviates from the plans laid down. It involves tracking procedures and reviews to check whether the software project is according to user’s requirements. A documented plan is used as a basis for tracking the software activities and revising the plans.
- Formal technical reviews: It assesses the code, products and documents of software engineering practices to detect and remove errors.
- Software quality assurance: It assures that the software is according to the requirements. In addition, it is designed to evaluate the processes of developing and maintaining quality of the software.
- Reusability management: It determines the criteria for products reuse and establishes mechanisms to achieve reusable Components.
- Software configuration management: It manages the changes made in the software processes of the products throughout the life cycle of the software project. It controls changes made to the configuration and maintains the integrity in the software development process.
- Risk management: It identifies, analyzes, evaluates and eliminates the possibility of unfavourable deviations from expected results, by following a systematic activity and then develops strategies to manage them.