0
DATA  CONTEXT  INTERACTION                 Дима Миндра                Lohika, Одесса@dmytromindra
Цель – понимание DCI@dmytromindra
@dmytromindra
Старые друзья проблемы@dmytromindra
Проблема №1: Завершенность   Часто, разработку программного   обеспечения не удается завершить.   Даже после значительных ...
Проблема №2: Дефекты Объем работы, связанной с устранением дефектов и ошибок в «завершенном» программном продукте, необход...
Проблема №3: Требования   Функциональность программного   обеспечения редко соответствует требованиям   конечных пользоват...
Проблема №4: Поддержка   После создания программного обеспечения его   практически невозможно поддерживать, т.к.   способн...
Проблемы@dmytromindra
Real .NET Developer@dmytromindra
Объектно                Ориентированный                Анализ@dmytromindra
Выход:Анализ              концептуальная                    Модель (Domain objects,                    Use cases, Interact...
Методы OOA•   Метод OOSA Шлеер-Меллора•   Метод Коада•   ОМТ•   Метод Мартина Оделла и средства проектирования Ptech•   Ме...
Проектирование                                    Выход: архитектура(дизайн)      Вход: концептуальная модель             ...
OODSRP — The Single Responsibility PrincipleOCP — The Open Closed PrincipleLSP — The Liskov Substitution PrincipleISP — Th...
Понимание@dmytromindra
Процедурная декомпозиция                                     A                           Последовательность               ...
Все запутано@dmytromindra
Затем мы перешли к ООП@dmytromindra
Наследование 80-го уровня@dmytromindra
Опять ?@dmytromindra
Что же делает пользователь ?                  Это отражено в коде ?@dmytromindra
Мы что-то теряем@dmytromindra
Один UseCase разнесен по           многим классам.@dmytromindra
То, как представляет себе систему пользователь не совпадает с тем, как она              спроектирована@dmytromindra
Agile ценности•   Individuals and interactions•   Working software•   Customer collaboration•   Responding to change@dmytr...
MVC 1979MVC улучшает восприятие   Но по-прежнему не отображает поведение@dmytromindra
ООП фокусируется на том что   система из себя представляет.                При этом может быть совершенно не очевидно,    ...
Дихотомия ООПЛексический анализ• Существительные – классы• Глаголы - методы@dmytromindra
Объектное мышление• Мы приобретаем объектное мышление от  языка программирования.• Мы ограничиваем свое восприятие ООП.@dm...
DCI@dmytromindra
Кто виноват ?   Jim Coplien         Trygve Mikkjel Heyerdahl Reenskaug@dmytromindra
Как пользователь представляет        себе это действие ?@dmytromindra
Ментальная Модель                  пользователя    Данные                       Роли                     Взаимодействия@dm...
Простой пример                         Transfer Money                  User Берем один счет, затем берем другой счет, опре...
Данные (Data)                                  Account                CheckingAccount             Sav ingsAccount@dmytromi...
Роли (Interaction)     Пассивные (Methodless)          «interface»                       «interface»      TransferMoneySin...
Контекст (Context)                                                         «interface»                                    ...
DCI & MVC вместе@dmytromindra
DCI – это еще одна точка зрения@dmytromindra
Комбинируя подходы мы   получаем архитектуру системы                                       MVC Концептуальная             ...
Время действовать                 (показывать код)@dmytromindra
Как насчет TDD@dmytromindra
SOLID-но ?@dmytromindra
@dmytromindra
@dmytromindra
@dmytromindra
@dmytromindra
@dmytromindra
Приправим контрактами@dmytromindra
Do try this ;)@dmytromindra
Links and Referenceshttp://www.artima.com/articles/dci_vision.htmlhttp://www.leansoftwarearchitecture.com/@dmytromindra
Source Codehttps://github.com/DmytroMindra/DCI-Simple-  Sample@dmytromindra
@dmytromindra
Upcoming SlideShare
Loading in...5
×

CiklumNETSat10122011:DmitriyMindra-DCI

218

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
218
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "CiklumNETSat10122011:DmitriyMindra-DCI"

  1. 1. DATA CONTEXT INTERACTION Дима Миндра Lohika, Одесса@dmytromindra
  2. 2. Цель – понимание DCI@dmytromindra
  3. 3. @dmytromindra
  4. 4. Старые друзья проблемы@dmytromindra
  5. 5. Проблема №1: Завершенность Часто, разработку программного обеспечения не удается завершить. Даже после значительных допольнительных инвестиций.@dmytromindra
  6. 6. Проблема №2: Дефекты Объем работы, связанной с устранением дефектов и ошибок в «завершенном» программном продукте, необходимой для того, чтобы сделать продукт готовым к использованию часто занимает значительное количество времени. Часто это время больше чем время разработки продукта.@dmytromindra
  7. 7. Проблема №3: Требования Функциональность программного обеспечения редко соответствует требованиям конечных пользователей.@dmytromindra
  8. 8. Проблема №4: Поддержка После создания программного обеспечения его практически невозможно поддерживать, т.к. способность разработчиков понять, что они написали быстро уменьшается с течением времени.@dmytromindra
  9. 9. Проблемы@dmytromindra
  10. 10. Real .NET Developer@dmytromindra
  11. 11. Объектно Ориентированный Анализ@dmytromindra
  12. 12. Выход:Анализ концептуальная Модель (Domain objects, Use cases, Interactions, Вход: Проблема some UI mockups )@dmytromindra
  13. 13. Методы OOA• Метод OOSA Шлеер-Меллора• Метод Коада• ОМТ• Метод Мартина Оделла и средства проектирования Ptech• Метод “класс-связь”• OSA• Метод SEOO• Метод BON• Fusion• OBA• Syntropy• MOSES• Метод Текселя (Texel)• Метод OORAS@dmytromindra
  14. 14. Проектирование Выход: архитектура(дизайн) Вход: концептуальная модель системы@dmytromindra
  15. 15. OODSRP — The Single Responsibility PrincipleOCP — The Open Closed PrincipleLSP — The Liskov Substitution PrincipleISP — The Interface Segregation PrincipleDIP — The Dependency Inversion PrincipleREP — The Reuse Release Equivalency PrincipleCCP — The Common Closure PrincipleCRP — The Common Reuse PrincipleADP — The Acyclic Dependencies PrincipleSDP — The Stable Dependencies PrincipleSAP — The Stable Abstractions Principle А также DDD, Pattern Language, MVC, CQRS, Event Driven, SOA, …..@dmytromindra
  16. 16. Понимание@dmytromindra
  17. 17. Процедурная декомпозиция A Последовательность B C D Цикл Выбор C1 I1 C2 I2 I@dmytromindra
  18. 18. Все запутано@dmytromindra
  19. 19. Затем мы перешли к ООП@dmytromindra
  20. 20. Наследование 80-го уровня@dmytromindra
  21. 21. Опять ?@dmytromindra
  22. 22. Что же делает пользователь ? Это отражено в коде ?@dmytromindra
  23. 23. Мы что-то теряем@dmytromindra
  24. 24. Один UseCase разнесен по многим классам.@dmytromindra
  25. 25. То, как представляет себе систему пользователь не совпадает с тем, как она спроектирована@dmytromindra
  26. 26. Agile ценности• Individuals and interactions• Working software• Customer collaboration• Responding to change@dmytromindra
  27. 27. MVC 1979MVC улучшает восприятие Но по-прежнему не отображает поведение@dmytromindra
  28. 28. ООП фокусируется на том что система из себя представляет. При этом может быть совершенно не очевидно, что она делает и как ей пользоваться@dmytromindra
  29. 29. Дихотомия ООПЛексический анализ• Существительные – классы• Глаголы - методы@dmytromindra
  30. 30. Объектное мышление• Мы приобретаем объектное мышление от языка программирования.• Мы ограничиваем свое восприятие ООП.@dmytromindra
  31. 31. DCI@dmytromindra
  32. 32. Кто виноват ? Jim Coplien Trygve Mikkjel Heyerdahl Reenskaug@dmytromindra
  33. 33. Как пользователь представляет себе это действие ?@dmytromindra
  34. 34. Ментальная Модель пользователя Данные Роли Взаимодействия@dmytromindra
  35. 35. Простой пример Transfer Money User Берем один счет, затем берем другой счет, определяем сумму перевода, переводим деньги.@dmytromindra
  36. 36. Данные (Data) Account CheckingAccount Sav ingsAccount@dmytromindra
  37. 37. Роли (Interaction) Пассивные (Methodless) «interface» «interface» TransferMoneySink TransferMoneySource Активные (methodful) TransferMoneySourceTrait + TransferTo() : void «interface» «interface» TransferMoneySink TransferMoneySource@dmytromindra
  38. 38. Контекст (Context) «interface» TransferMoneySink TransferMoneyContextБерем один счет, «Property» TransferMoneySourceTraitБерем другой счет, + TransferMoneySource + TransferMoneySink + TransferTo() : void + Ammount: intопределяем сумму + Execute() : voidперевода,переводим деньги. «interface» TransferMoneySource @dmytromindra
  39. 39. DCI & MVC вместе@dmytromindra
  40. 40. DCI – это еще одна точка зрения@dmytromindra
  41. 41. Комбинируя подходы мы получаем архитектуру системы MVC Концептуальная DCI проектирование модель Domain Model@dmytromindra
  42. 42. Время действовать (показывать код)@dmytromindra
  43. 43. Как насчет TDD@dmytromindra
  44. 44. SOLID-но ?@dmytromindra
  45. 45. @dmytromindra
  46. 46. @dmytromindra
  47. 47. @dmytromindra
  48. 48. @dmytromindra
  49. 49. @dmytromindra
  50. 50. Приправим контрактами@dmytromindra
  51. 51. Do try this ;)@dmytromindra
  52. 52. Links and Referenceshttp://www.artima.com/articles/dci_vision.htmlhttp://www.leansoftwarearchitecture.com/@dmytromindra
  53. 53. Source Codehttps://github.com/DmytroMindra/DCI-Simple- Sample@dmytromindra
  54. 54. @dmytromindra
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×