Введение в Agile Development
Кирилл Корняков
Сентябрь 2019
Содержание
- История и предпосылки возникновения
- Agile сегодня
- Общая характеристика Agile
Немного истории
Кто были первыми профессиональными программистами, и где они работали?
Кризис программирования и рождение Программной инженерии
- Особенности первых проектов:
- Первый кризис программирования:
- Стоимость ПО обгоняет стоимость аппаратуры
- Факторы, оказавшие влияние на Программную инженерию:
- Другие инженерии
- Строительство
- Механика
- Электроника
Каскадная модель
- Основа модели — сформулированные требования (ТЗ)
- Критерий качества — соответствие ТЗ
- Каждая фаза начинается после завершения предыдущей
- Каждая фаза полностью документируется
Стоимость внесения изменений
Продолжение кризиса
Ряд проблем был снят, но кризис программирования продолжался...
- Поиски серебряной пули
- Фредерик Брукс "Мифический человеко-месяц", 1975
- Chap. 16. "No Silver Bullet — Essence and Accident", 1987
- Chap. 17. "'No Silver Bullet' Refired", 1995
Технологические способы решения
- Модульное программирование
- Структурное программирование
- ООП
- Паттерны
- Более совершенные языки и технологии
- Инструментальная поддержка разработки (CASE)
Методология разработки
Методология программирования — совокупность методов, применяемых на различных стадиях жизненного цикла программного обеспечения и имеющих общий философский подход.
Каждая методология характеризуется своим:
- Философским подходом или основными принципами. Эти принципы, от которых зависит эффективность всей методологии, обычно можно кратко сформулировать и легко объяснить;
- Согласованным множеством моделей методов, которые реализуют данную методологию;
- Концепциями (понятиями), позволяющими более точно определить методы.
Как подобрать методологию?
Проекты отличаются по масштабам, бюджету, срокам, сложности и критичности.
Нет методологии, подходящей сразу для всех проектов.
Разнообразие методологий
"Не привязывайся к одному оружию или стилю"
Миямото Мусаси, самурай, XVII век
"Тот, кто хорошо владеет молотком, везде склонен видеть гвозди"
Абрахам Маслоу, психолог, XX век
Эффективность методологии
Ниша Agile
Экстремальное программирование — это упрощенная методика организации производства для небольших и средних по размеру команд специалистов, занимающихся разработкой программного продукта в условиях неясных или быстро меняющихся требований.
Кент Бек, Экстремальное программирование
Agile Development
- Семейство методологий разработки
- Относительно молодое
- Отдельные методологии появились в середине 90х
- Получили широкое распространение в 2000х
- Очень успешное и популярное
- Применяется практически всеми ведущими компаниями
- Фактически стали мейнстримом в разработке ПО
- Весьма интересное
- "Изобретены" программистами
- Легковесные практики
Центральная идея
- Метафора с угадыванием числа
|
Фокус на адаптируемости вместо предсказуемости
- Небольшие и частые релизы
- Непрерывное улучшение
- Готовность к изменениям
- Самоорганизующиеся команды
|
Современное состояние
- Огромная масса небольших и средних проектов выполняется согласно гибким методологиям.
- В том числе в крупных компаниях:
- Intel (XP, Scrum)
- Microsoft (Agile MSF)
- Google (Scrum)
- IBM
- Имеются успешные опыты внедрения гибких методологий в крупных и распределенных проектах.
- Отдельные практики гибких методологий проникли во все другие методологии.
Agile Methodology Most Closely Followed
Содержание
- История и предпосылки возникновения
- Agile сегодня
- Общая характеристика Agile
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
- Понятие Quality расщепляется на два
- Quality как надежность, устойчивость, корректность
- Scope — функциональность, богатство возможностей
- Time, Cost, Quality фиксируются.
- Scope корректируется с учетом обстоятельств.
- Самое важное в первую очередь!
Twelve Principles of Agile Software
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Twelve Principles of Agile Software
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity — the art of maximizing the amount of work not done — is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Основные черты: Итеративный процесс
- Выпуск новой версии как минимум каждые 2-4 недели
- На выходе каждой итерации — рабочий продукт
- Минимум необходимого
- Планирования
- Проектирования
- Документации
Основные черты: Команды разработчиков
- Самостоятельно организуют свою работу
- Располагаются в общем открытом офисе
- Ежедневные stand-up meeting
- Тесная связь с заказчиком
Основные черты: Отношение к документам
- Личное общение предпочитается письменным документам
- Общение с заказчиком
- Общение внутри команды
- Документация либо не пишется совсем, либо необходимый минимум
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
- Frequent delivery
- Reflective improvement
- Close communication
- Personal safety
- Focus
- Easy access to expert users
- A good technical environment
Препятствия при внедрении гибких методик
- Выполнение типовых проектов
- Большие команды разработчиков (более 20)
- Распределенные команды разработчиков
- Культура управления в компании (все менее актуально)
Резюме: сравнение характерных черт
- Требования фиксированы
- Типовые проекты
- Крупные проекты
- Большое количество разработчиков
- Высокие риски
|
- Частая смена требований
- Уникальные продукты
- Небольшие и средние проекты
- Небольшое число разработчиков
- Средние риски
|
Ключевые моменты
- Классические методологии были нацелены в первую очередь на масштабные проекты с высокой критичностью. Отсюда ориентация на строгое планирование и ведение подробной документации.
- Однако большинство современных проектов относительно небольшие, и требования являются неясными или быстро меняющимися. Это привело к возникновению и распространению ГТР.
- Agile ориентирован на адаптивность вместо предсказуемости. Это частые релизы, самоорганизующиеся команды профессионалов-универсалов, минимальный накладной расход на ведение процесса.
- Agile методологии имеют свои ограничения, однако их практики показали высокую эффективность и на сегодняшний день применяются практически в любых проектах.
Контрольные вопросы
- Понятия содержания и охвата методологии
- Приведите различные закономерности, объединяющие размер команды, методологии и сложность решаемой проблемы
- Какие факторы повлияли на содержание первых методологий разработки
- Достоинства и недостатки каскадной модели
- Определение методологии программирования
- Определение ГТР (на примере XP)
- Манифест ГТР
- Приведите 3-4 принципа ГТР
- Основные черты ГТР
- Факторы, противодействующие внедрению ГТР
Ссылки
- http://alistair.cockburn.us/Methodology+per+project
- http://www.crisp.se/henrik.kniberg/Kanban-vs-Scrum.pdf
- http://en.wikipedia.org/wiki/Software_development_process
Спасибо за внимание!
Вопросы?
Тест Джоэла
- Пользуетесь ли вы системой контроля версий?
- Можете ли вы собрать продукт за один шаг?
- Выполняете ли вы ежедневные билды?
- Используете ли вы базу данных ошибок?
- Исправляете ли вы ошибки перед написанием нового кода?
- Есть ли у вас актуальный план работ?
- Есть ли у вас спецификация?
- Предоставлены ли вашим программистам спокойные условия для работы?
- Используете ли вы новейшие и лучшие инструменты?
- Есть ли у вас тестеры?
- Пишут ли кандидаты на работу код во время собеседования?
- Проводите ли вы коридорное тестирование удобства использования программ?
Книги
- Стив Макконнелл "Совершенный код"
- Роберт Мартин Гибкая разработка ПО
- Мифический человекомесяц http://www.ozon.ru/context/detail/id/83760/
- Правила разработки ПО http://www.ozon.ru/context/detail/id/3163596/
- Человеческий фактор http://www.ozon.ru/context/detail/id/2338486/
- Экстремальное программирование http://www.ozon.ru/context/detail/id/1099618/
- Scrum http://www.ozon.ru/context/detail/id/6241964/
Backup
Введение
Software Development: Art, Craft, or Science?
Методология разработки
Включает ряд дисциплин, например такие как:
- управление проектами
- анализ требований
- проектирование
|
- написание кода
- интеграция и тестирование
- контроль качества
|
Методологии разработки
В настоящее время существует огромное разнообразие методологий:
- ISO
- CMM, CMMI
- MSF - Microsoft Solution Framework
- RUP - Rational Unified Process
- Agile Methodologies