A software process is a sequence of activities that leads to the production of a software product. There are four fundamental activities that are common to all software processes. There are many different software processes but all must include four activities that are fundamental to software engineering:
- Software specification, where customers and engineers define the software that is to be produced and the constraints on its operation.
- Software development, where the software is designed and programmed.
- Software validation, where the software is checked to ensure that it is what the customer requires.
- Software evolution, where the software is modified to reflect changing customer and market requirements.
Different types of systems need different development processes. For example, real-time software in an aircraft has to be completely specified before development begins. In e-commerce systems, the specification and the program are usually developed together.
Consequently, these generic activities may be organized in different ways and described at different levels of detail depending on the type of software being developed.To develop higher quality software systems in a cost-effective manner, a number of technologies have been introduced. Development process focuses on how the software is to be engineered.
There are many different process models, each being well suited for some type of problems. However, this approach has been focused on technical aspects of software development lifecycles. For example, there are numerous software development processes, such as the :
- waterfall model, the simplest model of software development, where the requirement, design, coding, and testing phases are performed in linear progression. It has been very widely used, and is suitable for well-understood problems.
- iterative development model, This model does not require all requirements to be known at the start, allows feedback from earlier iterations for next ones, and reduces risk as it delivers value as the project proceeds.
- spiral model, the goal of the spiral model of the software production process is to provide a framework for designing such processes, guided by the risk levels in the projects at hand.
- prototyping model, a prototype is built before building the final system, which is used to further develop the requirements leading to more stable requirements. This is useful for projects where requirements are not clear.
- Agile Model, are based on some key principles like developing software in small iterations, working system as the measure of progress, and allowing change at any time.
- eXtreme Programming Model, a project starts with short user stories, details of which are obtained in the iteration in which they are implemented.
- etc,