Ru En

Программная инженерия



Лекции (Архив, 2013)

Тема
1 Лекция 1. Введение. Определение программной инженерии. Хорошее ПО.
2 Лекция 2. Жизненный цикл разработки ПО.
3 Лекция 3. Модели жизненного цикла разработки ПО.
4 Лекция 4. Формализм, введение в этапы жизненного цикла ПО.
5 Лекция 5. Этапы жизненного цикла ПО.
6 Лекция 6. UML и унифицированный процесс (Unified Process). Сущности, отношения, диаграммы. Итерации, фазы и структура UP.
7 Лекция 7. Работа с требованиями. Функциональные и нефункциональные требования, определение требований, интервью.
8 Лекция 8. Моделирования прецедентов: UML-диаграммы прецедентов (вариантов использования); идентификация актеров и прецедентов; детализация прецедентов.
9

Лекция 9. Анализ и проектирование архитектуры ПО. Влияние нефункциональных требований на архитектуру ПО; общие методы системной организации ПО: модель репозитория, клиент-серверная модель, многослойная модель; методы модульной декомпозиции; принципы объектно-ориентированного проектирования (SOLID); принцип DRY. 

Дополнительные материалы: архитектура и проектирование ПО.

10 Лекция 10. Классы Анализа. Нотация классов и объектов UML. Анализ прецедентов и понятие "Класса анализа". Признаки хорошего класса анализа. Подходы к созданию и выявлению классов анализа.
11 Лекция 11. Реализация прецедентов. Диаграмма последовательностей. Диаграмма деятельности. Метрики исходного кода: размерно-ориентированные метрики, метрики сложности.

Доклады

Тема Докладчик
1

Методология экстремального программирования. Scrum.

Дополнительные материалы: гибкие методологии разработки и управление командой.

Кожевина Елена Игоревна
2

Системы управления исходным кодом. Централизованные и децентрализованные репозитории кода. Git.

Дополнительные материалы: системы контроля версий.

Беседин Константин Юрьевич
3

Тестирование исходного кода. Методики тестирования. Разработка через тестирование (Test-driven development).

Дополнительные материалы: тестирование.

Радченко Всеволод Игоревич
4 Системы управления командной разработкой ПО. CASE-системы.

Кутырева Майя Евгеньевна

Дополнительные материалы

 

Программная инженерия

  • Ivan Marsic. Software Engineering - textbook. Учебник по программной инженерии от профессора Ратгерского университета Ивана Марсика. В книге рассматриваются темы объектно-ориентированного проектирования, метрик ПО, разработки программных компонентов, веб-сервисов и др.
  • IBM Developer Works: Пять уровней зрелости требований. 70–85% от общего числа всех исправлений в ходе разработки ПО связанно именно с ошибками, допущенными на этапе сбора, анализа и документирования требований. В статье рассказывается о модели уровней зрелости для управления требованиями и даются рекомендации по постепенному улучшению процесса управления требованиями к ПО.
  • SWEBOK на русском. Software Engineering Body of Knowledge- документ, разрабатывающийся под руководством Institute of Electrical and Electronics Engineers (IEEE), и объединяющий знания по инженерии программного обеспечения, включая такие аспекты как определение требований, проектирование, конструирование, тестирование, сопровождение ПО и др.
  • University of California, Berkeley: Software Engineering for Software as a Service. Курс в рамках проекта Сoursera, посвященный разработке программных систем в соответствии с концепцией SaaS (программное обеспечение как сервис). К сожалению, курс закрыт, но:
  • The Rise And Fall Of Waterfall. Оказывается "водопадная модель разработки" изначально задумывалась итерационной. Но об этом все забыли.

Гибкие методологии разработки и управление командой

  • Илья Бирман. Псевдокемп: Приоткрытые вопросы. Илья Бирман рассказывает нам о том, что такое открытые, приоткрытые и закрытые вопросы, а также как их задавать заказчику при выявлении требований так, чтобы он не решил, что вы издеваетесь.
  • Хэнриг Книберг. Scrum и XP: заметки с передовой. Короткая (всего 90 страниц) но очень емкая и понятная книга, рассказывающая о внедрении методологий экстремального программирования на практике.
  • Борис Вольфсон. Гибкие методологии разработки. В книге рассматриваются методы гибкой разработки и методология Scrum. Кроме теории в книги содержится множество конкретных приемов и лучших методов, которые можно применять на практике. Рассматриваются такие вопросы как анализ требований; практики управления командой в Scrum; контроль и обеспечение качества ПО.

  • Мы сделаем этот велосипед за месяц. Краткий экскурс в планирование работ для управления группой разработчиков.
  • Чеклист вопросов к проекту: старт, реализация, финал. Держим руку на пульсе проекта.

Архитектура и проектирование ПО

Системы контроля версий

  • Learn Git Branching. Интерактивный учебный курс по механизмам ветвления в рамках системы управления версиями Git.
  • Думай как Git, руководство по Git. Перевод на русский язык руководства "Think Like a Git", где простыми словами объясняются концепции управления версиями посредством Git.
  • Git Extensions. Удобный клиент системы контроля версий GIT для Windows. Отличается удобным пользовательским интерфейсом, интеграцией с Visual Studio и другими приятными особенностями.
  • Pro Git (на русском языке) - обширная обучающая книга о системе контроля версий Git от Скотта Шакона — активного участника разработки проектов Git и GitHub. Полностью переведена на русский язык. Также, доступна в онлайн-версии, и в формате ebup.

Тестирование

  • Роберт Мартин (aka Uncle Bob). TDD: The Bowling Game Kata (Ката - это формальные упражнения в боевых искусствах, имитирующие бой с одним или несколькими противниками - wikipeda). Роберт Мартин по шагам описывает процесс «разработки через тестирование» (test-driven development) для решения одной задачи – подсчет очков при игре в боулинг. В презентации очень наглядно представлен весь процесс создания тестов и разработки кода, начиная с пустого проекта и заканчивая готовой программой. 

  • Модульное тестирование и непрерывная интеграция при помощи Jenkins для C++ проектов. Очень подробный тьюториал об использовании системы Jenkins для подготовки и прогона модульного тестирования.

  • Как начать писать тесты за 10 шагов по 10 минут. Тьюториал о том, как побороть себя и начать разрабатывать в соответствии с методологией Test-Driven Development.

  • Быстрый старт с Google Test. Google Test — это фреймворк от Google для юнит-тестирования кода на С++. В статье приводятся первые шаги по установке, настройке и созданию первого проекта с поддержкой Google Test в среде Visual Studio.

 

Архив

2011