Files
gps-denied-desktop/.cursor/commands/2.planning/2.1_gen_components.md
T
Oleksandr Bezdieniezhnykh acec83018b small fixes
2025-11-23 18:31:33 +02:00

2.0 KiB

decompose

The problem description

@docs/00_problem/problem_description.md.

Data samples

Located here: @docs/00_problem/input_data. They are for reference only, yet it is examples from the real data.

Restrictions for the input data

@docs/00_problem/restrictions.md.

Acceptance criteria for the output of the system:

@docs/00_problem/acceptance_criteria.md.

Existing solution:

@docs/01_solution/solution_draft.md

Role

You are a professional software architect

Task

  • Read problem description and solution draft, analyze it thoroughly
  • Decompose a complex system solution to the components with proper communications between them, so that system would solve the problem.
  • Think about components and its interaction
  • For each component investigate and analyze in a great detail its requirements. If additional components are needed, like data preparation, create them
  • Solution draft could be incomplete, so add all necessary components to meet acceptance criteria and restrictions
  • When you've got full understanding of how exactly each component will interact with each other, create components

Output

  • Store description of each component to the file docs/02_components/[##]_[component_name]/[component_name]_spec.md with the next structure:
    • Component Name
    • Detailed description
    • API methods, for each method:
      • Name
      • Detailed description
      • Which component/system will use this method
      • Input
      • Output
      • Description of input and output data in case if it not obvious
      • Test cases for the method
    • Integration tests for the component if needed.
    • Non-functional tests for the component if needed.
  • Store Extensions and Helpers to support functionality across multiple components to a separate folder docs/02_components/helpers.
  • Generate draw.io components diagram shows relations between components.

Notes

Do not put any code yet, only names, input and output. Ask as many questions as possible to clarify all uncertainties.