A software process encompasses a set of activities and tasks involved in the development and maintenance of software.
A framework provides a foundational, predefined structure that guides the software development process.
The Capability Maturity Model (CMM) is used to analyze the maturity of an organization’s software development practices.
The model outlines five maturity levels:
- Initial: Unstructured and chaotic processes.
- Repeatable: Basic project management processes are established.
- Defined: Processes are documented and standardized.
- Optimizing: Continuous process improvement is emphasized.
- Artificial Intelligence (AI)
- Cloud Computing (e.g., AWS)
- Data Mining
- Internet of Things (IoT)
-
Waterfall Model
- A linear and sequential approach.
- Steps:
- Requirement Analysis
- Design and Planning
- Implementation/Development
- Testing
- Deployment
- Maintenance
-
Spiral Model
- Focuses on risk assessment and iterative development.
- Steps:
- Requirement Gathering
- Identify Risks
- Development and Testing
- Release
- Feedback
- Plan Next Iteration
-
Incremental Model
- Software is developed and delivered in increments based on user feedback.
-
Rapid Application Development (RAD)
- Emphasizes rapid prototyping and quick feedback.
- Steps:
- Elicit Requirements
- Modularize Requirements
- Develop Modules (Analyze, Design, Develop, Test)
- Integrate Modules
- Test and Deploy
-
Agile Model
- Focuses on iterative development with frequent feedback.
- Steps:
- Requirements
- Development
- Design
- Quality Assessment / Testing
- Deployment
- Feedback
- Scrum: Roles include Scrum Master, Scrum Team, and Product Owner.
- Extreme Programming (XP): Adapts to changing customer demands through constant feedback.
- Kanban: Visualizes tasks and workflow using Kanban boards.
- Inception: Ask key questions to define the project.
- Elicitation: Gather requirements from stakeholders.
- Negotiation: Reach consensus on requirements.
- Validation: Ensure requirements meet needs.
- Specification: Document requirements clearly.
- Class Diagrams
- Use Cases
- Data Flow Diagrams (DFD)
- Activity Diagrams
- Product Metrics
- Process Metrics
- People Metrics
- Project Metrics
- Assess project status
- Identify risks
- Implement process improvements
- Evaluate team performance
- Analyze workflow
- Product Quality
- Testing Metrics
- Lines of Code (LOC)
- Speed
- Size
- Defects
- Measures functions delivered by the application based on:
- Inputs
- Outputs
- Inquiries
- Internal Files
- External Interfaces
- Estimates effort based on:
- Lines of Code (LOC)
- Development time
- Average staff requirements
- Objects categorized by complexity: Simple, Medium, Complex.
- Modularization
- Integration
- Separation of Coding and Design
- Gradual Degradation
- Comprehensive Coverage
- Architecture
- Abstraction
- Components
- Modularization
- Object-Oriented Programming (OOP)
- Functional Independence
- Aim for maximum cohesion within modules.
- Types of Cohesion:
- Coincident
- Communicative
- Logical
- Temporal
- Minimize interdependence between modules.
- Types of Coupling:
- Data Coupling
- Stamp Coupling
- Control Coupling
- External Coupling
- Data-Centered
- Call and Return
- Data Flow / Pipe and Filter
- Layered Architecture (Core, Utility, Application, User Interface)
- Object-Oriented
- Model-View-Controller (MVC)
- Process Manager
- Observer Pattern
- Unit Testing
- Integration Testing
- System Testing
- Sandwich Testing
- Black Box Testing
- Regression Testing
- Smoke Testing
- White Box Testing: Internal functions known; requires code knowledge; conducted by developers.
- Black Box Testing: External behavior tested without knowledge of internal workings.
- Focuses on control structures.
- Uses Cyclomatic Complexity to determine independent paths and test cases.
- Derives test cases from data domains and classes, covering valid and invalid scenarios.
- Boundary Testing: Tests values at the edges of data ranges.
- Project Risk
- Business Risk
- Technical Risk
- Predictable Risks
- Unpredictable Risks
- Default Density
- Code Coverage
- Cyclomatic Complexity
- Mean Time to Failure (MTTF)
- Mean Time to Repair (MTTR)
- Software Configuration Items (SCIs)
- Identification
- Version Control
- Auditing
- Maintenance
- Change Request
- Change Evaluation
- Change Approval
- Change Implementation
- Risk Table
- Context
- Measures Taken
- Plans/Strategies
This structured overview encapsulates the key aspects of software development processes, ensuring clarity and comprehensive understanding for stakeholders involved.