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

Like this? Share it with your network

Share

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

on

  • 3,966 views

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

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

Statistics

Views

Total Views
3,966
Views on SlideShare
3,950
Embed Views
16

Actions

Likes
6
Downloads
87
Comments
1

1 Embed 16

http://www.slideshare.net 16

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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