Chapter 2 - Process and Methodology(1)

Chapter 2: Process and Methodology

Key Takeaway Points

  • Software Process: Defines the phases of activities needed to construct a software system.

  • Software Methodology: Details the steps of how to perform those activities. It is an implementation of a process.

  • Necessity: Software development requires both a software process and a methodology.

Challenges of System Development

  • Project Reality 1: Systems often require years to develop.

    • Challenge: Scheduling and managing work without full knowledge of customer needs.

  • Project Reality 2: Collaboration among multiple departments is needed.

    • Challenge: Dividing work and integrating components produced by different teams.

  • Project Reality 3: Different departments may use various processes, methods, and tools.

    • Challenge: Ensuring effective communication and coordination.

Additional Challenges in Systems Development

  • System Reality 1: Systems must meet numerous requirements and constraints.

    • Challenge: Development processes need to ensure satisfaction of these needs.

  • System Reality 2: Requirements may change over time.

    • Challenge: Designing systems that can adapt to changes effectively.

  • System Reality 3: Systems may involve a mix of hardware, software, and third-party components across platforms.

    • Challenge: Designing systems that effectively manage these differences.

Software Process

  • A software process is required in software development, defining a series of activities to construct a software system.

    • Definition: Each activity produces artifacts that become the input for other phases.

    • Phases have entrance and exit criteria.

The Waterfall Process

  • Sequential Phases: Consists of the following steps: System Engineering, Requirements Analysis, Software Design, Coding, Integration, Acceptance Testing, and Maintenance.

Merits of the Waterfall Model

  • Simplifies project management through a clear sequence of phases.

  • Supports functional project organization with specialized teams for each function.

Problems of the Waterfall Model

  • Inflexibility to change requirements.

  • Long development duration can render systems outdated upon delivery.

  • Limited user feedback until full implementation and deployment.

  • Potential risk of losing investments if projects fail.

Software Process Models

  • Various models include:

    • Prototyping Model

    • Evolutionary Model

    • Spiral Model

    • Unified Process Model

    • Personal Software Process

    • Team Software Process

    • Agile Process Models

Prototyping Process Model

  • Purpose: Used for acquiring and validating requirements and assessing feasibility.

  • Types: Includes throwaway prototypes and evolutionary prototypes.

Evolutionary Prototyping Model

  • Distinction between throwaway (inefficient) and evolutionary based on performance.

  • Suitable for exploratory systems (e.g., intelligent systems).

Spiral Process Model

  • Incorporates risk assessment phases, integrating prototyping as needed.

Rational Unified Process (RUP)

  • Core Workflows: Inception, Elaboration, Construction, Transition.

  • Each stage has specific deliverables (e.g., use case models, architecture).

Agile Process Models

  • Stresses agility with iterative processes:

    • Agile Manifesto Values: Individuals over processes, working software over documentation, customer collaboration over contract negotiation, responsiveness over adherence to plans.

Agile Principles

  • Focus on customer satisfaction through continuous delivery.

  • Adaptability to changing requirements at any development stage.

  • Frequent delivery of software and close collaboration between stakeholders.

  • Encourages sustainable development and self-organizing teams.

Process and Methodology Overview

  • Process: A framework of related activities where each phase produces outputs for subsequent phases.

  • Methodology: Implementing a process; akin to a recipe with defined steps, inputs, outputs, and techniques.

Software Paradigm

  • A software paradigm is a style or approach to software development (e.g., procedural, object-oriented).

Historical Paradigms

  • Procedural Paradigm: Focuses on processes.

  • Object-Oriented (OO) Paradigm: Emphasizes objects and their interactions.

  • Data-Oriented Paradigm: Centers around data entities and their relationships.

Well-Known Agile Methods

  • Includes DSDM, FDD, Scrum, XP, etc.

Dynamic Systems Development Method (DSDM)

  • Works with RUP and XP, suitable for both agile and plan-driven projects.

Feature Driven Development (FDD)

  • Unique features include model-driven approaches and regular builds.

Scrum

  • Key features: team roles (Scrum Master, Product Owner), daily meetings, and team retrospectives.

Extreme Programming (XP)

  • Emphasizes constant integration and flexible work hours.

The Methodology Presented

  • Aimed at both beginners and experienced developers, adaptable for various project types.

  • Methodology highlights: team collaboration, iterative development, and accommodating requirements changes.

Example: The Dice Game

  • Use case defined for a simple dice game where players win by rolling a total of seven from two dice, including domain modeling and interaction diagrams.

robot