Structure intake
Identify relevant entities and relationships in the source material.
- Receives
- Files, symbols and their structural relationships.
- Produces
- A representation of the system’s structure.
Work architected at Fifth9
GraFOSa represents code structure as related entities rather than isolated files. Questions about a change can then follow those relationships. An isolated graph alternative offers a place to examine a proposal while keeping structural analysis distinct from executing and testing software.
Structural analysis tooling This is structural analysis. It does not certify the behaviour of a running application.
GraFOSa system, composition and analysis architecture ↗ · Original GraFOSa diagrams and sources ↗
The detailed graphical reconstruction and the original text diagrams remain distinct views.
The design question
Help people and agents investigate what a proposed change may affect before deciding how to proceed.
A relationship graph provides structural context that is difficult to hold in one conversation. It can connect a proposed change to callers, dependencies and related components, helping an engineer decide where to investigate rather than assuming the edited file is the whole scope.
Keep context, responsibility and the boundary between a proposal and an accepted result visible.
What each part is responsible for
Identify relevant entities and relationships in the source material.
Organise the structure so connected parts can be examined together.
Answer focused structural questions.
Support examination of proposed structural changes.
Make findings usable in implementation and review.
Following one piece of work
Build an account of files, symbols and relationships from the source being investigated. Its usefulness depends on both what it can represent and what the available source leaves out.
Identify the proposed change to an entity or relationship and the assumptions around it. A bounded question, such as which callers may be affected, is more useful than treating every connection as a likely defect.
Follow relevant relationships to identify places that merit review. Keep a distinction between a possible structural consequence and an effect demonstrated by executing the application.
Where appropriate, examine proposed structure separately from the current baseline. This allows an engineer to ask what relationships would change while preserving a reference for comparison.
Use the findings to direct code review and runtime testing. Dynamic behaviour, configuration and external interactions may require evidence that a structural graph cannot supply.
Illustrative example · not a benchmark result
An engineer wants to change a shared function.
The useful result: A better-founded scope for review and testing of the proposed change.
A plausible structural impact is an investigation lead, not proof of a runtime defect.
An alternative graph should not silently replace the baseline used by other investigations. Separating proposed structure from the current view makes comparisons possible. Neither view removes the need to execute relevant behaviour when dynamic effects or environment differences matter.
Reading the architecture accurately
Where the design must hold up
| Boundary | Why it matters | How to examine it |
|---|---|---|
| Structure versus runtime | A static relationship graph cannot establish all runtime behaviour. | Compare structural findings with executed behaviour where dynamic effects matter. |
| Source freshness | Missing or stale source relationships can weaken an investigation. | Confirm that the graph corresponds to the source version being investigated and identify missing relationships. |
| Interpreting impact | A structural score or finding needs interpretation in the context of the change. | Use a proposed impact to guide review or testing, then evaluate what actually happens. |