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.
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.
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.
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.
Sequential Phases: Consists of the following steps: System Engineering, Requirements Analysis, Software Design, Coding, Integration, Acceptance Testing, and Maintenance.
Simplifies project management through a clear sequence of phases.
Supports functional project organization with specialized teams for each function.
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.
Various models include:
Prototyping Model
Evolutionary Model
Spiral Model
Unified Process Model
Personal Software Process
Team Software Process
Agile Process Models
Purpose: Used for acquiring and validating requirements and assessing feasibility.
Types: Includes throwaway prototypes and evolutionary prototypes.
Distinction between throwaway (inefficient) and evolutionary based on performance.
Suitable for exploratory systems (e.g., intelligent systems).
Incorporates risk assessment phases, integrating prototyping as needed.
Core Workflows: Inception, Elaboration, Construction, Transition.
Each stage has specific deliverables (e.g., use case models, architecture).
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.
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: 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.
A software paradigm is a style or approach to software development (e.g., procedural, object-oriented).
Procedural Paradigm: Focuses on processes.
Object-Oriented (OO) Paradigm: Emphasizes objects and their interactions.
Data-Oriented Paradigm: Centers around data entities and their relationships.
Includes DSDM, FDD, Scrum, XP, etc.
Works with RUP and XP, suitable for both agile and plan-driven projects.
Unique features include model-driven approaches and regular builds.
Key features: team roles (Scrum Master, Product Owner), daily meetings, and team retrospectives.
Emphasizes constant integration and flexible work hours.
Aimed at both beginners and experienced developers, adaptable for various project types.
Methodology highlights: team collaboration, iterative development, and accommodating requirements changes.
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.