Answer:
A software process model is a simplified description of a software process which is
presented from a particular perspective. Models, by their very nature, are
simplifications so a software process model is an abstraction of the actual process
which is being described. Process models may include activities which are part of
the software process, software products and the roles of people involved in software
engineering.
Some examples of the types of software process model which may be
produced are:
1. A workflow model. This shows the sequence of activities in the process
along with their inputs, outputs and dependencies. The activities in this
model represent human actions.
2. A dataflow or activity model This represents the process as a set of activities
each of which carries out some data transformation. It shows how the input
to the process such as a specification is transformed to an output such as a
design. The activities here may be at a lower-level than activities in a
workflow model. They may represent transformations carried out by people
or by computers.
3. A role/action model This represents the roles of the people involved in the
software process and the activities for which they are responsible.
4. Iterative Processes This prescribes the construction of initially small but ever larger portions of a software project to help all those involved to uncover important issues early before problems or faulty assumptions can lead to disaster. Iterative processes are preferred by commercial developers because it allows a potential of reaching the design goals of a customer who does not know how to define what they want.
5. Capability Maturity Model Integration (CMMI) is one of the leading models and based on best practice. Independent assessments grade organizations on how well they follow their defined processes, not on the quality of those processes or the software produced. CMMI has replaced CMM.
There are a number of different general models or paradigms of software
development:
1. The waterfall approach This takes the above activities and represents them as
separate process phases such as requirements specification, software design,
implementation, testing and so on. After each stage is defined it is 'signedoff'
and development goes on to the following stage.
2. Evolutionary development This approach interleaves the activities of
specification, development and validation. An initial system is rapidly
developed from very abstract specifications. This is then refined with
customer input to produce a system which satisfies the customer's needs.
The system may then be delivered. Alternatively, it may be re-implemented
using a more structured approach to produce a more robust and maintainable
system.
3. Formal transformation This approach is based on producing a formal
mathematical system specification and transforming this specification, using
mathematical methods to a program. These transformations are 'correctness preserving'.
This means that you can be sure that the developed program
meets its specification.
4. System assembly from reusable components This technique assumes that
parts of the system already exist. The system development process focuses
on integrating these parts rather than developing them from scratch.