2 Software Processes is: Coherent (logically connected) sets of activities for specifying, designing, implementing, testing and evolution software systems
3 The software process A set of activities required to develop a software system such as: –Specification, functionality and constraints must be defined. –Design and implementation, software meet the specification must be produced. –Validation, it does what the customer wants. –Evolution, must evolve to meet changes.
4 software process model A software process model is an abstract representation of a process. It presents a description of a process.
5 Generic software process models The waterfall model –Separate and distinct phases of specification and development Evolutionary development –Specification and development are interleaved Formal systems development –A mathematical system model is formally transformed to an implementation Reuse-based development –The system is assembled from existing components
7 Waterfall model phases (activities) Requirements definition: services, constraints, and goals are established. System and software design: partitions requirements, identifying and describing the subsystems of the software and their relationships. Implementation and unit testing: construction of programs and programs testing.
8 Integration and system testing: integrate and test the complete system. Operation and maintenance: install the system, correct errors, and enhance the system performance and services. (This is the longest phase.) Waterfall model phases (activities), cont…
9 Waterfall model Linear sequential model Distinct stages with deliverables at the end of each phase The main advantage : Each phase is terminated with the approval of a document. high process visibility—it is easy to see where in the process you are.
10 Waterfall model problems The drawback of the waterfall model is the difficulty of making changes after the process is underway Therefore, this model is only appropriate when the requirements are well-understood The waterfall model is mostly used when the project is part of a larger systems engineering projects where a system is developed at several sites.
11 Evolutionary development Is based on the idea of developing an initial implementation, exposing this to user and refining it through many versions until a system has been developed.
13 Evolutionary development-types Exploratory development –Should start with well-understood requirements, and work with the customer to explore their requirements to deliver a final system. –The system evolves by adding a new feature proposed by the customer. Throw-away prototyping –Objective is to understand the customer’s requirements and develop a better requirements for the system. Should start with poorly understood requirements
14 Evolutionary development, advantages More effective than waterfall because it meets the immediate needs of customers. The specification can be developed incrementally.
15 Evolutionary development Problems –Lack of process visibility(manager needs a regular deliverables to measure progress) –Systems are often poorly structured (continual changes tend to corrupt the software structure ) Applicability –For small or medium-size interactive systems –For parts of large systems (e.g. the user interface)
16 –For large system, it is better to use a mixed process between waterfall and evolutionary. How? We develop a system using throw-away prototyping to resolve the uncertainties in the system specification then re-implement using waterfall for a parts of the system that are well understood and other parts (user interface ) should be developed using the exploratory approach.
17 Formal systems development Based on the transformation of a mathematical specification through different representations to an executable program Transformations are ‘correctness- preserving’ so the program conforms to its specification
19 This approach differs from the waterfall model: - The software requirements specification is refined into a detailed formal specification using math notation. - The processes of design, implementation, and unit testing are replaced by a series of transformation. - In this transformation process, the math notation will be converted into a more detail, but still mathematically correct.
20 Formal transformations The following will illustrate this process: (each step adds more detail until you come up with a complete program):
22 Formal systems development Problems –Need for specialized skills and training to apply the technique –Difficult to formally specify some aspects of the system such as the user interface –Time consuming and expensive. Applicability –Critical systems (medical devices)
23 Reuse-oriented development Based on systematic reuse where systems are integrated from existing components or COTS (Commercial-off-the-shelf) systems Process stages –Component analysis –Requirements modification –System design with reuse –Development and integration This approach is becoming more important