Major Software Development Methods Flashcards
Major Software Development Methods and Strategies
(Covered in this course)
- Test Driven Development
- Model Driven Development
- Prototyping
- Incremental Delivery
Model Driven Development:
Basic Description
Models of the software are created at different levels of abstraction
Greater emphasis on architectural models,
with a separation between abstract implementation, independent models, and implementation-specific models
Common Development Issues:
Types of Change
and the problems that they can introduce
- Business Changes
- Can alter System Requirements
- New Technologies
- New possibilities to improve implementation
- Changing Platforms
- May require major application changes
All types of change lead to rework, including reanalyzing requirements.
Rework adds extra time and cost to implement new functionality
Common Development Issues:
Reducing the Cost of Rework:
Two Approaches
Change Avoidance(or Anticipation)
Software process includes activities that can anticipate possible changes BEFORE significant rework is required.
Example: Identifying problems early with prototyping
Change Tolerance
Process is designed to be able to change at low cost. Normally involves incremental development.
Prototyping:
What is a Prototype?
Prototype
An initial version of a system, used to demonstrate concepts and try out design options.
Can be used in:
- Requirements Engineering process
- Helps with requirements elicitation and validation
- Design Processes
- Explore options and develop a UI design
Prototyping:
Two Types of Prototyping
Evolutionary Prototyping
Throw-Away Prototyping
Prototyping:
Evolutionary Prototyping
(summary)
Evolutionary Prototyping
An initial prototype is produced and refined through a number of stages to the final system
Prototyping:
Throw-Away Prototyping
(summary)
Throw-Away Prototyping
A prototype is produced to help discover requirements problems, then discarded.
The actual system is developed using another process.
Prototyping:
Benefits
- Improved system usability
- Closer match to user’s real needs
- Improved design quality
- Improved maintainability
- Reduced Development Effort
Prototyping:
Prototype Development Process
Steps and Deliverables
- Establish Prototype Objectives
- Prototyping Plan
- Define Prototype Functionality
- Outline Definition
- Develop Prototype
- Executable Prototype
- Evaluate Prototype
- Evaluation Report
Incremental Delivery:
Pipeline Steps (9)
Initial Steps
- Define Outline Requirements
- Assign Requirements to Increments
- Design System Architecture
Increment Steps (Repeat for each increment)
- Develop System Increment
- Validate Increment
- Integrate Increment
- Validate System
- Deploy Increment
Deploy Final System
Incremental Delivery:
Advantages
- Customers can use early versions to gain experience that informs requirements for later system increments
- Customers do not have to wait for the “full” system to gain value
- Incorporates incremental development, so retains the benefit of easily incorporating changes
- Highest priority services are delivered first, and increments then integrated.
- Most important services recieve the most testing
Incremental Delivery:
Problems/Disadvantages
- Can be hard to know what shared basic facilities will be needed by future increments
- User expectations “locked in”
- Users want all functionality of previous releases
- Can be difficult to develop a replacement system
- Users do not want to experiment with a new system
- Hard to get customer feedback
- Requires different system development contracts, since there isn’t a “Final” version to deliver