Upload
andrey-bibichev
View
4.003
Download
2
Embed Size (px)
DESCRIPTION
Презентация "Проектирование больших информационных систем в Agile" с конференции SECR-2009
Citation preview
Проектирование
большихинформационных систем
в Agile
Бибичев Андрей
2009 год, октябрь
team.custis.ru
ВВЕДЕНИЕ
Большой водопад
Восприятие инкрементального дизайна
Разрыв шаблона
2 из 82«Проектирование больших ИС в Agile»
Разработка
больших систем
стойко ассоциируется с
водопадным процессом:
3 из 82«Проектирование больших ИС в Agile»
4 из 82«Проектирование больших ИС в Agile»
Но Agile-агитаторы
приводят статистику
по успешности окончания
водопадных проектов:
5 из 82«Проектирование больших ИС в Agile»
6 из 82«Проектирование больших ИС в Agile»
И взамен предлагают
инкрементальный
дизайн:
7 из 82«Проектирование больших ИС в Agile»
8 из 82«Проектирование больших ИС в Agile»
Однако,
не говорят
как при этом
избежать вот такого:
9 из 82«Проектирование больших ИС в Agile»
10 из 82«Проектирование больших ИС в Agile»
В народном творчестве
это находит
свое отражение:
11 из 82«Проектирование больших ИС в Agile»
12 из 82«Проектирование больших ИС в Agile»
http://thekonst.net/ru/propaganda/291
Попробуем разорвать
этот шаблон!
13 из 82«Проектирование больших ИС в Agile»
14 из 82«Проектирование больших ИС в Agile»
ТЕРМИНОЛОГИЯ
Проектирование
Больших
Информационных систем
Agile
15 из 82«Проектирование больших ИС в Agile»
Проектирование
16 из 82«Проектирование больших ИС в Agile»
Design(ing)
Дизайн
Здесь не об этом
17 из 82«Проектирование больших ИС в Agile»
Больших
PO
SM
Типичная Agile-команда (5-7 чел)
t
0 4 мес. 1 год
Маленькие Средние Наш размерчик!
= от 10 – 15 чел. лет
18 из 82«Проектирование больших ИС в Agile»
Больших
1 2 3 4 5 6 7 8 9
Много людей(например, 30 человек 1 год)
Долго(например, 7 человек 4 года)
Успешные и
востребованные проекты
после фазы внедрения вовсе
не заканчивают свою
«жизнь»:
19 из 82«Проектирование больших ИС в Agile»
20 из 82«Проектирование больших ИС в Agile»
0
5000
10000
15000
20000
25000
30000
0 10 20 30 40 50 60 70
Время (мес.)
Ко
л-в
о м
етад
ан
ны
х
Изменение Создание
Начало работы АБС
21 из 82«Проектирование больших ИС в Agile»
0
5000
10000
15000
20000
25000
30000
0 10 20 30 40 50 60 70
Время (мес.)
Ко
л-в
о м
етад
ан
ны
х
Изменение Создание
Развитие, сопровождениеВнедрение,
адаптация
Сильныеизменения
в законодательстве
Информационных систем
22 из 82«Проектирование больших ИС в Agile»
U
Здесь об Enterprise(корпоративных ИС)
ERP / CRM / биллинги /банковские / торговые / складские системы
…
Agile
23 из 82«Проектирование больших ИС в Agile»
http://agilemanifesto.org/principles.html
Agile
24 из 82«Проектирование больших ИС в Agile»
Невысокая цена поздних внесенийизменений в начальные требования
Максимальная вовлеченность самих разработчиков в процесс проектирования и дизайна системы
Минималистичная документация(Agile-спецификации и т.п.)
Программный код, из которого легко понять основныепроектные решения
Нам важно в данном контексте:
*DD-ЗООПАРК
TDD/FDD/DDD/MDD/AsDD
Проектирование в Scrum / XP / FDD / OpenUP
DDD
25 из 82«Проектирование больших ИС в Agile»
Итак, нужно обуздать
экспоненциальный рост
сложности при
росте объема функционала:
26 из 82«Проектирование больших ИС в Agile»
27 из 82«Проектирование больших ИС в Agile»
Что в мире Agile
есть на тему
проектирования,
т.е. Design-а:
28 из 82«Проектирование больших ИС в Agile»
TDD
29 из 82«Проектирование больших ИС в Agile»
Test-Driven Development
FDD
30 из 82«Проектирование больших ИС в Agile»
Feature-Driven Development
DDD
31 из 82«Проектирование больших ИС в Agile»
Domain-Driven Design
http://www.infoq.com/minibooks/domain-driven-design-quickly
Eric Evans
MDD
32 из 82«Проектирование больших ИС в Agile»
[Agile] Model-Driven Development/Design
AsDD
33 из 82«Проектирование больших ИС в Agile»
Agile-specification-Driven Development
http://www.cse.yorku.ca/~jonathan/publications/2004/xp2004.pdf
Запутались?
34 из 82«Проектирование больших ИС в Agile»
И не только вы…
Давайте зайдем с другой стороны:
35 из 82«Проектирование больших ИС в Agile»
36 из 82«Проектирование больших ИС в Agile»
Scrum49%
Scrum & XP22%
XP8%
Other21%
Источник:3rd Annual ”State of Agile Development” Survey June-July 2008• 3061 respondents• 80 countries
От популярныхAgile-методологий
Здесь по своему вкусу рассмотрим
FDD и OpenUP
37 из 82«Проектирование больших ИС в Agile»
Scrum:Про технические вопросы
молчит…
38 из 82«Проектирование больших ИС в Agile»
XP:
TDD + Refactoring
Сильно помогает с микро-дизайном (отдельные классы, методы),
но как быть с картиной в целом?
Помогает создавать удобное и минималистичное API
Способствует поддержанию чистоты и ясности кода
Про микро-
и макро-
дизайны:
39 из 82«Проектирование больших ИС в Agile»
40 из 82«Проектирование больших ИС в Agile»
41 из 82«Проектирование больших ИС в Agile»
Явно не хватает общего наброска:
???? ? ? ? ? ? ? ? ?
???? ? ? ? ? ? ? ? ?
???? ? ? ? ? ? ? ?
???? ? ? ? ? ? ? ? ?
???? ? ? ? ? ? ? ? ?
???? ? ? ? ? ? ? ? ?
42 из 82«Проектирование больших ИС в Agile»
Что-то вроде:
С определенного уровня проработки можно переходить
к микро-дизайну, т.е. TDD
43 из 82«Проектирование больших ИС в Agile»
FDD:
XP
SCRUM
FDD
Уровень процессов
Жесткостьпроцессов
Управлениепроектом
Кодирование
Анархия Водопад
Управлениепроектами
Переченьтребований,Итерации
Unit-тесты,Стандарткодирования,Code review
Самоорг. команда,Daily Meetings
Индикацияпрогресса
44 из 82«Проектирование больших ИС в Agile»
FDD:
Разработка общей модели
Составление списка функций
Планирование
Build by featureDesign by feature
Список функций(Feature list)
План разработки(A development plan)
Диаграмма сущностей(An object model)
Отгрузка!
1 – 3 недели
45 из 82«Проектирование больших ИС в Agile»
AgileUP и OpenUP:
И то, и другое – вариации на тему Unified Process (UP) в дань Agile-моде
Соответственно, наследуют такие завоевания UP как:
Model-Driven Design/Development (разработка на основе модели);
Model-Driven Architecture(архитектура на основе модели)
46 из 82«Проектирование больших ИС в Agile»
The last,
but not the least:
47 из 82«Проектирование больших ИС в Agile»
48 из 82«Проектирование больших ИС в Agile»
DDD:
Не процесс – подход
Напрямую не связан ни с одним процессом,но зародился именно в Agile-сообществе
Грубо говоря,это Agile-наследник MDD и MDA
МОДЕЛЬ ПРЕДМЕТНОЙ ОБЛАСТИ(DOMAIN MODEL)
ООП
UML
Пример
Словарь терминов
49 из 82«Проектирование больших ИС в Agile»
Итак,
центральный элемент
при проектировании –
Модель предметной области
50 из 82«Проектирование больших ИС в Agile»
aka Domain Model
51 из 82«Проектирование больших ИС в Agile»
Модель –
это упрощенное
приближение реальности.
Максимально простое,
при условии достаточной
близости к действительности.
52 из 82«Проектирование больших ИС в Agile»
Пр
осто
та !=П
ри
ми
тивн
ая
53 из 82«Проектирование больших ИС в Agile»
В разных условиях
адекватными могут
оказаться
принципиально
разные модели
(для одной и той же области):
54 из 82«Проектирование больших ИС в Agile»
Свет:корпускулярно-волновой
дуализм
55 из 82«Проектирование больших ИС в Agile»
Ведет себя как волна: поляризация, дифракция, …
56 из 82«Проектирование больших ИС в Agile»
Но вот в фотоэффекте – как поток частиц
57 из 82«Проектирование больших ИС в Agile»
В физике в качестве
формализма для
моделей используют
мат.аппарат, а в
программировании
уже лет 20 - ООП:
58 из 82«Проектирование больших ИС в Agile»
Гради Буч
59 из 82«Проектирование больших ИС в Agile»
А в качестве
граф. нотации –
UML
в режиме эскизного
проектирования:
60 из 82«Проектирование больших ИС в Agile»
Способыиспользования
UML
ЭСКИЗИРОВАНИЕ
(набросок от руки)
Проектирование
(чертеж)
Программирование
(граф.представление кода)
Граф
ическая
нотация
Метам
одель
FDD, DDD,Фаулер
Executable UML, MDA, PIM
61 из 82«Проектирование больших ИС в Agile»
Документирование
Бизнес-анализ
(анализ требований)
Системнаяархитектура
(проектирование)
Модель предметной области;Словарь терминов
Понятия изпредметной области
Модель программы;Понимание чужого кода
Представление конструкций языка.Ограничения по приемам проектирования
Движение слева направо по мере уточнения, детализации и реализации
62 из 82«Проектирование больших ИС в Agile»
Наиболее востребованные виды диаграмм
63 из 82«Проектирование больших ИС в Agile»
Класс(class)
Наследование(inheritance)
Свойство(property)
Метод(method)
Ссылка, связь(reference, link)
Сущность(entity)
Обобщение(generalization)
Атрибут(attribute)
Операция(operation)
Ассоциация(association)
Фун
кцио
нальн
ость
(fea
ture
)
ПО Предметнаяобласть
Нюансы терминологии:
64 из 82«Проектирование больших ИС в Agile»
Пример:
система продажи
билетов на самолет
65 из 82«Проектирование больших ИС в Agile»
•Эксперт: Есть аэропорты. Для каждого известны:название на местом языке,уникальный латинский коди GPS-координаты.
•Мы:
66 из 82«Проектирование больших ИС в Agile»
•Эксперт: Аэропорты расположены в городах.Для каждого города известно егоназвание (на местном и англ. языках). Причем известно расстояние от аэропортадо центра города, к которому он «приписан».
•Мы:
67 из 82«Проектирование больших ИС в Agile»
•Эксперт: Для каждого города есть информацияо стране, в которой он находится.
•Мы:
68 из 82«Проектирование больших ИС в Agile»
… (продолжение придумайте сами)
69 из 82«Проектирование больших ИС в Agile»
Бонус:
между делом получили
готовый
словарь терминов
РЕАЛИЗАЦИЯ МОДЕЛИ
Ключевой момент
Соответствие концепций
Ментальная модель
70 из 82«Проектирование больших ИС в Agile»
71 из 82«Проектирование больших ИС в Agile»
72 из 82«Проектирование больших ИС в Agile»
Бизнес-логика:
73 из 82«Проектирование больших ИС в Agile»
[Реляционное] хранение:
СУБД Модель ОО-язык
таблица сущность класс
поле атрибут свойство
FK cвязь ссылка
хранимаяпроцедура
действие метод
74 из 82«Проектирование больших ИС в Agile»
GUI:Словарь терминов
и ментальная модель
ЗАКЛЮЧЕНИЕ
Must Read
Притча
75 из 82«Проектирование больших ИС в Agile»
76 из 82«Проектирование больших ИС в Agile»
Must Read:
77 из 82«Проектирование больших ИС в Agile»
Анекдот-притча:
78 из 82«Проектирование больших ИС в Agile»
- Подайте мне то!- Подайте мне сѐ!- То у вас не так!
- И сѐ у вас не эдак!
79 из 82«Проектирование больших ИС в Agile»
- Значит черным всѐ можно…- А рыжим значит нет?!
- А ну-ка, и мне подайте то!- И сѐ тоже! И побыстрее!- А то ишь, какие капуши!..
80 из 82«Проектирование больших ИС в Agile»
Экипаж не выдержали выкинул нахалок
из самолета
- Ты летать-то хоть умеешь?
- Не-е-е-ет!
- Что же ты, кума, тогда
выделывалась?!
81 из 82«Проектирование больших ИС в Agile»
Мораль
Если не умеете летать, т.е. не владеете такими важными
практиками как ОО-моделирование, DDD и элементы UP, то и нечего «выделываться», т.е. пытаться
применить Agile в проектах по созданию больших информационных систем (разобьетесь, да и только).
СПАСИБО ЗА ВНИМАНИЕ!ВОПРОСЫ?
http://team.custis.ru
82 из 82«Проектирование больших ИС в Agile»