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

CiklumNETSat10122011:DmitriyMindra-DCI

on

  • 315 views

 

Statistics

Views

Total Views
315
Slideshare-icon Views on SlideShare
315
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