SlideShare une entreprise Scribd logo
1  sur  103
Télécharger pour lire hors ligne
FDD & DDD
 Бибичев Андрей
   декабрь 2009 г.
I. Преамбула
Самая ценная часть доклада :)
ДЮДЮКИ:
                     Самая известная


TDD
Test-Driven Development
                        практика




                                  Нынче очень модное
                              направление проектирования


      DDD                                                          Сменщик

           Test-Driven Design              BDD                       TDD


                                             Behaviour-Driven Development
                    Одна из самых
                     навороченных
FDD                Agile-методологий
                                              VDD
                                                               Как затуманить
                                                               заказчику мозги
Feature-Driven Development
                                                  Value-Driven Development
Зачем?
Всё дело в том, что

                    удобрение
Scrum – это дерьмо
                а
                        плодородная
                           почва
Scrum-команда – это чернозем
Scrum-команда
Поэтому:


  внедрив Scrum,
мы обычно думаем,
что теперь всё будет
 хорошо само собой
 цвести и пахнуть
Product Owner
Но



   в действительности

проблемы только начинаются
     растет бурьян
Архитектор
потрудился…
И



если ничего не делать, то

 команда разваливается
   почва истощается
Рука HR-а
Или



   всё скатывается к

       Code-&-Fix
копанию в земле по локоть
Аналитик
Контроль
качества
                      Архитектор
           Менеджер
Итак,



      оказывается еще нужны
что выращивать       как выращивать



 идеи и тех. практики и приемы
            семяна и техника
Прибыльный проект


Обратите внимание на
слоистую архитектуру
RUP
Шо, опять механизация?
Lean


                              Agile


Do                          Итеративные процессы
Whatever
(0)

   Code    Kanban Scrum            XP                  RUP
    -&-      (3)    (9)           (13)               (120+)
    Fix
    (1)

                Pull-загрузка задачами


                    (с) «Процессная ось» имени Хенрика Книберга
• Architecture Reviewer / • Business Designer / • Business-Model Reviewer / • Business-Process Analyst
 / • Capsule Designer / • Change Control Manager / • Code Reviewer / • Configuration Manager / • Course
  Developer / • Database Designer / • Deployment Manager / • Design Reviewer / • Designer / • Graphic
 Artist / • Implementer / • Integrator / • Process Engineer / • Project Manager / • Project Reviewer / •
  Requirements Reviewer / • Requirements Specifier / • Software Architect / • Stakeholder / • System
      Administrator / • System Analyst / • Technical Writer / • Test Analyst / • Test Designer / • Test
 Manager / • Tester / • Tool Specialist / • User-Interface Designer / • Architectural analysis / • Assess
Viability of architectural proof-of-concept / • Capsule design / • Class design / • Construct architectural
proof-ofconcept / • Database design / • Describe distribution / • Describe the run-time architecture / •
   Design test packages and classes / • Develop design guidelines / • Develop programming guidelines / •
 Identify design elements / • Identify design mechanisms / • Incorporate design elements / • Prioritize
 use cases / • Review the architecture / • Review the design / • Structure the implementation model / •
  Subsystem design / • Use-case analysis / • Use-case design / • Analysis model / • Architectural proof-
       of-concept / • Bill of materials / • Business architecture document / • Business case / • Business
   glossary / • Business modeling guidelines / • Business object model / • Business rules / • Business use
case / • Business use case realization / • Business use-case model / • Business vision / • Change request /
• Configuration audit findings / • Configuration management plan / • Data model / • Deployment model / •
        Deployment plan / • Design guidelines / • Design model / • Development case / • Development-
       organization assessment / • End-user support material / • Glossary / • Implementation model / •
Installation artifacts / • Integration build plan / • Issues list / • Iteration assessment / • Iteration plan
 / • Manual styleguide / • Programming guidelines / • Quality assurance plan / • Reference architecture /
• Release notes / • Requirements attributes / • Requirements management plan / • Review record / • Risk
    list / • Risk management plan / • Software architecture document / • Software development plan / •
Software requirements specification / • Stakeholder requests / • Status assessment / • Supplementary
     business specification / • Supplementary specification / • Target organization assessment / • Test
automation architecture / • Test cases / • Test environment configuration / • Test evaluation summary /
  • Test guidelines / • Test ideas list / • Test interface specification / • Test plan / • Test suite / • Tool
        guidelines / • Training materials / • Use case model / • Use case package / • Use-case modeling
      guidelines / • Use-case realization / • Use-case storyboard / • User-interface guidelines / • User-
                   interface prototype / • Vision / • Work order / • Workload analysis model
погибче
Нам бы чего попроще !
II. FDD
Feature-Driven Development
История
   1997 год: проект для большого сингапурского банка
       длительность: 15 месяцев
       команда: 50 чел
       Jeff De Luca
       под влиянием подхода Peter Coad-а к моделированию бизнес-процессов


    Интересные факты из биографии:
    • родился в 1964 году
    • в 1981 году в возрасте 17-ти лет бросил школу и пошел
    работать в IBM
    • быстро стал системным инженером, так и не получив
    высшего образования (самоучка)
    • в 1993 ушел из IBM (с должности системного стратега)
    и организовал собственную компанию
    • в 1995-1999 гг. выполнил полный реинжениринг
    автоматизации крупного сингапурского банка
А XP родилось на
маленьком in-house
 проекте, который
 кончился fail-ом…
Ну и что! Scrum вообще
      предлагает
 противоестественное
масштабирование при
        помощи
    Scrum-of-Scrum
История
   1999 год: книга «Java Modeling in Color With UML»
       один из соавторов книги – Jeff De Luca (вместе с Peter Coad и Eric
        Lefebvre)
       в 6-ой главе было дано краткое описание FDD
Всего одна глава!
Так – между делом…
    По Scrum & XP
 пришлось написать
  куда больше книг.
История
   2002 год: книга «A Practical Guide To Feature-Driven
    Development»
       Stephen Palmer, Mac Felsing
Автор продолжил
заниматься делом, а
 не исключительно
   личным PR-ом…
Шикарный подкаст на 40 минут
Feature
Шаблон именования Feature (функции):
<действие> <результат> <кем|чем|чего|для|к> <объект>
            <action> the <result> <by|for|of|to> a(n) <object>

Примеры:
   Вычислить суммарный объем продаж
   Calculate the total amount of a Sale

   Определить последнее изменение наличных в кассе для кассира
   Determine the most recent Cash Register Assignment for a Cashier


Всегда в терминологии предметной области!
Должна быть понятна значимость для бизнеса
Очень похоже на
      User Story,
 но нет необходимости
изобретать персонажи…
Конечно! Каждый считает
своим долгом предложить
    свой формат для
 требований. Ладно хоть
     Scrum от этого
      удержался...
Группировка
   Область (Major Feature Set, Subject Area) АРМ Кассира
      Набор (Feature Set, Activity)          Оплата товара
         Функция (Feature)                 Снять деньги с карточки
Дык, это же полный
 аналог Themes и Epics
при работе с User Stories
Требования к Feature List
 Каждая   feature должна быть простой
 Каждая feature должна быть ценна
  (хотя бы понятна) заказчику
 Каждая feature должна быть
  проверяема
 Каждый feature set может быть
  закреплен за ведущим разработчиком
  (Chief Developer)
 Feature List должен быть коротким
  (на столько, на сколько возможно)
Да-да, узнаю старый
    добрый INVEST:
Independent, Negotiable,
   Valuable, Estimable,
     Small, Testable
Схема процесса
 Разработка            Составление              Планирование
 общей модели          списка функций



                        Список функций        План разработки
                        (Feature list)        (A development plan)




                                              1 – 3 недели
                                  Design by              Build by feature
Диаграмма классов                 feature
предметной области



                                              Отгрузка!
Вау! Здесь есть
    начальная фаза
       проекта!!!
Чувствуется, что автор из
         IBM…
Процесс по шагам 1:
                          создание общей модели
42

    Участвуют:
        Главный архитектор
        Ведущие разработчики (Chief Developers)
        Эксперты в предметной области


    Подготовка к созданию:
        Выслушивают эксперта в предметной области
        По необходимости изучают документы
        Обсуждения между собой
Наконец-то
  знакомые роли!
Архитектор, ведущий
разработчик – и снова
   здравствуйте 
Процесс по шагам 1:
                         создание общей модели
44

    Создание модели:
        Обязательно разбиваются на небольшие группы
        Каждая группа создает свою модель (диаграмму классов)
        После этого собираются все вместе, обсуждают различия,
         выбирают/формируют итоговые решения


    В результате:
        Диаграмма классов (без детализации)
        Комментарии почему выбрано такое решение,
         альтернативные решения
UML и создание
  «конкурирующих»
  моделей – мне это
определенно нравится!
Тоже мне, открыли
    Америку – всё это
  известно со времен
      Model-Driven
Development/Architecture
      (MDD/MDA)
Процесс по шагам 2:
                  формирование Feature List
47


    Участвуют:
        Как и при формировании общей модели


    В результате:
        Feature List,
         сгруппированный в наборы (Feature Set),
         разделенные по областям (Subject Area)
Интересно, а как потом
учитываются изменения
в требованиях и сколько
   сил на это уходит?
Процесс по шагам 3:
                                 планирование
49

    Основания для планирования:
        Наборы функций – итерации
        Последовательность итераций определяется исходя из:
              взаимосвязи функций с точки зрения реализации
              сложности набора функций
              наличия рисков при реализации функций
              равномерное распределение загрузки разработчиков

    Участвуют:
        Руководитель проекта
        Ведущие разработчики
    В результате:
        График реализации наборов функций (Набор – дата)
        Ведущие программисты, закрепленные за наборами (Набор – ответственный)
        Всем классам назначены владельцы (Класс – владелец)
Что-то это уже
 конкретно попахивает
      водопадом…
 Да еще персональное
владение кодом… Бррр
Скажи спасибо, что хоть
   диаграммы Ганта
    строить не надо
Для тех, кто успел забыть
                  схему процесса:
 Разработка          Составление             Планирование
 общей модели        списка функций



                     Список функций        План разработки
                     (Feature list)        (A development plan)




                                           1 – 3 недели
                               Design by              Build by feature
Диаграмма классов              feature
предметной области



                                           Отгрузка!
Процесс по шагам 4:
                                 Design by feature
53

    Задачи:
        Формирование команд на итерацию
              ведущие разработчики динамически формируют команды на итерацию
              исходя из того, какие классы затрагивает реализация заданного набора функций
               (берутся их владельцы)
              обычно команды не большие (около 5 человек)
     (to be continued)
Динамическое
формирование команд на
   итерацию – класс!
          А то:
 «слаженная команда –
   это очень ценно»…
        Так их! 
Процесс по шагам 4:
                            Design by feature
55
    Задачи:
     (продолжение)
        Обзор затрагиваемой предметной области
        Изучение необходимых документов
        Составление диаграмм взаимодействия
        Уточнение и детализация соответствующей
         части диаграммы классов
        Написание заголовков методов


    В результате:
        Краткое описание набора функций, дополнительные комментарии
        Диаграммы взаимодействия
        Объектная модель (уточнения, исправления), заголовки классов
        Задания (To Do) в системе ведения дел для каждого участника команды
Вот! Спецификация API и
персональное назначение
 задач – сразу чувствуется
 старая школа! И никаких,
  понимаешь, соплей про
самоорганизацию и кросс-
    функциональность…
Процесс по шагам 5:
                                 Build by feature
57

    Задачи:
        Реализация классов и методов
        Code Inspection (Code Review)
              до unit-тестирования!
              самой командой или даже другой (по решению ведущего программиста)
        Unit-тестирование
              тесты на класс пишет сам владелец класса
        Интеграция (Promote to Build)
        Уточнение и детализация соответствующей части диаграммы классов


    В результате:
        Проинспектированные классы и методы
        Классы, допущенные в основной ствол проекта
        Реализованная функциональность, понятная заказчику (client-valued features)
Супер: вместо парного
  программирования – Code
 Inspection/Review; а вместо
мантры «Red-Green-Refactor»
   – просто написание Unit-
     тестов (причем после
         реализации).
Ну и правильно! Всё равно
  опросы общественного
 мнения показывают, что в
 парах мало кто кодит, да и
тесты до реализации писать
дико – некомпилится ведь!
Важный нюанс
• в FDD нет жесткого time-boxing-а итерации:
  – итерация не заканчивается, пока все взятые в
    неё feature-и не доделают
  – т.е. недоделанные feature-и не перетекают в
    следующую итерацию – их дожимают в
    текущей, растягивая оную
Разумно, но что они при
 этом делают со своим
   план-графиком?...
Отслеживание хода процесса
62   Стандартная пропорция:
 Обзор         Детализация   Инспекция   Кодирование   Инспекция   Интеграция
 модели        модели        дизайна                   кода
               (дизайн)
 1%            40%           3%          45%           10%         1%


     За счет этого ведется графическое отображение хода выполнения:
Отслеживание хода процесса:
                       для всего проекта
63


     Области




     Наборы
     функций
Эта штука посильнее
     будет всяких
Burn-down-ов и –up-ов:
и бизнесам показать не
  стыдно, и на конфе
      козырнуть.
Уровень процессов

Управление
проектами        SCRUM             Индикация
                                   прогресса

Управление
проектом       Самоорг. команда,   Перечень
               Daily Meetings      требований,
                                   Итерации
                                   Unit-тесты,         FDD
                                   Стандарт
                                   кодирования,
Кодирование       XP               Cont. Integration
                                                                Жесткость
                                                                процессов
     Анархия                                                 Водопад




--------- Как некий итог ---------
III. DDD
Domain-Driven Design
История
                            2004 год
                            Eric Evans
«Domain-Driven Design - Tackling Complexity in the Heart of Software»
Domain (словарь)
• наследственная собственность; имение,
  поместье; земли; владение         e.g. DNS
• территория, зона, область, район
  (отмеченные некоторыми физическими
  особенностями)
• сфера (интересов), поле (деятельности),
  область (знаний)             В данном случае
                                   этот смысл
• область определения (мат.)
                                Домен поля
                               таблицы в БД
Т.е. это о


Business Domain
   Предметной области
        и


 Business Logic
            Бизнес-логики
«Attention was diverted away
from rich logic and deep solutions,
because there was so much value
in just getting data onto the web,
along with very simple behavior.

But now that basic level of web
usage has largely been
assimilated, and projects are
starting to get more ambitious
again about business logic.»
Еще раз вспомним про FDD:

Разработка           Составление             Планирование
общей модели         списка функций



                     Список функций        План разработки
                     (Feature list)        (A development plan)




                                           1 – 3 недели
                               Design by              Build by feature
Диаграмма классов              feature
предметной области


                                           Отгрузка!
Центральная роль в
   мышлении,
 проектировании,
   реализации
                     DDD
Пример: есть сайт конференции,
надо сделать голосование за доклад
О чем вы прежде всего
   начнете думать?




                  
О чем вы прежде всего
     начнете думать?




votes
                      
О чем вы прежде всего
   начнете думать?




                        
О чем вы прежде всего
   начнете думать?




                        
/
Три аспекта DDD
Внимание! Очень важно!

Компоненты нижележащего слоя
     не должны зависеть от
  компонентов вышележащего
  ни при каких обстоятельствах
!!!
Постоянно себя спрашивайте:
 можно ли, используя public API доменной
      модели, нарушить целостность,
согласованность и консистентность данных?
Хоцца «аналогов» SQL и xxxMyAdmin
но для компонентов DomainModel, а не СУБД
Этому посвящен
значительный объем
 всех книг, поэтому
здесь мы пропустим
Используете ORM                 =>        У вас DDD
                               !!!
          http://www.martinfowler.com/bliki/AnemicDomainModel.html




    Hibernate           Ruby on Rails
По идее, всё нацелено на достаточно сложные модели:




     Но на практике эффективно используется
      и для несложных предметных областей
http://www.infoq.com/
presentations/rebuild-guardian-ddd-wills
http://www.infoq.com/
presentations/rebuild-guardian-ddd-wills
http://www.infoq.com/
presentations/rebuild-guardian-ddd-wills
IV. Заключение
  В стиле «Демотиваторы»
«На кой мне это всё?»
Есть Vision
                           и feedback




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

                            артефакты
На одном Scrum-е далеко не уедешь
Внедрение
  Scrum
            Не подумав вовремя
                об этом, вы
               действуете как
             кальсонные гномы
Спасибо за
        внимание!

                biBIGone@gmail.com
http://www.google.com/profiles/biBIGone

Contenu connexe

Tendances

Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem JavaUFPA
 
MS Project et le management de projet
MS Project et le management de projetMS Project et le management de projet
MS Project et le management de projetMichel Estève
 
Macro-planning ppt Gestion de projet Formation BGE Toulouse
Macro-planning ppt Gestion de projet Formation BGE ToulouseMacro-planning ppt Gestion de projet Formation BGE Toulouse
Macro-planning ppt Gestion de projet Formation BGE ToulouseChristophe PARIS
 
Graphql - o que é, onde e porque usar?
Graphql - o que é, onde e porque usar?Graphql - o que é, onde e porque usar?
Graphql - o que é, onde e porque usar?Paula Santana
 
Atelier1 mise en place d’odoo
Atelier1   mise en place d’odooAtelier1   mise en place d’odoo
Atelier1 mise en place d’odooAbdelouahed Abdou
 
Testes de regressão automatizados
Testes de regressão automatizadosTestes de regressão automatizados
Testes de regressão automatizadosCristian R. Silva
 
Syntaxe concrète des DSL en IDM [avec Xtext]
Syntaxe concrète des DSL en IDM [avec Xtext]Syntaxe concrète des DSL en IDM [avec Xtext]
Syntaxe concrète des DSL en IDM [avec Xtext]Olivier Le Goaër
 
Présentation Ionic Framework
Présentation Ionic FrameworkPrésentation Ionic Framework
Présentation Ionic FrameworkNdongo Samb
 
Processos e threads
Processos e threadsProcessos e threads
Processos e threadsSilvino Neto
 
Génie Logiciel.pptx
Génie Logiciel.pptxGénie Logiciel.pptx
Génie Logiciel.pptxLatifaBen6
 
Diagrama de Processos PMBOK 4 Ed
Diagrama de Processos PMBOK 4 EdDiagrama de Processos PMBOK 4 Ed
Diagrama de Processos PMBOK 4 EdGabriel Kaio
 
Exercice 2 java Héritage
Exercice 2  java HéritageExercice 2  java Héritage
Exercice 2 java HéritageNadaBenLatifa
 

Tendances (20)

Pmi
PmiPmi
Pmi
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem Java
 
Modele a3 toyota
Modele a3 toyotaModele a3 toyota
Modele a3 toyota
 
MS Project et le management de projet
MS Project et le management de projetMS Project et le management de projet
MS Project et le management de projet
 
Macro-planning ppt Gestion de projet Formation BGE Toulouse
Macro-planning ppt Gestion de projet Formation BGE ToulouseMacro-planning ppt Gestion de projet Formation BGE Toulouse
Macro-planning ppt Gestion de projet Formation BGE Toulouse
 
Stratégie entreprise cegos
Stratégie entreprise cegosStratégie entreprise cegos
Stratégie entreprise cegos
 
Management des coûts
Management des coûtsManagement des coûts
Management des coûts
 
Graphql - o que é, onde e porque usar?
Graphql - o que é, onde e porque usar?Graphql - o que é, onde e porque usar?
Graphql - o que é, onde e porque usar?
 
Atelier1 mise en place d’odoo
Atelier1   mise en place d’odooAtelier1   mise en place d’odoo
Atelier1 mise en place d’odoo
 
Testes de regressão automatizados
Testes de regressão automatizadosTestes de regressão automatizados
Testes de regressão automatizados
 
Fdd
FddFdd
Fdd
 
Introduction gestion de projet
Introduction gestion de projetIntroduction gestion de projet
Introduction gestion de projet
 
Apresentação fdd
Apresentação fddApresentação fdd
Apresentação fdd
 
Syntaxe concrète des DSL en IDM [avec Xtext]
Syntaxe concrète des DSL en IDM [avec Xtext]Syntaxe concrète des DSL en IDM [avec Xtext]
Syntaxe concrète des DSL en IDM [avec Xtext]
 
Présentation Ionic Framework
Présentation Ionic FrameworkPrésentation Ionic Framework
Présentation Ionic Framework
 
Bugzilla
BugzillaBugzilla
Bugzilla
 
Processos e threads
Processos e threadsProcessos e threads
Processos e threads
 
Génie Logiciel.pptx
Génie Logiciel.pptxGénie Logiciel.pptx
Génie Logiciel.pptx
 
Diagrama de Processos PMBOK 4 Ed
Diagrama de Processos PMBOK 4 EdDiagrama de Processos PMBOK 4 Ed
Diagrama de Processos PMBOK 4 Ed
 
Exercice 2 java Héritage
Exercice 2  java HéritageExercice 2  java Héritage
Exercice 2 java Héritage
 

Similaire à Обзор Feature-Driven Development и Domain-Driven Design

Практические аспекты разработки ПО #2
Практические аспекты разработки ПО #2Практические аспекты разработки ПО #2
Практические аспекты разработки ПО #2Denis Umnov
 
Nfilippov. Something About Agile
Nfilippov. Something About AgileNfilippov. Something About Agile
Nfilippov. Something About AgileNikita Filippov
 
Agile days `16 summary
Agile days `16 summaryAgile days `16 summary
Agile days `16 summaryAnton Zhukov
 
Управление разработкой продукта
Управление разработкой продуктаУправление разработкой продукта
Управление разработкой продуктаAlexey Filimonov
 
Способы создания качественного программного продукта
Способы создания качественного программного продуктаСпособы создания качественного программного продукта
Способы создания качественного программного продуктаIngria. Technopark St. Petersburg
 
Управление разработкой продукта
Управление разработкой продуктаУправление разработкой продукта
Управление разработкой продуктаAlexey Filimonov
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в ITSam Faktorovich
 
“Спецификация формы и поведения”. Саша Куценко, Aidem. (29.01.2014)
“Спецификация формы и поведения”. Саша Куценко, Aidem. (29.01.2014)“Спецификация формы и поведения”. Саша Куценко, Aidem. (29.01.2014)
“Спецификация формы и поведения”. Саша Куценко, Aidem. (29.01.2014)SPECIA
 
"Написание спецификации формы и поведения: зачем, кому и как." Саша Куценко ...
 "Написание спецификации формы и поведения: зачем, кому и как." Саша Куценко ... "Написание спецификации формы и поведения: зачем, кому и как." Саша Куценко ...
"Написание спецификации формы и поведения: зачем, кому и как." Саша Куценко ...Lead Zeppelin
 
Саша Куценко: "Cпецификация формы и поведения — зачем, кому и как?"
Саша Куценко: "Cпецификация формы и поведения — зачем, кому и как?"Саша Куценко: "Cпецификация формы и поведения — зачем, кому и как?"
Саша Куценко: "Cпецификация формы и поведения — зачем, кому и как?"Sasha Kutsenko
 
HR-ам об IT-специалистах
HR-ам об IT-специалистахHR-ам об IT-специалистах
HR-ам об IT-специалистахMargarita Fatina
 
Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...
Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...
Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...RIF-Technology
 
Дмитрий Лобасев - Что отличает крутую команду от крутой Agile-команды
Дмитрий Лобасев - Что отличает крутую команду от крутой Agile-командыДмитрий Лобасев - Что отличает крутую команду от крутой Agile-команды
Дмитрий Лобасев - Что отличает крутую команду от крутой Agile-командыITSpringBY
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в IT0leGG
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU
 
Система управления требованиями Devprom
Система управления требованиями DevpromСистема управления требованиями Devprom
Система управления требованиями DevpromEvgeny Savitsky
 
Методологии разработки по
Методологии разработки поМетодологии разработки по
Методологии разработки поJaneKozmina
 
лобасев 3 ключевых навыка успешной agile-команды
лобасев   3 ключевых навыка успешной agile-командылобасев   3 ключевых навыка успешной agile-команды
лобасев 3 ключевых навыка успешной agile-командыMagneta AI
 

Similaire à Обзор Feature-Driven Development и Domain-Driven Design (20)

Практические аспекты разработки ПО #2
Практические аспекты разработки ПО #2Практические аспекты разработки ПО #2
Практические аспекты разработки ПО #2
 
Nfilippov. Something About Agile
Nfilippov. Something About AgileNfilippov. Something About Agile
Nfilippov. Something About Agile
 
DDD Workshop
DDD WorkshopDDD Workshop
DDD Workshop
 
Agile days `16 summary
Agile days `16 summaryAgile days `16 summary
Agile days `16 summary
 
Управление разработкой продукта
Управление разработкой продуктаУправление разработкой продукта
Управление разработкой продукта
 
Способы создания качественного программного продукта
Способы создания качественного программного продуктаСпособы создания качественного программного продукта
Способы создания качественного программного продукта
 
Управление разработкой продукта
Управление разработкой продуктаУправление разработкой продукта
Управление разработкой продукта
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в IT
 
“Спецификация формы и поведения”. Саша Куценко, Aidem. (29.01.2014)
“Спецификация формы и поведения”. Саша Куценко, Aidem. (29.01.2014)“Спецификация формы и поведения”. Саша Куценко, Aidem. (29.01.2014)
“Спецификация формы и поведения”. Саша Куценко, Aidem. (29.01.2014)
 
"Написание спецификации формы и поведения: зачем, кому и как." Саша Куценко ...
 "Написание спецификации формы и поведения: зачем, кому и как." Саша Куценко ... "Написание спецификации формы и поведения: зачем, кому и как." Саша Куценко ...
"Написание спецификации формы и поведения: зачем, кому и как." Саша Куценко ...
 
Саша Куценко: "Cпецификация формы и поведения — зачем, кому и как?"
Саша Куценко: "Cпецификация формы и поведения — зачем, кому и как?"Саша Куценко: "Cпецификация формы и поведения — зачем, кому и как?"
Саша Куценко: "Cпецификация формы и поведения — зачем, кому и как?"
 
HR-ам об IT-специалистах
HR-ам об IT-специалистахHR-ам об IT-специалистах
HR-ам об IT-специалистах
 
Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...
Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...
Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...
 
Дмитрий Лобасев - Что отличает крутую команду от крутой Agile-команды
Дмитрий Лобасев - Что отличает крутую команду от крутой Agile-командыДмитрий Лобасев - Что отличает крутую команду от крутой Agile-команды
Дмитрий Лобасев - Что отличает крутую команду от крутой Agile-команды
 
Scrum framework
Scrum frameworkScrum framework
Scrum framework
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в IT
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
 
Система управления требованиями Devprom
Система управления требованиями DevpromСистема управления требованиями Devprom
Система управления требованиями Devprom
 
Методологии разработки по
Методологии разработки поМетодологии разработки по
Методологии разработки по
 
лобасев 3 ключевых навыка успешной agile-команды
лобасев   3 ключевых навыка успешной agile-командылобасев   3 ключевых навыка успешной agile-команды
лобасев 3 ключевых навыка успешной agile-команды
 

Plus de Andrey Bibichev

О usability водопроводных кранов
О usability водопроводных крановО usability водопроводных кранов
О usability водопроводных крановAndrey Bibichev
 
Geeks vs Managers (part 2)
Geeks vs Managers (part 2)Geeks vs Managers (part 2)
Geeks vs Managers (part 2)Andrey Bibichev
 
Быстрое введение в TDD от А до Я
Быстрое введение в TDD от А до ЯБыстрое введение в TDD от А до Я
Быстрое введение в TDD от А до ЯAndrey Bibichev
 
Фрактальная природа IT-проектов (блиц)
Фрактальная природа IT-проектов (блиц)Фрактальная природа IT-проектов (блиц)
Фрактальная природа IT-проектов (блиц)Andrey Bibichev
 
Usability-for-programmers
Usability-for-programmersUsability-for-programmers
Usability-for-programmersAndrey Bibichev
 
Natural User Interface (WUDRU-2011)
Natural User Interface (WUDRU-2011)Natural User Interface (WUDRU-2011)
Natural User Interface (WUDRU-2011)Andrey Bibichev
 
Архитектура в Agile: слабая связность
Архитектура в Agile: слабая связностьАрхитектура в Agile: слабая связность
Архитектура в Agile: слабая связностьAndrey Bibichev
 
Пользовательский автоматизм
Пользовательский автоматизмПользовательский автоматизм
Пользовательский автоматизмAndrey Bibichev
 
О текстовом вводе замолвите слово
О текстовом вводе замолвите словоО текстовом вводе замолвите слово
О текстовом вводе замолвите словоAndrey Bibichev
 
Проектирование больших ИС в Agile (статья)
Проектирование больших ИС в Agile (статья)Проектирование больших ИС в Agile (статья)
Проектирование больших ИС в Agile (статья)Andrey Bibichev
 
Проектирование больших ИС в Agile
Проектирование больших ИС в AgileПроектирование больших ИС в Agile
Проектирование больших ИС в AgileAndrey Bibichev
 
Enterprise Level Agile The Art Of Start
Enterprise Level Agile   The Art Of StartEnterprise Level Agile   The Art Of Start
Enterprise Level Agile The Art Of StartAndrey Bibichev
 
Humane Interface (Гуманный интерфейс)
Humane Interface (Гуманный интерфейс)Humane Interface (Гуманный интерфейс)
Humane Interface (Гуманный интерфейс)Andrey Bibichev
 

Plus de Andrey Bibichev (20)

О usability водопроводных кранов
О usability водопроводных крановО usability водопроводных кранов
О usability водопроводных кранов
 
Geeks vs Managers (part 2)
Geeks vs Managers (part 2)Geeks vs Managers (part 2)
Geeks vs Managers (part 2)
 
Быстрое введение в TDD от А до Я
Быстрое введение в TDD от А до ЯБыстрое введение в TDD от А до Я
Быстрое введение в TDD от А до Я
 
Фрактальная природа IT-проектов (блиц)
Фрактальная природа IT-проектов (блиц)Фрактальная природа IT-проектов (блиц)
Фрактальная природа IT-проектов (блиц)
 
Usability-for-programmers
Usability-for-programmersUsability-for-programmers
Usability-for-programmers
 
Geeks vs Managers
Geeks vs ManagersGeeks vs Managers
Geeks vs Managers
 
Tdd and decomposition
Tdd and decompositionTdd and decomposition
Tdd and decomposition
 
Mockist vs Classicist
Mockist vs ClassicistMockist vs Classicist
Mockist vs Classicist
 
Natural User Interface (WUDRU-2011)
Natural User Interface (WUDRU-2011)Natural User Interface (WUDRU-2011)
Natural User Interface (WUDRU-2011)
 
Puasson burning
Puasson burningPuasson burning
Puasson burning
 
Архитектура в Agile: слабая связность
Архитектура в Agile: слабая связностьАрхитектура в Agile: слабая связность
Архитектура в Agile: слабая связность
 
Пользовательский автоматизм
Пользовательский автоматизмПользовательский автоматизм
Пользовательский автоматизм
 
Augmented Reality
Augmented RealityAugmented Reality
Augmented Reality
 
Agile: Think different
Agile: Think differentAgile: Think different
Agile: Think different
 
BDD
BDDBDD
BDD
 
О текстовом вводе замолвите слово
О текстовом вводе замолвите словоО текстовом вводе замолвите слово
О текстовом вводе замолвите слово
 
Проектирование больших ИС в Agile (статья)
Проектирование больших ИС в Agile (статья)Проектирование больших ИС в Agile (статья)
Проектирование больших ИС в Agile (статья)
 
Проектирование больших ИС в Agile
Проектирование больших ИС в AgileПроектирование больших ИС в Agile
Проектирование больших ИС в Agile
 
Enterprise Level Agile The Art Of Start
Enterprise Level Agile   The Art Of StartEnterprise Level Agile   The Art Of Start
Enterprise Level Agile The Art Of Start
 
Humane Interface (Гуманный интерфейс)
Humane Interface (Гуманный интерфейс)Humane Interface (Гуманный интерфейс)
Humane Interface (Гуманный интерфейс)
 

Обзор Feature-Driven Development и Domain-Driven Design

  • 1. FDD & DDD Бибичев Андрей декабрь 2009 г.
  • 2. I. Преамбула Самая ценная часть доклада :)
  • 3.
  • 4. ДЮДЮКИ: Самая известная TDD Test-Driven Development практика Нынче очень модное направление проектирования DDD Сменщик Test-Driven Design BDD TDD Behaviour-Driven Development Одна из самых навороченных FDD Agile-методологий VDD Как затуманить заказчику мозги Feature-Driven Development Value-Driven Development
  • 6. Всё дело в том, что удобрение Scrum – это дерьмо а плодородная почва Scrum-команда – это чернозем
  • 8. Поэтому: внедрив Scrum, мы обычно думаем, что теперь всё будет хорошо само собой цвести и пахнуть
  • 10. Но в действительности проблемы только начинаются растет бурьян
  • 12. И если ничего не делать, то команда разваливается почва истощается
  • 14. Или всё скатывается к Code-&-Fix копанию в земле по локоть
  • 15. Аналитик Контроль качества Архитектор Менеджер
  • 16. Итак, оказывается еще нужны что выращивать как выращивать идеи и тех. практики и приемы семяна и техника
  • 17. Прибыльный проект Обратите внимание на слоистую архитектуру
  • 19. Lean Agile Do Итеративные процессы Whatever (0) Code Kanban Scrum XP RUP -&- (3) (9) (13) (120+) Fix (1) Pull-загрузка задачами (с) «Процессная ось» имени Хенрика Книберга
  • 20. • Architecture Reviewer / • Business Designer / • Business-Model Reviewer / • Business-Process Analyst / • Capsule Designer / • Change Control Manager / • Code Reviewer / • Configuration Manager / • Course Developer / • Database Designer / • Deployment Manager / • Design Reviewer / • Designer / • Graphic Artist / • Implementer / • Integrator / • Process Engineer / • Project Manager / • Project Reviewer / • Requirements Reviewer / • Requirements Specifier / • Software Architect / • Stakeholder / • System Administrator / • System Analyst / • Technical Writer / • Test Analyst / • Test Designer / • Test Manager / • Tester / • Tool Specialist / • User-Interface Designer / • Architectural analysis / • Assess Viability of architectural proof-of-concept / • Capsule design / • Class design / • Construct architectural proof-ofconcept / • Database design / • Describe distribution / • Describe the run-time architecture / • Design test packages and classes / • Develop design guidelines / • Develop programming guidelines / • Identify design elements / • Identify design mechanisms / • Incorporate design elements / • Prioritize use cases / • Review the architecture / • Review the design / • Structure the implementation model / • Subsystem design / • Use-case analysis / • Use-case design / • Analysis model / • Architectural proof- of-concept / • Bill of materials / • Business architecture document / • Business case / • Business glossary / • Business modeling guidelines / • Business object model / • Business rules / • Business use case / • Business use case realization / • Business use-case model / • Business vision / • Change request / • Configuration audit findings / • Configuration management plan / • Data model / • Deployment model / • Deployment plan / • Design guidelines / • Design model / • Development case / • Development- organization assessment / • End-user support material / • Glossary / • Implementation model / • Installation artifacts / • Integration build plan / • Issues list / • Iteration assessment / • Iteration plan / • Manual styleguide / • Programming guidelines / • Quality assurance plan / • Reference architecture / • Release notes / • Requirements attributes / • Requirements management plan / • Review record / • Risk list / • Risk management plan / • Software architecture document / • Software development plan / • Software requirements specification / • Stakeholder requests / • Status assessment / • Supplementary business specification / • Supplementary specification / • Target organization assessment / • Test automation architecture / • Test cases / • Test environment configuration / • Test evaluation summary / • Test guidelines / • Test ideas list / • Test interface specification / • Test plan / • Test suite / • Tool guidelines / • Training materials / • Use case model / • Use case package / • Use-case modeling guidelines / • Use-case realization / • Use-case storyboard / • User-interface guidelines / • User- interface prototype / • Vision / • Work order / • Workload analysis model
  • 21.
  • 23.
  • 25. История  1997 год: проект для большого сингапурского банка  длительность: 15 месяцев  команда: 50 чел  Jeff De Luca  под влиянием подхода Peter Coad-а к моделированию бизнес-процессов Интересные факты из биографии: • родился в 1964 году • в 1981 году в возрасте 17-ти лет бросил школу и пошел работать в IBM • быстро стал системным инженером, так и не получив высшего образования (самоучка) • в 1993 ушел из IBM (с должности системного стратега) и организовал собственную компанию • в 1995-1999 гг. выполнил полный реинжениринг автоматизации крупного сингапурского банка
  • 26. А XP родилось на маленьком in-house проекте, который кончился fail-ом…
  • 27. Ну и что! Scrum вообще предлагает противоестественное масштабирование при помощи Scrum-of-Scrum
  • 28. История  1999 год: книга «Java Modeling in Color With UML»  один из соавторов книги – Jeff De Luca (вместе с Peter Coad и Eric Lefebvre)  в 6-ой главе было дано краткое описание FDD
  • 29. Всего одна глава! Так – между делом… По Scrum & XP пришлось написать куда больше книг.
  • 30. История  2002 год: книга «A Practical Guide To Feature-Driven Development»  Stephen Palmer, Mac Felsing
  • 31. Автор продолжил заниматься делом, а не исключительно личным PR-ом…
  • 33. Feature Шаблон именования Feature (функции): <действие> <результат> <кем|чем|чего|для|к> <объект> <action> the <result> <by|for|of|to> a(n) <object> Примеры:  Вычислить суммарный объем продаж  Calculate the total amount of a Sale  Определить последнее изменение наличных в кассе для кассира  Determine the most recent Cash Register Assignment for a Cashier Всегда в терминологии предметной области! Должна быть понятна значимость для бизнеса
  • 34. Очень похоже на User Story, но нет необходимости изобретать персонажи…
  • 35. Конечно! Каждый считает своим долгом предложить свой формат для требований. Ладно хоть Scrum от этого удержался...
  • 36. Группировка  Область (Major Feature Set, Subject Area) АРМ Кассира  Набор (Feature Set, Activity) Оплата товара  Функция (Feature) Снять деньги с карточки
  • 37. Дык, это же полный аналог Themes и Epics при работе с User Stories
  • 38. Требования к Feature List  Каждая feature должна быть простой  Каждая feature должна быть ценна (хотя бы понятна) заказчику  Каждая feature должна быть проверяема  Каждый feature set может быть закреплен за ведущим разработчиком (Chief Developer)  Feature List должен быть коротким (на столько, на сколько возможно)
  • 39. Да-да, узнаю старый добрый INVEST: Independent, Negotiable, Valuable, Estimable, Small, Testable
  • 40. Схема процесса Разработка Составление Планирование общей модели списка функций Список функций План разработки (Feature list) (A development plan) 1 – 3 недели Design by Build by feature Диаграмма классов feature предметной области Отгрузка!
  • 41. Вау! Здесь есть начальная фаза проекта!!! Чувствуется, что автор из IBM…
  • 42. Процесс по шагам 1: создание общей модели 42  Участвуют:  Главный архитектор  Ведущие разработчики (Chief Developers)  Эксперты в предметной области  Подготовка к созданию:  Выслушивают эксперта в предметной области  По необходимости изучают документы  Обсуждения между собой
  • 43. Наконец-то знакомые роли! Архитектор, ведущий разработчик – и снова здравствуйте 
  • 44. Процесс по шагам 1: создание общей модели 44  Создание модели:  Обязательно разбиваются на небольшие группы  Каждая группа создает свою модель (диаграмму классов)  После этого собираются все вместе, обсуждают различия, выбирают/формируют итоговые решения  В результате:  Диаграмма классов (без детализации)  Комментарии почему выбрано такое решение, альтернативные решения
  • 45. UML и создание «конкурирующих» моделей – мне это определенно нравится!
  • 46. Тоже мне, открыли Америку – всё это известно со времен Model-Driven Development/Architecture (MDD/MDA)
  • 47. Процесс по шагам 2: формирование Feature List 47  Участвуют:  Как и при формировании общей модели  В результате:  Feature List, сгруппированный в наборы (Feature Set), разделенные по областям (Subject Area)
  • 48. Интересно, а как потом учитываются изменения в требованиях и сколько сил на это уходит?
  • 49. Процесс по шагам 3: планирование 49  Основания для планирования:  Наборы функций – итерации  Последовательность итераций определяется исходя из:  взаимосвязи функций с точки зрения реализации  сложности набора функций  наличия рисков при реализации функций  равномерное распределение загрузки разработчиков  Участвуют:  Руководитель проекта  Ведущие разработчики  В результате:  График реализации наборов функций (Набор – дата)  Ведущие программисты, закрепленные за наборами (Набор – ответственный)  Всем классам назначены владельцы (Класс – владелец)
  • 50. Что-то это уже конкретно попахивает водопадом… Да еще персональное владение кодом… Бррр
  • 51. Скажи спасибо, что хоть диаграммы Ганта строить не надо
  • 52. Для тех, кто успел забыть схему процесса: Разработка Составление Планирование общей модели списка функций Список функций План разработки (Feature list) (A development plan) 1 – 3 недели Design by Build by feature Диаграмма классов feature предметной области Отгрузка!
  • 53. Процесс по шагам 4: Design by feature 53  Задачи:  Формирование команд на итерацию  ведущие разработчики динамически формируют команды на итерацию  исходя из того, какие классы затрагивает реализация заданного набора функций (берутся их владельцы)  обычно команды не большие (около 5 человек) (to be continued)
  • 54. Динамическое формирование команд на итерацию – класс! А то: «слаженная команда – это очень ценно»… Так их! 
  • 55. Процесс по шагам 4: Design by feature 55  Задачи: (продолжение)  Обзор затрагиваемой предметной области  Изучение необходимых документов  Составление диаграмм взаимодействия  Уточнение и детализация соответствующей части диаграммы классов  Написание заголовков методов  В результате:  Краткое описание набора функций, дополнительные комментарии  Диаграммы взаимодействия  Объектная модель (уточнения, исправления), заголовки классов  Задания (To Do) в системе ведения дел для каждого участника команды
  • 56. Вот! Спецификация API и персональное назначение задач – сразу чувствуется старая школа! И никаких, понимаешь, соплей про самоорганизацию и кросс- функциональность…
  • 57. Процесс по шагам 5: Build by feature 57  Задачи:  Реализация классов и методов  Code Inspection (Code Review)  до unit-тестирования!  самой командой или даже другой (по решению ведущего программиста)  Unit-тестирование  тесты на класс пишет сам владелец класса  Интеграция (Promote to Build)  Уточнение и детализация соответствующей части диаграммы классов  В результате:  Проинспектированные классы и методы  Классы, допущенные в основной ствол проекта  Реализованная функциональность, понятная заказчику (client-valued features)
  • 58. Супер: вместо парного программирования – Code Inspection/Review; а вместо мантры «Red-Green-Refactor» – просто написание Unit- тестов (причем после реализации).
  • 59. Ну и правильно! Всё равно опросы общественного мнения показывают, что в парах мало кто кодит, да и тесты до реализации писать дико – некомпилится ведь!
  • 60. Важный нюанс • в FDD нет жесткого time-boxing-а итерации: – итерация не заканчивается, пока все взятые в неё feature-и не доделают – т.е. недоделанные feature-и не перетекают в следующую итерацию – их дожимают в текущей, растягивая оную
  • 61. Разумно, но что они при этом делают со своим план-графиком?...
  • 62. Отслеживание хода процесса 62 Стандартная пропорция: Обзор Детализация Инспекция Кодирование Инспекция Интеграция модели модели дизайна кода (дизайн) 1% 40% 3% 45% 10% 1%  За счет этого ведется графическое отображение хода выполнения:
  • 63. Отслеживание хода процесса: для всего проекта 63 Области Наборы функций
  • 64. Эта штука посильнее будет всяких Burn-down-ов и –up-ов: и бизнесам показать не стыдно, и на конфе козырнуть.
  • 65. Уровень процессов Управление проектами SCRUM Индикация прогресса Управление проектом Самоорг. команда, Перечень Daily Meetings требований, Итерации Unit-тесты, FDD Стандарт кодирования, Кодирование XP Cont. Integration Жесткость процессов Анархия Водопад --------- Как некий итог ---------
  • 67. История 2004 год Eric Evans «Domain-Driven Design - Tackling Complexity in the Heart of Software»
  • 68.
  • 69.
  • 70.
  • 71. Domain (словарь) • наследственная собственность; имение, поместье; земли; владение e.g. DNS • территория, зона, область, район (отмеченные некоторыми физическими особенностями) • сфера (интересов), поле (деятельности), область (знаний) В данном случае этот смысл • область определения (мат.) Домен поля таблицы в БД
  • 72. Т.е. это о Business Domain Предметной области и Business Logic Бизнес-логики
  • 73. «Attention was diverted away from rich logic and deep solutions, because there was so much value in just getting data onto the web, along with very simple behavior. But now that basic level of web usage has largely been assimilated, and projects are starting to get more ambitious again about business logic.»
  • 74. Еще раз вспомним про FDD: Разработка Составление Планирование общей модели списка функций Список функций План разработки (Feature list) (A development plan) 1 – 3 недели Design by Build by feature Диаграмма классов feature предметной области Отгрузка!
  • 75. Центральная роль в мышлении, проектировании, реализации DDD
  • 76. Пример: есть сайт конференции, надо сделать голосование за доклад
  • 77. О чем вы прежде всего начнете думать? 
  • 78. О чем вы прежде всего начнете думать? votes 
  • 79. О чем вы прежде всего начнете думать? 
  • 80. О чем вы прежде всего начнете думать? 
  • 81. /
  • 83.
  • 84.
  • 85.
  • 86. Внимание! Очень важно! Компоненты нижележащего слоя не должны зависеть от компонентов вышележащего ни при каких обстоятельствах
  • 87. !!!
  • 88.
  • 89. Постоянно себя спрашивайте: можно ли, используя public API доменной модели, нарушить целостность, согласованность и консистентность данных?
  • 90.
  • 91. Хоцца «аналогов» SQL и xxxMyAdmin но для компонентов DomainModel, а не СУБД
  • 92. Этому посвящен значительный объем всех книг, поэтому здесь мы пропустим
  • 93. Используете ORM => У вас DDD !!! http://www.martinfowler.com/bliki/AnemicDomainModel.html Hibernate Ruby on Rails
  • 94. По идее, всё нацелено на достаточно сложные модели: Но на практике эффективно используется и для несложных предметных областей
  • 98.
  • 99. IV. Заключение В стиле «Демотиваторы»
  • 100. «На кой мне это всё?» Есть Vision и feedback и в проекте ориентируюсь яки рыба в воде артефакты
  • 101. На одном Scrum-е далеко не уедешь
  • 102. Внедрение Scrum Не подумав вовремя об этом, вы действуете как кальсонные гномы
  • 103. Спасибо за внимание! biBIGone@gmail.com http://www.google.com/profiles/biBIGone