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

Дополнительные главы программной инженерии

для студентов магистратуры, пропустивших (в свое время) курс программной инженерии

  Вариативная часть:   Литература  ::  Табло оценок/посещаемости  ::  Лабораторные

Спец.курс читается по понедельникам в аудитории 658 с 16:20 до 18:00
Очередное занятие состоится 17 апреля 2023 г.

Оценки
Хайбулаев отлично          Князев отлично
Чэнь Лун отлично          Абдул Гани Надим отлично
Самарова отлично          Чжоу Яньчэнь отлично
Скрябин -----          Федосов -----
Цель дисциплины состоит в ознакомлении слушателей
с современными подходами и технологиями создания цифровых продуктов,
с процессами, методами и средствами поддержки жизненного цикла цифровых продуктов,
с основами экономики и менеджмента создания цифровых продуктов, а также
c основами управления качеством цифровых продуктов.

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

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

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

Жизненный цикл программного продукта Стандарт ISO 12207: основные определения, процессы жизненного цикла. Модели и процессы жизненного цикла программного обеспечения. Модели оценки зрелости процессов, метрики процессов. Жизненный цикл информационной системы

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

Литература:   Кулямин В.В. Основы программной инженении

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

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

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

Шаблоны бизнес-требований. Шаблоны пользовательских требований; варианты использования, пользовательские истории; диаграмма вариантов использования. Шаблоны функциональных требований.

Литература:   Кулямин В.В. Основы программной инженении

[Вигерс 2014],    [Новиков 2007],    [Орлов 2012],    [Петрухин 2016]

Тема 3. Спецификации требований к ПО   se03.pdf

Спецификация как структурированный набор требований к ПО и его внешним интерфейсам. Типовая спецификация: введение, общее описание, функции ПО, требования к данным, требования к внешним интерфейсам, атрибуты качества, требования по интернационализации и локализации. Альтернативные варианты спецификаций. Стандарты ГОСТ 34, IEEE 830, ISO/IEC/IEEE 29148.

Визуальные модели требований. Диаграммы переходов состояний. Таблицы и деревья решений. Блок-схемы для моделирования процессов. Диаграммы потоков данных (DFD), иерархия DFD. Диаграммы Swim Lane. Диаграммы "сущность - связь".

Литература:   Кулямин В.В. Основы программной инженении

[Вигерс 2014],    [Орлов 2012]

Тема 4.   Проектирование ПО   se04.pdf

Виды проектирования: архитектурное, детальное и интерфейсное. Архитектурное проектирование структурирование ПО, моделирование управления, декомпозиция подсистем.

Модели структурирования ПО. Модель "локальное приложение": архитектура экспертных систем, архитектура 1С: Предприятие 7.7 (монопольный режим), BiPrint-клиент. Программные и аппаратные серверы, программы-клиенты. Модель файл-сервер, функции файлового сервера. Модель клиент-сервер. Трехуровневая модель: 1C: Предприятие 8. Многоуровневая (многослойная) модель: слой представления, сервисный слой, слой бизнес-логики, слой доступа к данным.

Модели управления. Модели централизованного управления: модель вызова возврата, модель диспетчера. Модели событийного управления: модель передачи сообщений, модель управления прерываниями.

Модели декомпозиции. Модель потока данных, функциональные модули, структурное проектирование потоков данных. Объектно-ориентированная модель, объекты, классы, диаграммы классов, пример диаграммы классов.

Литература:   Кулямин В.В. Основы программной инженении

[Орлов 2012],    [Леоненков 2007],    [Ларман 2013],    [Соммервилл 2002].

Тема 5.  Детальное проектирование ПО   se05.pdf

Этапы детального проектирования. Детальное проектирование для структурной модели, структурная схема ПО.

Детальное проектирование для объектно-ориентированной модели. Виды паттернов, паттерны проектирования класса GoF. Множество порождающих паттернов проектирования, паттерн "Прототип". Множество структурных паттернов проектирования, паттерн "Фасад". Множество поведенческих паттернов проектирования, паттерн "Шаблонный метод". Дисциплина проектирования с помощью паттернов. Инварианты классов, пред- и постусловия методов.

Литература:   Кулямин В.В. Основы программной инженении

[Гамма 2001],    [Фримен 2018],    [Новиков 2007].

Дополнение 1   (А.А. Марченко, М.М.Абрамский)

Дополнение 2   (А.Дмитриев)

Тема 6.   Проектирование пользовательских интерфейсов   se06.pdf

Определение пользовательского интерфейса. Характеристики интерфейсов: дружественность, предсказуемость, простота, привлекательность, целостность.

Виды пользовательских интерфейсов: (а) командные и визуальные интерфейсы, (б) интерфейсы мастеров и классические интерфейсы, (в) символьные и графические интерфейсы: WIMP, GUI, SILK. Основные понятия GUI.

Технологии проектирования пользовательских интерфейсов. Общая схема проектирования. Макеты и конструкторы пользовательских интерфейсов. Карты экранов. UX/UI-дизайн: вайрфреймы, мокапы. Соотношение UX-дизайна и UI-дизайна.

Литература:   Кулямин В.В. Основы программной инженении

[Соммервилл 2002],    [Сергеев 2011],    [Бирман 2017],    [Купер 2018].

Дополнение 1   (В.В.Малышенко)

Дополнение 2   (М.В.Семин)

Дополнение 3   (М.Гулевич)

Тема 7.  Кодирование   se07.pdf

Этап кодирования ПО, место этапа в общем цикле разработки ПО. Технологии коллективной разработки ПО. Интегрированные среды разработки. IDE-проекты, управление IDE-проектами. Редакторы исходного кода, правила кодирования. Стандарты именования. Трансляторы, компрессоры, валидаторы; структура объектных модулей. Библиотеки объектных и исходных модулей. Компоновщики. Символьные отладчики, инструментарий автоматизированного тестирования. Профилировщики программ. Системы управления версиями.

Литература:   Кулямин В.В. Основы программной инженении

[Рейнвотер 2019],    [Мартин 2019],    [Виниченко 2005],

[Босуэлл 2012],    [Орлов 2012],    [Плаксин 2015].

Дополнение 1   (А.А.Романенко)

Тема 8.   Тестирование и отладка   se08.pdf

Соотношение между тестированием и отладкой. Подходы к тестированию. Ошибки, дефекты, отказы. Классификация дефектов. Источники дефектов и отказов. Реальные ограничения тестирования. Универсальные свойства иэмпирические условия тестирования. Виды, цели и уровни тестирования.

Технологии тестирования. Тесты, наборы тестов, понятие полноты набора тестов. Группа тестирования. План тестирования. Тестовые сценарии. Отчеты о фефектах. Системы отслеживания дефектов. Отчеты о тестировании.

Литература:   Кулямин В.В. Основы программной инженении

[Майерс 1982],    [Плаксин 2015],    [Калбертсон 2002],

[Кулаков 2018].

Тема 9.   Эксплуатация, сопровождение и документирование   se09.pdf

Соотношение между разработкой и эксплуатацией. Содержание этапа эксплуатации. Технология сопровождения ПО.

Документирование ПО. Комплекты документации, виды документации. Стандарты документирования. Шаблоны документов. Технология единого источника. Инструментальные средства для автоматизации документирования. Функции технического писателя, организация подразделения документирования. Правила написания технической документации. Рекомендации по использованию стилей, оформлению рисунков.

Литература:   Кулямин В.В. Основы программной инженении

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

Тема 10.   Технологии программной инженерии   se10.pdf

CASE-технология. Классификация CASE-средств. Сравнительные характеристики CASE-технологий.

Концепция гибкой разработки Agile. Принципы Agile. Обобщенный процесс разработки ПО гибкими средствами. Семейство методологий Agile. Экстремальное программирование. Принципы и технологии экстремального программирования.

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

Литература:   Кулямин В.В. Основы программной инженении

[Похилько 2014],    [Фунтов 2014],    [Бек 2017],    [Тернер 2006]

Основная литература
  1. Антипов В.А., Бубнов А.А., Пылькин А.Н., Столчнев В.К. Введение в программную инженерию. - М.: КУРС: ИНФРА-М, 2018.
  2. Брауде Э. Технология разработки программного обеспечения. - Спб.: Питер. 2004.
  3. Вигерс К., Битти Д. Разработка требований к программному обеспечению. - М.: Изд-во "Русская редакция"; СПб.: БХВ-Петербург, 2014.
  4. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. - СПб.: Питер, 2001.
  5. Гецци К., Джазайери М., Мандриоли Д. Основы инженерии программного обеспечения. - СПб.: БХВ-Петербург, 2005.
  6. Зеленко Л.С. Программная инженерия. - Самара, 2012.
  7. Зубкова Т.М. Технология разработки программного обеспечения. - СПб.: Лань, 2019.
  8. Ларман К. Применение UML 2.0 и шаблонов проектирования. - М.: ИД Вильямс, 2013.
  9. Леффингуэлл Д., Уидриг Д. Принципы работы с требованиями к программному обеспечению. Унифицированный подход. - М.: Вильямс. 2002.
  10. Липаев В.В. Программная инженерия. Методологические основы. - М.: ТЕИС, 2006.
  11. Карпенко С.Н. Введение в программную инженерию: курс лекций. - Н.Новгород: изд-во ННГУ, 2007.
  12. Орлов С.А., Цилькер Б.Я. Технологии разработки программного обеспечения. Стандарт третьего поколения. - СПб.: Питер, 2012.
  13. Петрухин В.А., Лаврищева Е.М. Meтоды и средста инженерии программного обеспечения. - М.: НОУ ИНТУИТ, 2016
  14. Терехов А.Н. Технология программирования. - М.: Бином, 2006.
  15. Фримен Э., Робсон Э., Сьерра К., Бейтс Б. Паттерны проектирования. - СПб.: Питер, 2018.
  16. Чекмарев А.В. Управление ИТ-Проектами и процессами. - М.: Юрайт, 2018.
Классическая литература
  1. Брукс Ф. Мифический человеко-месяц или как создаются программные системы. - СПб. : Символ-плюс, 1999.
  2. Вирт Н. Систематическое программирование. Введение. - М.: Мир, 1977.
  3. Соммервилл И. Инженерия программного обеспечения. - М., СПб., Киев: ИД Вильямс, 2002.
  4. Фаулер М., Скотт К. UML Основы. - СПб.: Символ-Плюс, 2002.
  5. Дал У., Дейкстра Э., Хоор К. Структурное программирование. - М.: Мир, 1975.
  6. Дейкстра Э. Дисциплина программирования. - М.: Мир, 1978.
  7. Жоголев Е.А. Технологии программирования. - М.: Научный мир, 2004.
  8. Йодан Э. Структурное проектирование и конструирование программ. - М.: Мир, 1979.
  9. Липаев В.В. Качество программного обеспечения. - М.: Финансы и статистика, 1983.
  10. Фаулер М. Рефакторинг. Улучшение существующего кода. - СПб.: Символ-Плюс, 2003.
Дополнительная литература
  1. Бек К. Экстремальное программирование. - СПб.: Питер. 2017.
  2. Бирман И.Б. Пользовательский интерфейс. - М.: Изд-во Бюро Горбунова, 2017.
  3. Босуэлл Д, Тревор Ф. Читаемый код или Программирование как искусство. - Спб.: Питер, 2012.
  4. Боэм Б.У. Инженерное проектирование программного обеспечения. - М.: Радио и связь, 1985.
  5. Винниченко И.В. Автоматизация процессов тестирования. - СПб.: Питер, 2005.
  6. Гагарина Л.Г., Кокорева Е.В., Виснадул Б.Д. Технология разработки программного обеспечения. - М.: ИД ФОРУМ: ИНФРА-М, 2008.
  7. Глаголев В.А. Разработка технической документации. Руководство для технических писателей и локализаторов ПО. - СПб.: Питер, 2008.
  8. Зуев В.А. Программная инженерия. Лабораторный практикум. - Новочеркасск: ЛиК, 2013.
  9. Йодан Э. Путь камикадзе. - М.: Лори, 2003.
  10. Кагарлицкий Ю.В. Разработка документации пользователя программного продукта. - М.: ООО "Философт Сервис", 2012.
  11. Калбертсон Р., Браун К., Кобб Г. Быстрое тестирование. - М.: ИД Вильямс, 2002.
  12. Константин Л.Л. Человеческий фактор в программировании. - СПб.: Символ-Плюс, 2004.
  13. Кулаков К.А., Димитров В.М. Основы тестирования программного обеспечения. - Петрозаводск: Изд-во ПетрГУ, 2018.
  14. Купер А., Рейман Р., Кронин Д., Носсел К. Интерфейс. Основы проектирования взаимодействия. - СПб.: Питер, 2018.
  15. Леоненков А.В. Самоучитель UML 2. - СПб.: БХВ-Петербург, 2007.
  16. Липаев В.В. Документирование сложных программных средств. - М.: СИНТЕГ. 2005.
  17. Майерс Г. Искусство тестирования программ. - М.: Финансы и статистика, 1982.
  18. Мартин Р. Чистый код: создание, анализ и рефакторинг. - СПб.: Питер, 2019.
  19. Новиков Ф.А. Технологические подходы к разработке программного обеспечения. - СПб.: ИТМО, 2007.
  20. Панюкова Т.А. Документирование программного обеспечения. В помощь техническому писателю. -М.: Либроком, 2012.
  21. Плаксин М.А. Тестирование и отладка программ для профессионалов будущих и настоящих. - М.: БИНОМ, Лаборатория знаний, 2015.
  22. Похилько А.Ф., Горбачев, Рябов С.В. Моделирование процессов и данных с использованием CASE-технологий. - Ульяновск: УлГТУ, 2014.
  23. Рейнвотер Д.Х. Как пасти котов. Наставление для программистов, руководящих другими программистами. - СПб.: Питер, 2019.
  24. Салливан Эд. Время - деньги. Создание команды разработчиков программного обеспечения. - М.: Русская редакция, 2002.
  25. Сергеев С.Ф. Падерно П.И., Назаренко Н.А. Введение в проектирование интеллектуальных интерфейсов. - СПб.: ИТМО, 2011.
  26. Столяров А.В. Оформление программного кода. - М.: МАКС Пресс, 2019.
  27. Тернер Майкл С.В. Основы Microsoft Solution Framework. - СПб.: Питер. 2006.
  28. Тэллес М., Хсих Ю. Наука отладки. - М.: Кудиц-образ, 2003.
  29. Уолш Д. Руководство по созданию документации для математического обеспечения. - М.: Наука, 1975.
  30. Фатрелл Р.Т., Шафер Д.Ф., Шафер Л.И. Управление программными проектами: достижение оптимального качества при минимальных затратах. - М.: Вильямс. 2003.
  31. Фаулер М. Новые методологии программирования. 2001. - http://www.maxkir.com/sd/newmethRUS.html.
  32. Фаулер М. Рефакторинг кода на JavaScript. - M.: Диалектика, 2019.
  33. Финогенов К.Г. Win32. Основы программирования. - М.: ДИАЛОГ-МИФИ, 2006.
  34. Якобсон А., Буч Г., Рамбо Дж. Унифицированный процесс разработки программного обеспечения. - СПб.: Питер, 2002.
  35. Фунтов В.Н. Agile. Процессы, проекты, компании. - СПб.: Питер. 2020.
  36. Холстед М.Х. Начала науки о программах. - М.: Финансы и статистика, 1981.
Стандарты
  1. ГОСТ 34.003-90 Автоматизированные системы. Термины и определения
  2. ГОСТ 34.603-92 Виды испытаний автоматизированных систем
  3. ГОСТ 34.602-89 Техническое задание на создание автоматизированной системы
  4. ГОСТ 34.201-89 Виды, комплектность и обозначение документов при создании автоматизированных систем
  5. ГОСТ 34.601-90 Автоматизированные системы. Стадии создания
  6. РД 50-34.698-90 Автоматизированные системы требования к содержанию документов
  7. ISO/IEC/IEEE 29148:2018 Программная и системная инженерия. Процессы жизненного цикла. Разработка требований
  8. ГОСТ 19781-90 Обеспечение систем обработки иформации программное. Термины и определения. - М.: Стандартинформ, 2010.
  9. ГОСТ Р ИСО/МЭК 12207-99. Информационная технология. Процессы жизненного цикла программных средств. 2000-07-01. - М.: ИПК Издательство стандартов, 2000.
  10. 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 Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения
Вопросы?