
1. Основные компоненты
1.1. Анализ требований
1.1.1. Обеспечить четкое понимание того, что должно быть реализовано в программном обеспечении.
1.2. Планирование
1.2.1. Определение целей, требований и ресурсов для проекта.
1.3. Дизайн
1.3.1. Разработать план, который будет служить основой для последующей реализации.
1.4. Реализация
1.4.1. Создать рабочую версию программного обеспечения, соответствующую требованиям и дизайну.
1.5. Тестирование
1.5.1. Обеспечить высокое качество программного обеспечения и минимизировать количество ошибок.
1.6. Сопровождение
1.6.1. Обеспечить долговечность и актуальность программного обеспечения, адаптируя его к изменяющимся требованиям и условиям.
1.7. Управление проектом
1.7.1. Обеспечить выполнение проекта в срок, в рамках бюджета и с соответствием требованиям.
1.8. Жизненный цикл разработки программного обеспечения
1.8.1. Водопадная модель
1.8.1.1. Анализ требований, дизайн, реализация, тестирование, сопровождение.
1.8.2. Гибкая методология
1.8.2.1. Планирование, разработка, тестирование, демонстрация, оценка.
1.8.3. Спиральная модель
1.8.3.1. Управление рисками, гибкость.
1.8.4. V-модель
1.8.4.1. Высокое качество тестирования.
1.9. Конфигурационное управление и связи
1.9.1. Проектирование
1.9.2. Разработка
2. Стандарты
2.1. ISO/IEC 12207:2017 (Системная и программная инженерия — Процессы жизненного цикла программного обеспечения)
2.1.1. Обеспечить единообразие и качество процессов разработки программного обеспечения.
2.2. ISO/IEC 25010:2011 (Системная и программная инженерия — Модель качества систем и программного обеспечения)
2.2.1. Обеспечить оценку и улучшение качества программного обеспечения.
2.3. IEEE 1074-2006 (IEEE Стандарт для процессов разработки программного обеспечения)
2.3.1. Обеспечить структурированный подход к разработке программного обеспечения и повысить его качество.
2.4. ISO/IEC 27001:2013 (Информационная технология — Системы управления информационной безопасностью — Требования)
2.4.1. Обеспечить защиту информации и управление рисками в организациях.
2.5. ISO/IEC 9126 (Системная и программная инженерия — Оценка качества программного обеспечения)
2.5.1. Обеспечить оценку и улучшение качества программного обеспечения.
2.6. Разработчики стандартов программной инженерии
2.6.1. ISO — Международная организация по стандартизации
2.6.2. ACM — Ассоциация по вычислительной технике
2.6.3. SEI — Институт программной инженерии
2.6.4. PMI — Международный институт проектного менеджмента (Управления проектами)
2.6.5. IEEE — Институт инженеров по электронике.
3. Типовые циклы работы с требованиями
3.1. Сбор требований
3.1.1. Интервью, анкетирование
3.2. Анализ
3.2.1. Уточнение, приоритизация, границы проекта
3.3. Документирование
3.3.1. ТЗ, SRS, диаграммы
3.4. Утверждение
3.4.1. Согласование и финальная фиксация
3.5. Управление изменениями
3.5.1. Журнал изменений
4. Отличие от смежных дисциплин
4.1. Компьютерные науки
4.1.1. Программная инженерия применяет эти теоретические знания для разработки конкретных программных продуктов, акцентируя внимание на практических аспектах и процессах разработки.
4.2. Информационные технологии
4.2.1. Программная инженерия сосредоточена на разработке программного обеспечения, тогда как IT включает в себя более широкий спектр задач, таких как управление инфраструктурой, техническая поддержка и администрирование систем.
4.3. Системная инженерия
4.3.1. Программная инженерия фокусируется исключительно на разработке программного обеспечения, тогда как системная инженерия охватывает более широкий спектр систем и их взаимодействие.
4.4. Инженерия программного обеспечения
4.4.1. В отличие от других инженерных дисциплин, программная инженерия специализируется на программном обеспечении, используя уникальные методологии и процессы, такие как Agile, Scrum, и водопадная модель.
5. Формализация требований
5.1. Способы формализации
5.1.1. UML-диаграммы
5.1.2. Прототипы интерфейсов
5.1.3. Use-case сценарии
5.1.4. Таблицы данных
5.1.5. Графики и диаграммы активности
5.2. Виды документов
5.2.1. Техническое задание
5.2.2. Спецификация требований к ПО (SRS)
5.2.3. Пользовательские истории
5.2.4. Документ архитектуры ПО
5.3. Функциональные и нефункциональные требования
5.3.1. Функциональные
5.3.2. Нефункциональные
6. Характеристики ПО по Бруксу
6.1. Функциональность
6.1.1. Возможность программы для управления проектами создавать задачи, назначать их исполнителям и отслеживать их статус.
6.2. Надежность
6.2.1. Программа для онлайн-банкинга должна работать без сбоев и обеспечивать безопасность транзакций.
6.3. Удобство использования
6.3.1. Программа для редактирования текста должна иметь простой и понятный интерфейс, который позволяет пользователям легко находить и использовать необходимые функции.
6.4. Эффективность
6.4.1. Программа для обработки больших данных должна выполнять вычисления быстро и с минимальным использованием ресурсов.
6.5. Сопровождаемость
6.5.1. Программа должна иметь хорошо структурированный и документированный код, который позволяет разработчикам легко вносить изменения и обновления.
6.6. Портируемость
6.6.1. Программа должна быть разработана таким образом, чтобы ее можно было легко перенести с одной операционной системы на другую, например, с Windows на Linux.