Fork me on GitHub

Requirement Gathering


Approximate Process Flow

  1. Customer wants a system to be developed.
  2. Architect gathers requirements by interviewing customer.
    • architect writes up requirements in Requirement Gathering, and documents the verification criteria for each requirement
    • architect reviews the requirements with the customer
    • architect plans an architecture to fulfil known requirements, also in Requirement Gathering, refining it in as much detail as necessary to know whether everything is clear, will work, and is implementable; this includes components, interfaces, verification criteria, and anything else necessary
    • this usually leads to additional questions, leading to new requirements or changes to existing ones
  1. Customer signs off on the requirements as being correct and complete.
    • this is tagged in the git repository
  1. Architect refines the architecture, if needed, to produce a work plan.

  1. Architect produces the work items needed to implement the architecture.
  2. Architect, project manager, and developers estimate work to be done, by breaking work items into smaller parts, when needed, etc.
  3. If necessary, project manager and sales negotiate with customer to agree on the price, scope, and timeline for the project.
  4. Developers do the work.
    • To facilitate this, developers break down the work items into ‘doable’ cards in the Kanban. The architect may need to help here.
  1. When (not if) there is a need to change requirements or architecture, the architect discusses the changes with the customer or developers, and prepares a change in Requirement Gathering in a new branch.
    • the architect updates the requirements, architecture, components, interfaces, and work items as necessary

  1. The architect and project manager discuss the proposed branch, making estimates (perhaps with the developers) on the impact on the amount of work to be done, and the project manager prepares the corresponding changes to work schedule and project cost.
  2. Project manager discusses the changes with the customer, who either accepts or rejects them, or wants to have the plan for the changes amended.
  3. Once the customer accepts the changes, the architect merges the new branch to master, and creates a tag for the new state of the agreement with the customer.
  4. Repeat until done.
In rough graphical form:

Flow Diagram

The above graph is not authoritative.

Data model A project is represented in Requirement Gathering as a set of nodes, which are linked to each other in various ways. Each node has a kind:

The data is expressed using YAML. Each node is an “object” consisting of some key/value pairs. Some constraints:

License management in projects Every project must manage the licenses in the components it includes to achieve several goals: