Активация онтологической воронки: механизм в деталях - Towareesh/OntoC4Designer GitHub Wiki
Активация — это процесс запуска специфичной обработки требования на основе его классификации. Это ключевой механизм, связывающий ML-классификацию с онтологиями и генерацией C4.
Процесс активации (шаги)
-
Получение триггера от ML
ML-классификатор передает:{ "type": "NFR", "subtype": "Security", "domain": "ApplicationSoftware", "confidence": 0.92 }
-
Выбор целевой воронки
Система выбирает воронку по схеме:graph LR A[Domain: ApplicationSoftware] --> B[Type: NFR] --> C[Subtype: Security] C --> D[Активировать SecurityAppVoronka]
-
Загрузка онтологий
Загружаются связанные онтологии:- Метаонтология (ISO 21838): базовые концепты
- Доменная онтология: ApplicationSoftware
- Субдоменная: SecurityNFR
load_ontology(core_iso) load_ontology(domain_app) load_ontology(subdomain_security)
-
Инициализация рабочего контекста
Создается семантический контекст обработки:context = { "requirement": original_text, "entities": NLP.extract_entities(original_text), "constraints": [], "components": [], "conflicts": [] }
-
Применение правил сужения
Последовательное выполнение онтологических правил:// Псевдокод обработки voronka.applyRule("IF Security THEN require Encryption"); voronka.applyRule("IF Encryption THEN component CryptoService"); voronka.checkConflict("LowLatency vs AES-256");
Пример активации для Security-требования
Требование:
"Все данные в транзите должны шифроваться по TLS 1.3"
Процесс воронки:
graph TD
A[Требование] --> B[Правило 1: Транзит → Шифрование]
B --> C[Правило 2: Шифрование → TLS]
C --> D[Правило 3: TLS → API Gateway]
D --> E[Конфликт-чек: Поддержка TLS 1.3]
E --> F[Генерация: Container=API-Gateway]
Рабочее состояние воронки:
{
"active_rules": [12, 15, 88],
"components": [
{
"type": "Container",
"name": "API-Gateway",
"properties": ["TLS_1.3", "HSTS"]
}
],
"constraints": ["encryption=always"],
"banned_solutions": ["HTTP-only", "SSL-deprecated"]
}
Типы правил в воронке
-
Обязательные правила
REQUIRE(condition, action)
Пример:
REQUIRE("data_transit", "add_encryption")
-
Исключающие правила
EXCLUDE(solution, conflict_reason)
Пример:
EXCLUDE("nginx_1.18", "no_TLS1.3_support")
-
Генерационные правила
GENERATE(concept, c4_component)
Пример:
GENERATE("TLS", "Container:API-Gateway")
-
Оптимизационные правила
OPTIMIZE(metric, priority)
Пример:
OPTIMIZE("latency", "security > performance")
Механизм сужения вариантов
Воронка последовательно ограничивает пространство решений:
graph LR
A[Все возможные решения] --> B[Применение доменных ограничений]
B --> C[Применение субдоменных правил]
C --> D[Разрешение конфликтов]
D --> E[1-2 валидных варианта]
Пример для Security:
Начало: 50+ вариантов (Apache, Nginx, Envoy, HAProxy...)
После доменных правил: 15 вариантов (только с поддержкой TLS)
После субдоменных правил: 3 варианта (TLS 1.3+)
После конфликт-чека: 1 вариант (Envoy)
Интеграция с генерацией C4
Результат работы воронки напрямую конвертируется в C4:
# Псевдокод конвертации
def generate_c4(voronka_output):
c4_model = C4Model()
# Контейнеры
for component in voronka_output['components']:
if component.type == "Container":
c4_model.add_container(
name=component.name,
tech=component.tech,
properties=component.properties
)
# Связи
for relation in voronka_output['relations']:
c4_model.add_relation(
source=relation.from,
target=relation.to,
protocol=relation.protocol
)
return c4_model
Итоговый вывод:
@startuml
!include C4_Container.puml
Container(api_gateway, "API Gateway", "Envoy", "TLS termination")
Container(app_service, "Application Service", "Spring Boot")
Rel(api_gateway, app_service, "HTTPS", "gRPC")
@enduml
Особенности для разных доменов
Системное ПО (RealtimeNFR):
voronka_rule('IF realtime THEN require preempt_rt');
voronka_rule('EXCLUDE non_rt_kernel');
Инструментальное ПО (CompatibilityNFR):
voronka_rule('IF cross_platform THEN component platform_abstraction');
voronka_rule('GENERATE win_support TO adapter_windows');
Прикладное ПО (ScalabilityNFR):
voronka_rule('IF high_load THEN require load_balancer');
voronka_rule('OPTIMIZE cost vs scalability');
Преимущества подхода
- Скорость: Автоматизация ручного проектирования
- Согласованность: Все решения соответствуют онтологическим правилам
- Трассируемость: Каждый элемент C4 связан с исходными требованиями
- Адаптивность: Легко добавлять новые домены через онтологии
Итог: Активация воронки превращает сырое требование в архитектурное решение через цепочку семантических преобразований, гарантируя корректность C4-модели.