Программная инженерия
Кафедра информатики и автоматизации научных исследований
Специальность: Прикладная информатика в области принятия решений
Преподаватель: Филимонов А.В.
Цель курса – дать базовое понимание методологии программной инженерии. В курсе представлено изложение ключевых понятий, методов и средств программной инженерии как деятельности, нацеленной на создание программных систем, отвечающих потребностям заказчиков, с соблюдением плановых сроков и бюджета. Рассмотрены темы, актуальные для специалистов на пути от формулировки заказчиком требований до создания работоспособного и качественного программного продукта. Рассмотрены вопросы программной инженерии как инженерной дисциплины (применение инженерами не только теоретических методов и средств разработки ПО, но и стандартов, правил и методик управления разработкой ПО), а также вопросы проведения инженерных оценок качества, затраченных ресурсов, трудозатрат, стоимости и др.), основные процессы при создании программного обеспечения, среди которых такие ключевые разделы планирование (это анализ целей и задач, принципов реализации и управления планами и ресурсами), сопровождение (устранение найденных недостатков в ПО и внесение изменений как эволюционное развитие ПО ). Слушатели курса овладеют умением создавать системы с большими функциональными возможностями, управлять целями, сроками, ресурсами и ценой проекта, минимизировать затраты и стоимость.
В курсе освещается проблематика производства программного обеспечения, приводятся причины и следствия сложности программного обеспечения, приводятся базовые дисциплины процессов производства программного обеспечения, их структура в терминах времени, активностей, производимых и потребляемых артефактов. В курсе рассматривается ряд конкретных модификаций процессов производства программного обеспечения в разрезе вариаций применения описанных техник и методологий.
В результате освоения дисциплины обучающийся должен:
Знать: основы терминологии и методологии производства программного обеспечения; сходства, варианты применения различных типов процессов производства программного обеспечения.
Уметь: определять тип и конкретную модификацию процесса производства программного обеспечения исходя из структуры конфигурации проекта, определять начало и конец различных стадий процессов, а также диагностировать девиации в случае их присутствия.
Владеть: методами и способами построения различных процессов производства программного обеспечения, владеть навыками выбора лучших практик, анализа и устраниения узких мест в процессах производства.
Содержание
1. Введение. Области знаний программной инженерии и стандарты ЖЦ программного обеспечения. Анализ и характеристика областей знаний SWEBOK. Требования к ПО (Software Requirements). Проектирование ПО (Software design). Конструирование ПО (Software Construction). Тестирование ПО (Software Testing). Сопровождение ПО (Software maintenance). Управление конфигурацией ПО. Управление инженерией ПО. Процесс инженерии ПО (Software Engineering Process). Методы и инструменты инженерии ПО. Качество ПО (Software Quality). Жизненный цикл ПС, связь с ядром знаний SWEBOK.
2. Модели жизненного цикла для разработки программных систем. Процессы ЖЦ стандарта ISO/IEC 12207. Типы моделей ЖЦ. Каскадная модель ЖЦ. Инкрементная модель ЖЦ. Спиральная модель. Эволюционная модель ЖЦ. Стандартизация модели ЖЦ. Сопоставление ЖЦ стандарта ISO/IEC 12207 и областей SWEBOK. Характеристика процессов стандарта ISO/IEC 12207. Характеристика областей знаний SWEBOK.
3. Методы определения требований в программной инженерии. Общие подходы к определению требований. Классификация требований. Анализ и сбор требований. Инженерия требований. Фиксация требований. Трассировка требований. Объектно-ориентированная инженерия требований. Сценарный подход. Описание требований прецедентами.
4. Методы объектного анализа и построения моделей предметных областей. Краткий обзор объектно-ориентированных методов анализа и построения моделей. Основные понятия методов объектного анализа ПрО. Объектный метод построения моделей ПрО.Методы проектирования архитектуры ПО. Стандартный подход к проектированию. Общесистемный подход к проектированию архитектуры.
5. Прикладные и теоретические методы программирования. Методы систематического программирования. Структурный метод. Объектно-ориентированный метод. UML-метод моделирования. Компонентный подход. Аспектно-ориентированное программирование. Генерирующее (порождающее) программирование. Агентное программирование. Теоретическое программирование. Алгебраическое, инсерционное программирование. Экспликативное, номинативное программирование. Алгоритмика программ.
6. Методы проверки и тестирования программ и систем. Процессы ЖЦ верификация и валидация программ. Тестирование программ. Статические методы тестирования. Динамические методы тестирования. Функциональное тестирование. Инфраструктура процесса тестирования ПС. Методы поиска ошибок в программах. Классификация ошибок и тестов. Служба тестирования ПС. Управление процессом тестирования.
7. Интерфейсы, взаимодействие и изменение программ и данных. Задачи интерфейса при разработке программ. Интерфейс в ООП и в современных средах. Интерфейс в среде клиента и сервера. Интерфейс ЯП. Интерфейс и взаимосвязь с ЯП. Взаимодействие разноязыковых программ. Стандарт ISO/IEC 11404-1996 преобразования данных. Интерфейс платформ и преобразование данных. Преобразование форматов данных. Преобразование данных БД. Методы изменения (эволюции) компонентов и ПС. Реинженерия программных систем. Рефакторинг компонентов. Реверсная инженерия
8. Инженерия приложений и предметной области. Инженерия повторного использования компонентов. Спецификация ПИК. Репозитарий компонентов. Язык описания интерфейса компонентов в распределенной среде. Основные аспекты инженерии приложений и предметной области. Структура линейки программных продуктов. Оценивание стоимости системы из компонентов.
9. Модели качества и надежности в программной инженерии. Модель качества ПО. Характеристика показателей качества. Метрики качества программного обеспечения. Стандартная оценка значений показателей качества. Управление качеством ПС. Модели оценки надежности. Основные понятия в проблематике надежности ПС. Классификация моделей надежности. Марковские и пуассоновские модели надежности
10. Методы управления проектом, риском и конфигурацией. Методы управления проектами. Методы управления программным проектом. Планирование проекта. Организационные аспекты управления проектом. Системы управления проектом. Оценивание стоимости проекта. Методы управления рисками в проекте. Управление конфигурацией программной системы. Управление и планирование конфигурацией. Идентификация элементов конфигурации. Управление версиями и контроль конфигурации. Учет статуса и аудит конфигурации.
Литература
- Иан Соммервил, Инженерия программного обеспечения. 6-е издание, М. – СПб. – Киев, 2002. – 623 с
- Бабенко Л.П., Лаврищева Е.М, Основы программной инженерии. Учебник, Киев: Знание, 2001. – 269 с
- Лаврищева Е.М., Грищенко В.Н, Области знаний программной инженерии – SWEBOK и подход к обучению этой дисциплины, Управляющие системы и машины.– 2005. – №1.– С.38–54
- Андон Ф.И., Коваль Г.И., Коротун Т.М., Лаврищева Е.М. Суслов В.Ю, Основы инженерии качества программных систем, Киев: Академпериодика.– Второе изд., 2007. – 680 с
Отчетность
- Семестр 1: Зач