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:

  1. System Engineering → High Level Architectural Specification
  2. Requirement Analysis → Requirements Specification, Functional Specification, Acceptance Test Specifications
  3. Design → Software architecture specification, System test specification, Design specification, Sub-system test specification, Unit test specification
  4. Construction → Program Code
  5. Testing → Unit test report, Sub-system test report, System test report, Acceptance test report, Completed system
  6. Installation → Installed System
  7. 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

SymptomsRoot CausesBest Practices

SymptomsRoot CausesBest Practices
Needs not metInsufficient requirementsDevelop Iteratively
Requirements changeAmbiguous communicationsManage Requirements
Modules don’t fitBrittle architecturesUse Component Architectures
Hard to maintainOverwhelming complexityModel Visually (UML)
Late discoveryUndetected inconsistenciesContinuously Verify Quality
Poor qualityPoor testingManage 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)

  1. Requirements (需求)
  2. Analysis (分析)
  3. Design (设计)
  4. Implementation (实现)
  5. 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