Your SlideShare is downloading. ×
  • Like
Проектирование больших ИС в Agile
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

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

  • 2,651 views
Published

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

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

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
2,651
On SlideShare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
92
Comments
1
Likes
7

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Проектирование больших информационных систем в Agile Бибичев Андрей 2009 год, октябрь team.custis.ru
  • 2.  Большой водопад Восприятие инкрементального дизайна Разрыв шаблона ВВЕДЕНИЕ «Проектирование больших ИС в Agile» 2 из 82
  • 3. Разработка больших систем стойко ассоциируется с водопадным процессом: «Проектирование больших ИС в Agile» 3 из 82
  • 4. «Проектирование больших ИС в Agile» 4 из 82
  • 5. Но Agile-агитаторы приводят статистику по успешности окончания водопадных проектов: «Проектирование больших ИС в Agile» 5 из 82
  • 6. «Проектирование больших ИС в Agile» 6 из 82
  • 7. И взамен предлагают инкрементальный дизайн: «Проектирование больших ИС в Agile» 7 из 82
  • 8. «Проектирование больших ИС в Agile» 8 из 82
  • 9. Однако, не говорят как при этом избежать вот такого: «Проектирование больших ИС в Agile» 9 из 82
  • 10. «Проектирование больших ИС в Agile» 10 из 82
  • 11. В народном творчестве это находит свое отражение: «Проектирование больших ИС в Agile» 11 из 82
  • 12. http://thekonst.net/ru/propaganda/291 «Проектирование больших ИС в Agile» 12 из 82
  • 13. Попробуем разорвать этот шаблон! «Проектирование больших ИС в Agile» 13 из 82
  • 14. «Проектирование больших ИС в Agile» 14 из 82
  • 15.  Проектирование Больших Информационных систем Agile ТЕРМИНОЛОГИЯ «Проектирование больших ИС в Agile» 15 из 82
  • 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
  • 23. Agile http://agilemanifesto.org/principles.html «Проектирование больших ИС в Agile» 23 из 82
  • 24. Agile Нам важно в данном контексте: Невысокая цена поздних внесений изменений в начальные требования Максимальная вовлеченность самих разработчиков в процесс проектирования и дизайна системы Минималистичная документация (Agile-спецификации и т.п.) Программный код, из которого легко понять основные проектные решения «Проектирование больших ИС в Agile» 24 из 82
  • 25.  TDD/FDD/DDD/MDD/AsDD Проектирование в Scrum / XP / FDD / OpenUP DDD *DD-ЗООПАРК «Проектирование больших ИС в Agile» 25 из 82
  • 26. Итак, нужно обуздать экспоненциальный рост сложности при росте объема функционала: «Проектирование больших ИС в Agile» 26 из 82
  • 27. «Проектирование больших ИС в Agile» 27 из 82
  • 28. Что в мире Agile есть на тему проектирования, т.е. Design-а: «Проектирование больших ИС в Agile» 28 из 82
  • 29. TDD Test-Driven Development «Проектирование больших ИС в Agile» 29 из 82
  • 30. FDD Feature-Driven Development «Проектирование больших ИС в Agile» 30 из 82
  • 31. DDD Domain-Driven Design Eric Evans http://www.infoq.com/minibooks/domain-driven-design-quickly «Проектирование больших ИС в Agile» 31 из 82
  • 32. MDD [Agile] Model-Driven Development/Design «Проектирование больших ИС в Agile» 32 из 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
  • 40. «Проектирование больших ИС в Agile» 40 из 82
  • 41. Явно не хватает общего наброска: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? «Проектирование больших ИС в Agile» 41 из 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
  • 46. «Проектирование больших ИС в Agile» 46 из 82
  • 47. The last, but not the least: «Проектирование больших ИС в Agile» 47 из 82
  • 48. DDD: Не процесс – подход Напрямую не связан ни с одним процессом, но зародился именно в Agile-сообществе Грубо говоря, это Agile-наследник MDD и MDA «Проектирование больших ИС в Agile» 48 из 82
  • 49.  ООП UML Пример Словарь терминов МОДЕЛЬ ПРЕДМЕТНОЙ ОБЛАСТИ (DOMAIN MODEL) «Проектирование больших ИС в Agile» 49 из 82
  • 50. Итак, центральный элемент при проектировании – Модель предметной области aka Domain Model «Проектирование больших ИС в Agile» 50 из 82
  • 51. «Проектирование больших ИС в Agile» 51 из 82
  • 52. Модель – это упрощенное Простота != Примитивная приближение реальности. Максимально простое, при условии достаточной близости к действительности. «Проектирование больших ИС в Agile» 52 из 82
  • 53. В разных условиях адекватными могут оказаться принципиально разные модели (для одной и той же области): «Проектирование больших ИС в Agile» 53 из 82
  • 54. Свет: корпускулярно-волновой дуализм «Проектирование больших ИС в Agile» 54 из 82
  • 55. Ведет себя как волна: поляризация, дифракция, … «Проектирование больших ИС в Agile» 55 из 82
  • 56. Но вот в фотоэффекте – как поток частиц «Проектирование больших ИС в Agile» 56 из 82
  • 57. В физике в качестве формализма для моделей используют мат.аппарат, а в программировании уже лет 20 - ООП: «Проектирование больших ИС в Agile» 57 из 82
  • 58. Гради Буч «Проектирование больших ИС в Agile» 58 из 82
  • 59. А в качестве граф. нотации – UML в режиме эскизного проектирования: «Проектирование больших ИС в Agile» 59 из 82
  • 60. FDD, DDD, Графическая Фаулер нотация ЭСКИЗИРОВАНИЕ (набросок от руки) Способы Проектирование использования (чертеж) UML Метамодель Программирование (граф.представление кода) Executable UML, MDA, PIM «Проектирование больших ИС в Agile» 60 из 82
  • 61. Модель предметной области; Модель программы; Словарь терминов Понимание чужого кода Системная Бизнес-анализ архитектура (анализ требований) (проектирование) Документирование Понятия из Представление конструкций языка. предметной области Ограничения по приемам проектирования Движение слева направо по мере уточнения, детализации и реализации «Проектирование больших ИС в Agile» 61 из 82
  • 62. Наиболее востребованные виды диаграмм «Проектирование больших ИС в Agile» 62 из 82
  • 63. Нюансы терминологии:  Класс  Сущность (class) (entity)  Наследование  Обобщение (inheritance) (generalization) Функциональность  Свойство  Атрибут (feature) (property) (attribute)  Метод  Операция (method) (operation)  Ссылка, связь  Ассоциация (reference, link) (association) ПО Предметная область «Проектирование больших ИС в Agile» 63 из 82
  • 64. Пример: система продажи билетов на самолет «Проектирование больших ИС в Agile» 64 из 82
  • 65. • Эксперт: Есть аэропорты. Для каждого известны: название на местом языке, уникальный латинский код и GPS-координаты. • Мы: «Проектирование больших ИС в Agile» 65 из 82
  • 66. • Эксперт: Аэропорты расположены в городах. Для каждого города известно его название (на местном и англ. языках). Причем известно расстояние от аэропорта до центра города, к которому он «приписан». • Мы: «Проектирование больших ИС в Agile» 66 из 82
  • 67. • Эксперт: Для каждого города есть информация о стране, в которой он находится. • Мы: «Проектирование больших ИС в Agile» 67 из 82
  • 68. … (продолжение придумайте сами) «Проектирование больших ИС в Agile» 68 из 82
  • 69. Бонус: между делом получили готовый словарь терминов «Проектирование больших ИС в Agile» 69 из 82
  • 70.  Ключевой момент Соответствие концепций Ментальная модель РЕАЛИЗАЦИЯ МОДЕЛИ «Проектирование больших ИС в Agile» 70 из 82
  • 71. «Проектирование больших ИС в Agile» 71 из 82
  • 72. Бизнес-логика: «Проектирование больших ИС в Agile» 72 из 82
  • 73. [Реляционное] хранение: СУБД  Модель  ОО-язык таблица сущность класс поле атрибут свойство FK cвязь ссылка хранимая действие метод процедура «Проектирование больших ИС в Agile» 73 из 82
  • 74. GUI: Словарь терминов и ментальная модель «Проектирование больших ИС в Agile» 74 из 82
  • 75.  Must Read Притча ЗАКЛЮЧЕНИЕ «Проектирование больших ИС в Agile» 75 из 82
  • 76. Must Read: «Проектирование больших ИС в Agile» 76 из 82
  • 77. Анекдот-притча: «Проектирование больших ИС в Agile» 77 из 82
  • 78. - Подайте мне то! - Подайте мне сѐ! - То у вас не так! - И сѐ у вас не эдак! «Проектирование больших ИС в Agile» 78 из 82
  • 79. - Значит черным всѐ можно… - А рыжим значит нет?! - А ну-ка, и мне подайте то! - И сѐ тоже! И побыстрее! - А то ишь, какие капуши!.. «Проектирование больших ИС в Agile» 79 из 82
  • 80. Экипаж не выдержал и выкинул нахалок из самолета - Ты летать-то хоть умеешь? - Не-е-е-ет! - Что же ты, кума, тогда выделывалась?! «Проектирование больших ИС в Agile» 80 из 82
  • 81. Мораль Если не умеете летать, т.е. не владеете такими важными практиками как ОО-моделирование, DDD и элементы UP, то и нечего «выделываться», т.е. пытаться применить Agile в проектах по созданию больших информационных систем (разобьетесь, да и только). «Проектирование больших ИС в Agile» 81 из 82
  • 82.  andrew@custis.ru http://team.custis.ru СПАСИБО ЗА ВНИМАНИЕ! ВОПРОСЫ? «Проектирование больших ИС в Agile» 82 из 82