82
Проектирование больших информационных систем в Agile Бибичев Андрей 2009 год, октябрь team.custis.ru

Проектирование больших ИС в Agile

Embed Size (px)

DESCRIPTION

Презентация "Проектирование больших информационных систем в Agile" с конференции SECR-2009

Citation preview

Page 1: Проектирование больших ИС в Agile

Проектирование

большихинформационных систем

в Agile

Бибичев Андрей

2009 год, октябрь

team.custis.ru

Page 2: Проектирование больших ИС в Agile

ВВЕДЕНИЕ

Большой водопад

Восприятие инкрементального дизайна

Разрыв шаблона

2 из 82«Проектирование больших ИС в Agile»

Page 3: Проектирование больших ИС в Agile

Разработка

больших систем

стойко ассоциируется с

водопадным процессом:

3 из 82«Проектирование больших ИС в Agile»

Page 4: Проектирование больших ИС в Agile

4 из 82«Проектирование больших ИС в Agile»

Page 5: Проектирование больших ИС в Agile

Но Agile-агитаторы

приводят статистику

по успешности окончания

водопадных проектов:

5 из 82«Проектирование больших ИС в Agile»

Page 6: Проектирование больших ИС в Agile

6 из 82«Проектирование больших ИС в Agile»

Page 7: Проектирование больших ИС в Agile

И взамен предлагают

инкрементальный

дизайн:

7 из 82«Проектирование больших ИС в Agile»

Page 8: Проектирование больших ИС в Agile

8 из 82«Проектирование больших ИС в Agile»

Page 9: Проектирование больших ИС в Agile

Однако,

не говорят

как при этом

избежать вот такого:

9 из 82«Проектирование больших ИС в Agile»

Page 10: Проектирование больших ИС в Agile

10 из 82«Проектирование больших ИС в Agile»

Page 11: Проектирование больших ИС в Agile

В народном творчестве

это находит

свое отражение:

11 из 82«Проектирование больших ИС в Agile»

Page 12: Проектирование больших ИС в Agile

12 из 82«Проектирование больших ИС в Agile»

http://thekonst.net/ru/propaganda/291

Page 13: Проектирование больших ИС в Agile

Попробуем разорвать

этот шаблон!

13 из 82«Проектирование больших ИС в Agile»

Page 14: Проектирование больших ИС в Agile

14 из 82«Проектирование больших ИС в Agile»

Page 15: Проектирование больших ИС в Agile

ТЕРМИНОЛОГИЯ

Проектирование

Больших

Информационных систем

Agile

15 из 82«Проектирование больших ИС в Agile»

Page 16: Проектирование больших ИС в Agile

Проектирование

16 из 82«Проектирование больших ИС в Agile»

Design(ing)

Дизайн

Здесь не об этом

Page 17: Проектирование больших ИС в Agile

17 из 82«Проектирование больших ИС в Agile»

Больших

PO

SM

Типичная Agile-команда (5-7 чел)

t

0 4 мес. 1 год

Маленькие Средние Наш размерчик!

= от 10 – 15 чел. лет

Page 18: Проектирование больших ИС в Agile

18 из 82«Проектирование больших ИС в Agile»

Больших

1 2 3 4 5 6 7 8 9

Много людей(например, 30 человек 1 год)

Долго(например, 7 человек 4 года)

Page 19: Проектирование больших ИС в Agile

Успешные и

востребованные проекты

после фазы внедрения вовсе

не заканчивают свою

«жизнь»:

19 из 82«Проектирование больших ИС в Agile»

Page 20: Проектирование больших ИС в Agile

20 из 82«Проектирование больших ИС в Agile»

0

5000

10000

15000

20000

25000

30000

0 10 20 30 40 50 60 70

Время (мес.)

Ко

л-в

о м

етад

ан

ны

х

Изменение Создание

Начало работы АБС

Page 21: Проектирование больших ИС в Agile

21 из 82«Проектирование больших ИС в Agile»

0

5000

10000

15000

20000

25000

30000

0 10 20 30 40 50 60 70

Время (мес.)

Ко

л-в

о м

етад

ан

ны

х

Изменение Создание

Развитие, сопровождениеВнедрение,

адаптация

Сильныеизменения

в законодательстве

Page 22: Проектирование больших ИС в Agile

Информационных систем

22 из 82«Проектирование больших ИС в Agile»

U

Здесь об Enterprise(корпоративных ИС)

ERP / CRM / биллинги /банковские / торговые / складские системы

Page 23: Проектирование больших ИС в Agile

Agile

23 из 82«Проектирование больших ИС в Agile»

http://agilemanifesto.org/principles.html

Page 24: Проектирование больших ИС в Agile

Agile

24 из 82«Проектирование больших ИС в Agile»

Невысокая цена поздних внесенийизменений в начальные требования

Максимальная вовлеченность самих разработчиков в процесс проектирования и дизайна системы

Минималистичная документация(Agile-спецификации и т.п.)

Программный код, из которого легко понять основныепроектные решения

Нам важно в данном контексте:

Page 25: Проектирование больших ИС в Agile

*DD-ЗООПАРК

TDD/FDD/DDD/MDD/AsDD

Проектирование в Scrum / XP / FDD / OpenUP

DDD

25 из 82«Проектирование больших ИС в Agile»

Page 26: Проектирование больших ИС в Agile

Итак, нужно обуздать

экспоненциальный рост

сложности при

росте объема функционала:

26 из 82«Проектирование больших ИС в Agile»

Page 27: Проектирование больших ИС в Agile

27 из 82«Проектирование больших ИС в Agile»

Page 28: Проектирование больших ИС в Agile

Что в мире Agile

есть на тему

проектирования,

т.е. Design-а:

28 из 82«Проектирование больших ИС в Agile»

Page 29: Проектирование больших ИС в Agile

TDD

29 из 82«Проектирование больших ИС в Agile»

Test-Driven Development

Page 30: Проектирование больших ИС в Agile

FDD

30 из 82«Проектирование больших ИС в Agile»

Feature-Driven Development

Page 32: Проектирование больших ИС в Agile

MDD

32 из 82«Проектирование больших ИС в Agile»

[Agile] Model-Driven Development/Design

Page 33: Проектирование больших ИС в Agile

AsDD

33 из 82«Проектирование больших ИС в Agile»

Agile-specification-Driven Development

http://www.cse.yorku.ca/~jonathan/publications/2004/xp2004.pdf

Page 34: Проектирование больших ИС в Agile

Запутались?

34 из 82«Проектирование больших ИС в Agile»

Page 35: Проектирование больших ИС в Agile

И не только вы…

Давайте зайдем с другой стороны:

35 из 82«Проектирование больших ИС в Agile»

Page 36: Проектирование больших ИС в 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

Page 37: Проектирование больших ИС в Agile

37 из 82«Проектирование больших ИС в Agile»

Scrum:Про технические вопросы

молчит…

Page 38: Проектирование больших ИС в Agile

38 из 82«Проектирование больших ИС в Agile»

XP:

TDD + Refactoring

Сильно помогает с микро-дизайном (отдельные классы, методы),

но как быть с картиной в целом?

Помогает создавать удобное и минималистичное API

Способствует поддержанию чистоты и ясности кода

Page 39: Проектирование больших ИС в Agile

Про микро-

и макро-

дизайны:

39 из 82«Проектирование больших ИС в Agile»

Page 40: Проектирование больших ИС в Agile

40 из 82«Проектирование больших ИС в Agile»

Page 41: Проектирование больших ИС в Agile

41 из 82«Проектирование больших ИС в Agile»

Явно не хватает общего наброска:

???? ? ? ? ? ? ? ? ?

???? ? ? ? ? ? ? ? ?

???? ? ? ? ? ? ? ?

???? ? ? ? ? ? ? ? ?

???? ? ? ? ? ? ? ? ?

???? ? ? ? ? ? ? ? ?

Page 42: Проектирование больших ИС в Agile

42 из 82«Проектирование больших ИС в Agile»

Что-то вроде:

С определенного уровня проработки можно переходить

к микро-дизайну, т.е. TDD

Page 43: Проектирование больших ИС в Agile

43 из 82«Проектирование больших ИС в Agile»

FDD:

XP

SCRUM

FDD

Уровень процессов

Жесткостьпроцессов

Управлениепроектом

Кодирование

Анархия Водопад

Управлениепроектами

Переченьтребований,Итерации

Unit-тесты,Стандарткодирования,Code review

Самоорг. команда,Daily Meetings

Индикацияпрогресса

Page 44: Проектирование больших ИС в Agile

44 из 82«Проектирование больших ИС в Agile»

FDD:

Разработка общей модели

Составление списка функций

Планирование

Build by featureDesign by feature

Список функций(Feature list)

План разработки(A development plan)

Диаграмма сущностей(An object model)

Отгрузка!

1 – 3 недели

Page 45: Проектирование больших ИС в Agile

45 из 82«Проектирование больших ИС в Agile»

AgileUP и OpenUP:

И то, и другое – вариации на тему Unified Process (UP) в дань Agile-моде

Соответственно, наследуют такие завоевания UP как:

Model-Driven Design/Development (разработка на основе модели);

Model-Driven Architecture(архитектура на основе модели)

Page 46: Проектирование больших ИС в Agile

46 из 82«Проектирование больших ИС в Agile»

Page 47: Проектирование больших ИС в Agile

The last,

but not the least:

47 из 82«Проектирование больших ИС в Agile»

Page 48: Проектирование больших ИС в Agile

48 из 82«Проектирование больших ИС в Agile»

DDD:

Не процесс – подход

Напрямую не связан ни с одним процессом,но зародился именно в Agile-сообществе

Грубо говоря,это Agile-наследник MDD и MDA

Page 49: Проектирование больших ИС в Agile

МОДЕЛЬ ПРЕДМЕТНОЙ ОБЛАСТИ(DOMAIN MODEL)

ООП

UML

Пример

Словарь терминов

49 из 82«Проектирование больших ИС в Agile»

Page 50: Проектирование больших ИС в Agile

Итак,

центральный элемент

при проектировании –

Модель предметной области

50 из 82«Проектирование больших ИС в Agile»

aka Domain Model

Page 51: Проектирование больших ИС в Agile

51 из 82«Проектирование больших ИС в Agile»

Page 52: Проектирование больших ИС в Agile

Модель –

это упрощенное

приближение реальности.

Максимально простое,

при условии достаточной

близости к действительности.

52 из 82«Проектирование больших ИС в Agile»

Пр

осто

та !=П

ри

ми

тивн

ая

Page 53: Проектирование больших ИС в Agile

53 из 82«Проектирование больших ИС в Agile»

В разных условиях

адекватными могут

оказаться

принципиально

разные модели

(для одной и той же области):

Page 54: Проектирование больших ИС в Agile

54 из 82«Проектирование больших ИС в Agile»

Свет:корпускулярно-волновой

дуализм

Page 55: Проектирование больших ИС в Agile

55 из 82«Проектирование больших ИС в Agile»

Ведет себя как волна: поляризация, дифракция, …

Page 56: Проектирование больших ИС в Agile

56 из 82«Проектирование больших ИС в Agile»

Но вот в фотоэффекте – как поток частиц

Page 57: Проектирование больших ИС в Agile

57 из 82«Проектирование больших ИС в Agile»

В физике в качестве

формализма для

моделей используют

мат.аппарат, а в

программировании

уже лет 20 - ООП:

Page 58: Проектирование больших ИС в Agile

58 из 82«Проектирование больших ИС в Agile»

Гради Буч

Page 59: Проектирование больших ИС в Agile

59 из 82«Проектирование больших ИС в Agile»

А в качестве

граф. нотации –

UML

в режиме эскизного

проектирования:

Page 60: Проектирование больших ИС в Agile

60 из 82«Проектирование больших ИС в Agile»

Способыиспользования

UML

ЭСКИЗИРОВАНИЕ

(набросок от руки)

Проектирование

(чертеж)

Программирование

(граф.представление кода)

Граф

ическая

нотация

Метам

одель

FDD, DDD,Фаулер

Executable UML, MDA, PIM

Page 61: Проектирование больших ИС в Agile

61 из 82«Проектирование больших ИС в Agile»

Документирование

Бизнес-анализ

(анализ требований)

Системнаяархитектура

(проектирование)

Модель предметной области;Словарь терминов

Понятия изпредметной области

Модель программы;Понимание чужого кода

Представление конструкций языка.Ограничения по приемам проектирования

Движение слева направо по мере уточнения, детализации и реализации

Page 62: Проектирование больших ИС в Agile

62 из 82«Проектирование больших ИС в Agile»

Наиболее востребованные виды диаграмм

Page 63: Проектирование больших ИС в Agile

63 из 82«Проектирование больших ИС в Agile»

Класс(class)

Наследование(inheritance)

Свойство(property)

Метод(method)

Ссылка, связь(reference, link)

Сущность(entity)

Обобщение(generalization)

Атрибут(attribute)

Операция(operation)

Ассоциация(association)

Фун

кцио

нальн

ость

(fea

ture

)

ПО Предметнаяобласть

Нюансы терминологии:

Page 64: Проектирование больших ИС в Agile

64 из 82«Проектирование больших ИС в Agile»

Пример:

система продажи

билетов на самолет

Page 65: Проектирование больших ИС в Agile

65 из 82«Проектирование больших ИС в Agile»

•Эксперт: Есть аэропорты. Для каждого известны:название на местом языке,уникальный латинский коди GPS-координаты.

•Мы:

Page 66: Проектирование больших ИС в Agile

66 из 82«Проектирование больших ИС в Agile»

•Эксперт: Аэропорты расположены в городах.Для каждого города известно егоназвание (на местном и англ. языках). Причем известно расстояние от аэропортадо центра города, к которому он «приписан».

•Мы:

Page 67: Проектирование больших ИС в Agile

67 из 82«Проектирование больших ИС в Agile»

•Эксперт: Для каждого города есть информацияо стране, в которой он находится.

•Мы:

Page 68: Проектирование больших ИС в Agile

68 из 82«Проектирование больших ИС в Agile»

… (продолжение придумайте сами)

Page 69: Проектирование больших ИС в Agile

69 из 82«Проектирование больших ИС в Agile»

Бонус:

между делом получили

готовый

словарь терминов

Page 70: Проектирование больших ИС в Agile

РЕАЛИЗАЦИЯ МОДЕЛИ

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

Соответствие концепций

Ментальная модель

70 из 82«Проектирование больших ИС в Agile»

Page 71: Проектирование больших ИС в Agile

71 из 82«Проектирование больших ИС в Agile»

Page 72: Проектирование больших ИС в Agile

72 из 82«Проектирование больших ИС в Agile»

Бизнес-логика:

Page 73: Проектирование больших ИС в Agile

73 из 82«Проектирование больших ИС в Agile»

[Реляционное] хранение:

СУБД Модель ОО-язык

таблица сущность класс

поле атрибут свойство

FK cвязь ссылка

хранимаяпроцедура

действие метод

Page 74: Проектирование больших ИС в Agile

74 из 82«Проектирование больших ИС в Agile»

GUI:Словарь терминов

и ментальная модель

Page 75: Проектирование больших ИС в Agile

ЗАКЛЮЧЕНИЕ

Must Read

Притча

75 из 82«Проектирование больших ИС в Agile»

Page 76: Проектирование больших ИС в Agile

76 из 82«Проектирование больших ИС в Agile»

Must Read:

Page 77: Проектирование больших ИС в Agile

77 из 82«Проектирование больших ИС в Agile»

Анекдот-притча:

Page 78: Проектирование больших ИС в Agile

78 из 82«Проектирование больших ИС в Agile»

- Подайте мне то!- Подайте мне сѐ!- То у вас не так!

- И сѐ у вас не эдак!

Page 79: Проектирование больших ИС в Agile

79 из 82«Проектирование больших ИС в Agile»

- Значит черным всѐ можно…- А рыжим значит нет?!

- А ну-ка, и мне подайте то!- И сѐ тоже! И побыстрее!- А то ишь, какие капуши!..

Page 80: Проектирование больших ИС в Agile

80 из 82«Проектирование больших ИС в Agile»

Экипаж не выдержали выкинул нахалок

из самолета

- Ты летать-то хоть умеешь?

- Не-е-е-ет!

- Что же ты, кума, тогда

выделывалась?!

Page 81: Проектирование больших ИС в Agile

81 из 82«Проектирование больших ИС в Agile»

Мораль

Если не умеете летать, т.е. не владеете такими важными

практиками как ОО-моделирование, DDD и элементы UP, то и нечего «выделываться», т.е. пытаться

применить Agile в проектах по созданию больших информационных систем (разобьетесь, да и только).

Page 82: Проектирование больших ИС в Agile

СПАСИБО ЗА ВНИМАНИЕ!ВОПРОСЫ?

[email protected]

http://team.custis.ru

82 из 82«Проектирование больших ИС в Agile»