Upload
custis
View
789
Download
6
Embed Size (px)
DESCRIPTION
Citation preview
Михаил Заборов Руководитель направления «Торговые сети»
AgileDays, Екатеринбург, 2010
Agile в БОЛЬШИХ и ОЧЕНЬ БОЛЬШИХ проектах
проектирование в Agile
Корпоративные (Enterprise)Системы
ERP / биллинг /банковские / торговые / складские системы
…
Прикладное программное обеспечение предприятий и организаций
Buzzword
4/92
В чем можно мерить размер?
? Объем данных
? Количество транзакций
? Объем изменений
? Длительность проекта
? Количество отчетов?
5/92
БОЛЬШИЕ проекты
t
0 4 мес.
1 год
Маленькие Средние Наш размерчик!
= от 10 – 15 чел. лет
Команда 5-10 человек
7/92
Жизнь успешных и востребованных проектовпосле внедрения только
начинается
Высокая динамика требований
8/92
0
5000
10000
15000
20000
25000
30000
0 10 20 30 40 50 60 70
Время (мес.)
Ко
л-в
о м
етад
анн
ых
Изменение Создание
Начало работы
9/92
0
5000
10000
15000
20000
25000
30000
0 10 20 30 40 50 60 70
Время (мес.)
Ко
л-в
о м
етад
анн
ых
Изменение Создание
Начало работы
10/92
Люди и их взаимодействие, чем процессы и средства
Работающее ПО, чем исчерпывающая документация
Сотрудничество с заказчиком, чем обсуждение условий контракта
Реагирование на изменения, чем следование плану
Нам важнее
15/92
Невысокая цена поздних внесенийизменений в начальные требования
Максимальная вовлеченность самих разработчиков в процесс проектирования и дизайна системы.
Отсутствие лишних артефактов, в частности, write-only документации
Работающее и реально использующееся ПО
Удовлетворенность заказчика ранними и периодическими поставками ценного ПО
http://agilemanifesto.org/principles.html
Непосредственное общение разработчиков с пользователями
16/92
Командой в 40 чел управлять очень сложноПотери на коммуникации
Бутылочное горло
Проблемы синхронизации
Оптимальный размер команды 5-7 человек
Про это нам и Agile говорит :-)
17/92
Сложность системы
Не лезет в одну голову«оно так работает…»,почему — никтоне знает. Проблемы обучения (персонал, пользователь).
Непредсказуемые последствия измененийОграничение развития. Поправили в одном месте — отвалилось в совсем другом.
Стихийные внутренние связи«Ничьи» и «общие» данные, коды и проч… невозможно отследить и контролировать.
24/92
Производительность
Объемы данныхПодъем тестового стенда с реальными данными - 3 суток.
Масштабируемость«В следующем году мы планируем увеличить бизнес вдвое»
Асинхронность взаимодействияКритичные приложения ждут не критичные. Лишние блокировки
ЖелезоУвеличение аппаратных мощностей не спасает.«в один прекрасный день оно не уложится в отведенное время»
25/92
Структура системы неизбежно повторяет структуру команд
Tom Demarko
Модули продукта инкапсулируются внутри команды
Закон Конвея
28/92
Процессы разработки модулей - проектирования, технической поддержки, документирования, выпуска версий, тестирования -
не должны зависеть друг от друга - за исключением изменения API
35/92
Физические границы должны быть просты и понятныпо данным, исполняемым модулям,исходным кодам и т.д.
Нет общих данных владелец данных всегда известен
Нет общих экземпляров исполняемых модулей в том числе библиотек
36/92
Должна быть возможность:
Разместить модули на разные аппаратные мощности
Иметь различные стратегии резервного копирования
Иметь off-line связь между модулями
Выполнить модули в разных технологиях.
37/92
Модуль:
Может быть продан отдельно
Имеет самостоятельную ценность а не только в месте с другими продуктами
Может устанавливаться с продуктами других производителей
38/92
Например, по организационной
структуре автоматизируемого объекта
Совет директоров
Розница Опт Закупки Логистика Финансы
41/92
Связи между отделами слабее, чем внутри отделов Регламенты взаимодействия, локальная группа с которой
проще договариваться
Замкнутая предметная областьПроще обучать сотрудников, осуществлять тестирование и поддержку
Проще внедрятьЛокализованное внедрение
Проще общаться с «верхним» руководством заказчикапонятно, с какой областью идет работа. Общее руководство у всех пользователей
42/92
Дело в том, каждый модуль –
это все еще БОЛЬШОЙ проект
t
0 4 мес.
1 год
Маленькие Средние Наш размерчик!
= от 10 – 15 чел. лет
Команда 5-10 человек
46/92
В реальности задачи в
разных итерациях сильно
связаны между собой
Приходится переделывать ранее
сделанное
50/92
Алистер Коберн
вводит различие между
итеративной и
инкрементальной
разработкой
http://alistair.cockburn.us/Incremental+versus+iterative+developmenthttp://alistair.cockburn.us/Incremental+means+adding%2c+iterative+means+reworking
51/92
Основное отличие
Инкрементальная разработка – добавление нового (add onto)
Итеративная — переделывание (rework) ранее сделанного
54/92
Для действительно БОЛЬШИХ[*] СИСТЕМ
большой разницы нет:-(
[*] Время итерации 2-3 недели, время проекта 7-8 лет
55/92
http://lobasev.ru/2008/01/blog-post.html
Для этого и этого этапа
Опять инкремент
А иногда и для этого57/92
При проектировании ИС такая картина —
модель предметной области
aka Domain MоdelНа самом деле конечно модель
системы
67/92
Признаки качественной модели
Простая
Лаконичнаяобозримая
Понятная заказчикуключевому пользователю
Понятная разработчикувсем членам команды
68/92
Признаки качественной моделиЧто на картинке, то и в системе…
Достаточно формальная
Эскиз, а не детальная спецификация
69/92
Признаки качественной модели
Отражает действительность(близка к предметной области)
Зависит от контекста
70/92
Модель предметной области –
составляет существенную часть Vision
Назначение и границы модуля
Основные пользователиОсновные функции
71/92
Пишем непосредственно перед стартом разработки
Выясняем детальные требования
Пишем и согласуем постановку
Разрабатываем, тестируем, отгружаем
ПротоколПостановка
Sprint 1 Sprint 2 Sprint 3 Sprint 4 Sprint 5
77/92
Не успевает «протухать»
через год
Ситуация не успела поменятьсяЗаказчик и разработчики все еще в
контексте80/92
Проектирование методом «Набегающей волны»
По аналогии с планированием методом набегающей волны (Rolling Wave Planning)
Питер Хрущка
Snorkeling&
Scuba Diving
81/92
Невысокая цена поздних внесенийизменений в начальные требования
Максимальная вовлеченность самих разработчиков в процесс проектирования и дизайна системы.
Отсутствие лишних артефактов, в частности, write-only документации
Работающее и реально использующееся ПО
Удовлетворенность заказчика ранними и периодическими поставками ценного ПО
Непосредственное общение разработчиков с пользователями
Да, конечно! 83/92
Легче вводить новых людей в проект
Есть история принятых решений
Возможность выявить недопонимание,
до начала разработки
Заказчик вовлекается в принятие решений
Bonus
84/92
Скотт Адамс (Scott Adams)Источник: http://dilbertru.blogspot.com/2007/11/20071166.html
Мы собираемся попробовать кое-что
под названием «Agile
программирование».
Это значит, больше никакого
планирования, никакой
документации. Просто начинайте
писать код и жаловаться.
Так вот как это
называется.
Твоя школа.
86/92