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

Общий раздел => Примеры => Тема начата: Aleksey от 24 Июля 2007, 17:32:53

Название: Модель программного обеспечения стиральной машины
Отправлено: Aleksey от 24 Июля 2007, 17:32:53
Получил задание на курсовой. С UML сталкиваюсь впервые, мне ближе методика экстремального программирования, ума не приложу с чего начать  ???

Непосредственно само задание:
Требуется разработать средствами Rational Rose модель программного обеспечения встроенного микропроцессора стиральной машины.
Машина предназначена для автоматической стирки белья. Машина включает в себя следующие устройства: бак для белья, клапаны для забора и слива воды, мотор, устройство подогрева воды, термометр, таймер, дверца для доступа в бак, панель управления с кнопками и индикатором. В памяти машины хранятся 5 программ стирки, заданные изготовителем. Пользователи не могут вносить в них изменения. Каждая программа определяет температуру воды, длительность стирки, скорость вращения бака во время стирки и отжима.
Для использования машины необходимо открыть дверцу, поместить белье в бак, поместить моющие средства в емкости, закрыть дверцу, выбрать программу стирки и нажать на кнопку «Пуск». Перед тем как приступить к стирке машина открывает клапан для забора воды, набирает необходимое количество воды, после чего закрывает клапан. Далее машина действует по выбранной пользователем программе:
1)   Подогревает, если необходимо, воду до нужной температуры.
2)   Включает таймер и запускает вращение бака для стирки.
3)   По окончании стирки сливает воду и запускает отжим.
Во время работы машины на индикаторе высвечивается время, прошедшее с момента запуска (минуты и секунды), текущий режим работы (стирка или отжим), номер текущей программы стирки. В целях безопасности дверца бака блокируется до окончания стирки. Машина не воспринимает нажатия на кнопки, за исключением одной – пользователь имеет возможность в любой момент нажать на кнопку «Останов», чтобы принудительно остановить стирку и слить воду.
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: Galogen от 24 Июля 2007, 18:04:45
Мдя, пора уже таксу назначать за консультации :)

Получил задание на курсовой.
Непосредственно само задание:
Требуется разработать средствами Rational Rose модель программного обеспечения встроенного микропроцессора стиральной машины.
Задача ясная - разрабатываем ПО стиральной машины. Примеров таких задач много, тот же банкомат, торговый автомат, кофеварка и т.п.
Для начал понять - машина управляемая или полностью автоматическая, т.е. нажал кнопку - получил результат.
Машина программироуемая - т.е. можно задавать программу, или есть фиксированные режимы, ну и т.д.

В принципе рисовать диаграммы вариантов использования и формировать поведенческие требования необязательно. Сразу можно приступить к моделированию предметной области.

Вот наша предметная область
Цитировать
Машина предназначена для автоматической стирки белья. Машина включает в себя следующие устройства: бак для белья, клапаны для забора и слива воды, мотор, устройство подогрева воды, термометр, таймер, дверца для доступа в бак, панель управления с кнопками и индикатором. В памяти машины хранятся 5 программ стирки, заданные изготовителем. Пользователи не могут вносить в них изменения. Каждая программа определяет температуру воды, длительность стирки, скорость вращения бака во время стирки и отжима.
Здесь произведите текстуальный анализ, выделите классы, их атрибуты, свяхите между собой определите связи. Выясните какие объекты тут активные а какие пассивные, например нужно ли что-то знать о баке? Посылают ли сообщения клапаны, а как устройство подогрева взаимодействует с процессором? Ну и т.д.
Программы где-то хранятся, что они хранят?
Возможна каждая программа - это отдельная диаграмма состояний стиральной машины в целом, с нее можно и начать в принципе.

Цитировать
Для использования машины необходимо открыть дверцу, поместить белье в бак, поместить моющие средства в емкости, закрыть дверцу, выбрать программу стирки и нажать на кнопку «Пуск». Перед тем как приступить к стирке машина открывает клапан для забора воды, набирает необходимое количество воды, после чего закрывает клапан. Далее машина действует по выбранной пользователем программе:
1)   Подогревает, если необходимо, воду до нужной температуры.
2)   Включает таймер и запускает вращение бака для стирки.
3)   По окончании стирки сливает воду и запускает отжим.
Во время работы машины на индикаторе высвечивается время, прошедшее с момента запуска (минуты и секунды), текущий режим работы (стирка или отжим), номер текущей программы стирки. В целях безопасности дверца бака блокируется до окончания стирки. Машина не воспринимает нажатия на кнопки, за исключением одной – пользователь имеет возможность в любой момент нажать на кнопку «Останов», чтобы принудительно остановить стирку и слить воду.
Это можно описать с помощью диаграм последовательности, деятельности и опять же состояний.

Вот с этого и можно было бы начать:
1. выделить объекты (скорее всего датчики и устройства)
2. описать как эти датчики и устройства взаимодейтсвуют при реализации каждой из 5 программ
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: bas от 24 Июля 2007, 18:09:17
Пока писал Галоген уже запостил правильную инструкцию и комменты ....

Мои 5 копеек:
1. Начинаем изучать ЮМЛ, надо иметь представление о всех Д и как они строятся
2. Начинаем изучать примеры имеющие на сайте
3. Начинаем строить вашу модель:
3.1 Строим ДБО
3.2 Строим СМВИ
3.3 Расписываем сценарии СВИ
3.4 Строим ДК
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: Galogen от 24 Июля 2007, 19:44:47
Цитировать
Каждая программа определяет температуру воды, длительность стирки, скорость вращения бака во время стирки и отжима.
Вот вам потенциальный класс:
Программа
 Идентификатор - просто номер программы
 Температура воды
 Длительность стирки
 Скорость вращения бака (стирка)
 Скорость вращения бака (отжим)
 
Как мы видим программы отличаются параметрами, но не ходом выполнения. Т.е. сама программа - это типовая схема действий.

Любой автомат, а стиральная машина - автомат (что же еще) - описывается специальным математическим аппаратом - конечный автомат. Для того чобы задать конечный автомат нужно: задать входной алфавит, выходной алфавит, алфавит состояний, начальное состояние.

Мне думается эта задача все-таки решается от описания диаграммы состояния, причем все состояния машины досточно четкие: загрузка, заливка воды, нагрев, стирка, слив, полоскание, отжим. Каждое из этих состояний в совю очередь характеризуется набором параметров и набором состояний датчиков: датчика температуры, системы слива-залива (клапаны), система двигателя, системы безопасности, нагревательные элементы.

Для того чтобы сделать ПО - нужно фактически сделать модель стиралки.
Кстати отличная задача. Описание с помощью UML - релаизация в MATLAB или там другой системе. Кстати сходите на exponenta.ru, там поищите методические материалы, что-то практикум моделирования на матлаб (типа дипломной работ о задаче управления двух баков с водой) может поможет:-)
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: LMZ от 25 Июля 2007, 16:09:54
Пока писал Галоген уже запостил правильную инструкцию и комменты ....

Мои 5 копеек:
1. Начинаем изучать ЮМЛ, надо иметь представление о всех Д и как они строятся
2. Начинаем изучать примеры имеющие на сайте
3. Начинаем строить вашу модель:
3.1 Строим ДБО
3.2 Строим СМВИ
3.3 Расписываем сценарии СВИ
3.4 Строим ДК
оффтоп:
объясните пару позиции:
1. было предложено действовать по сценарию выше, то есть порядок рисования (описания) диаграмм, по какому принципу это было предложено? (то есть в каком порядке что делать при разработке модели ПО, и почему)
2. что значит СМВИ, был в факи, там такого нету =(

спасибо!
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: bas от 25 Июля 2007, 16:46:15
1. было предложено действовать по сценарию выше, то есть порядок рисования (описания) диаграмм, по какому принципу это было предложено? (то есть в каком порядке что делать при разработке модели ПО, и почему)
Есть несколько подходов в методологиях разработки ПО, см. мою презентацию:
http://www.uml2.ru/index.php?option=com_smf&Itemid=45&topic=334.msg3352#msg3352

2. что значит СМВИ, был в факи, там такого нету =(
добавил
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: Galogen от 25 Июля 2007, 23:58:21

объясните пару позиции:
1. было предложено действовать по сценарию выше, то есть порядок рисования (описания) диаграмм, по какому принципу это было предложено? (то есть в каком порядке что делать при разработке модели ПО, и почему)
2. что значит СМВИ, был в факи, там такого нету =(

Уважаемый LMZ! Давайте для начал проясним позицию.
Мы консультируем, советуем, но делаете ВЫ!

Поскольку Вы не знакомы с UML, а Вас заставляют сделать именно в UML (наверное полагается по программе - ничего плохо в этом нет, стоит поучится ей-Богу), то уважаемый BAS Вам предложил начать с изучения основ UML для начала.
Далее он предлагает построить диаграмму бизнес-объектов (но я бы не стал замарачиваться, тут лучше начать с классов Вашей предметной области: т.е. стиральная машина и ее компонеты),
далее предлагает построить модель системных вариантов использования - т.е. как пользователь или другие внешние по отношению к системе используют систему в терминах реакции системы на внешние раздражители (но мне думается тут они ни к чему, все работает по программе, кнопку нажал и вперед).
далее описать системные варианты использования - но я бы заменил расстрелом :-) на самом деле тут следует сосредоточиться на диаграмме состояний. Просто описать какие состояния принимает СМ и когда. Хотя можно наверное описать и сценарий - т.е. некоторую последовательность действий в ответ на внешнее раздражение - пользователь нажал кнопочку (конечно грубо - но примерно). Все-таки СМ система не интерактивная, это и в описание указано - 5 каких-то программ.
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: LMZ от 26 Июля 2007, 10:27:47
Уважаемый Galogen, не я автор топика ;)
"Мы консультируем, советуем, но делаете ВЫ!" я полностью согласен с этим, и не в коем случае не хочу что бы мою работу кто-то делал за меня (тогда я никогда не научусь!)

мне просто не понятен процесс выбора диаграмм (то есть почему в некоторых случаях строят сначало ДВИ а в некоторых диаграмму классов).

2 BAS, спасибо за линк, я скачал, пока не нашёл, то что искал (я надеюсь, найду ;) )
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: Galogen от 26 Июля 2007, 11:30:37
Уважаемый Galogen, не я автор топика ;)
Ой, действительно. Извините


Цитировать
мне просто не понятен процесс выбора диаграмм (то есть почему в некоторых случаях строят сначало ДВИ а в некоторых диаграмму классов).
Все зависит от задачи.
Если цель построения некой ИС, то очевидно надо плясать от потребностей пользователя. Тогда имеет смысл начинать с ДВИ.
Если как в случае со СМ - то зачем там ДВИ. Пользователь 1, да и пользует он ее просто - нажал на кнопку получил результат. В этом случае мы проектируем не ИС, а ПО для автомата. Потому и нет нужды в ДВИ на мой взгляд.
Совет потратьтесь на книгу Рамбо и Блаха "Объектно-ориентированное моделирование и разработка. UML 2.0" Там интересно все расписано

Название: Re: Модель программного обеспечения стиральной машины
Отправлено: bas от 26 Июля 2007, 14:13:34
2 BAS, спасибо за линк, я скачал, пока не нашёл, то что искал (я надеюсь, найду ;) )
Там как раз это "Облегченный подход «Шмуллера»". Если что-то еще будет не понятно, то спрашивайте.
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: Aleksey от 27 Июля 2007, 04:41:54
Если как в случае со СМ - то зачем там ДВИ. Пользователь 1, да и пользует он ее просто - нажал на кнопку получил результат. В этом случае мы проектируем не ИС, а ПО для автомата.
Т.е. фактически ДВИ д.б. одна? Или их вообще не надо?
А если пойти дальше и создать ДВИ для автомата?

Во вложениях картинки двух диаграмм Main и Washing. Первая как раз общая, а вторая для автомата.
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: bas от 27 Июля 2007, 12:27:47
Вторая ДВИ в корне не правильная, Вы на ней хотите показать последовательность действий что в корне не правильно.
Не надо спешить рисовать.
Во первых опреджеляемся, что будем рисовать уровень СВИ, а детализиорвать ВИ будем по Коберну
Что делаем:
1. Выделяем актеров: Пользователь, Вода, Слив, Электричество
2. Выделяем цели этих актеров. Это уже сами.
3. Рисуем ДВИ
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: Galogen от 27 Июля 2007, 12:38:19
Вообще не понимаю для чего рисовать такую диаграмму где 1 ВИ? Ну если только преподы настаивают :-).
Вот смотрите - стирка - вариант использования, конечно можно сделать так стирка х/б белого, стирка х/б цветного, стрика шерстяных изделий, стирка деликатных тканей, стирка особо грязного белья.
Т.е. самой по себе стирки нет, есть стирка по конкретной программе. Однако в чем отличие для пользователя в этом случае?
Пользовтель загружает белье, выбирает программу, закрывает дверцу, нажимает программы.
Что тут можно описать?
П: закладывает белье и выбирает нужную программу стирки, закрывает дверцу, запускает машину
СМ: действует согласно программе.
Исключения
1.Дверца не закрыта
  СМ - подает звуковой и световй сигнал, программа стирки не запускается
  П - закрывает дверцу, запускает машину вновь
  СМ: действует согласно программе.
2. Перегруз
  СМ - подает звуковой или световой сигнал и сообщает о перегрузе
  П - убирает лишнее, запускает машину вновь
  СМ: действует согласно программе.

Ну и так далее. Что здесь может быть важным - описания того, что делает пользователь и что как он желает быть информировано о проблемах во время стирки вероятно

Вторая диаграмма - вообще не понятна, кто тут кого использует?
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: bas от 27 Июля 2007, 13:05:39
Эд, я думаю, что ДВИ нужна для препода, поэтому ее надо строить, причем можно использовать включения/расширения, наследования и т.п.
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: Aleksey от 27 Июля 2007, 15:03:54
По-моему, я что-то не допонимаю.
Я догадывался, конечно, что какая то это диаграмма (рис 1.) неправильная, но надеялся, что может ошибаюсь.

Что делаем:
1. Выделяем актеров: Пользователь, Вода, Слив, Электричество
2. Выделяем цели этих актеров. Это уже сами.
3. Рисуем ДВИ
Вода??? Электричество??? Тоже могут быть актерами со своими целями???
Сдается мне, что мой мозг еще не достиг такого уровня абстракции, как у мудрецов Омара Хайяма :)
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: bas от 27 Июля 2007, 15:23:32
Актер - это не только "2-3 килограмма ...", тьфу, это не только люди, но и внешние системы. По отношению к вашему примеру - это Вода, Слив, Электричество.
Например у Воды или Подведенной Воды абстрактная цель - наполнить водой бак.
У слива - забрать отработанную воду
У электричества - запитать машину.

В общем в вашем УЧЕБНОМ примере можно сделать так:
1. общая ДВИ Пользователь ---> Постирать (в реальной жизни этим ВИ и ограничились)
2. детализированная ДВИ где можно указать более мелкие цели:
Включить СМ
Выбрать программу
Залить воду
Слить воду
Запитать эл-вом

Название: Re: Модель программного обеспечения стиральной машины
Отправлено: Denis Beskov от 27 Июля 2007, 15:57:42
Народ, не грызите мне мозг, что у Слива могут быть цели)

Мотивируйте, плиз!
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: Galogen от 27 Июля 2007, 16:08:19
Согласен в предыдущим оратором.
Ну какая цель может быть у воды?

Актер это одушевленная система, обладающая поведением. Каким поведеним извините может обладать Вода? Другое дело система водоснабжения. Тут мы ее используем - т.е. наша система СМ использует систему водоснабжения, систему электроснабжения, для выполнения задачи стирки. Однако мне думается такой подход довольно странен.

Мы же разрабатываем систему управления СМ. Система должна например подать команду на устройстов забора воды СМ, т.е. открыть клапан. Там стоит датчик давления, если датчик давления показывает некоторое значение, т.е. вода идет, то на дисплее показывается информация идет забор воды. Если давление недостаточное для забора воды - это отобраджается и возможно включается насос забора воды или вообще машина не может работать и предлагает пользователю залить воду вручную. И т.д.

Т.е. в данном случае моделируется микропроцессор. По отношению к МП клапаны баки и всякая фигня - внешние устройства. Мы можем смоделировать структуру памяти МП: что он должен хранить - скажем знать где у него клапаны, как им подать команду, какую команду с какими параметрами. Вот это все и есть вопрос моделирования. Какое программное обеспечение у устройства слива - не смешите меня - все что у него есть - некие датчики которые передают сигналы, а вот МП обрабатывает эти сигналы.

Короче Алексей совет - идите на telelogic.ru, скачайте Telelogic Modeler - там он бесплатный - там есть пример про коферваку вроде - вполне думаю аналогичный вариант - вот и делайте по образу и подобию
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: bas от 27 Июля 2007, 16:17:53
Денис,

Все зависит от границ системы, мы берем в этом случае нашу Стиральную машину как некую границу.
По отношению к ней
1. актерами являются: Пользователь, Водопровод, Слив, Эл-во. Согласен?
2. Если абстрагироваться и представить, что неодушевленные системы, это люди, то у человека-водопровода была бы цель именно "наполнить бак". В общем, это обычная практика для СВИ, если актер - это некая внешняя система, а не Человек.
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: bas от 27 Июля 2007, 16:20:22
Другое дело система водоснабжения. Тут мы ее используем - т.е. наша система СМ использует систему водоснабжения, систему электроснабжения, для выполнения задачи стирки. Однако мне думается такой подход довольно странен.
Это и имелось ввиду

Мы же разрабатываем систему управления СМ. Система должна например подать команду на устройстов забора воды СМ, т.е. открыть клапан. Там стоит датчик давления, если датчик давления показывает некоторое значение, т.е. вода идет, то на дисплее показывается информация идет забор воды. Если давление недостаточное для забора воды - это отобраджается и возможно включается насос забора воды или вообще машина не может работать и предлагает пользователю залить воду вручную. И т.д.
Ну хорошо, но ты согласен, что это внешняя система по отношению к МП? Т.о. это актер или вокер, в терминах РУП.
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: bas от 27 Июля 2007, 16:23:55
Короче Алексей совет - идите на telelogic.ru, скачайте Telelogic Modeler - там он бесплатный - там есть пример про коферваку вроде - вполне думаю аналогичный вариант - вот и делайте по образу и подобию
Кофеварка это немного другое .... Но для примера можно взять.
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: Aleksey от 27 Июля 2007, 16:38:40
Т.е. в данном случае моделируется микропроцессор. По отношению к МП клапаны баки и всякая фигня - внешние устройства.
Я правильно понимаю, что можно перерисовать ВИ с актерами бак, клапаны и т.д.

Короче Алексей совет - идите на telelogic.ru, скачайте Telelogic Modeler - там он бесплатный - там есть пример про коферваку вроде - вполне думаю аналогичный вариант - вот и делайте по образу и подобию.
Спасибо, что послали :) Хотя обычно говорят спасибо за ссылку. Сижу... Качаю...
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: bas от 27 Июля 2007, 16:45:09
Я правильно понимаю, что можно перерисовать ВИ с актерами бак, клапаны и т.д.
Нет. Актерами не могут быть бак, клапаны и т.д., т.к. это внутренности стиральной машины, а вот водоснабжение, система канализации может быть, т.к. они внешние по отношению к нашей СМ. Возможно Система Электроснабжения - это лишнее, но остальное я бы отразил.
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: Galogen от 27 Июля 2007, 18:42:01
Чета я не понял нафиг.

пусть есть система водоснабжения: насосная, трубы, краны, вентили, задвижки, и прочее. Нам то они на кой?

Если СМ - это система, которая обращается в систему водоснабжения, а система водоснабжения ей дает результат? Какой?

Имхо есть подключение СМ в систему водоснабжения - факт очевидный и непреложный в данный момент, хотя возможна и другая ситуация

СМ вернее ее процессор посылают команду на входной вентиль - открыться. Если в системе водоснабжения есть вода - она тикет без всякого разрешения состороны системы водоснабжения. Наличие воду во вншеней системе водоснабжение имхо - условие.

Ужо если и писать ВИ то от лица микропроцессора по отношению к устройствам машины (баку, двигателю, системе налива и слива, система нагрева и т.п.)

Енто он исполняет программу, он использует устройства для выполнения своей программы и выдачи требуемого значения Пользователю.

Забор воды
Тригер: МП получил команду начать стирку
Предусловие: Дверца закрыта
1. МП подает команду входному клапану системы забора воды
2. Клапан открывается и подает сообщение об открытии.
3. МП опрашивает датчик давления.
4. Датчик давления подает сообщение о напоре воды.
5. МП опрашивает датчик расхода (периодически).
6. Датчик расхода сообщает о количестве залитой воды
7. По достижению заданного программой количества воды МП подает команду входному клапану закрыться
8. Входной клапан закрылся.

Ну что-то в этом роде. Поскольку забор воды осуществляется при начале стирке и при полоскании, можно продумать и объединить эти варианты.

Конечно, следуя Саши, можно нарисовать СМ и ее окружение. Только имхо это скорее будет DFD диаграмма, чем Диаграмма вариантов использования
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: Юрий Булуй от 27 Июля 2007, 18:49:57
Получил задание на курсовой. С UML сталкиваюсь впервые, мне ближе методика экстремального программирования, ума не приложу с чего начать  ???

Вобщем-то UML и XP ну абсолютно перпендикулярны друг другу ... XP не отрицает возможности рисовать UML диаграммы ....
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: Galogen от 27 Июля 2007, 18:54:44
Вобщем-то UML и XP ну абсолютно перпендикулярны друг другу ... XP не отрицает возможности рисовать UML диаграммы ....
Юр, сам то понял, что сказал? Перпендикулярны - т.е. не совсместны, но ХР не отрицает использования UML?
Для начала UML это язык, а не метод. ХР таки метод. Нельже утверждать что научные исследования методом ЯМР несовместны с китайским языком:-)
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: bas от 27 Июля 2007, 18:55:43
Во-первых, это учебный пример, который должен показать степень знания в том числе и ДВИ. В реальном мире никакой бы ДВИ не было бы.
Во-вторых, посмотрим на банкомат. для него Банк - это актер?? Да, так же как и система водоснабжения (СВС). Нам пофиг есть там деньги (вода) или их нет, это уже условие внутренее Банка (СВС). Мы только Банку даем команду - сними деньги (лей воду) и получаем от него да или нет (есть вода или нет). Вот и все.
А ты Эд, уже расписываешь ВИ в виде прозрачного ящика оголяя архитектуру СМ.

В общем, можно без СВС, канализации и т.п. делать, это не ошибка, это просто другой вид и другая абстракция.
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: Aleksey от 10 Августа 2007, 15:01:18
Итак, к чему я пока пришел.
Я нарисовал таки одну ДВИ. Русия ее я исходил из того что внешние системы должны чем либо обмениваться.
Так же нарисовал Диаграмму последовательности. Но сдается мне, что я не все на ней отобразил.
Жду вашего поощрения  ;D
Название: Re: Модель программного обеспечения стиральной машины
Отправлено: Виктор Малышко от 12 Октября 2007, 21:41:04
Алексей, не могли бы Вы рассказать, где дают такие курсовые?