A software process is a set of activities and associated outcome whose objective is the advance development or evolution of software. There are four fundamental software process activities that are general to all software processes. These processes activates are as follows:
- Software specification: In the software specification process activity customers and software engineers define the software to be produced and the constraints on its operation and functions.
- Software development: In software development the software is designed and programmed as per the customer specification by the software development engineer team.
- Software validation: Software validation of software process activity is checked the software to ensure that it is what the customer requires as in the specification.
- Software evolution: Software evolution process activity includes the software modified to adapt it to varying customer and markets promote requirements.
Also Check: What is software engineering
As per the definition of a software process, “It is the cornerstone of implementing, developing and improving a software process”. Process improvement means understanding presented processes and altering these processes to enhance the product quality and/or shrink the costs and overall development time. The majority of the literature on process improvement has focused on perfecting processes to enhance the product quality and, in particular, to condense the number of defects in delivered software. Once this has been achieved, the principal aims might be cost or schedule reductions.
Different types of systems need different implementation and development processes. For example, real-time software in an aircraft scheduling and data management has to be absolutely specified before development begins whereas, in e-commerce software systems, the specification and the program are usually developed mutually. As a result, these generic activities may be organized in different ways and described at different levels of detailed feature for different types of software.
Software processes are inherently multifaceted, complex and involve a very large number of activities. Software processes have number of attributes or characteristics. It is unattainable to formulate process improvements that optimize all process attributes simultaneously. For example, if customer plan is to have a rapid development process, then customer may have to trim down the process visibility. To make a process visible means producing documents at regular periods. This, inevitably, slows down the process.
Software process improvement does not only mean adopting exacting techniques, methods or tools or using some model of a process that has been used elsewhere. Even though organizations that develop the similar type of software evidently have much in common, there are always local organizational factors, procedures and standards that influence the process. As software engineer you will rarely be successful in bringing process improvements if you only effort to change the process to one that is used somewhere else. You should always look on process improvement as specific to an organization or a division of a larger organization.
Software process improvement is a cyclical activity; it involves three principal stages;
- Process measurement: Process measurement involves the measurement of current project attributes or the product. The aim is to advance the measured attributes as per the goals of the organization involved in process improvement.
- Process analysis: It involves the current process is assessed, and process weaknesses and bottlenecks are identified. Process models that describe the process are usually developed during process analysis stage.
- Process change: Changes to the process that have been identified during analysis are introduced.
Software process improvement is a long-term activity. It is also a continuous activity as, whatever new processes are introduced, the business environment will change and these processes will themselves have to evolve to take these changes into account.
Software Process characteristics:
Software process have following characteristics are as follows:
- Understandability: To what extent is the process explicitly defined and how easy is it to understand the process definition?
- Visibility: Do the process activities culminate in clear results so that the progress of the process is externally visible?
- Supportability: To what extent can CASE tools be used to support the process activities?
- Acceptability: Is the defined process acceptable to and usable by the engineers responsible for producing the software product?
- Reliability: Is the process designed in such a way that process errors are avoided or trapped before they result in product error?
- Robustness: Can the process continue in spite of unexpected problem?
- Maintainability: Can the process evolve to reflect changing organizational requirements or identified process improvements?
- Rapidly: How fast can the process of delivering a system from a given specification be completed?
However, utilize of an inappropriate software process may condense the quality or the worth of the software product to be developed and/or raise the development costs.