Module-Dependency Mapping
Summary
Extract and visualize the class hierarchy, inheritance relationships, and composition structure of an object-oriented software project to identify extension points and module boundaries. This skill enables developers to navigate modular codebases and locate specific classes or abstract interfaces for improvement or extension.
When to use
Apply this skill when you need to understand or document the structural organization of an object-oriented codebase—specifically when developers require a map of which modules depend on others, where extension points (abstract classes, interfaces, factory patterns) exist, or when preparing to extend or refactor specific subsystems. Use it to validate that a software project adheres to modular object-oriented design principles and to identify the entry points for adding new functionality.
When NOT to use
- Input is a non-object-oriented or procedural codebase without clear class structures or inheritance hierarchies.
- The goal is to analyze runtime behavior or data flow rather than static structural relationships.
- You need to track dynamic plugin loading or runtime type resolution that is not statically analyzable.
Inputs
- Git repository URL (object-oriented Python, Java, or similar language)
- Source code directory tree with class and module definitions
- Project documentation or design specifications (optional)
Outputs
- Structured class diagram in PlantUML or graphical format
- Module dependency graph identifying composition and inheritance edges
- Annotated list of extension points (abstract classes, interfaces, factories)
- Documentation mapping public classes to their module locations
How to apply
Clone the target repository using Git. Perform static analysis of the source code to identify all class definitions, method signatures, inheritance chains, and composition relationships. Extract module boundaries, public APIs, and extension mechanisms such as abstract classes, interfaces, and factory patterns that serve as extension points. Generate a structured class diagram (using PlantUML or equivalent format) that visualizes the module hierarchy, class relationships, and explicitly marks developer-facing extension points. Validate the resulting diagram against the source code to ensure all public classes, documented extension mechanisms, and inheritance/composition edges are represented accurately.
Related tools
- Docker (Container environment for reproducible static analysis and code parsing of the target repository)
- Git (Version control system used to clone and retrieve the source code repository) — https://github.com/rmallol/clomet
- PlantUML (Diagram generation tool for rendering extracted class relationships as formal UML class diagrams)
Evaluation signals
- All public classes and modules documented in the project are present in the generated diagram.
- Inheritance relationships and composition edges match the actual source code hierarchy without omissions or false edges.
- Extension points (abstract classes, interfaces, factory patterns) are explicitly labeled and match the source code's documented extension mechanisms.
- Diagram validation step confirms that every public class and composition/inheritance relationship in the diagram exists in the source code.
- Developers can use the diagram to correctly identify which modules to extend or improve without requiring additional source code inspection.
Limitations
- Static analysis cannot capture dynamically loaded classes, runtime polymorphism via reflection, or plugin architectures that are not statically resolvable.
- Accuracy depends on the clarity and consistency of the source code's object-oriented structure; poorly designed or legacy procedural code may not yield meaningful diagrams.
- The extracted diagram represents the current snapshot of the codebase; it must be regenerated if significant architectural changes occur.
- Documentation of extension points relies on the presence of explicit abstract classes, interfaces, or design patterns in the source; implicit extension mechanisms may be missed.
Evidence
- [readme] The software has been designed in such a modular way meeting the Object Oriented Programming standards to facilitate the extension of its capabilities: "The software has been designed in such a modular way meeting the Object Oriented Programming standards to facilitate the extension of its capabilities"
- [readme] we have released the class diagram of the software, so developers can go directly to those modules that they want to improve/extend: "we have released the class diagram of the software, so developers can go directly to those modules that they want to improve/extend"
- [other] Extract class definitions, method signatures, and module boundaries that represent extension points (abstract classes, interfaces, factory patterns): "Extract class definitions, method signatures, and module boundaries that represent extension points (abstract classes, interfaces, factory patterns)"
- [other] Generate a structured class diagram in PlantUML or equivalent format that visualizes the module hierarchy, class relationships, and developer extension points: "Generate a structured class diagram in PlantUML or equivalent format that visualizes the module hierarchy, class relationships, and developer extension points"
- [other] Validate the diagram against source code to ensure all public classes and their documented extension mechanisms are represented: "Validate the diagram against source code to ensure all public classes and their documented extension mechanisms are represented"
1---2name: module-dependency-mapping3description: Use when you need to understand or document the structural organization of an object-oriented codebase—specifically when developers require a map of which modules depend on others, where extension points (abstract classes, interfaces, factory patterns) exist, or when preparing to extend or refactor.4license: CC-BY-4.05---67# Module-Dependency Mapping89## Summary1011Extract and visualize the class hierarchy, inheritance relationships, and composition structure of an object-oriented software project to identify extension points and module boundaries. This skill enables developers to navigate modular codebases and locate specific classes or abstract interfaces for improvement or extension.1213## When to use1415Apply this skill when you need to understand or document the structural organization of an object-oriented codebase—specifically when developers require a map of which modules depend on others, where extension points (abstract classes, interfaces, factory patterns) exist, or when preparing to extend or refactor specific subsystems. Use it to validate that a software project adheres to modular object-oriented design principles and to identify the entry points for adding new functionality.1617## When NOT to use1819- Input is a non-object-oriented or procedural codebase without clear class structures or inheritance hierarchies.20- The goal is to analyze runtime behavior or data flow rather than static structural relationships.21- You need to track dynamic plugin loading or runtime type resolution that is not statically analyzable.2223## Inputs2425- Git repository URL (object-oriented Python, Java, or similar language)26- Source code directory tree with class and module definitions27- Project documentation or design specifications (optional)2829## Outputs3031- Structured class diagram in PlantUML or graphical format32- Module dependency graph identifying composition and inheritance edges33- Annotated list of extension points (abstract classes, interfaces, factories)34- Documentation mapping public classes to their module locations3536## How to apply3738Clone the target repository using Git. Perform static analysis of the source code to identify all class definitions, method signatures, inheritance chains, and composition relationships. Extract module boundaries, public APIs, and extension mechanisms such as abstract classes, interfaces, and factory patterns that serve as extension points. Generate a structured class diagram (using PlantUML or equivalent format) that visualizes the module hierarchy, class relationships, and explicitly marks developer-facing extension points. Validate the resulting diagram against the source code to ensure all public classes, documented extension mechanisms, and inheritance/composition edges are represented accurately.3940## Related tools4142- **Docker** (Container environment for reproducible static analysis and code parsing of the target repository)43- **Git** (Version control system used to clone and retrieve the source code repository) — https://github.com/rmallol/clomet44- **PlantUML** (Diagram generation tool for rendering extracted class relationships as formal UML class diagrams)4546## Evaluation signals4748- All public classes and modules documented in the project are present in the generated diagram.49- Inheritance relationships and composition edges match the actual source code hierarchy without omissions or false edges.50- Extension points (abstract classes, interfaces, factory patterns) are explicitly labeled and match the source code's documented extension mechanisms.51- Diagram validation step confirms that every public class and composition/inheritance relationship in the diagram exists in the source code.52- Developers can use the diagram to correctly identify which modules to extend or improve without requiring additional source code inspection.5354## Limitations5556- Static analysis cannot capture dynamically loaded classes, runtime polymorphism via reflection, or plugin architectures that are not statically resolvable.57- Accuracy depends on the clarity and consistency of the source code's object-oriented structure; poorly designed or legacy procedural code may not yield meaningful diagrams.58- The extracted diagram represents the current snapshot of the codebase; it must be regenerated if significant architectural changes occur.59- Documentation of extension points relies on the presence of explicit abstract classes, interfaces, or design patterns in the source; implicit extension mechanisms may be missed.6061## Evidence6263- [readme] The software has been designed in such a modular way meeting the Object Oriented Programming standards to facilitate the extension of its capabilities: "The software has been designed in such a modular way meeting the Object Oriented Programming standards to facilitate the extension of its capabilities"64- [readme] we have released the class diagram of the software, so developers can go directly to those modules that they want to improve/extend: "we have released the class diagram of the software, so developers can go directly to those modules that they want to improve/extend"65- [other] Extract class definitions, method signatures, and module boundaries that represent extension points (abstract classes, interfaces, factory patterns): "Extract class definitions, method signatures, and module boundaries that represent extension points (abstract classes, interfaces, factory patterns)"66- [other] Generate a structured class diagram in PlantUML or equivalent format that visualizes the module hierarchy, class relationships, and developer extension points: "Generate a structured class diagram in PlantUML or equivalent format that visualizes the module hierarchy, class relationships, and developer extension points"67- [other] Validate the diagram against source code to ensure all public classes and their documented extension mechanisms are represented: "Validate the diagram against source code to ensure all public classes and their documented extension mechanisms are represented"