Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| mdd:todo [2016/12/19 16:55] – annamedvedeva | mdd:todo [2026/08/29 07:59] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== How to Build Articulate Class Models and get Real Benefits from UML====== | ||
| + | |||
| + | **Краткое описание. ** | ||
| + | В статье рассказывается зачем нужны модели классов, | ||
| + | |||
| + | Кратко у плохой модели следующие преимущества и недостатки: | ||
| + | [+] Она работоспособна, | ||
| + | [+] Она быстрее строится | ||
| + | [-] В ней возможно использование неверных конфигураций, | ||
| + | [-] Время сэкономленное за счет отсутствия ограничений может быть потрачено на дебаг ошибок, | ||
| + | |||
| + | В итоге получаем, | ||
| + | |||
| + | Причины использования uml диаграмм | ||
| + | |||
| + | Хорошая uml диаграмма позволяет не только представить приложение в виде красивой таблицы. Она позволяет ввести важные ограничения на данные, | ||
| + | |||
| + | Причины по которым ограничения удобно ставить в моделях класса: | ||
| + | |||
| + | 1)Многие правила легко и более эффективно выражается в модели класса. | ||
| + | 2)Правила в модели класса весьма заметны для пользователей и экспертов приложений. | ||
| + | 3)Увеличение видимости. | ||
| + | 4)Как правило более простая проверка правил в статических конструкциях. | ||
| + | 5)Возникнет меньше правил в действиях. | ||
| + | 6)Проще обновить, | ||
| + | 7)Конфигурируемость и жесткий соблюдение основных принципов. | ||
| + | 8)В процессе построения модели разработчик лучше поймет и структурирует все детали. | ||
| + | |||
| + | **Aircraft** | ||
| + | Отслеживаем несколько самолетов летающих вокруг аэропорта и хотим избежать их столкновения и контролировать их. Приложение должно хранить информацию о каждом самолете. | ||
| + | |||
| + | Aircraft | ||
| + | |||
| + | Tail Number {I} | ||
| + | |||
| + | Altitude | ||
| + | |||
| + | Speed | ||
| + | |||
| + | Heading | ||
| + | |||
| + | Получили абстракцию в виде uml класса, | ||
| + | |||
| + | В данной ситуации возникают правила, | ||
| + | |||
| + | TailNumber{I} Altitude | ||
| + | |||
| + | |||
| + | N17846D | ||
| + | |||
| + | |||
| + | N12883Q | ||
| + | |||
| + | Ограничение {I} показывает, | ||
| + | |||
| + | Давайте теперь сконцентрируемся на пустой таблице, | ||
| + | |||
| + | |||
| + | Tail Number{I} Altitude Speed Heading | ||
| + | |||
| + | 1) У каждого самолета уникальный номер | ||
| + | |||
| + | 2) Нет двух самолетов с одинаковым номером | ||
| + | |||
| + | 3) Каждый самолет имеет | ||
| + | |||
| + | 4) Каждый самолет имеет курс | ||
| + | |||
| + | 5) Каждый самолет имеет скорость | ||
| + | |||
| + | Правила 1-2 уже заданы, | ||
| + | |||
| + | Далее, введем новые атрибуты для самолета, | ||
| + | |||
| + | Aircraft | ||
| + | |||
| + | TailNumber{I} Altitude Speed Heading Latitude Longitude /Climb Rate | ||
| + | |||
| + | TailNumber{I} Altitude Speed Heading Lat Long /Climb Rate | ||
| + | |||
| + | / показывает, | ||
| + | |||
| + | **Хорошая модель** | ||
| + | Рассмотрим хорошую модель, | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Также для построения хорошей модели работы аэропорта, | ||
| + | |||
| + | ID{I} Name Date_of_birth Rating | ||
| + | |||
| + | ATC53 Toshiko Jun 12, | ||
| + | |||
| + | ATC67 Gwen Mar 28, | ||
| + | |||
| + | ATC51 Owen Dec 23, | ||
| + | |||
| + | |||
| + | А также класс On Duty Controller | ||
| + | |||
| + | ID{I,R1} Time_logged_in Station{R3} | ||
| + | |||
| + | ATC53 9/27/08 3pm S2 | ||
| + | |||
| + | ATC67 9/27/08 11am | ||
| + | |||
| + | Идентификаторы R1 и R3 ссылочные атрибуты. | ||
| + | |||
| + | Также введем класс Control zone | ||
| + | |||
| + | Name{I} Traffic Controller{R2} | ||
| + | |||
| + | CZ1 | ||
| + | |||
| + | CZ2 | ||
| + | |||
| + | CZ3 | ||
| + | |||
| + | Для каждой зоны управления имеется уникальное имя, кол-во трафика и присвоенный ATC. | ||
| + | |||
| + | Введем класс Duty Station | ||
| + | |||
| + | ID{I} Location Capacity | ||
| + | S1 Front 20 | ||
| + | |||
| + | S2 Front 45 | ||
| + | |||
| + | S3 Center | ||
| + | |||
| + | Ссылочный атрибут здесь не указан, | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | Правила выражающие хорошую модель аэропорта | ||
| + | |||
| + | 1)Контролер воздушного движения либо включен, | ||
| + | |||
| + | 2)Исполнитель обязанностей | ||
| + | |||
| + | 3)В любой момент времени Duty station может или не может управляться одним duty controler.{R3} | ||
| + | |||
| + | 4)Control zone должна иметь только одного duty controler в любой момент.{R2} | ||
| + | |||
| + | 5)Duty Controller может или не может быть направлять трафик в одной или более Control Zone на все время. {R2} | ||
| + | |||
| + | |||
| + | Какое поведение ожидается от хорошей модели. | ||
| + | Для оценки поведения нужно сформулировать вопросы и честно ответить на них. Сформулируем, | ||
| + | |||
| + | 1)Что должно произойти, | ||
| + | |||
| + | |||
| + | И ответ на него | ||
| + | 1) Для начала дежурства необходимо войти в доступную станцию и обновление дежурного предыдущий экземпляр duty controler будет удален. | ||
| + | |||
| + | В итоге получаем, | ||
| + | |||
| + | **Переходим к плохой модели ** | ||
| + | {{: | ||
| + | |||
| + | Это то же самое приложение, | ||
| + | |||
| + | 1) Меньшее количество классов и отношения | ||
| + | |||
| + | 2) Более короткие и неполные имена на ассоциациях | ||
| + | |||
| + | 3) Отсутствие ссылочной атрибута или метки идентификатора | ||
| + | |||
| + | 4) менее точные типы данных Некоторые правила применения отсутствуют, | ||
| + | |||
| + | **Вывод** | ||
| + | То есть в итоге можно сделать вывод, что модель с наличием ограничений более безопасная, | ||