Summary of “Software Process and Activities: Process Models”


1. Introduction to Software Development Lifecycle (SDLC)

  • SDLC: A structured sequence of development activities and tasks, organized into phases. Companies may adapt these models, but they generally fall into predictive or adaptive categories.
  • Predictive Models: Plan all phases upfront (e.g., Waterfall). Emphasize control, documentation, and fixed requirements.
  • Adaptive Models: Respond to change iteratively (e.g., Agile). Focus on flexibility, customer collaboration, and empirical process control.

2. Predictive Models: The Waterfall Model

  • Structure: Linear, sequential phases:
    1. Requirements → 2. Design → 3. Implementation → 4. Testing → 5. Deployment → 6. Maintenance
  • Key Features:
    • Heavyweight Documentation: Formal plans and deliverables (e.g., requirements specs, design docs, test reports).
    • Phase Dependency: A phase cannot start until the prior phase is completed and accepted. No re-entry once finalized.
    • Milestones: Major deliverables reviewed at each phase to ensure completion.
  • Advantages:
    • Clear visibility, management control, and contractual clarity for mission-critical systems (e.g., aerospace, healthcare).
    • Aligns with regulatory standards (e.g., DO-178C for airborne software).
  • Disadvantages:
    • Rigid: Cannot easily accommodate requirement changes or design flaws discovered late.
    • Late Validation: Customers see a working product only at the end, risking undetected defects (cost to fix defects rises exponentially as development progresses).
    • Inflexibility: Feedback loops require costly rework, often leading to frozen deliverables.

3. Adaptive Models: Agile and Empirical Process Control

  • Core Principles:
    1. Transparency: Shared understanding of progress and goals.
    2. Inspection: Regular reviews of work and processes.
    3. Adaptation: Adjustments based on new knowledge.
  • Iterative & Incremental Development:
    • Iterations (Sprints): Short, time-boxed cycles (e.g., 1–2 weeks in Scrum) delivering potentially releasable increments.
    • Phases per Iteration: Each cycle includes planning, design, implementation, integration, testing, and review.
    • Flexibility: Goals set at iteration start; requirements evolve over time.
  • Benefits:
    • Early and frequent customer feedback reduces late-stage defects.
    • Handles uncertainty and complexity in innovative projects.
    • Prioritizes working software over exhaustive documentation.
  • Drawbacks: Overhead may outweigh benefits for simple, low-risk projects with stable requirements.

4. Product-Based vs. Project-Based Development

  • Custom Software (Project-Based):
    • Developed for specific clients (e.g., government systems, enterprise tools).
    • Follows predictive models (e.g., Waterfall) for contractual clarity and stability.
    • Ownership transfers to the client post-delivery.
  • Software Products:
    • Mass-market solutions (e.g., apps, productivity tools).
    • Prioritizes time-to-market over rigid planning.
    • Agile frameworks dominate due to rapid iteration and competition.
    • Self-Managed Teams: No traditional project manager; roles like Product Owner (prioritizes backlog) and Scrum Master (facilitates process) are key.
    • Continuous Development: Treated as ongoing processes, not discrete projects.

5. CHAOS Report Insights on Project Management

  • Non-Agile Projects:
    • Success rates vary with project manager skill, but bureaucracy and slow decision-making hinder outcomes.
  • Agile Projects:
    • Traditional project managers reduce success rates due to process overhead.
    • Conclusion: Agile thrives without hierarchical project managers. Avoid tools like EPPM (Enterprise Project Portfolio Management) that introduce bureaucracy.
  • Key Takeaway: “Software is infinite, while projects are finite.” Modern development should avoid artificial project boundaries and focus on continuous delivery.

6. When to Use Each Model

  • Predictive Models (Waterfall):
    • Appropriate for: Safety-critical systems, stable requirements, long-term contracts, and regulatory compliance.
    • Risks: Fails in dynamic environments or when requirements are unclear.
  • Adaptive Models (Agile):
    • Appropriate for: Product development, innovative projects, evolving requirements, and complex problem-solving.
    • Risks: Overhead for simple projects; requires disciplined team collaboration.

7. Conclusion

  • Modern Trends: Shift toward product-based, Agile methodologies due to faster iteration, customer-centricity, and adaptability.
  • Process Selection: Choose models based on project complexity, risk, and requirements stability. Predictive models remain viable for specific domains (e.g., aerospace), while Agile dominates in competitive, evolving markets.

This summary encapsulates the document’s contrast between predictive and adaptive models, their strengths/weaknesses, and the industry’s move toward Agile for product development.