Форум Сообщества Аналитиков

×


Система, регулирующая работу аквариума(Прочитано 8093 раз)
Цель - создание системы, регулирующей работу аквариума.
Средство - Rational Rose Enterprise Edition 2002.
Прошел все стадии создания системы. Диаграмма классов выглядит следующим образом:


Немного подробнее о работе системы:
EnvironmentalController - Контроллер устройств;
ButtonON - кнопка включения системы;
ButtonOFF - кнопка выключения системы;
OxygenSupplyDevice - устройство подачи кислорода - включается сразу после старта системы и работает постоянно;
WaterCleaningSystem - система очистки воды - или просто фильтр, функционирует по-аналогии с предыдущим устройством;
WaterLevelSensor - датчик уровня воды - тестируется после включения системы и постоянно автоматически отправляется данные контроллеру;
WaterTemperatureSensor - датчик температуры воды - или просто термометр, функционирует по-аналогии с предыдущим устройством;
Heater - нагреватель - в случае понижения определенной нормы температуры воды, термометр отправляет данные контроллеру, который включает нагреватель. Нагреватель отключается при достижении нормы температуры.
Light - осветительная лампа - включается и выключается в зависимости от времени суток. Управляется контроллером.
Pump - насос - в случае понижения определенного уровня воды, датчик уровня отправляет данные контроллеру, который включает насос в режим 1 (наполняет водой). В случае повышения уровня насос функционирует в режиме 2 (откачивает воду). При достижении нормативного уровня насос отключается.

После нажатия кнопки Вкл. система начинает функционировать по вышеописанной схеме. После нажатия кнопки Выкл. отключаются все устройства, кроме датчиков.

Вопрос заключается в следующем: какие операции нужно прописать для контроллера при условии, что все остальные устройства никак не взаимодействуют между собой. И, возможно, неправильно указаны связи между классами. Если нужно предоставить изображения остальных диаграмм, скажите. Заранее весьма благодарен за помощь.




Re: Система, регулирующая работу аквариума Ответ #1 : 19 Сентября 2009, 23:56:25
1. Почему Вы уверены, что прошли все стадии создания системы?

2. Представленная диаграмма классов - скорее концепция, чем реальная модель проектирования, не говоря о реализации

3. Представленная диаграмма далека от завершения, хотя бы потому, что в она практически не удовлетворяет принципам ООП. Представленные связи неясны и не определены строго. Выделения одного центрального класса неоправдано. На лицо высокая связность и низкое зацепление

4. Все представленные классы - есть суть контроллеры к периферийным устройствам

5. Нужны диаграммы состояний для всей системы управления в целом, для каждого устройства в отдельности. Нужны диаграммы взаимодействия.

6. Кто отвечает за хранение текущего состояния системы, параметров системы, какие эти параметры, в каких пределах параметры устанавливаются и определяютс, как связаны параметры с режимами работы системы, как определяется обратная связь управления и т.п.



Re: Система, регулирующая работу аквариума Ответ #2 : 20 Сентября 2009, 17:48:08
Где цели и требования к системе? Аквариумистов опрашивали? А производителей и продавцов аквариумов и расходных материалов для них? А биологов-ихтиологов? А дизайнеров интерьеров? А форумы читали? Изучили ли рынок аквариумов и существующие на нём продукты? У вас есть свой аквариум?

Где границы системы? Вы хотите сделать контроллер домашнего аквариума, офисного, для зоомагазина или для океанариума в зоопарке? Простого, тропического или арктического? Глубоководного? Обслуживание роботизированное? Или универсальный обновляемый компьютеризированный контроллер для всего этого?

---

Динамику - варианты использования, границы и способы настройки, логику, алгоритмы, бизнес-правила работы - описали? Где я могу сказать: "у меня в аквариуме - 3 золотых рыбки, пиранья и два Dromia enythopus, задать оптимальные условия"? Где калибровка системы на аквариум?

---

Где стереотипы, паттерны, design mechanisms? Например, стратегии "ввод аквариума", "поддержка аквариума", "чистка аквариума"?

Свойства - не описаны. Методы - странные, названия не говорят об их предназначении.

Зачем Heater<<Boundary>>, Light<<Boundary>>, Pump<<Boundary>>, WaterLevelSensor<<Boundary>>, WaterTemperatureSensor<<Boundary>> "знать" об EnvironmentController<<Control>>?

Где Owner<<Entity>>, Fish<<Entity>>, Aquarium<<Entity>>?

Зачем выделять ButtonON и ButtonOFF?

Где кормушка? Где alarm, которая сообщит владельцу приятным женским голосом, что пора чистить, или что, например Heater и Pump не отключаются, и горячий суп из рыбок по $1k за штуку сейчас начнёт заливать его паркет из красного дерева, и продублирует это по email и по SMS? :)

---

Где Component и Deployment?

---

Даже - и особенно - учебные задачи требуют серьёзного подхода. Иначе не научитесь. А в целом - правильной дорогой идёте :) .

---

Из-за того, что архитекторы проектируют системы с точностью "что-то сделать в общих чертах как-то так, ОБЯЗАТЕЛЬНО, СРОК - ВЧЕРА!!!", кодерам приходится становится специалистами в предметной области и программистами экстра-класса :) .



Re: Система, регулирующая работу аквариума Ответ #3 : 24 Сентября 2009, 13:13:56
Хороший пример описан в книге Трофимов С.А. "Case - технологии: практическая работа в rational Roses", как проект автоматического управления системой гидропоники вплоть до кодогенерации,правда в VC6.0, что сейчас не актуально.




 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19