Software Engineering - Process Models

8
Software Engineering Software Process Models A software process model is an abstract representation of the development process. Consists of a structured set of activities required to build software. It presents a description of a process from a particular perspective. Types of Models 1. Descriptive Models Describes the history of how a particular system was developed. Used as a basis for understanding and improving s/w process. Used for building prescriptive models. 2. Prescriptive Models Prescribes how software should be developed. Used as guidelines to organize and structure how s/w activities should be performed, and in what order Generic Software Models 1. The waterfall Model Separate and distinct phases of specification and development 2. Evolutionary development Specification, development and validation are interleaved i.e. no distinct phases Goes with prototyping Examples are Incremental and Spiral Models 3. Component based A kind of specialized model The system is assembled from existing components. Process Models –Software EngineeringPage 1

description

software engineering notes

Transcript of Software Engineering - Process Models

Software EngineeringSoftware Process Models A software process model is an abstract representation of the development process. Consists of a structured set of activities required to build software. It presents a description of a process from a particular perspective.Types of Models1. Descriptive Models Describes the history of how a particular system was developed. Used as a basis for understanding and improving s/w process. Used for building prescriptive models.2. Prescriptive Models Prescribes how software should be developed. Used as guidelines to organize and structure how s/w activities should be performed, and in what orderGeneric Software Models1. The waterfall Model Separate and distinct phases of specification and development2. Evolutionary development Specification, development and validation are interleaved i.e. no distinct phases Goes with prototyping Examples are Incremental and Spiral Models3. Component based A kind of specialized model The system is assembled from existing components.4. Agile Models Emphasises on customer collaboration, incremental delivery, and small development teams. Build and Fix Build systems without specification. Build first version and repeat maintenance until customer is satisfied.Advantages Does not waste time in planning and documentation.Disadvantages Underestimate project attributes Difficult to evaluate successWaterfall Model Also called Classic Life cycle. Requirements are well defined (fixed) and stable. It is mostly used in big projects It can be adapted so that it accommodates some abstract information Each activity is distinct and no new phase can begin before the previous phase is completePhases of Waterfall Model Requirements Engineering

Requirements Engineering Software Design

software design Implementation and unit testingImplementation and Unit Testing

Integration and system testing MaintenanceIntegration and system testing

Maintenance

Drawbacks of Waterfall Model Real projects are iterative. Difficult for customer to state all requirements explicitly. Requires customer patience. Blocking state. Inflexible partitioning of the project into distinct stage makes it difficult to respond to changing customer requirements.Therefore, this model is only appropriate when the requirements are well-understood and changes will be fairly limited during the design process. Few business systems have stable requirements.The waterfall model is mostly used for large systems engineering projects.Evolutionary Process Models1. Do activities in an iterative way2. PrototypingI. Throw away prototyping or exploratory The objective is to understand the system requirements. It should start with poorly understood requirements to clarify what is really needed.II. Evolutionary prototype Objective is to work with customers and to evolve a final system from an initial outline specification. It should start with well-understood requirements and add new features as proposed by the customer.Prototyping Customer defines a general objective of the software without identifying details. Feedback from prototypes is used to refine requirements for the software. Iteration is used to tune prototypes to satisfy customer needs, while enabling the developer to better understand what needs to be done. Used with systems with a considerable emphasis on user interface and user interaction. Users and designers must be well aware of the prototyping approach and its pitfalls. Should be planned and controlled.Prototyping Model

SpecificationInitial version

DevelopmentOutline descriptionIntermediate version

ValidationFinal version

Advantages of prototypes The resulting system is easy to use and maintain. User needs are better accommodated The design is of higher quality The development incurs less effort. Problems are detected earlierDisadvantages of prototypes The resulting system harder to maintain. The performance of the resulting system is worse. The design is of less quality The development incurs more effort. The approach requires more experienced team membersSpiral Model Evolutionary model with iterative nature of prototyping and systematic aspects of waterfall model. Process is represented as a spiral rather than as a sequence of activities with backtracking. Each loop in the spiral represents a phase in the process. No fixed phases such as specification or design - loops in the spiral are chosen depending on what is required. Risks are explicitly assessed and resolved throughout the process (Risk driven). Model sectors1. Objective settingSpecific objectives for the phase are identified.2. Risk assessment and reduction Risks are assessed and activities put in place to reduce the key risks. Prototyping is used to clarify things.3. Development and validation A development model for the system is chosen which can be any of the generic models. The software is developed4. PlanningThe project is reviewed and the next phase of the spiral is planned.Incremental Process Model Combines elements of waterfall model applied in an iterative philosophy of prototyping. Develop, deliver the system in increments The incremental model applies linear sequences in a staggered fashion as calendar time progress. Each linear sequence produces deliverable increments of the software. The first increment called the core product and it addresses the basic requirements. Each increment delivers a working product/feature.Design System ArchitectureAssign requirements to incrementsOutline specification

Validate incrementsIntegrate incrementsValidate systemDevelop system increments

jSystem incomplete

Advantages of Incremental Model Have a working product in the early stages of the project. Particularly useful when staffing is unavailable for a complete implementation by the business deadline that has been established for the project. Takes the best practices from waterfall model and prototyping There is risk managementDisadvantages of Incremental Model There are a lot of activities that can increase the cost of the project.The Rapid Application Development (RAD) Model Incremental model that emphasizes on short development life cycle. Its a high speed waterfall using component based construction. It emphasizes user involvement, prototyping, reuse, the use of automated tools and small development teams. Employs time box - a fixed time frame within which activities are done.Elements of RADi. Prototypingii. Reuse can use already existing componentsiii. Use of automated tools use tools to develop the softwareiv. Small development teams enhances good communication between the developers and stakeholdersv. Employs time block a fixed time frame for each working product to be deliveredLife Cycle activities1) Requirements Planning Identify requirements from the system It is done in collaboration with stakeholders Uses joint requirements planning workshops to get requirements2) User design User design phase is done in Joint Application workshop. This is to build the initial design of the system3) Construction Phase This is development phase4) Cut-over Implementation phaseAdvantages of RAD Its fast High level user interaction High communicationDrawbacks of RAD For large but scalable projects, RAD requires sufficient human resources to create the right number of RAD teams. RAD requires developers and customers who are committed to the rapid-fire activities necessary to get a system complete in a much abbreviated time frame. If commitment is lacking from either constituency, RAD projects will fail. System need to be properly modularised RAD is not appropriate when technical risks are high. This occurs when a new application makes heavy use of new technology or when the new software requires a high degree of interoperability with existing computer programs. Not for high performance systemsComponent based Development Its construction is based on systematic reuse where systems are integrated from existing components or COTS (Commercial-off-the-shelf) components.Phases Requirements Engineering System design with reuse Component analysis/Qualification Adaptation Assembly and integration components tested together. Evolution and maintenanceThis approach is becoming increasingly used as component standards have emerged

Process Models Software EngineeringPage 2