CiklumNETSat10122011:DmitriyMindra-DCI
Upcoming SlideShare
Loading in...5
×
 

CiklumNETSat10122011:DmitriyMindra-DCI

on

  • 319 views

 

Statistics

Views

Total Views
319
Views on SlideShare
319
Embed Views
0

Actions

Likes
0
Downloads
2
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

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

CiklumNETSat10122011:DmitriyMindra-DCI CiklumNETSat10122011:DmitriyMindra-DCI Presentation Transcript

  • DATA CONTEXT INTERACTION Дима Миндра Lohika, Одесса@dmytromindra
  • Цель – понимание DCI@dmytromindra
  • @dmytromindra
  • Старые друзья проблемы@dmytromindra
  • Проблема №1: Завершенность Часто, разработку программного обеспечения не удается завершить. Даже после значительных допольнительных инвестиций.@dmytromindra
  • Проблема №2: Дефекты Объем работы, связанной с устранением дефектов и ошибок в «завершенном» программном продукте, необходимой для того, чтобы сделать продукт готовым к использованию часто занимает значительное количество времени. Часто это время больше чем время разработки продукта.@dmytromindra
  • Проблема №3: Требования Функциональность программного обеспечения редко соответствует требованиям конечных пользователей.@dmytromindra
  • Проблема №4: Поддержка После создания программного обеспечения его практически невозможно поддерживать, т.к. способность разработчиков понять, что они написали быстро уменьшается с течением времени.@dmytromindra
  • Проблемы@dmytromindra
  • Real .NET Developer@dmytromindra
  • Объектно Ориентированный Анализ@dmytromindra
  • Выход:Анализ концептуальная Модель (Domain objects, Use cases, Interactions, Вход: Проблема some UI mockups )@dmytromindra
  • Методы OOA• Метод OOSA Шлеер-Меллора• Метод Коада• ОМТ• Метод Мартина Оделла и средства проектирования Ptech• Метод “класс-связь”• OSA• Метод SEOO• Метод BON• Fusion• OBA• Syntropy• MOSES• Метод Текселя (Texel)• Метод OORAS@dmytromindra
  • Проектирование Выход: архитектура(дизайн) Вход: концептуальная модель системы@dmytromindra
  • 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
  • Понимание@dmytromindra
  • Процедурная декомпозиция A Последовательность B C D Цикл Выбор C1 I1 C2 I2 I@dmytromindra
  • Все запутано@dmytromindra
  • Затем мы перешли к ООП@dmytromindra
  • Наследование 80-го уровня@dmytromindra
  • Опять ?@dmytromindra
  • Что же делает пользователь ? Это отражено в коде ?@dmytromindra
  • Мы что-то теряем@dmytromindra
  • Один UseCase разнесен по многим классам.@dmytromindra
  • То, как представляет себе систему пользователь не совпадает с тем, как она спроектирована@dmytromindra
  • Agile ценности• Individuals and interactions• Working software• Customer collaboration• Responding to change@dmytromindra
  • MVC 1979MVC улучшает восприятие Но по-прежнему не отображает поведение@dmytromindra
  • ООП фокусируется на том что система из себя представляет. При этом может быть совершенно не очевидно, что она делает и как ей пользоваться@dmytromindra
  • Дихотомия ООПЛексический анализ• Существительные – классы• Глаголы - методы@dmytromindra
  • Объектное мышление• Мы приобретаем объектное мышление от языка программирования.• Мы ограничиваем свое восприятие ООП.@dmytromindra
  • DCI@dmytromindra
  • Кто виноват ? Jim Coplien Trygve Mikkjel Heyerdahl Reenskaug@dmytromindra
  • Как пользователь представляет себе это действие ?@dmytromindra
  • Ментальная Модель пользователя Данные Роли Взаимодействия@dmytromindra
  • Простой пример Transfer Money User Берем один счет, затем берем другой счет, определяем сумму перевода, переводим деньги.@dmytromindra
  • Данные (Data) Account CheckingAccount Sav ingsAccount@dmytromindra
  • Роли (Interaction) Пассивные (Methodless) «interface» «interface» TransferMoneySink TransferMoneySource Активные (methodful) TransferMoneySourceTrait + TransferTo() : void «interface» «interface» TransferMoneySink TransferMoneySource@dmytromindra
  • Контекст (Context) «interface» TransferMoneySink TransferMoneyContextБерем один счет, «Property» TransferMoneySourceTraitБерем другой счет, + TransferMoneySource + TransferMoneySink + TransferTo() : void + Ammount: intопределяем сумму + Execute() : voidперевода,переводим деньги. «interface» TransferMoneySource @dmytromindra
  • DCI & MVC вместе@dmytromindra
  • DCI – это еще одна точка зрения@dmytromindra
  • Комбинируя подходы мы получаем архитектуру системы MVC Концептуальная DCI проектирование модель Domain Model@dmytromindra
  • Время действовать (показывать код)@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