- Plan of action
- A plan of what steps are going to be taken as the development proceeds.
2 distinct uses of process model:
1. It can use as a basis for the plan for the plan for a project.
2. It is use to analyze what actually happens during a project.
Several mainstream process models:• Waterfall
• Prototyping
• Formal methods
• Spiral
Components of software development During the development of a software there are several activities must be carried out:
• Requirements engineering
• Architectural or large-scale design
• Small-scale design
• Coding
• System integration
• Validation
• Verification
• Maintenance
Requirements engineering (specification) – the developers finds out what the user wants the software to do and records the requirements as clearly as possible.
Architectural or large-scale design – software must be constructs from modules or components.
Detailed design – the design of each module, or components, is carried out.
Coding – the detailed design are converted into instructions written in the programming language.
System integration – the individual components of the software are combined together.
Maintenance – sooner or later the software need fixing faults or error, and enhancing.
Validation and verification - Ways of checking that development has been done properly.
Validation – “are we building the product right?”
Verification – “are we building the right product?”
Two types of Verification
- Unit testing
Each module of the software is tested in isolation. The inputs to unit testing are:
1. The unit specification
2. The unit code
3. A list of expected test results
- System testing or integration testing – the modules are linked together and the complete system tested. The inputs to system testing are the system specification and the code for the complete system.
The waterfall model Software development is split up into a number of independent steps that are carried out in sequence one after another. Each stage produces a product, which is the input into the next stage.
The waterfall model makes no stipulations about what methods are used at any of its stages, nor does it stipulate what notations are used for the products at each stage.
Principles of the waterfall model are:• It is a series of steps (like a production line)
• Each step is well defined
• Each step creates a definite product (this is often a piece of paper)
• Each product forms the basis for the next step
• The correctness of each step can be checked (verification or validation)
The strengths of Waterfall Model:
• It divides a complex task into smaller, more manageable task
• Each task produces a well-defined deliverable.
Feedback in the Waterfall Model- If a problem is found at a particular stage in development, there is no way of influencing an earlier stage in order to rectify the problem.
- So that a problem uncovered at one stage can cause remedial action to be taken at the previous stage.
Prototyping- Presents one solution to the problem of ensuring that the customer gets what they want.
The purpose is to aid the analysis and design stages of a project by enabling users to see very early what the system will do – that is to facilitate validation.
Benefits of developing a prototype early in the software process:
Misunderstanding between software developers and user may be indentified as the system functions are demonstrated
Missing facilitate may be detected
Difficult-to-use or confusing facilities may be indentified and refined
Software developers may find incomplete and/or inconsistent requirements as the prototype is developed
A working system is available quickly to demonstrate the feasibility and usefulness of the application to management.
User training – a prototype system can be used for training user before the final system has been delivered.
To establish that some new technology will provide the facilities needed.
2 types of prototypes
1. Throwaway
The starting point for it is an outline specification for the software. It implements only those requirements that are poorly understood.
Stage of throwaway prototyping:
1. Outline specification – creation of an initial, often partial, specification.
2. Establishment of objectives – creating a objective of a prototype
3. Selection of function – the stage is to decide what to put into and what to leave out of the prototype. This is determined by the objectives of the system.
4. Prototype construction – speed and cost of construction of the prototype is crucial.
5. Evaluation (check with the user) – the users interact with the prototype.
6. Iteration (refinement) – the prototype is rapidly modified, evaluation is carried out and the process repeated until the prototype meets the objectives
7. Completion – the product of the prototyping process is a specification that meets the users’ requirements.
2. Evolutionary prototyping
It is based on the idea of developing an initial implementation, exposing this to user comment and refining this through repeated stages until an adequate system has been developed.
Stage of evolutionary prototyping:
1. Requirements definition (initial specification) – a stage of thorough analysis is used to create an initial specification for the software.
2. Prototype construction – a prototype is built in a quality manner, including design, documentation and thorough verification.
3. Evaluation (check with the user) – during evaluation, problems in the developer’s perception of the customer requirements are covered.
4. Iteration (refine the prototype) – evaluation is carried repeatedly until the prototype meets the objectives.
Advantages
1. It enables developers to cope with lack of clarity in requirements
2. It gives the user the opportunity to change his/her mind before commitment to the final system
3. User requirements are easier to determine
4. System are developed faster
5. Development effort is reduced because the resultant system is the right system
6. Maintenance effort is reduced because the system meets the user needs
7. End-user involvement is facilitated
8. User-developer communication is enhanced
9. User are not frustrated while they wait for the final system, because they can see a working system
10. There is an increased chance that a system will be more user friendly
11. System are easier for end-user to learn and use because users know what to expect
12. It facilitates user training while development is going on
13. There is increase customer satisfaction with the delivered software.
Disadvantages
For the users,
1. Prototyping is carried out in a artificial environment, user may miss some of the shortcomings.
2. Undue user expectation – the ability of the developers to create a prototype so quickly may raise undue expectations that the final system will soon be complete. They see a partial system and may not be finished system.
3. Inconsistency between a prototype and the final system – if the prototype is a throwaway, the end-product may not be exactly like the prototype.
4. User may never be satisfied because they are given to much opportunity to change the development of the system.
For software engineers,
1. Incomplete analysis – because prototypes are produce quickly, developers may be tempted to plunge into prototyping before sufficient requirements analysis has taken place.
2. Iteration is not easily accepted by some designers, because it necessities discarding their own work.
3. Non-functional requirements may be omitted, since prototype focuses only a functionality
Managerial problem,
1. Estimating, planning and managing a prototyping project can be difficult because it can be hard to predict how many iterations of prototyping will take place.
2. Procedures for change and configuration management may be unsuitable for control
3. Many project management structures are set up assuming a process model, like the waterfall model, that generates regular deliverables to assess progress.
The Spiral Model
- Attempts to solve some of the problems of the waterfall model, while incorporating its best features – planning, phases, intermediate products.
- Incorporates prototyping as necessary.
- The recognition that there is often enormous uncertainly at many stages during a software development project.
Software Development must Series of major steps:
1. Feasibility study
2. Requirements analysis
3. Architectural software design
4. Implementation ( including detailed design, coding, unit testing, integration, and acceptance)
Risk of Spiral Model:
1. During a long development, the users’ requirements are neglected.
2. A competitor launches a rival package on the market.
3. Someone leaves the development team
4. One of the component tasks of the development goes beyond its deadline
5. It is discovered that the software performs much too slowly.
6. The software occupies too much main memory
7. A new software development tool becomes available
8. A user requirement was misunderstood
9. The user changes one of the requirements
10. The target hardware configuration changes.
The spiral model makes explicit provision for dealing with areas of uncertainly like these and thereby minimizes the risk to the software project.
Common activities on each major step:
1. Taking stock (identifying objectives, alternatives, and constraints)
2. Dealing with the risk
3. Development activities peculiar to this step – EX. Requirements analysis, design, coding
4. Validation and verification, as appropriate
5. Planning the next stage
6. review