Введение в Agile Development

Кирилл Корняков
Сентябрь 2019

Содержание

Немного истории

Кто были первыми профессиональными программистами, и где они работали?

Кризис программирования и рождение Программной инженерии

Каскадная модель

Стоимость внесения изменений

Цель настоящего курса

Продолжение кризиса

Ряд проблем был снят, но кризис программирования продолжался...

Продолжение кризиса

Waterfall vs Agile

Технологические способы решения

Методология разработки

Методология программирования — совокупность методов, применяемых на различных стадиях жизненного цикла программного обеспечения и имеющих общий философский подход.

Каждая методология характеризуется своим:

Содержание методологии

Охват методологии

Как подобрать методологию?

Проекты отличаются по масштабам, бюджету, срокам, сложности и критичности.

Нет методологии, подходящей сразу для всех проектов.

Разнообразие методологий

"Не привязывайся к одному оружию или стилю"

Миямото Мусаси, самурай, XVII век

"Тот, кто хорошо владеет молотком, везде склонен видеть гвозди"

Абрахам Маслоу, психолог, XX век

Эффективность методологии

Эффективность общения

Сколько нужно людей?

С чем справится команда?

Ниша Agile

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

Кент Бек, Экстремальное программирование

Scrum

Agile Development

Центральная идея

Фокус на адаптируемости вместо предсказуемости

  • Небольшие и частые релизы
  • Непрерывное улучшение
  • Готовность к изменениям
  • Самоорганизующиеся команды

Современное состояние

Agile Methodologies

Agile Methodology Most Closely Followed

Содержание

Agile Manifesto (2001)

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

  • Individuals and interactions
  • Working software 
  • Customer collaboration 
  • Responding to change 

over

  • Processes and tools
  • Comprehensive documentation
  • Contract negotiation
  • Following a plan

That is, while there is value in the items on the right,
we value the items on the left more.

Project Management Triangle

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

Scope

Twelve Principles of Agile Software

Twelve Principles of Agile Software

Основные черты: Итеративный процесс

Основные черты: Команды разработчиков

Основные черты: Отношение к документам

Once you realize that documentation should be laughed at, peed upon, put on fire, and just ridiculed in general, THEN, and only then, have you reached the level where you can safely read it and try to use it to actually implement a driver.

Torvalds, Linus (2001-01-12). Re: ide.2.4.1-p3.01112001.patch. Retrieved on 2012-06-22.

7 properties of highly successful projects from Crystal Clear

  1. Frequent delivery
  2. Reflective improvement
  3. Close communication
  4. Personal safety
  5. Focus
  6. Easy access to expert users
  7. A good technical environment

Препятствия при внедрении гибких методик

Резюме: сравнение характерных черт

Методики с четким планированием Гибкие методики
  • Требования фиксированы
  • Типовые проекты
  • Крупные проекты
  • Большое количество разработчиков
  • Высокие риски
  • Частая смена требований
  • Уникальные продукты
  • Небольшие и средние проекты
  • Небольшое число разработчиков
  • Средние риски

Ключевые моменты

Контрольные вопросы

  1. Понятия содержания и охвата методологии
  2. Приведите различные закономерности, объединяющие размер команды, методологии и сложность решаемой проблемы
  3. Какие факторы повлияли на содержание первых методологий разработки
  4. Достоинства и недостатки каскадной модели
  5. Определение методологии программирования
  6. Определение ГТР (на примере XP)
  7. Манифест ГТР
  8. Приведите 3-4 принципа ГТР
  9. Основные черты ГТР
  10. Факторы, противодействующие внедрению ГТР

Ссылки

  1. http://alistair.cockburn.us/Methodology+per+project
  2. http://www.crisp.se/henrik.kniberg/Kanban-vs-Scrum.pdf
  3. http://en.wikipedia.org/wiki/Software_development_process

Спасибо за внимание!

Вопросы?

Тест Джоэла

  1. Пользуетесь ли вы системой контроля версий?
  2. Можете ли вы собрать продукт за один шаг?
  3. Выполняете ли вы ежедневные билды?
  4. Используете ли вы базу данных ошибок?
  5. Исправляете ли вы ошибки перед написанием нового кода?
  6. Есть ли у вас актуальный план работ?
  7. Есть ли у вас спецификация?
  8. Предоставлены ли вашим программистам спокойные условия для работы?
  9. Используете ли вы новейшие и лучшие инструменты?
  10. Есть ли у вас тестеры?
  11. Пишут ли кандидаты на работу код во время собеседования?
  12. Проводите ли вы коридорное тестирование удобства использования программ?

Книги

  1. Стив Макконнелл "Совершенный код"
  2. Роберт Мартин Гибкая разработка ПО
  3. Мифический человекомесяц http://www.ozon.ru/context/detail/id/83760/
  4. Правила разработки ПО http://www.ozon.ru/context/detail/id/3163596/
  5. Человеческий фактор http://www.ozon.ru/context/detail/id/2338486/
  6. Экстремальное программирование http://www.ozon.ru/context/detail/id/1099618/
  7. Scrum http://www.ozon.ru/context/detail/id/6241964/

Backup

Введение

Software Development: Art, Craft, or Science?

Методология разработки

Включает ряд дисциплин, например такие как:

  • управление проектами
  • анализ требований
  • проектирование
  • написание кода
  • интеграция и тестирование
  • контроль качества

Методологии разработки

В настоящее время существует огромное разнообразие методологий:

Темпы внедрения Agile

Copyright 2008, Scott W. Ambler (http://www.ambysoft.com/surveys/)

Как изменилось качество ПО после внедрения Agile

Copyright 2008, Scott W. Ambler (http://www.ambysoft.com/surveys/)