Курсовая по программной инженерии в НИЯУ МИФИ имеет прямую связь с актуальными программами 2026 года. В перечне направления 09.03.04 указаны программы по программной инженерии искусственного интеллекта, конструктивным моделям в информационных и интеллектуальных системах и моделированию когнитивных процессов.
Официальная страница:
https://admission.mephi.ru/admission/baccalaureate-and-specialty/education/programs
Поэтому проект здесь может быть обычной программной системой, AI-сервисом или высококритичным компонентом. Но в любом случае сильная работа должна показывать инженерный процесс, а не только итоговый код.
Требования раньше архитектуры
До выбора технологии ответьте:
- кто пользователь;
- какая задача;
- какой результат;
- какие ограничения.
Например:
«Сервис принимает поток событий и обнаруживает аномалии с p95 задержки ниже X мс».
Это уже влияет на архитектуру.
Functional requirement
Пример:
«Система сохраняет результат анализа».
Non-functional requirement
Пример:
«Система выдерживает N запросов в секунду».
Эти требования нельзя смешивать.
Они проверяются по-разному.
Scope
Зафиксируйте:
- что реализуется;
- что остаётся за рамками;
- какие внешние системы считаются готовыми.
Это защищает работу от бессмысленного роста.
Architecture drivers
Выберите 3-5 факторов:
- performance;
- reliability;
- security;
- modifiability;
- data volume.
Не проектируйте всё одинаково важным.
Monolith или services
Для небольшой курсовой monolith часто рационален.
Если нужны microservices, покажите причину:
- независимое масштабирование;
- разные failure domains;
- отдельный lifecycle.
Не дробите систему ради диаграммы.
ADR
Для важного решения создайте запись:
Проблема
Варианты
Выбор
Последствия
Например, выбор message broker.
Так решение становится аргументированным.
Domain boundaries
Особенно для сложной системы важно отделить:
- domain;
- infrastructure;
- interface.
Не смешивайте бизнес-правила и SQL в одном модуле.
API contract
Опишите несколько endpoint.
Для каждого:
- request;
- response;
- error;
- permission.
Это позволяет тестировать interface независимо.
Versioning
Если contract может меняться, задайте стратегию.
Для курсовой достаточно показать:
- v1;
- compatibility;
- deprecation idea.
Не нужна сложная enterprise governance.
Data model
Для critical system особенно важны:
- constraints;
- history;
- traceability.
Сущность должна иметь устойчивый identifier.
Не используйте название как primary key.
Event log
Если система обрабатывает события, продумайте:
- id;
- time;
- source;
- type;
- payload version.
Это упрощает воспроизводимость.
Idempotency
Повторная доставка event не должна обязательно создавать duplicate effect.
Покажите механизм:
- unique event id;
- deduplication.
Это хороший инженерный кейс.
Unit tests
Проверяйте чистую domain logic отдельно.
Это делает тесты быстрыми.
Не запускайте DB для каждого маленького правила.
Integration tests
Проверяйте:
- DB;
- queue;
- model service;
- external API.
Такие границы особенно критичны.
Contract tests
Если AI model service отделён от backend, зафиксируйте contract.
Например:
input schema
output schema
model version.
Это снижает риск неожиданной несовместимости.
End-to-end
Проверьте главный пользовательский сценарий целиком.
Но E2E не должен заменять все остальные tests.
Он медленнее и хуже локализует bug.
Test doubles
Для внешнего API можно использовать mock.
Но хотя бы один integration test должен проверять реальный contract в контролируемой среде, если это возможно.
Property testing
Для parser, validator или numerical function можно проверять свойства на множестве входов.
Это полезнее нескольких вручную подобранных примеров.
