mdd:design

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
mdd:design [2016/12/24 17:11] – [Ниже приведена таблица сравнения соответствующих классов двух методов:] yaroshenkopolinamdd:design [2026/08/29 07:59] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +======How Designs Differ======
  
 +Оригинал: Rebecca J. Wirfs-Brock\\
 +[[http://www.wirfs-brock.com/PDFs/How%20Designs%20Differ.pdf]]
 +====Введение====
 +В данной статье мы рассмотрим как, чем и почему отличаются между собой Responsibility-Driven design метод и немного улучшенная версия Shlaer/Mellor метода, Data-Drive design метод.
 +====Постановка  проблемы разработки Пивоваренного завода====
 +Различия в методах будем искать на примере работы пивоваренного завода.\\ Приложение пивоварни управляет инвентаризацией, библиотекой пивных рецептов, а также производством пива. Производственная система контролирует создание, движение и розлив пива. Пиво изготавливается по рецепту, все ингредиенты смешиваются в чане. После того, как партия смешана, он перемещается в бродильный чан. После того, как закончилось брожение, пиво перемещается в другой чан для розлива. Пивоваренный завод включает в себя сеть взаимосвязанных труб и чанов, перечень ингредиентов, коллекцию рецептов, и партии пива.
 +
 +Дизайнеры спроектировали упрощенную систему пивоварни. Они намеренно не брали в внимание пользовательский интерфейс и операционную систему. Они ограничили модель только поведениями объектов системы, которые имели тип int, bool, char или string.
 +
 +====Сравнение классов и ответственностей====
 +Имена объектов одинаковы для обоих методов: Чан, Партия, Клапан, Рецепт, Ингредиент. Даже классы, управляющие передвижениями партий, имеют схожие имена. Однако, процессы выполнений заданий сильно отличаются.\\
 +На рисунке ниже можно увидеть перевозку партии в случае Data-driven design.
 +{{:mdd:123.png|}}\\
 +На рисунке ниже можно увидеть перевозку партии в случае Responsibility-driven design.\\
 +{{:mdd:1234.png|}}\\
 +//На объекты, которые используются другими объектами, указывает стрелка. Объекты, заключенные в прямоугольник, представляют работу. Объекты, состояние которых установлено или запрошено, заключены в овал//
 +
 +====Ниже приведена таблица сравнения соответствующих классов двух методов:====
 +^Responsibility-Driven Class^Стереотипы^Data-Driven Class^Стереотипы^
 +|Порядок перевозки|Координатор|Запланированная перевозка|Контролер|
 +|Система труб|Обсепечивает сервис|Контейнер|Владеет информацией|
 +|Чан|Владеет информацией|Чан|Обеспечивает сервис|
 +|Клапан|Владеет информацией\\ Обеспечивает сервис|Клапан и cоединитель|Владеет информацией|
 +|Партия|Владеет информацией|Действующая партия|Владеет информацией|
 +|Насос|Обеспечивает сервис|Насос|Обеспечивает сервис|
 +|Пивоварня|Координатор|Пивовар|Контролер|
 +|Труба|Владеет информацией|Труба|Владеет информацией|
 +
 +====Количественные меры в дизайне====
 +Chidamber и Kermerer предложили 7 базовых мер, которые сравнивают различные методы дизайна:
 +  * **Weighted Methods per Class (WMC)** мера сложности класса, задается сложностью его атрибутов и методов
 +  * **Depth of Inheritance (DIT)** для класса определяет число его классов-предков
 +  * **Number of Children (NOC)** для класса определяет число его детей-классов
 +  * **Coupling between Objects (CBO)** для класса показывает число классов, которые он использует
 +  * **Response For a Class (RFC)** для класса показывает число его собственных методов и методов, которые он вызывает
 +  * **Lack of Cohesion in Methods (LCOM)** является мерой степени сходства между методами
 +  * **Weighted Attributes per Class (WAC)** число атрибутов класса, взвешенных по их размеру
 +
 +{{:mdd:снимок_экрана_2016-12-24_в_21.38.57.png|}}\\
 +На рисунке ниже мы можем явно увидит разницу в количестве требуемых сообщений\\
 +{{:mdd:снимок_экрана_2016-12-24_в_21.40.58.png|}}\\
 +Это происходит из-за того, что в Data-Driven методе два класса Пивовар и Запланированная перевозка отправляют много сообщений и знают много о других объектах. В Responsibility-Driven методе основные задания распределены между несколькими классами. Как раз этот принцип с более высоким уровнем коммуникации привел к большинству различий в методах.
 +
 +====Вывод====
 +Основные различия между этими методами:
 +^Responsibility-driven design^Data-driven design^
 +|делегированный стиль управления|централизованная архитектура управления|
 +|несколько 'умных' объектов, которые смешивают стереотипы|много простых 'владельцев информации'|
 +|используют координаторы, а не контролеров|настройка контролеров и запрос к владельцам информации|
 +|меньше сообщений|больше низкоуровневых сообщений|
 +|наследственное поведение|наследственные атрибуты|\\
 +====Список литературы====
 +1. R. Sharble and S. Cohen, “The Object-Oriented Brewery: A Comparison of Two Object- Oriented Development Methods,” pp. 60-73, Software Engineering Notes, vol. 18 (2).\\
 +2. R. Sharble and S. Cohen “the Object-Oriented Brewery: A Comparison of Two Object- Oriented Development Methods,” Boeing Technical Report no. BC2-G4059, October, 1992.\\