• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Проектирование больших ИС в Agile
 

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

on

  • 3,666 views

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

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

Statistics

Views

Total Views
3,666
Views on SlideShare
3,650
Embed Views
16

Actions

Likes
6
Downloads
82
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

11 of 1 previous next

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

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

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