16. Проектирование
Design(ing)
Здесь не об этом
Дизайн
«Проектирование больших ИС в Agile» 16 из 82
17. Больших
= от 10 – 15 чел. лет
t
0 4 мес. 1 год
Маленькие Средние Наш размерчик!
PO
SM
Типичная Agile-
команда (5-7 чел)
«Проектирование больших ИС в Agile» 17 из 82
18. Больших
Много людей Долго
(например, 30 человек 1 год) (например, 7 человек 4 года)
1 2 3 4 5 6 7 8 9
«Проектирование больших ИС в Agile» 18 из 82
19. Успешные и
востребованные проекты
после фазы внедрения вовсе
не заканчивают свою
«жизнь»:
«Проектирование больших ИС в Agile» 19 из 82
20. 30000
25000
Кол-во метаданных
20000
15000
10000
5000
Начало работы АБС
0
0 10 20 30 40 50 60 70
Время (мес.)
Изменение Создание
«Проектирование больших ИС в Agile» 20 из 82
21. Сильные
Внедрение, изменения
Развитие, сопровождение
адаптация в законодательстве
30000
25000
Кол-во метаданных
20000
15000
10000
5000
0
0 10 20 30 40 50 60 70
Время (мес.)
Изменение Создание
«Проектирование больших ИС в Agile» 21 из 82
22. Информационных систем
U
Здесь об Enterprise
(корпоративных ИС)
ERP / CRM / биллинги /
банковские / торговые / складские системы
…
«Проектирование больших ИС в Agile» 22 из 82
24. Agile
Нам важно в данном контексте:
Невысокая цена поздних внесений
изменений в начальные требования
Максимальная вовлеченность самих разработчиков в процесс
проектирования и дизайна системы
Минималистичная документация
(Agile-спецификации и т.п.)
Программный код, из которого легко понять основные
проектные решения
«Проектирование больших ИС в Agile» 24 из 82
33. AsDD
Agile-specification-Driven
Development
http://www.cse.yorku.ca/~jonathan/publications/2004/xp2004.pdf
«Проектирование больших ИС в Agile» 33 из 82
34. Запутались?
«Проектирование больших ИС в Agile» 34 из 82
35. И не только вы…
Давайте зайдем с другой
стороны:
«Проектирование больших ИС в Agile» 35 из 82
36. От популярных
Agile-методологий
Здесь по своему
вкусу рассмотрим
FDD и OpenUP Other
21%
XP Scrum
8% 49%
Scrum
& XP
22%
Источник:
3rd Annual ”State of Agile Development” Survey June-July 2008
• 3061 respondents
• 80 countries
«Проектирование больших ИС в Agile» 36 из 82
37. Scrum:
Про технические вопросы
молчит…
«Проектирование больших ИС в Agile» 37 из 82
38. XP:
Помогает создавать удобное и Способствует поддержанию
минималистичное API чистоты и ясности кода
TDD + Refactoring
Сильно помогает с микро-дизайном
(отдельные классы, методы),
но как быть с картиной в целом?
«Проектирование больших ИС в Agile» 38 из 82
39. Про микро-
и макро-
дизайны:
«Проектирование больших ИС в Agile» 39 из 82
42. Что-то вроде:
С определенного уровня
проработки можно переходить
к микро-дизайну, т.е. TDD
«Проектирование больших ИС в Agile» 42 из 82
43. FDD:
Уровень процессов
Управление
проектами SCRUM Индикация
прогресса
Управление
проектом Самоорг. команда, Перечень
Daily Meetings требований,
Итерации
Unit-тесты, FDD
Стандарт
кодирования,
Кодирование XP Code review
Жесткость
процессов
Анархия Водопад
«Проектирование больших ИС в Agile» 43 из 82
44. FDD:
Разработка Составление Планирование
общей модели списка функций
Список функций План разработки
(Feature list) (A development plan)
1 – 3 недели
Design by Build by feature
Диаграмма сущностей feature
(An object model)
Отгрузка!
«Проектирование больших ИС в Agile» 44 из 82
45. AgileUP и OpenUP:
И то, и другое – вариации на тему
Unified Process (UP) в дань Agile-моде
Соответственно, наследуют такие
завоевания UP как:
Model-Driven Design/Development
(разработка на основе модели);
Model-Driven Architecture
(архитектура на основе модели)
«Проектирование больших ИС в Agile» 45 из 82
47. The last,
but not the least:
«Проектирование больших ИС в Agile» 47 из 82
48. DDD:
Не процесс – подход
Напрямую не связан ни с одним процессом,
но зародился именно в Agile-сообществе
Грубо говоря,
это Agile-наследник MDD и MDA
«Проектирование больших ИС в Agile» 48 из 82
52. Модель –
это упрощенное
Простота != Примитивная
приближение реальности.
Максимально простое,
при условии достаточной
близости к действительности.
«Проектирование больших ИС в Agile» 52 из 82
53. В разных условиях
адекватными могут
оказаться
принципиально
разные модели
(для одной и той же области):
«Проектирование больших ИС в Agile» 53 из 82
55. Ведет себя как волна:
поляризация,
дифракция, …
«Проектирование больших ИС в Agile» 55 из 82
56. Но вот в фотоэффекте
– как поток частиц
«Проектирование больших ИС в Agile» 56 из 82
57. В физике в качестве
формализма для
моделей используют
мат.аппарат, а в
программировании
уже лет 20 - ООП:
«Проектирование больших ИС в Agile» 57 из 82
59. А в качестве
граф. нотации –
UML
в режиме эскизного
проектирования:
«Проектирование больших ИС в Agile» 59 из 82
60. FDD, DDD,
Графическая
Фаулер
нотация
ЭСКИЗИРОВАНИЕ
(набросок от руки)
Способы Проектирование
использования (чертеж)
UML
Метамодель
Программирование
(граф.представление кода)
Executable UML, MDA, PIM
«Проектирование больших ИС в Agile» 60 из 82
61. Модель предметной области; Модель программы;
Словарь терминов Понимание чужого кода
Системная
Бизнес-анализ архитектура
(анализ требований) (проектирование)
Документирование
Понятия из Представление конструкций языка.
предметной области Ограничения по приемам проектирования
Движение слева направо по мере уточнения, детализации и реализации
«Проектирование больших ИС в Agile» 61 из 82
65. • Эксперт: Есть аэропорты. Для каждого известны:
название на местом языке,
уникальный латинский код
и GPS-координаты.
• Мы:
«Проектирование больших ИС в Agile» 65 из 82
66. • Эксперт: Аэропорты расположены в городах.
Для каждого города известно его
название (на местном и англ. языках).
Причем известно расстояние от аэропорта
до центра города, к которому он «приписан».
• Мы:
«Проектирование больших ИС в Agile» 66 из 82
67. • Эксперт: Для каждого города есть информация
о стране, в которой он находится.
• Мы:
«Проектирование больших ИС в Agile» 67 из 82
72. Бизнес-логика:
«Проектирование больших ИС в Agile» 72 из 82
73. [Реляционное] хранение:
СУБД Модель ОО-язык
таблица сущность класс
поле атрибут свойство
FK cвязь ссылка
хранимая
действие метод
процедура
«Проектирование больших ИС в Agile» 73 из 82
74. GUI:
Словарь терминов
и ментальная модель
«Проектирование больших ИС в Agile» 74 из 82
77. Анекдот-притча:
«Проектирование больших ИС в Agile» 77 из 82
78. - Подайте мне то!
- Подайте мне сѐ!
- То у вас не так!
- И сѐ у вас не эдак!
«Проектирование больших ИС в Agile» 78 из 82
79. - Значит черным всѐ можно…
- А рыжим значит нет?!
- А ну-ка, и мне подайте то!
- И сѐ тоже! И побыстрее!
- А то ишь, какие капуши!..
«Проектирование больших ИС в Agile» 79 из 82
80. Экипаж не выдержал
и выкинул нахалок
из самолета
- Ты летать-то
хоть умеешь?
- Не-е-е-ет!
- Что же ты,
кума, тогда
выделывалась?!
«Проектирование больших ИС в Agile» 80 из 82
81. Мораль
Если не умеете летать, т.е. не
владеете такими важными
практиками как ОО-моделирование,
DDD и элементы UP, то и нечего
«выделываться», т.е. пытаться
применить Agile в проектах по
созданию больших информационных
систем (разобьетесь, да и только).
«Проектирование больших ИС в Agile» 81 из 82