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

Post on 30-Oct-2014

4.020 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

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

в 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

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 в проектах по созданию больших информационных систем (разобьетесь, да и только).

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

andrew@custis.ru

http://team.custis.ru

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

top related