Skip to content

docs: систематизировать требования и трассировку до кода в Feature Flow #98

Description

@dapi

Контекст

В Feature Flow уже есть REQ-*, MET-*, CON-*, EC-*, SC-*, CHK-* и другие идентификаторы, но не зафиксированы:

  • минимальный набор основных видов требований с точки зрения системной инженерии;
  • граница между функциональными требованиями, качественными/нефункциональными требованиями, ограничениями, интерфейсными, эксплуатационными, safety/security и regulatory requirements;
  • правила классификации требования и его размещения по уровням brief.md, design.md, implementation-plan.md и upstream-документам;
  • обязательность требований для разных типов delivery-unit;
  • единая связь требования с verification/validation method и evidence;
  • необходимость пересмотра существующих мнемокодов и обратная совместимость со старыми пакетами.

Цель

Сделать типы требований явными, проверяемыми и трассируемыми в процессе feature delivery, не превращая каждый feature package в избыточную форму.

Что исследовать и решить

  1. Зафиксировать компактную taxonomy основных видов требований на базе системной инженерии.
  2. Определить canonical owner для каждого вида требования:
    • stakeholder/product;
    • system/feature;
    • functional;
    • performance/quality;
    • interface/data;
    • safety/security;
    • operational;
    • regulatory/compliance;
    • constraints;
    • verification/acceptance.
  3. Определить, какие виды обязательны всегда, а какие включаются по trigger/risk profile.
  4. Проверить текущие идентификаторы Feature Flow (REQ-*, MET-*, CON-*, EC-*, SC-*, CHK-*, EVID-*, solution IDs) на:
    • полноту;
    • пересечения и неоднозначность;
    • соответствие ownership boundaries;
    • удобство трассировки;
    • необходимость переименования, разделения или добавления мнемокодов.
  5. Решить, должны ли нефункциональные требования оставаться в MET-*/CON-*/EC-* или получить отдельную явную taxonomy.
  6. Определить минимальные поля требования: формулировка, rationale/source, priority, owner, measurable threshold, verification method, acceptance/evidence reference.
  7. Обновить при необходимости:
    • flows/feature.md;
    • flows/templates/feature/brief.md;
    • flows/templates/feature/design.md;
    • flows/templates/feature/implementation-plan.md;
    • flows/feature-artifact-catalog.md;
    • testing/validation guidance;
    • priming manifests и lint/doctor checks, если потребуется машинная проверка.
  8. Описать миграцию существующих feature packages и правило для новых пакетов.

Критерии готовности

  • В canonical documentation есть taxonomy требований и определения терминов.
  • Для каждого типа указаны owner, допустимый артефакт и verification/validation method.
  • Есть компактная матрица классификации с примерами и anti-examples.
  • Зафиксировано решение по сохранению или изменению текущих mnemonic IDs.
  • brief.md позволяет связать каждый обязательный requirement с acceptance scenario, check и evidence.
  • Для нефункциональных требований определены measurable criteria и способ проверки.
  • Обязательные и conditional requirement classes отражены в соответствующих lifecycle gates.
  • Existing feature packages не получают silent breaking change; описан migration/backward-compatibility path.
  • Пройдены релевантные repository checks: priming manifests validation, template lint, doctor и git diff --check.

Не входит

  • Реализация прикладной функциональности.
  • Создание полноценного отдельного requirements-management продукта или базы данных.
  • Обязательное добавление отдельного документа для каждого вида требований.
  • Переписывание всех существующих feature packages без отдельного migration scope.

Вопросы для решения

  • Нужны ли отдельные ID для FR-* и NFR-*, или текущие problem-space IDs достаточно выразительны?
  • Где проходит граница между requirement, constraint, design invariant и acceptance criterion?
  • Должна ли validation profile определять обязательные requirement classes автоматически?
  • Как проверять наличие requirement classes без превращения lint в domain-specific rules engine?

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions