Software Processes and Models Analysis
Software Process Overview
Definition: Software Process refers to a coherent set of activities for specifying, designing, implementing, and testing software systems.
Key Activities:
Specification: Defines what the system should do.
Design and Implementation: Organizes the system and builds it.
Validation: Ensures that the system fulfills customer requirements.
Evolution: Adapts the system in response to changing requirements.
General Models of Software Processes
Waterfall Approach:
Linear sequential phases: requirements specification, design, implementation, testing, etc.
Each phase is completed before moving to the next.
Evolutionary Development:
Activities of specification, development, and validation occur simultaneously.
An initial system is developed quickly to serve as a prototype.
Formal Transformation:
Uses formal mathematical specifications to program.
Guarantees correctness as transformations are correctness preserving.
System Assembly from Reusable Components:
Focuses on integrating existing components rather than building new ones.
Software Development Lifecycle Models (SDLC)
Common Models:
Waterfall
RAD (Rapid Application Development)
Spiral Model
V-Model
Incremental Model
Agile Model
Iterative Model
Big-Bang Model
Prototype Model
DevOps
Waterfall Model
Phases:
Requirements
Design
Development
Testing
Deployment
Maintenance
Advantages:
Simplicity and minimal resource requirements.
Clear start and endpoints for phases.
Predictable release date and cost.
Disadvantages:
High risk for complex projects.
Difficult to accommodate requirement changes.
Testing occurs late in the process.
RAD (Rapid Application Development) Model
Definition: Emphasizes quick development using component-based construction.
Phases:
Business Modelling
Data Modelling
Process Modelling
Application Generation
Testing & Turnover
Advantages:
Flexible for changes.
High priority functionalities delivered quickly.
Reduced development time.
Disadvantages:
Requires skilled designers.
High technical compatibility risks.
Requires user involvement.
Iterative Model
Overview: Develops software in repeated cycles (iterations) where each iteration results in a set of functionalities.
Phases:
Requirement Gathering & Analysis
Design
Implementation
Testing
Deployment
Review
Maintenance
Advantages:
Easier testing and debugging.
Adaptable to changing requirements.
Disadvantages:
Not suitable for small projects.
Potential for increased resource needs.
Incremental Model
Definition: Breaks the product into smaller portions (increments) and develops them individually.
Phases:
Requirement Analysis
Design & Development
Implementation
Testing
Advantages:
Detects errors early.
Easier testing and bug fixing.
Flexible and manageable.
Disadvantages:
Requires thorough planning.
Overall costs can be high.
Prototype Model
Definition: Prepares a working prototype of the system before development.
Steps:
Requirement Gathering
Build Prototype
User Assessment
Prototype Refinement
Final Product Development
Advantages:
Reduces risk of incorrect requirements.
Supports early marketing efforts.
Disadvantages:
Often leads to incomplete prototypes becoming final products.
Requires extensive user collaboration.
Spiral Model
Overview: Combines iterative prototyping with systematic risk analysis and management.
Phases:
Objective Setting
Risk assessment and reduction
Development and validation
Planning for the next iteration
Advantages:
Comprehensive risk analysis.
Effective for large-scale projects.
Disadvantages:
Can become costly due to extensive documentation and planning.
V-Model
Phases: Represents the development process and corresponding test phases.
Verification Phase: Requirements, System Design, High-Level Design, and Low-Level Design.
Validation Phase: Unit Testing, Integration Testing, System Testing, Acceptance Testing.
Advantages:
Emphasizes early testing.
Improved clarity of project phases.
Disadvantages:
Inflexible and less efficient for complex projects.
Agile Model
Overview: Focuses on iterative development, self-organizing teams, and responding to changing requirements.
Key Methods: Scrum, Kanban, eXtreme Programming (XP), Crystal, Lean, Feature Driven Development (FDD).
Advantages:
Fast delivery of functional software.
High customer engagement.
Disadvantages:
Lack of formal documentation can lead to misunderstandings.
Big Bang Model
Overview: Informal, starts developing with minimal planning.
Advantages:
Simple and easy for small projects.
No extensive planning or documentation needed.
Disadvantages:
High risk and uncertainty.
Not suitable for larger projects.
DevOps
Definition: Combination of software development and IT operations aimed at shortening the development lifecycle.
Practices:
Automation
Continuous integration and deployment
Monitoring and collaboration
Advantages:
Faster time to market
Improved resource efficiency
Disadvantages:
May be inappropriate for projects focused on safety and security.
RUP (Rational Unified Process)
is an iterative software development process framework that focuses on defining and organizing the tasks needed for successful software development.
Key Principles of RUP:
Iterative Development: Emphasizes iterative refinement through multiple cycles, allowing feedback and adaptation.
Use-Case Driven: Uses use cases to identify system requirements and guide development.
Architecture-Centric: Focuses on creating a robust architecture as the foundation for the system.
Phases of RUP:
Inception: Define project scope and feasibility; identify stakeholders.
Elaboration: Refine requirements and establish the architecture; identify risks.
Construction: Develop, test, and finalize the system according to requirements and architecture.
Transition: Deploy the system to users and gather feedback.
Advantages:
Provides a structured approach while allowing flexibility.
Enhances project predictability and control through risk management.
Disadvantages:
Can be complex to implement due to its comprehensive nature.
Requires skilled personnel to execute effectively.