Software Engineering - WordPress.comPrototype Model - Throwaway Prototyping •Throw-away prototypes...
Transcript of Software Engineering - WordPress.comPrototype Model - Throwaway Prototyping •Throw-away prototypes...
Software EngineeringSoftware Lifecycle Models/Software Process Models
Software Lifecycle Models
• A software system passes through the following phases:
• 1. Vision – focus on why• 2. Definition – focus on what• 3. Development – focus on how• 4. Maintenance – focus on change
• During these phases, a number of activities are performed
• A lifecycle model is a series of steps through which the product progresses. Theseinclude requirements phase, specification phase, design phase, implementationphase, integration phase, maintenance phase, and retirement. SoftwareDevelopment Lifecycle Models depict the way you organize your activities.
Software Lifecycle Models
• There are a number of Software Development Lifecycle Models, eachhaving its strengths and weaknesses and suitable in different situations andproject types.
• The list of models includes the following:• Build-and-fix model• Waterfall model• Incremental model• Rapid prototyping model• Extreme programming• Synchronize-and-stabilize model• Spiral model• Object-oriented life-cycle models
Build and Fix Model
• This model is depicted in the following diagram:
Build and Fix Model
• It is unfortunate that many products are developed using what is known as the build-andfix model.
• In this model the product is constructed without specification or any attempt at design.
• The developers simply build a product that is reworked as many times as necessary tosatisfy the client.
• This model may work for small projects but is totally unsatisfactory for products of anyreasonable size.
• The cost of build-and fix is actually far greater than the cost of properly specified andcarefully designed product.
• Maintenance of the product can be extremely in the absence of any documentation.
Waterfall Model
Waterfall Model
• Because of the cascade from one phase to another, this model is known as the waterfall model.
• Also known as Linear Sequential Model
• The principal stages of the model map directly onto fundamental development activities.
• It suggests a systematic, sequential approach to software development that begins at the system level and progresses through the analysis, design, coding, testing, and maintenance.
Waterfall Model
• Requirement Analysis and Definition: What - The systems services,constraints and goals are established by consultation with systemusers. They are then defined in detail and serve as a systemspecification.
• System and Software Design: How – The system design processpartitions the requirements to either hardware of software systems.It establishes and overall system architecture. Software designinvolves fundamental system abstractions and their relationships.
Waterfall Model
• Implementation and Unit Testing: - How – During this stage thesoftware design is realized as a set of programs or program units. Unittesting involves verifying that each unit meets its specifications.
• Integration and system testing: The individual program unit orprograms are integrated and tested as a complete system to ensurethat the software requirements have been met. After testing, thesoftware system is delivered to the customer.
Waterfall Model
• Operation and Maintenance: Normally this is the longest phase of thesoftware life cycle. The system is installed and put into practical use.Maintenance involves correcting errors which were not discovered inearlier stages of the life-cycle, improving the implementation ofsystem units and enhancing the system’s services as newrequirements are discovered.
• In principle, the result of each phase is one or more documents whichare approved. No phase is complete until the documentation for thatphase has been completed and products of that phase have beenapproved. The following phase should not start until the previousphase has finished.
Waterfall Model
• Real projects rarely follow the sequential flow that the modelproposes.
• In general these phases overlap and feed information to each other.Hence there should be an element of iteration and feedback.
• A mistake caught any stage should be referred back to the source andall the subsequent stages need to be revisited and correspondingdocuments should be updated accordingly.
Waterfall Model
Waterfall Model• Because of the costs of producing and approving documents, iterations are costly
and require significant rework.
• The Waterfall Model is a documentation-driven model.
• It therefore generates complete and comprehensive documentation and hencemakes the maintenance task much easier.
• It however suffers from the fact that the client feedback is received when theproduct is finally delivered and hence any errors in the requirement specificationare not discovered until the product is sent to the client after completion.
• This therefore has major time and cost related consequences.
Waterfall Model
Incremental Model
• Also called, Incremental and Iterative Model
• The whole requirement is divided into various builds
• A working version of software is produced during the first module,so you have working software early on during the software life cycle
• Each subsequent release of the module adds function to the previousrelease. The process continues till the complete system is achieved.
Incremental Model
Incremental Model
• As in the image above a person has thought of the application. Then hestarted building it and in the first iteration the first module of theapplication or product is totally ready and can be demoed to thecustomers. Likewise in the second iteration the other module is ready andintegrated with the first module. Similarly, in the third iteration the wholeproduct is ready and integrated. Hence, the product got ready step by step.
Incremental Model
Prototype Model
• The Rapid Prototyping Model is used to overcome issues related to understanding and capturing of user requirements. In this model a mock-up application is created “rapidly” to solicit feedback from the user. Once the user requirements are captured in the prototype to the satisfaction of the user, a proper requirement specification document is developed and the product is developed from scratch.
Prototype Model - Exercise
• In teams of three, design a tablet application for ordering coffee at the Gloria Jean’s Coffee. The app had to support the following:• Multiple coffee type options in multiple sizes
• Confirmation of each drink before adding to the current order
• An option to modify a drink order
• Calculation and display the price of each drink combination & total order
• Issue a confirmation of the total order before finally sending it to coffee bar
Exercise
• Build prototype for the exercise using Balsamiq Mockups
Prototype Model – What is Prototype/Prototyping?
• A fairly common problem with system development is that there may be a very long delay from when the idea of a new system is first suggested to when development begins, especially the case with complex software systems.
• Moreover, some users may find it difficult to imagine the system from a proposed paper design. They would much prefer to see something real in front of them.
• One practical way of overcoming these problems is the concept of ’Prototyping’
• A prototype represents some aspect of the full system - for instance a mock-up of the graphical user interface.
Prototype Model – What is Prototype/Prototyping?
• Consider a prototype GUI, where users click on command buttons and see its effect. That button is not actually connected to a real system but is programmed by the developer to act as if it was. The command action is simulated with dummy data.
• Now the user is beginning to see how the real system will work before the developer spends even more time on it.
• So a prototype is NOT a fully working system but it does provide an opportunity for the user to give feedback and suggestions for improvements.
• Any changes required are fed back to the developer and the Requirements Document is also updated every time a change is needed.
Types of Prototyping
• It is much cheaper to build a prototype and iron out the problems rather than go straight into the development of the main system and then find out there are problems.
• There are two main approaches to prototyping, namely:• Evolutionary Prototyping
• Throw-away Prototyping
Prototype Model - Throwaway Prototyping
• Throw-away prototypes are for demonstrating the use of a function or part. After the demonstration, you may have no more use for that prototype.
• The goal is just getting views of stakeholders what they want. Once the prototype is shown to stakeholders or customers to get the essence of their needs, it is not used further.
• The objective of throw-away prototyping is to ensure that the system requirements are validated and that they are clearly understood. The throw-away prototype is NOT considered part of the final system. It is simply there to aid understanding and reduce the risk of poorly defined requirements.
Throwaway or Paper Prototyping
Prototype Model - Evolutionary Prototyping
Evolutionary prototypes are developed to solve a problem, and are continually fixed and updated to better solve that problem
Prototype Model - Evolutionary Prototyping• Example: Developing the user input screen in a new customer records system
• Working with the analyst, the developer quickly puts together an initial prototype . This prototype is then tried out by users who provide immediate feedback. The initial prototype may not even look like the final system - it may be just trying out user interactions with no interest in how it looks at this stage.
• Users try out the prototype and inform the analyst of any changes needed to the interactions
• The requirement specification is updated by the analyst and the developer adjusts the interactions as needed.
• The user tries out the adjusted prototype. They can either accept how it is now working or they once again inform the analyst of any changes that should be made. The process repeats.
• The interaction aspect of the interface is eventually accepted and signed off.
• Now perhaps the developers begin work on the graphics and the way the input screen actually looks.
• A new prototype is released, now with all the graphics set up properly. The user tries out the prototype and comments on the design. Any changes needed are added to the requirements specification and the developer carries out the changes.
• The prototype evolves towards the finished system.
Prototype Model - Evolutionary Prototyping
• The advantages of evolutionary prototyping are:• The delivery of the system is speeded up
• The user engages with the system
• The system is more likely to meet the user requirements
• A problem with evolutionary prototyping is knowing when it is necessary to stop modifying/altering the system and actually finish with the development.
Evolution Tree Model
• The evolution tree model - a software life-cycle model that describessoftware development as the continuous evolution of a softwareproduct. That is, software development is viewed as a maintenanceprocess based on a tree of engineering decisions made at varioustimes. These decisions are made by software engineers in response tomodifications in the requirements as they are issued.
Evolution Tree Model
Iteration and Increments
Iteration and Increments
Spiral Model
Risks Associated with Software
• Estimation and scheduling
• Sudden growth in requirements
• Employee turnover
• Breakdown of specification
• Productivity issues
• Compromising on designs
• Gold plating
• Technical risks
• Unavoidable risks
• Any Questions?