Reverse Engineering

Existing code analysis

Reverse Engineering

Purpose: Analyze existing codebase and generate comprehensive design artifacts

Execute when: Brownfield project detected (existing code found in workspace)

Skip when: Greenfield project (no existing code)

Rerun behavior: Always rerun when brownfield project detected, even if artifacts exist. This ensures artifacts reflect current code state

Step 1: Multi-Package Discovery

1.1 Scan Workspace

  • All packages (not just mentioned ones)
  • Package relationships via config files
  • Package types: Application, CDK/Infrastructure, Models, Clients, Tests

1.2 Understand the Business Context

  • The core business that the system is implementing overall
  • The business overview of every package
  • List of Business Transactions that are implemented in the system

1.3 Infrastructure Discovery

  • CDK packages (package.json with CDK dependencies)
  • Terraform (.tf files)
  • CloudFormation (.yaml/.json templates)
  • Deployment scripts

1.4 Build System Discovery

  • Build systems: Brazil, Maven, Gradle, npm
  • Config files for build-system declarations
  • Build dependencies between packages

1.5 Service Architecture Discovery

  • Lambda functions (handlers, triggers)
  • Container services (Docker/ECS configs)
  • API definitions (Smithy models, OpenAPI specs)
  • Data stores (DynamoDB, S3, etc.)

1.6 Code Quality Analysis

  • Programming languages and frameworks
  • Test coverage indicators
  • Linting configurations
  • CI/CD pipelines

Step 1: Generate Business Overview Documentation

Create aidlc-docs/inception/reverse-engineering/business-overview.md:

# Business Overview

## Business Context Diagram
[Mermaid diagram showing the Business Context]

## Business Description
- **Business Description**: [Overall Business description of what the system does]
- **Business Transactions**: [List of Business Transactions that the system implements and their descriptions]
- **Business Dictionary**: [Business dictionary terms that the system follows and their meaning]

## Component Level Business Descriptions
### [Package/Component Name]
- **Purpose**: [What it does from the business perspective]
- **Responsibilities**: [Key responsibilities]

Step 2: Generate Architecture Documentation

Create aidlc-docs/inception/reverse-engineering/architecture.md:

# System Architecture

## System Overview
[High-level description of the system]

## Architecture Diagram
[Mermaid diagram showing all packages, services, data stores, relationships]

## Component Descriptions
### [Package/Component Name]
- **Purpose**: [What it does]
- **Responsibilities**: [Key responsibilities]
- **Dependencies**: [What it depends on]
- **Type**: [Application/Infrastructure/Model/Client/Test]

## Data Flow
[Mermaid sequence diagram of key workflows]

## Integration Points
- **External APIs**: [List with purposes]
- **Databases**: [List with purposes]
- **Third-party Services**: [List with purposes]

## Infrastructure Components
- **CDK Stacks**: [List with purposes]
- **Deployment Model**: [Description]
- **Networking**: [VPC, subnets, security groups]

Step 3: Generate Code Structure Documentation

Create aidlc-docs/inception/reverse-engineering/code-structure.md:

# Code Structure

## Build System
- **Type**: [Maven/Gradle/npm/Brazil]
- **Configuration**: [Key build files and settings]

## Key Classes/Modules
[Mermaid class diagram or module hierarchy]

### Existing Files Inventory
[List all source files with their purposes - these are candidates for modification in brownfield projects]

**Example format**:
- `[path/to/file]` - [Purpose/responsibility]

## Design Patterns
### [Pattern Name]
- **Location**: [Where used]
- **Purpose**: [Why used]
- **Implementation**: [How implemented]

## Critical Dependencies
### [Dependency Name]
- **Version**: [Version number]
- **Usage**: [How and where used]
- **Purpose**: [Why needed]

Step 4: Generate API Documentation

Create aidlc-docs/inception/reverse-engineering/api-documentation.md:

# API Documentation

## REST APIs
### [Endpoint Name]
- **Method**: [GET/POST/PUT/DELETE]
- **Path**: [/api/path]
- **Purpose**: [What it does]
- **Request**: [Request format]
- **Response**: [Response format]

## Internal APIs
### [Interface/Class Name]
- **Methods**: [List with signatures]
- **Parameters**: [Parameter descriptions]
- **Return Types**: [Return type descriptions]

## Data Models
### [Model Name]
- **Fields**: [Field descriptions]
- **Relationships**: [Related models]
- **Validation**: [Validation rules]

Step 5: Generate Component Inventory

Create aidlc-docs/inception/reverse-engineering/component-inventory.md:

# Component Inventory

## Application Packages
- [Package name] - [Purpose]

## Infrastructure Packages
- [Package name] - [CDK/Terraform] - [Purpose]

## Shared Packages
- [Package name] - [Models/Utilities/Clients] - [Purpose]

## Test Packages
- [Package name] - [Integration/Load/Unit] - [Purpose]

## Total Count
- **Total Packages**: [Number]
- **Application**: [Number]
- **Infrastructure**: [Number]
- **Shared**: [Number]
- **Test**: [Number]

Step 6: Generate Technology Stack Documentation

Create aidlc-docs/inception/reverse-engineering/technology-stack.md:

# Technology Stack

## Programming Languages
- [Language] - [Version] - [Usage]

## Frameworks
- [Framework] - [Version] - [Purpose]

## Infrastructure
- [Service] - [Purpose]

## Build Tools
- [Tool] - [Version] - [Purpose]

## Testing Tools
- [Tool] - [Version] - [Purpose]

Step 7: Generate Dependencies Documentation

Create aidlc-docs/inception/reverse-engineering/dependencies.md:

# Dependencies

## Internal Dependencies
[Mermaid diagram showing package dependencies]

### [Package A] depends on [Package B]
- **Type**: [Compile/Runtime/Test]
- **Reason**: [Why dependency exists]

## External Dependencies
### [Dependency Name]
- **Version**: [Version]
- **Purpose**: [Why used]
- **License**: [License type]

Step 8: Generate Code Quality Assessment

Create aidlc-docs/inception/reverse-engineering/code-quality-assessment.md:

# Code Quality Assessment

## Test Coverage
- **Overall**: [Percentage or Good/Fair/Poor/None]
- **Unit Tests**: [Status]
- **Integration Tests**: [Status]

## Code Quality Indicators
- **Linting**: [Configured/Not configured]
- **Code Style**: [Consistent/Inconsistent]
- **Documentation**: [Good/Fair/Poor]

## Technical Debt
- [Issue description and location]

## Patterns and Anti-patterns
- **Good Patterns**: [List]
- **Anti-patterns**: [List with locations]

Step 9: Create Timestamp File

Create aidlc-docs/inception/reverse-engineering/reverse-engineering-timestamp.md:

# Reverse Engineering Metadata

**Analysis Date**: [ISO timestamp]
**Analyzer**: AI-DLC
**Workspace**: [Workspace path]
**Total Files Analyzed**: [Number]

## Artifacts Generated
- [x] architecture.md
- [x] code-structure.md
- [x] api-documentation.md
- [x] component-inventory.md
- [x] technology-stack.md
- [x] dependencies.md
- [x] code-quality-assessment.md

Step 10: Update State Tracking

Update aidlc-docs/aidlc-state.md:

## Reverse Engineering Status
- [x] Reverse Engineering - Completed on [timestamp]
- **Artifacts Location**: aidlc-docs/inception/reverse-engineering/

Step 11: Present Completion Message to User

# 🔍 Reverse Engineering Complete

[AI-generated summary of key findings from analysis in the form of bullet points]

> **📋 <u>**REVIEW REQUIRED:**</u>**  
> Please examine the reverse engineering artifacts at: `aidlc-docs/inception/reverse-engineering/`

> **🚀 <u>**WHAT'S NEXT?**</u>**
>
> **You may:**
>
> 🔧 **Request Changes** - Ask for modifications to the reverse engineering analysis if required
> ✅ **Approve & Continue** - Approve analysis and proceed to **Requirements Analysis**

Step 12: Wait for User Approval

  • MANDATORY: Do not proceed until user explicitly approves
  • MANDATORY: Log user's response in audit.md with complete raw input