Chapter 2: Unified Software Development Process (USDP)
1.0 Traditional Waterfall Model Overview
1.1 Definition and Characteristics
- Waterfall Model (瀑布模型): A framework for software development where development proceeds sequentially through a series of phases
- Also known as Traditional Life Cycle (TLC) for information systems development
- Called “waterfall” because of the difficulty of returning to an earlier phase
1.2 Waterfall Phases and Deliverables
Phase Sequence:
- System Engineering → High Level Architectural Specification
- Requirement Analysis → Requirements Specification, Functional Specification, Acceptance Test Specifications
- Design → Software architecture specification, System test specification, Design specification, Sub-system test specification, Unit test specification
- Construction → Program Code
- Testing → Unit test report, Sub-system test report, System test report, Acceptance test report, Completed system
- Installation → Installed System
- Maintenance → Change requests, Change request report
1.3 Waterfall Strengths
- Specialized teams can be assigned to different phases
- Project progress can be evaluated at the end of each phase
- Manages high-risk projects effectively through emphasis on requirements and design before coding
- Enforces discipline with defined start and end points for each phase
- Reduces risk of schedule slippage and unmet customer expectations
2.0 Waterfall Model Criticisms
2.1 Major Problems
- Real projects rarely follow such a simple sequential life cycle
- Iterations are almost impossible to implement effectively
- Long time gaps between systems engineering and final installation allow requirements to change
- Unresponsive to changes during the project lifecycle
- User/business needs not adequately addressed
- Module integration problems discovered too late
2.2 Additional Issues
- Late discovery of flaws in design and implementation
- Poor end-user experience quality
- Poor system performance under peak loading conditions
- Lack of coordinated team effort
- Build-and-release issues
- Maintenance difficulties
2.3 Root Causes Analysis
Symptoms → Root Causes → Best Practices
| Symptoms | Root Causes | Best Practices |
|---|---|---|
| Needs not met | Insufficient requirements | Develop Iteratively |
| Requirements change | Ambiguous communications | Manage Requirements |
| Modules don’t fit | Brittle architectures | Use Component Architectures |
| Hard to maintain | Overwhelming complexity | Model Visually (UML) |
| Late discovery | Undetected inconsistencies | Continuously Verify Quality |
| Poor quality | Poor testing | Manage Change |
3.0 Unified Software Development Process (USDP)
3.1 USDP Definition and Purpose
- Generic software development process for Object-Oriented Analysis and Design (OOAD)
- Describes key concepts, core workflows, and overall management
- Embodies best practices for modern software development
3.2 USDP Four Main Phases
3.2.1 Inception (启动阶段)
- Concerned with determining the scope and purpose of the project
- Milestone: Life Cycle Objectives
3.2.2 Elaboration (细化阶段)
- Focuses on requirements capture and determining the structure of the system
- Milestone: Life Cycle Architecture
3.2.3 Construction (构建阶段)
- Main aim is to build the software system
- Milestone: Initial Operational Capability
3.2.4 Transition (转换阶段)
- Deals with product installation and rollout
- Milestone: Product Release
3.3 USDP Core Workflows (5 Core Workflows - RADIT)
- Requirements (需求)
- Analysis (分析)
- Design (设计)
- Implementation (实现)
- Test (测试)
Key Point: The balance of effort spent in each workflow varies from phase to phase
4.0 USDP Best Practices
4.1 Iterative and Incremental Development (迭代增量开发)
- Major requirements → add more functionalities using prototyping
- Break projects into small subprojects (iterations) that deliver system functionality in increments
- Leads to a fully functional system through progressive development
4.2 Component-Based Development (基于组件的开发)
- Built component by component gradually
- Enables reuse and customization of existing components
- Select from commercially available components
- Evolve existing software incrementally
4.3 Requirements-Driven Development (需求驱动开发)
- Extensive user involvement
- Focus on clear user requirements
- Ensures system meets actual business needs
4.4 Configurability (可配置性)
- Multiple releases require version control mechanisms
- Supports change management throughout development
4.5 Architecture-Centrism (以架构为中心)
- Structure system into packages, components, and deployment units
- Component-based and resilient architecture design
- Provides flexibility in the face of change
4.6 Visual Modeling Techniques (可视化建模技术)
- Use UML in Software Architecture Documents (SAD)
- Model visually to address complexity incrementally
5.0 Iterative Development Benefits
5.1 Key Advantages
- Learning within iterations - continuous improvement
- Manage complexity - break down complex problems
- Manage changing requirements - adapt to evolving needs
- Provide partial solutions - deliver value early
- User feedback - incorporate stakeholder input throughout
5.2 Incremental Development Characteristics
- Don’t simply rework the same requirements in successive iterations
- Address more and more requirements in successive iterations
- Activities may occur in parallel within a single iteration
- USDP aims to deliver working, free-standing, useful ‘chunks’ of software
- Each use case may represent one increment of delivered software
6.0 Major USDP Activities, Techniques, and Deliverables
6.1 Requirements Capture and Modeling
- Techniques: Requirements Elicitation, Use Case Modeling, Prototyping
- Deliverables: Use Case Models, Requirements List, Prototypes, Glossary
6.2 Requirements Analysis
- Techniques: Collaboration Diagrams, Class & Object Models, Analysis Modeling
- Deliverables: Analysis Models
6.3 Systems Design
- Techniques: Deployment Modeling, Component Modeling, Package Modeling, Architectural Modeling
- Deliverables: Overview design and implementation architecture
6.4 Class Design
- Techniques: Class & Object Modeling, Interaction Modeling, State Modeling, Design Patterns
- Deliverables: Design Models
6.5 User Interface Design
- Techniques: Class & Object Modeling, Interaction Modeling, State Modeling, Package Modeling, Prototyping, Design Patterns
- Deliverables: Design Models with Interface Specification
6.6 Data Management Design
- Techniques: Class & Object Modeling, Interaction Modeling, State Modeling, Package Modeling, Design Patterns
- Deliverables: Design Models with Database Specification
6.7 Construction
- Techniques: Programming, Component reuse, Database DDL
- Deliverables: Constructed System Documentation
6.8 Testing and Implementation
- Techniques: Programming, Test procedures
- Deliverables: Tested system, Installed system
7.0 Key Terms and Definitions
- Milestone (里程碑): An iteration endpoint when significant decision or evaluation occurs
- Release (发布): A stable executable subset of the final product; end of each iteration is a minor release
- Increment (增量): The difference (delta) between releases of two subsequent iterations
- Final Production Release (最终产品发布): Point when system is released for production use
8.0 Exam Focus Points
8.1 Critical Comparisons
- Waterfall vs. USDP: Sequential vs. iterative approaches
- Linear vs. incremental delivery of functionality
- Risk management: Early vs. late problem discovery
8.2 Must-Know Concepts
- USDP 4 phases: Inception, Elaboration, Construction, Transition
- 5 core workflows: Requirements, Analysis, Design, Implementation, Test (RADIT)
- Best practices: All 6 practices and their benefits
- Iterative development benefits: All 5 key advantages
8.3 Common Exam Questions
- Matching waterfall phases with deliverables
- Identifying USDP best practices
- Understanding iteration vs. increment concepts
- Recognizing activities, techniques, and deliverables relationships