Slides and notes for a lecture on the ‘models of software engineering’ for the course SEM520.2, Programming Methodology, University of Birmingham, School of Computer Science. The Software Lifecycle Definition: system analysis, feasibility study, requirements analysis, requirements validation, and specification; Planning: software estimation, risk analysis, project planning, and project management; Development: architectural design, detailed design, implementation, testing, validation, and verification; Maintenance: defect correction, adaptation, enhancement, and preventive maintenance. 1 Models of Software Engineering Linear models – The waterfall model – Rapid application development Prototyping Evolutionary models – Incremental development – The spiral model Other approaches 2 The waterfall model system analysis; requirements analysis; design; implementation testing; and maintenance. The model includes feedback from each phase to each of the preceding phases. 3 Rapid application development (RAD) RAD has an extremely short development cycle, achieved by the re-use/assembly of existing software components. business modelling; data modelling; process modelling; application generation; and testing & turnover. The model assumes the application can be modularised in a way which allows each major function to be developed independently. 4 (Throw-away) Prototyping Prototyping is a technique for identifying user requirements. Following an initial requirements gathering phase: establish prototype objectives; define prototype functionality; develop prototype; evaluate prototype; refine requirements and loop. The final prototype is used to develop a requirements description for use by another model, e.g. waterfall. 5 Incremental development Starting with the best understood or most important requirements, a linear model is repeatedly applied to develop a series of operational systems. specify increment; develop increment; validate increment; integrate increment; validate system and loop The system architecture and all completed increments are frozen during subsequent development. 6 The spiral model The spiral model is a ‘meta-model’ which subsumes both linear and evolutionary models. Each loop of the spiral is split into four phases objective setting; risk analysis; development & validation; and planning the next phase. Development & validation can use different models, e.g. waterfall, prototyping, for each phase or part of the system. 7 Other approaches concurrent development; formal models; component assembly model (code reuse); exploratory programming. 8 Next week’s lecture Requirements and Specifications Suggested reading: Pressman, chapter 11 9