zhChinese    enEnglish
  ПМ-ПУ  » Образование  » Программы курсов » Современные методологии разработки программного обеспечения

Современные методологии разработки программного обеспечения

Общий курс

Составители: кандидат физ.-мат. наук, ст. преп. Кураленок И. Е.

Содержание дисциплины

1. Введение
История и основные этапы развития программирования. Классификация видов програм-мирования. Проблемы области и причины их возникновения. Подходы к постановке про-цесса разработки для различных сфера применения. Понятие качества кода и требования, предъявляемые к качеству. Документация и сопровождение программы.
2. Процедурное программирование и динамическая генерация кода
Основные понятия процедурного программирования: алгоритм, программа, подпрограм-ма, глобальные и локальные переменные. Этапы разработки программы. Наиболее попу-лярные языки в рамках процедурной модели. Математическое программирование как одна из задач эффективно решающаяся в рамках процедурной модели. Динамическая генерация кода. Преимущества и недостатки.
3. Объектно-ориентированное и компонентное программирование
Основные понятия объектно-ориентированного программирования: контракт, класс, объ-ект, интерфейс, инкапсуляция, наследие, полиморфизм. Связь объектно-ориентированной модели с процедурной. Этапы создания программы. Рефакторинги как инструмент преоб-разования ООД программы. Design patterns их положительные и отрицательные стороны. Overdesign. Диаграммы и UML как инструмент анализа ООД программы. Компонентное программирование и его основные отличия от ООП. Новые возможности компонентного программирования и современные механизмы реализации.
4. Логическое и функциональное программирование
Основные понятия функционального программирования: функция, функции высших по-рядков, карринг, операционная семантика, ленивые вычисления, монада, чистота. Система типов в современных функциональных языках. Примеры применения функционального программирования. Логическое программирование. Машина вывода. Описание фактов, предикатов. Примеры эффективного применения. Узкоспециализированные декларативные модели программирования на примере XML ориентированных языков.
5. Понятие процесса разработки ПО. Водопадная модель.
Цели и средства разработки ПО. Командная разработка, ее плюсы и минусы. Инструмен-ты командной разработки (контроль версий, учет запросов пользователей, утилиты планирования, основные инструменты анализа). Понятие процесса и его этапы в рамках Водопадной модели. Основные роли в ВМ. Человеко-часы. Основные области применения. Критика водопадной модели.
6. Экстремальное программирование (XP) и Scrum
Цели и принципы экстремального программирования. Роли в XP и протокол взаимодействия. Заказчик и особенности постановки задачи со стороны заказчика. Задачи разработчика. Тестирование, его роль, виды. Покрытие кода. Совещания, их цели, анализ результатов и рекомендации по проведению. Роль менеджера. Область применения XP. Scrum спринт. Основные отличия от XP. Scrum master его роль и задачи. Область применения Scrum. Практические сложности, возникающие при внедрении методологий "по книге".
7. Agile методологии и манифест
Основы анализа легковесных методологий и их общие принципы. Информационная мо-дель по Коберну и его классификация методологий (Clear). Agile манифест и его анализ. "Подгонка" методологии в условиях реальной работы. Другие методы организации про-цесса разработки (CMM, CMMI, RUP).
8. Заключение
Комплексный подход к разработке ПО. Практические примеры работы компаний зани-мающихся разработкой, анализ и основные этапы их деятельности. Open Source сообще-ства. Отличительные черты разработки программ с открытым кодом.

Литература

  1. Agile Software Development // Alistair Cockburn, Addison-Wesley, 2001.
  2. Agile Project Management with Scrum // Ken Schwaber, Microsoft Press, 2004.
  3. Extreme Programming Explained : Embrace Change // Kent Beck, Cynthia Andres, Addi-son-Wesley, 2004
  4. Функциональное программирование. // Филд А., Харрисон П., М.: Мир, 1993