By Abdul Razaq Ali
Lecturer, PUCIT
In Today’s Lecture
RAD Model
Evolutionary software process models
Incremental Model
Spiral Model
Agile Process
Rapid Application Development
Rapid Application Development is an adaptation of linear sequential software development process model that emphasises an extremely short development cycle.
A component-based construction approach is used.
To use this approach, the project scope must be constrained and the requirements should be well understood.
A task that should take no more than ninety days to complete is modelled, generated and implemented.
There can be several teams working on different components during this ninety day time-box
Like other process models, the RAD approach maps into the generic framework activities
Communication
Works to understand the business problem and the information characteristics that the software must accommodate (requirements gathering)
Planning
Describes the technical tasks to be conducted, the risks that are likely, the resources that will be required, the work products to be produced, and a work schedule
Contd.
Modeling
Establishes design representations that serve as the basis for RAD’s construction activity(Encompasses the creation of models that allow the developer and the customer to better understand software requirements and the design that will achieve those requirements)
Construction
emphasizes the use of pre-existing software components and the application of automatic code generation (Combines code generation and the testing that is required to uncover errors in the code)
Contd.
Deployment
Establishes a basis for subsequent iterations, if required (the software as a complete entity or as a partially completed increment is delivered to the customer who evaluates the delivered product and provides feedback based on the evaluation)
Advantages of RAD
Less time
Reusability
Problems
For large, 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 complete a system in this time frame, or failure will result.
RAD is not suitable for many project types. (must be modularized enabling each function to be completed in less than 3 months)
If high performance is an issue, and performance is to be achieved through tuning the interfaces to system components, the RAD approach may not work
RAD may not be appropriate when technical risks are high
The incremental model
This is a combination of the linear sequential model and the iterative model.
The problem is broken into increments, and each increment is tackled as a linear sequence.
Further increments can either be done after the previous ones, or can overlap with the previous ones.
Incremental delivery focuses on the delivery of an operational product with each increment.
Early increments are stripped-down versions of the final product, but they do provide capability that serves the user and also provides a platform for evaluation by the user.
Incremental model
This approach has the advantages that : -
Less staffing available for a complete implementation by the business deadline that has been established for the project (Early increments can be implemented with fewer people)
Early delivery is guaranteed
Progress of the whole project is not delayed if one of the resources is not available for part of it
Increments can be planned to manage technical risks
Incremental Model
Homework
Advantages
?
Problems
?
Evolutionary Software process models
Prototyping
Spiral Model
Prototyping Model (part 2)
Throw away prototyping
Prototype merely used for the identification of requirements
Evolutionary prototyping
Final product will be based upon it
(side notes)
Two Requirement engineering process activities:
Requirements elicitation
Requirements validation
Benefits
Misunderstandings between developers and users identified
Incomplete requirements found
A working system is available quickly to demonstrate feasibility
Used as a basis for writing the specification for production of quality software
Disadvantages
No Non-functional requirements
Change deteriorates software
Time less, so no specification maintained
Problems
The customer sees a working version and expects the finished product to be available in a short time. This puts pressure on the developer to take short cuts, at the expense of quality and maintainability.
The developer may make compromises for speed.
Inappropriate tools may be used or inefficient algorithms may be used, which then become integral parts of the system.
If the user isn’t focused on what they want, the system may never be completed.
The Spiral model
Boehm’s (1988) spiral model couples the iterative nature of prototyping with the controlled and systematic aspects of the linear sequential model.
Software is developed in a series of incremental releases.
During the early releases, there may be just a paper model, but the system becomes increasingly more complete.
There are a number of framework activities (Customer communication, Planning, Risk analysis, Engineering, Construction and release, Customer evaluation).
Unlike any of the other models, this model keeps revisiting the system throughout its lifetime.
The spiral model is a risk-driven process model generator that is used to guide multi-stakeholder concurrent engineering of software intensive systems
It has two main distinguishing features.
One is a cyclic approach for incrementally growing a system’s degree of definition and implementation while decreasing its degree of risk.
The other is a set of anchor point milestones for ensuring stakeholder commitment to feasible and mutually satisfactory system solutions.
Spiral Model
Spiral Model
Spiral model is divided into a number of framework activities, named as “task regions”. Each task region has its own task sets.
Advantages
Explicit risk handling
More realistic and appropriate for large scale projects-research based
Evolutionary
Differences between Spiral and Incremental Model
Both models, incremental and spiral offer partial deliveries to the customer at different phases BUT ….
The Incremental Model focuses on the delivery of a fully-tested production code in a step-by-step fashion; each step adds more functionality
The Spiral Model focuses on the development of prototypes at each stage which will be used only for information gathering and then throw-away
Agile Process
“Agile Development” is an umbrella term for several iterative and incremental software development methodologies. The most popular agile methodologies include
Extreme Programming (XP)
Scrum
An Agile Process implies a
A light Process – prefers a small set of activities and artifacts
An Adaptive Process – emphasizes on handling changing requirements
Highlights of today’s lecture
Different Process Models
RAD Model
Incremental Model
Evolutionary software process models
Spiral Model
Agile Process (Extreme Programming, Scrum)
Their Comparison
Advantages/Disadvantages
Book Reading
Roger S. Pressman “Software Engineering- A practitioner’s approach”, 7th Ed.
2.3
Questions?