| Model | Description | Advantages | Disadvantages | Best Use Case |
|---|---|---|---|---|
| Waterfall | Sequential development phases | Simple, structured, well-documented | Inflexible, late testing, difficult to change | Well-defined requirements, stable technology |
| Agile | Iterative, customer-focused development | Flexible, customer collaboration, rapid delivery | Requires customer involvement, difficult to estimate | Changing requirements, customer collaboration |
| Iterative | Develop in iterations with feedback | Early error detection, risk management | Resource-intensive, complex management | Large projects, evolving requirements |
| Spiral | Risk-driven, prototype-based | Risk management, flexible | Complex, expensive, requires expertise | High-risk projects, large systems |
| V-Model | Testing phase for each development phase | Systematic, early testing planning | Inflexible, late discovery of issues | Regulated industries, safety-critical |
| DevOps | Development and operations integration | Continuous delivery, automation, collaboration | Requires cultural change, learning curve | Continuous deployment, automation |
| Methodology | Key Principles | Key Practices | Best For |
|---|---|---|---|
| Scrum | Iterative sprints, self-organizing teams | Sprint planning, daily standups, retrospectives | Complex projects, cross-functional teams |
| Kanban | Visual workflow, continuous delivery | Visual boards, WIP limits, flow optimization | Continuous flow, maintenance projects |
| Extreme Programming (XP) | Customer satisfaction, rapid feedback | Pair programming, TDD, continuous integration | Changing requirements, high-quality code |
| Lean | Eliminate waste, optimize workflow | Value stream mapping, continuous improvement | Efficiency, waste reduction |
| Crystal | People and interaction over processes | Reflective improvement, personal communication | Small teams, high-criticality projects |
| Type | Focus | When | Techniques | Tools |
|---|---|---|---|---|
| Unit Testing | Individual components | During development | White box, equivalence partitioning | JUnit, NUnit, PyTest |
| Integration Testing | Module interactions | After unit testing | Top-down, bottom-up, sandwich | TestNG, Mockito, JMock |
| System Testing | Complete system | After integration | Black box, functional testing | Selenium, JMeter, LoadRunner |
| Acceptance Testing | Business requirements | Before delivery | User acceptance, alpha/beta testing | Cucumber, FitNesse, UFT |
| Regression Testing | Ensure no new bugs | After changes | Retest, selective retest | Selenium, TestComplete, Ranorex |
| Performance Testing | Speed, stability, scalability | Before production | Load, stress, endurance testing | JMeter, LoadRunner, Gatling |
| Security Testing | Vulnerabilities | Throughout development | Penetration testing, vulnerability scanning | OWASP ZAP, Burp Suite, Nessus |
| Pattern | Category | Purpose | Implementation | Benefits |
|---|---|---|---|---|
| Singleton | Creational | Ensure single instance | Private constructor, static instance | Controlled access, reduced memory |
| Factory | Creational | Create objects without specifying class | Factory method, abstract factory | Loose coupling, flexibility |
| Observer | Behavioral | Define one-to-many dependency | Subject, observer interfaces | Loose coupling, broadcast |
| Strategy | Behavioral | Define family of algorithms | Interface for algorithms | Runtime algorithm selection |
| Decorator | Structural | Add responsibilities dynamically | Wraps original object | Flexible alternative to subclassing |
| Adapter | Structural | Convert interface to compatible one | Wrapper pattern | Make incompatible interfaces work together |
| Command | Behavioral | Encapsulate request as object | Command interface, invoker | Parameterize, queue, log requests |
| Facade | Structural | Provide unified interface | Simple interface to complex system | Simplify complex subsystems |
| Category | Metric | Description | Measurement | Target |
|---|---|---|---|---|
| Productivity | Lines of Code (LOC) | Size of software | Count of source lines | Context-dependent |
| Productivity | Function Points | Functionality provided | Count of inputs, outputs, files | 10-15 FP per person-month |
| Productivity | Code Reuse | Reusable components | Percentage of reused code | 60-80% |
| Quality | Defect Density | Defects per size unit | Defects / KLOC or FP | 1-5 defects/KLOC |
| Quality | Code Coverage | Code tested | Percentage of code exercised | 80-90% |
| Quality | Cyclomatic Complexity | Code complexity | Number of linearly independent paths | 3-7 per method |
| Maintenance | Maintainability Index | Effort to maintain | Based on complexity, lines, comments | 65-100 (higher better) |
| Maintenance | Mean Time to Repair (MTTR) | Time to fix defects | Average time to resolve issues | As low as possible |
| Activity | Purpose | Tools | Best Practices |
|---|---|---|---|
| Version Control | Track changes to code | Git, SVN, Mercurial | Commit frequently, use branches, meaningful commit messages |
| Build Management | Automate build process | Maven, Gradle, Ant, Make | Automate, consistent environment, dependency management |
| Release Management | Manage software releases | Jenkins, Bamboo, TeamCity | Automated testing, staging environments, rollback plans |
| Change Management | Control changes to software | Issue trackers, change logs | Impact analysis, approval process, documentation |
| Configuration Management | Manage system configurations | Ansible, Puppet, Chef | Infrastructure as code, version control, automation |
| Activity | Description | Techniques | Deliverables |
|---|---|---|---|
| Requirements Elicitation | Gather requirements from stakeholders | Interviews, surveys, observation, prototyping | Requirements document |
| Requirements Analysis | Understand and organize requirements | Use cases, user stories, context diagrams | Analysis model |
| Requirements Specification | Document requirements formally | SRS document, specifications | Software Requirements Specification |
| Requirements Validation | Verify requirements are correct | Reviews, prototyping, model checking | Validated requirements |
| Requirements Management | Track and control requirements | Traceability matrices, tools | Requirements traceability |
| Pattern | Description | Advantages | Disadvantages | Use Case |
|---|---|---|---|---|
| Layered (n-tier) | Organized into horizontal layers | Separation of concerns, maintainable | Performance overhead, rigid structure | Enterprise applications |
| Client-Server | Client requests, server responds | Separation of concerns, scalability | Single point of failure, network dependency | Web applications |
| Microservices | Small, independent services | Scalability, technology diversity | Complexity, network latency | Large, complex applications |
| Event-driven | Components react to events | Loose coupling, scalability | Complexity, debugging difficulty | Real-time applications |
| Model-View-Controller | Separate data, presentation, logic | Separation of concerns, maintainable | Complexity, over-engineering | GUI applications |
| Repository | Mediates between domain and data mapping | Decoupling, testability | Complexity, performance | Data-centric applications |
| Type | Purpose | Examples | Percentage of Effort |
|---|---|---|---|
| Corrective | Fix defects | Bug fixes, error corrections | 20% |
| Adaptive | Modify for environment changes | New OS, hardware changes, regulatory changes | 25% |
| Perfective | Improve performance/functionality | Performance improvements, feature enhancements | 50% |
| Preventive | Prevent future problems | Code refactoring, documentation updates | 5% |
| Aspect | Description | Techniques/Tools | Key Considerations |
|---|---|---|---|
| Project Planning | Define scope, schedule, resources | WBS, Gantt charts, PERT, critical path | Accurate estimation, risk assessment |
| Project Estimation | Estimate effort, time, cost | COCOMO, Function points, expert judgment | Historical data, team experience |
| Risk Management | Identify, analyze, mitigate risks | Risk matrix, mitigation plans | Early identification, contingency plans |
| Quality Management | Ensure software quality | Quality standards, reviews, testing | Quality planning, continuous improvement |
| Team Management | Manage human resources | Team building, communication, motivation | Skills, roles, communication |
| Change Management | Control requirement changes | Change control process, impact analysis | Documentation, approval process |