Roadmap¶
Что изучить дальше и на какие источники опереться. Разобранная тема уходит отсюда в заметку.
Software Engineering: ключевые разделы и их этапы¶
Ниже — поэтапное содержание для трёх основных разделов Software Engineering.
1. Requirements Engineering¶
-
Инициация сбора требований
1.1. Определение целей и контекста проекта
1.2. Идентификация стейкхолдеров
1.3. Сбор исходных документов и бизнес-описаний -
Выявление требований (Elicitation)
2.1. Интервью с заказчиком и пользователями
2.2. Анкеты, опросы, фокус-группы
2.3. Наблюдение за текущими процессами (shadowing)
2.4. Workshop / JAD-сессии -
Анализ и категоризация
3.1. Разделение на функциональные (FR) и нефункциональные (NFR) требования
3.2. Приоритизация (MoSCoW, Kano)
3.3. Уточнение бизнес-правил и ограничений -
Моделирование требований
4.1. Use Case-диаграммы (UML)
4.2. User Story Mapping / Story Board
4.3. BPMN / Activity Diagrams -
Документирование в SRS
5.1. Введение и Scope
5.2. FR: описание сценариев с уникальными ID
5.3. NFR: производительность, безопасность, масштабируемость
5.4. Интерфейсы: UI, API, Hardware, Network
5.5. Бизнес-правила и допущения -
Валидация и согласование
6.1. Review-сессии с заказчиком
6.2. Прототипы / Mock-up
6.3. Финальное утверждение SRS -
Управление требованиями
7.1. Версионирование SRS
7.2. Обработка Change Requests
7.3. Traceability Matrix (связь требований → дизайн → тесты)
2. System Design¶
-
Подготовка и входные данные
1.1. Утверждённые FR/NFR из SRS
1.2. Технические ограничения и предпосылки
1.3. KPIs: RPS/QPS, latency, SLA -
High-Level Architecture
2.1. Выбор стиля: монолит ↔ микросервисы ↔ SOA
2.2. Слоистая архитектура (Presentation, Business, Data)
2.3. C4 Model: Context & Container Diagrams
2.4. Разграничение Bounded Contexts (DDD) -
Компоненты и интеграция
3.1. API Gateway, Load Balancer
3.2. Базы данных: SQL vs NoSQL, репликация, шардирование
3.3. Кэш (Redis/Memcached), CDN
3.4. Messaging (Kafka, RabbitMQ) -
Нефункциональные решения
4.1. Масштабируемость: горизонтальная vs вертикальная
4.2. Отказоустойчивость: Health Checks, Failover, Replicas
4.3. Безопасность: TLS, OAuth2/JWT, WAF
4.4. Производительность: кеширование, CDN, тонкие клиенты -
Detailed Design
5.1. UML-диаграммы классов и последовательностей
5.2. ER-диаграмма базы данных, индексы
5.3. Проектирование API (REST/GraphQL/gRPC)
5.4. Стратегии кеширования и обработки ошибок (retry, circuit breaker) -
Инфраструктура и деплой
6.1. Docker-контейнеризация, Dockerfile
6.2. Оркестрация: Kubernetes / Docker Swarm
6.3. CI/CD pipeline: build → test → deploy → rollback
6.4. Мониторинг и логирование (Prometheus, ELK, Grafana) -
Верификация дизайна
7.1. PoC / Spike solutions для критичных компонентов
7.2. Архитектурные ревью (ADR)
7.3. Нагрузочное и security-тестирование
3. Project Management¶
-
Инициация проекта
1.1. Project Charter (цели, обоснование)
1.2. Определение стейкхолдеров
1.3. Ключевые риски и допущения -
Планирование
2.1. Scope Definition & WBS
2.2. Оценка ресурсов и сроков (PERT, Delphi, Expert Judgment)
2.3. График: Gantt Chart, Critical Path Method
2.4. Бюджет и план закупок
2.5. Risk Management Plan
2.6. Communication Plan -
Исполнение
3.1. Team Formation & Roles (PO, PM, Dev Team)
3.2. Управление ресурсами и задачами (Task Tracking)
3.3. Code Review & QA практики
3.4. Управление изменениями (Change Requests) -
Мониторинг & контроль
4.1. Earned Value Management (EV, PV, AC, SPI, CPI)
4.2. Status Reporting (Dashboards, Status Reports)
4.3. Управление рисками (Risk Register обновления)
4.4. Quality Control (тестирование, инспекции) -
Закрытие проекта
5.1. Acceptance Testing и передача продукта
5.2. Lessons Learned / Post-mortem
5.3. Архивация документации
5.4. Закрытие контрактов и освобождение ресурсов
Java: темы к разбору¶
Многопоточность¶
- Многопоточность. Класс Thread, интерфейс Runnable. Модификатор synchronized интерфейсы Lock и Condition
- Классы-сихронизаторы из пакета java.util.concurrent
- Модификатор volatile. Атомарные типы данных и операции
- Коллекции из пакета java.util.concurrent
- Интерфейсы Executor, ExecutorService, Callable, Futur
- Пулы потоко
Паттерны¶
- Шаблоны проектирования: Decorator, Iterator, Factory method, Command, Flyweight, Interpreter, Singleton, Strategy, Adapter, Facade, Proxy
- GRASP & GoF Design patterns
- Enterprise Patterns
Security и low-level¶
- https://timcore.ru/2021/02/24/1-kali-linux-dlja-nachinajushhih-urok-1-osnovy-setej/
- https://makelinux.github.io/kernel/map/
- https://kernelnewbies.org/KernelHacking
- https://bootlin.com/doc/training/linux-kernel/linux-kernel-slides.pdf
- https://wiki.osdev.org/Expanded_Main_Page
- https://www.kernel.org/doc/html/v4.16/process/howto.html
- https://uneex.ru/
- https://habr.com/ru/companies/sberbank/articles/353746/
Ссылки к разбору¶
- https://github.com/mjhea0/awesome-fastapi
- https://github.com/wiseaidev/awesome-fastapi
- https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/nginx.html
- https://dev.to/envoy_/awesome-clones-32l8
- https://github.com/humiaozuzu/awesome-flask
- https://github.com/aimclub/open-source-ops?tab=readme-ov-file