5.0 KiB
Gap Analysis Process
Objective
Analyze the gap between requirements and existing codebase to inform implementation strategy decisions.
Analysis Framework
1. Current State Investigation
-
Scan for domain-related assets:
- Key files/modules and directory layout
- Reusable components/services/utilities
- Dominant architecture patterns and constraints
-
Extract conventions:
- Naming, layering, dependency direction
- Import/export patterns and dependency hotspots
- Testing placement and approach
-
Note integration surfaces:
- Data models/schemas, API clients, auth mechanisms
2. Requirements Feasibility Analysis
-
From EARS requirements, list technical needs:
- Data models, APIs/services, UI/components
- Business rules/validation
- Non-functionals: security, performance, scalability, reliability
-
Identify gaps and constraints:
- Missing capabilities in current codebase
- Unknowns to be researched later (mark as "Research Needed")
- Constraints from existing architecture and patterns
-
Note complexity signals:
- Simple CRUD / algorithmic logic / workflows / external integrations
3. Implementation Approach Options
Option A: Extend Existing Components
When to consider: Feature fits naturally into existing structure
-
Which files/modules to extend:
- Identify specific files requiring changes
- Assess impact on existing functionality
- Evaluate backward compatibility concerns
-
Compatibility assessment:
- Check if extension respects existing interfaces
- Verify no breaking changes to consumers
- Assess test coverage impact
-
Complexity and maintainability:
- Evaluate cognitive load of additional functionality
- Check if single responsibility principle is maintained
- Assess if file size remains manageable
Trade-offs:
- ✅ Minimal new files, faster initial development
- ✅ Leverages existing patterns and infrastructure
- ❌ Risk of bloating existing components
- ❌ May complicate existing logic
Option B: Create New Components
When to consider: Feature has distinct responsibility or existing components are already complex
-
Rationale for new creation:
- Clear separation of concerns justifies new file
- Existing components are already complex
- Feature has distinct lifecycle or dependencies
-
Integration points:
- How new components connect to existing system
- APIs or interfaces exposed
- Dependencies on existing components
-
Responsibility boundaries:
- Clear definition of what new component owns
- Interfaces with existing components
- Data flow and control flow
Trade-offs:
- ✅ Clean separation of concerns
- ✅ Easier to test in isolation
- ✅ Reduces complexity in existing components
- ❌ More files to navigate
- ❌ Requires careful interface design
Option C: Hybrid Approach
When to consider: Complex features requiring both extension and new creation
-
Combination strategy:
- Which parts extend existing components
- Which parts warrant new components
- How they interact
-
Phased implementation:
- Initial phase: minimal viable changes
- Subsequent phases: refactoring or new components
- Migration strategy if needed
-
Risk mitigation:
- Incremental rollout approach
- Feature flags or configuration
- Rollback strategy
Trade-offs:
- ✅ Balanced approach for complex features
- ✅ Allows iterative refinement
- ❌ More complex planning required
- ❌ Potential for inconsistency if not well-coordinated
4. Out-of-Scope for Gap Analysis
- Defer deep research activities to the design phase.
- Record unknowns as concise "Research Needed" items only.
5. Implementation Complexity & Risk
- Effort:
- S (1–3 days): existing patterns, minimal deps, straightforward integration
- M (3–7 days): some new patterns/integrations, moderate complexity
- L (1–2 weeks): significant functionality, multiple integrations or workflows
- XL (2+ weeks): architectural changes, unfamiliar tech, broad impact
- Risk:
- High: unknown tech, complex integrations, architectural shifts, unclear perf/security path
- Medium: new patterns with guidance, manageable integrations, known perf solutions
- Low: extend established patterns, familiar tech, clear scope, minimal integration
Output Checklist
- Requirement-to-Asset Map with gaps tagged (Missing / Unknown / Constraint)
- Options A/B/C with short rationale and trade-offs
- Effort (S/M/L/XL) and Risk (High/Medium/Low) with one-line justification each
- Recommendations for design phase:
- Preferred approach and key decisions
- Research items to carry forward
Principles
- Information over decisions: Provide analysis and options, not final choices
- Multiple viable options: Offer credible alternatives when applicable
- Explicit gaps and assumptions: Flag unknowns and constraints clearly
- Context-aware: Align with existing patterns and architecture limits
- Transparent effort and risk: Justify labels succinctly