C.Ю.Соловьев

Основы программной инженерии

для студентов высших учебных заведений,
обучающихся по специальности "Прикладная математика" и ее производных.

Цель дисциплины "Основы программной инженерии" состоит в ознакомлении слушателей
с современными инженерными принципами создания качественного программного обеспечения,
с процессами, методами и средствами поддержки жизненного цикла программных продуктов,
с основами экономики и менеджмента создания ИТ-продуктов, а также
c основами управления качеством программых продуктов.

Содержание курса

Тема 1. Введение в программную инженерию   show.pdf

История вычислительной техники. История программирования. История развития программной инженерии. Информационные технологии, ИТ-индустрия. Информатика. ¶ Программирование, программы, программное обеспечение (ПО). Основные понятия и принципы разработки ПО. Архитектура ПО. Структурная разработка.

Литература:   [Новиков 2007],    [Зеленко 2012],    [Гагарина 2008]

Тема 2. Разработка требований к программному обеспечению   show.pdf

Задача определения требований к ПО. Типы требований: бизнес-требования, пользовательские требования, функциональные требования. Три уровня требований. Управление требованиями. Разработка требований: выявление, анализ, документирование, утверждение. Методы выявления требований: интервью, семинар, фокус-группа, наблюдение, опросные листы, анализ системных интерфесов, анализ пользовательских интерфейсов, анализ документов. Заинтересованные лица. ¶ Шаблоны бизнес-требований. Шаблоны пользовательских требований; варианты использования, пользовательские истории; диаграмма вариантов использования. Шаблоны функциональных требований.

Литература:   [Вигерс 2014],    [Новиков 2007]

Тема 3. Основные понятия программной инженерии

Программные продукты, ИТ-проекты. Инженерия программного обеспечения. Профессиональные и этические требования. Кодекс этики и профессиональной практики программной инженерии. Стандарты программной инженерии. Microsoft Solutions Framework (MSF) -- методология разработки программного обеспечения корпорации Microsoft. Свод знаний по программной инженерии SWEBOK, стандарт ISO/IEC TR 19759:2015.

Литература:

Тема 4. Основные области знаний SWEBOK

Требования к ПО, спецификация требований, извлечение требований. Методы моделирования для анализа требований. Функциональные и нефункциональные требования. Прототипирование. Основные понятия методов формальной спецификации. Средства моделирования для разработки и анализа требований. ¶ Проектирование ПО. Конструирование ПО. Тестирование ПО. Сопровождение ПО.

Литература:

Тема 5. Организационные области знаний SWEBOK

Управление конфигурацией ПО. Управление проектами ПО. Процесс инженерии ПО. Методы и инструменты инженерии ПО. Качество ПО.

Литература:

Тема 6. Жизненный цикл программного продукта

История понятия. Стандарт ISO 12207: основные определения, процессы жизненного цикла. Модели и процессы жизненного цикла программного обеспечения. Модели оценки зрелости процессов, метрики процессов. Жизненный цикл информационной системы ¶ Модели жизненного цикла: каскадная модель, итеративная и инкрементальная модель (эволюционный подход) спиральная модель, V-образная модель, инкрементная (пошаговая) модель, модель быстрого прототипирования, модели жизненного цикла MSF, RUP и XP. Принципы и особенности RUP.

Литература:   [Фаулер, 2001]

Тема 7. Управление командой ИТ-проекта

Процессы проекта. Организация команды и принятие решений. Распределение ролей и ответственности. Отслеживание состояния процесса. Решение проблем в команде. Планирование работ. ¶ Ролевая модель команды. Модели организации команд: административная модель, модель хаоса, модель открытой архитектуры, модель проектной группы MSF. ¶ Модель проектной группы MSF: основные принципы построения команды, ролевые группы и роли, рекомендации по возможному объединению ролей, координация работы с внешними группами, формирование команды.

Литература:

Тема 8. Управление рисками как составная часть жизненного цикла ИТ-проекта

Основные сведения о рисках. Составляющие управления рисками. Документирование рисков проекта. Планирование управления рисками. Процесс управления рисками. Управление рисками в MSF for Agile Software Development.

Литература:   [Вигерс, 2014]

Тема 9. Аттестация программных продуктов

Планирование аттестационного тестирования. Основы тестирования: проектирование и генерации тестов, процесс тестирования. Тестирование методом "черного ящика" и методом "белого ящика". Тестирование модулей, интеграция модулей и проверка правильности интеграции. Тестирование систем, объектно-ориентированное тестирование, инспектирование. Средства тестирования.

Литература:

Тема 10. Развитие программного обеспечения

Сопровождение ПО. Свойства сопровождаемого ПО. Реинжиниринг ПО. Наследуемые системы; Повторное использование и переносимость ПО.

Литература:

Тема 11. Документирование программного обеспечения

Стандарты документирования. Виды документации. Организация документирования. Управление документированием этапов жизненного цикла. Документация управления качеством программного обеспечения. Документирование этапов жизненного цикла.

Инструментальные средства документирования. Технология единого источника. Рекомендации по использованию стилей, оформлению рисунков.

Литература:   [Панюкова 2007],    [Глаголев 2008],    [Кагарлицкий 2012],    [Уолш 2007].

Основная литература
  1. Антипов В.А., Бубнов А.А., Пылькин А.Н., Столчнев В.К. Введение в программную инженерию. - М.: КУРС: ИНФРА-М, 2018.
  2. Брауде Э. Технология разработки программного обеспечения. - Спб.: Питер. 2004.
  3. Вигерс К., Битти Д. Разработка требований к программному обеспечению. - М.: Изд-во "Русская редакция"; СПб.: БХВ-Петербург, 2014.
  4. Гецци К., Джазайери М., Мандриоли Д. Основы инженерии программного обеспечения. - СПб.: БХВ-Петербург, 2005.
  5. Зеленко Л.С. Программная инженерия. - Самара, 2012.
  6. Зубкова Т.М. Технология разработки программного обеспечения. - СПб.: Лань, 2019.
  7. Леффингуэлл Д., Уидриг Д. Принципы работы с требованиями к программному обеспечению. Унифицированный подход. - М.: Вильямс. 2002.
  8. Липаев В.В. Программная инженерия. Методологические основы. - М.: ТЕИС, 2006.
  9. Карпенко С.Н. Введение в программную инженерию: курс лекций. - Н.Новгород: изд-во ННГУ, 2007.
  10. Орлов С.А., Цилькер Б.Я. Технологии разработки программного обеспечения. Стандарт третьего поколения. - СПб.: Питер, 2012.
  11. Петрухин В.А., Лаврищева Е.М. Meтоды и средста инженерии программного обеспечения. - М.: НОУ ИНТУИТ, 2016
  12. Терехов А.Н. Технология программирования. - М.: Бином, 2006.
  13. Чекмарев А.В. Управление ИТ-Проектами и процессами. - М.: Юрайт, 2018.
Классическая литература
  1. Брукс Ф. Мифический человеко-месяц или как создаются программные системы. - СПб. : Символ-плюс, 1999.
  2. Вирт Н. Систематическое программирование. Введение. - М.: Мир, 1977.
  3. Соммервиль И. Инженерия программного обеспечения. - М., СПб., Киев: ИД Вильямс, 2002.
  4. Фаулер М., Скотт К. UML Основы. - СПб.: Символ-Плюс, 2002.
  5. Дал У., Дейкстра Э., Хоор К. Структурное программирование. - М.: Мир, 1975.
  6. Дейкстра Э. Дисциплина программирования. - М.: Мир, 1978.
  7. Жоголев Е.А. Технологии программирования. - М.: Научный мир, 2004.
  8. Йодан Э. Структурное проектирование и конструирование программ. - М.: Мир, 1979.
  9. Липаев В.В. Качество программного обеспечения. - М.: Финансы и статистика, 1983.
Дополнительная литература
  1. Боэм Б.У. Инженерное проектирование программного обеспечения. - М.: Радио и связь, 1985.
  2. Гагарина Л.Г., Кокорева Е.В., Виснадул Б.Д. Технология разработки программного обеспечения. - М.: ИД ФОРУМ:ИНФРА-М, 2008.
  3. Глаголев В.А. Разработка технической документации. Руководство для технических писателей и локализаторов ПО. - СПб.: Питер, 2008.
  4. Зуев В.А. Программная инженерия. Лабораторный практикум. - Новочеркасск: ЛиК, 2013.
  5. Йодан Э. Путь камикадзе. - М.: Лори, 2003.
  6. Кагарлицкий Ю.В. Разработка документации пользователя программного продукта. - М.: ООО "Философт Сервис", 2012.
  7. Константин Л.Л. Человеческий фактор в программировании. - СПб.: Символ-Плюс, 2004.
  8. Липаев В.В. Документирование сложных программных средств. - М.: СИНТЕГ. 2005.
  9. Майерс Г. Искусство тестирования программ. - М.: Финансы и статистика, 1982.
  10. Новиков Ф.А. Технологические подходы к разработке программного обеспечения. - СПб.: ИТМО, 2007.
  11. Панюкова Т.А. Документирование программного обеспечения. В помощь техническому писателю. -М.: Либроком, 2012.
  12. Салливан Эд. Время - деньги. Создание команды разработчиков программного обеспечения. - М.: Русская редакция, 2002.
  13. Тэллес М., Хсих Ю. Наука отладки. - М.: Кудиц-образ, 2003.
  14. Уолш Д. Руководство по созданию документации для математического обеспечения. - М.: Наука, 1975.
  15. Фатрелл Р.Т., Шафер Д.Ф., Шафер Л.И. Управление программными проектами: достижение оптимального качества при минимальных затратах. - М.: Вильямс. 2003.
  16. Фаулер М. Новые методологии программирования. 2001. - http://www.maxkir.com/sd/newmethRUS.html.
  17. Финогенов К.Г. Win32. Основы программирования. - М.: ДИАЛОГ-МИФИ, 2006.
  18. Якобсон А., Буч Г., Рамбо Дж. Унифицированный процесс разработки программного обеспечения. - СПб.: Питер, 2002.
Стандарты
  1. ГОСТ 19781-90 Обеспечение систем обработки иформации программное. Термины и определения. - М.: Стандартинформ, 2010.
  2. ГОСТ Р ИСО/МЭК 12207-99. Информационная технология. Процессы жизненного цикла программных средств. 2000-07-01. - М.: ИПК Издательство стандартов, 2000.
  3. IEEE STD 610.12-1990, IEEE Standard Glossary of Software Engineering Terminology, IEEE Computer Society, 1990.
ЕСПД: Единая система программной документации
  1. Единая система программной документации /Ред. Л.В.Афанасенко. - М.: Издательство стандартов, 2001.
  2. ГОСТ 19.001-77 Общие положения
  3. ГОСТ 19.002-80 Схемы алгоритмов и программ. Правила выполнения
  4. ГОСТ 19.003-80 Схемы алгоритмов и программ. Обозначения условные графические
  5. ГОСТ 19.004-80 Термины и определения
  6. ГОСТ 19.005-85 Р-схемы алгоритмов и программ. Обозначения условные графические и правила выполнения
  7. ГОСТ 19.101-77 Виды программ и программных документов
  8. ГОСТ 19.102-77 Стадии разработки
  9. ГОСТ 19.103-77 Обозначение программ и программных документов
  10. ГОСТ 19.104-78 Основные надписи
  11. ГОСТ 19 105-78 Общие требования к программным документам
  12. ГОСТ 19.106-78 Требования к программным документам, выполненным печатным способом
  13. ГОСТ 19.201-78 Техническое задание. Требования к содержанию и оформлению
  14. ГОСТ 19.202-78 Спецификация. Требования к содержанию и оформлению
  15. ГОСТ 19.301-79 Программа и методика испытаний. Требования к содержанию и оформлению
  16. ГОСТ 19.401-78 Текст программы. Требования к содержанию и оформлению
  17. ГОСТ 19.402-78 Описание программы. Требования к содержанию и оформлению
  18. ГОСТ 19.403-79 Ведомость держателей подлинников
  19. ГОСТ 19.404-79 Пояснительная записка. Требования к содержанию и оформлению
  20. ГОСТ 19.501-78 Формуляр. Требования к содержанию и оформлению
  21. ГОСТ 19.502-78 Описание применения. Требования к содержанию и оформлению
  22. ГОСТ 19.503-79 Руководство системного программиста. Требования к содержанию и оформлению
  23. ГОСТ 19.504-79 Руководство программиста. Требования к содержанию и оформлению
  24. ГОСТ 19.505-79 Руководство оператора. Требования к содержанию и оформлению
  25. ГОСТ 19.506-79 Описание языка. Требования к содержанию и оформлению
  26. ГОСТ 19.507-79 Ведомость эксплуатационных документов
  27. ГОСТ 19.508-79 Руководство по техническому обслуживанию. Требования к содержанию и оформлению
  28. ГОСТ 19.601-78 Общие правила дублирования, учета и хранения
  29. ГОСТ 19.602-78 Правила дублирования, учета и хранения программных документов, выполненных печатным способом
  30. ГОСТ 19.603-78 Общие правила внесения изменений
  31. ГОСТ 19.604-78 Правила внесения изменений в программные документы, выполненные печатным способом
  32. ГОСТ 19.701-90 Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения
Лабораторные работы

No.1.  Методологии разработки программного обеспечения MSF и RUP

No.2.  Разработка технического задания на модельную программную систему

No.3.  Описание и анализ модельной проблемной области

No.4.  Построение структурной схемы модельной программной системы

No.5.  Разработка спецификаций системных требований к модельному программному продукту

No.6.  Проектирование модельной программной системы

No.7.  Разработка архитектуры модельной программной системы

No.8.  Разработка алгоритмов обработки данных модельной программной системы

No.9.  Тестирование и отладка алгоритмов обработки данных модельной программной системы

No.10.  Вычисление метрик для количественной оценки программного кода

No.11.  Оформление документации для модельной программной системы

No.12.  Оценка стоимости разработки программного обеспечения модельной задачи


 
Вопросы?