Podcast
Questions and Answers
What is the main advantage of incremental development?
What is the main advantage of incremental development?
What is a key characteristic of Extreme Programming (XP)?
What is a key characteristic of Extreme Programming (XP)?
In Spiral development, what do the loops in the spiral represent?
In Spiral development, what do the loops in the spiral represent?
What is a key characteristic of the Spiral model of the software process?
What is a key characteristic of the Spiral model of the software process?
Signup and view all the answers
What is a major benefit of component-based software engineering?
What is a major benefit of component-based software engineering?
Signup and view all the answers
Why are early increments in incremental development beneficial?
Why are early increments in incremental development beneficial?
Signup and view all the answers
What is a characteristic of throw-away prototyping?
What is a characteristic of throw-away prototyping?
Signup and view all the answers
Study Notes
Evolutionary Development
- Lack of process visibility, poorly structured systems, and special skills (e.g., languages for rapid prototyping) may be required
- Suitable for small or medium-size interactive systems, parts of large systems (e.g., user interface), and short-lifetime systems
Component-Based Software Engineering
- Based on systematic reuse of existing components or Commercial-off-the-shelf (COTS) systems
- Process stages include component analysis, requirements modification, system design with reuse, and development and integration
Process Iteration
- System requirements always evolve in the course of a project, so process iteration is always part of the process for large systems
- Iteration can be applied to any of the generic process models
- Two related approaches: incremental delivery and spiral development
Incremental Delivery
- Development and delivery are broken down into increments with each increment delivering part of the required functionality
- As requirements change, the software that supports the business must also evolve and change
System Evolution
- Fewer and fewer systems are completely new, and there is no demarcation between development and evolution (maintenance)
The Rational Unified Process (RUP)
- A modern process model derived from the work on the UML and associated process
- Described from three perspectives: dynamic, static, and practice
RUP Phase Model
- Phases: Inception, Elaboration, Construction, and Transition
- Phase iteration: Inception sets the stage, Elaboration defines the architecture, Construction develops the system, and Transition deploys the system
RUP Phases
- Inception: Establish the business case for the system
- Elaboration: Develop an understanding of the problem domain and the system architecture
- Construction: System design, programming, and testing
- User requirements are prioritized and the highest priority requirements are included in early increments
Incremental Development
- Customer value can be delivered with each increment, so system functionality is available earlier
- Early increments act as a prototype to help elicit requirements for later increments
- Lower risk of overall project failure
- Highest priority system services tend to receive the most testing
Extreme Programming
- An approach to development based on the development and delivery of very small increments of functionality
- Relies on constant code improvement, user involvement in the development team, and pairwise programming
Spiral Development
- 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
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Description
Test your knowledge of software development approaches by answering questions related to evolutionary development and component-based software engineering. Topics covered include poorly understood requirements, lack of process visibility, system structure, and applicability of different approaches.