Модераторы: Се ля ви

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задачки по проектированию, хочется порешать под руководством знаток 
:(
    Опции темы
Platon
Дата 19.12.2007, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: нет
Всего: 40



Здравствуйте, уважаемые.

Очень давно думаю всерьез заняться основательно проектированием продуктов, но всё как то руки не доходили, да и не было рядом знающего человека, который помог бы, подсказал бы, да и вообще подкинул актуальную задачку.

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

Так, что прошу подкинуть задачку и проследить ее корректное решение.
PM MAIL ICQ   Вверх
0000
Дата 19.12.2007, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.7.2006
Где: Нижний Новгород

Репутация: нет
Всего: 5



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

разработать структуру приложения, способного решать оптимизационные задачи некоторыми алгоритмами.. 
Опишу подробно:
1. Должна содержаться постановка задачи и возможность выбора алгоритма.
2. В системе должен иметься решатель, соединяющий задачу с алгоритмом, который способен ее решить.
3. Алгоритм должен поддерживать итерационность решения, т.е. решения по шагам (нажать например кнопку - "Следующий шаг" и у тебя выполняется следующая итерация)
4. В системе должна быть подсистема отрисовки работы алгоритма (на каждом шаге)


это в общих чертах..что подробнее - спрашивай

PM MAIL ICQ   Вверх
ida
Дата 22.12.2007, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


замужем
****


Профиль
Группа: Завсегдатай
Сообщений: 2277
Регистрация: 14.5.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 58



Platon, а есть что проектировать?...
Проблема-то только в этом.

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

0000, зашибите меня коромыслом, но я никакой диаграммы классов не просматриваю вообще в вашем примере.

Вы перечислили некие требования, по которым в принципе можно начать разрабатывать ТЗ, но не более того.

Это сообщение отредактировал(а) ida - 22.12.2007, 19:34
PM WWW   Вверх
0000
Дата 23.12.2007, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.7.2006
Где: Нижний Новгород

Репутация: нет
Всего: 5



ida, а задании по проектированию надо прямо сказать - сделай такой, класс, сделай такой, тут пронаследуй, а этот запихни туда?? так чтоли??
я дал именно требования..
вы, простите, когда ТЗ получаете, проводите анализ - у вас уже на этапе анализа появляется эти самые диаграммы анализа, которые и ведут прямо к проектированию...
челокеку хочется научиться проектировать, так вот требования..пожалуйста, составьте мне проект системы как угодно, как видите...

так что пользуясь вашей терминологией - *зашибаю вас коромыслом*
PM MAIL ICQ   Вверх
ida
Дата 24.12.2007, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


замужем
****


Профиль
Группа: Завсегдатай
Сообщений: 2277
Регистрация: 14.5.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 58



0000, я, прощаю, ТЗ не получаю - я их пишу.
Да, возможно вы правы. В задании по проектированию наверное так бывает, а вот в жизни - точно все по-другому...
PM WWW   Вверх
0000
Дата 24.12.2007, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.7.2006
Где: Нижний Новгород

Репутация: нет
Всего: 5



Цитата(ida @ 24.12.2007,  21:49)
0000, я, прощаю, ТЗ не получаю - я их пишу.
Да, возможно вы правы. В задании по проектированию наверное так бывает, а вот в жизни - точно все по-другому...

может и я как неправильно выразился...
но..
все равно вся жизнь начинается с ТЗ, описания задания или требований.. по ним проводим какой-то анализ, из которого уже вытекает фаза проектирования...
говорите не так - расскажите как у вас бывает..мож чему поучусь =) 

PM MAIL ICQ   Вверх
baldina
Дата 24.12.2007, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: нет
Всего: 101



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

понятно, с потолка задания трудно выдумывать, а реальные (и как правило уже реализованные) слишком громоздки для приведения их здесь

Это сообщение отредактировал(а) baldina - 24.12.2007, 23:27
PM MAIL   Вверх
Platon
Дата 25.12.2007, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: нет
Всего: 40



Хух, дорвался до инета наконец!!!
Обидно говорить, но в VisualParadigm я не оч разобрался, поэтому связи неправильные сделаны, ну и в целом делал по чутью.

user posted image
PM MAIL ICQ   Вверх
baldina
Дата 25.12.2007, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: нет
Всего: 101



Platon, тренировка прежде всего заключается в том чтобы думать, а не рисовать.
Главное, что мне не нравится в твоей диаграмме:
Цитата

4. В системе должна быть подсистема отрисовки работы алгоритма (на каждом шаге)

вот это как-то непонятно отражено.
Поясню:
Надо уяснить, что такое отрисовка работы алгоритма на каждом шаге.
Из понятия "шаг алгоритма" и понятия алгоритма в целом следует вывод, что исполняемый алгоритм имеет некое состояние (state) на каждом шаге выполнения. Т.е. в данном контексте можно рассматривать алгоритм как (конечный) автомат. 
Отрисовка - вывод состояния (например, перечень текущих переменных с их значениями).

Итак, требуется отдельное понятие "состояние", как минимум представляющее набо пар имя/значение.
На этом пока можно остановиться (хотя мысль летит дальше, можно додумать стек текущих имен и т.п.)

Далее.
Цитата

2. В системе должен иметься решатель, соединяющий задачу с алгоритмом, который способен ее решить.

Поскольку ничего более нам неизвестно, тут можно пофантазировать. Например, "задача" имеет некоторые атрибуты, указывающие класс алгоритмов, пригодных для решения. Такой будет вывод, или нет, но в результате должно быть понятно, как именно задача связана с алгоритмом через решатель. Сейчас это не понятно.

Ну и дальше в таком духе...

В принципе результатом должен стать код, сгенеренный по диаграмме, который можно будет выполнять. Без решения задачи, хотя бы отладочным выводом что и как вызывается и т.д. Т.е. архитектурное решение можно протестировать и сделать выводы о его пригодности.

Добавлено @ 01:31
И еще один момент.
Связи желательно уменьшать. В идеале Solver знает и про задачи и про алгоритмы, а задачи и алгоритмы независимы друг от друга и от солвера. Похожим образом и с визуализацией.
Т.е. если удастся, должны получиться связи вроде
Код

problem<----solver---->algorithm---->state<-----visualizer


Это сообщение отредактировал(а) baldina - 25.12.2007, 01:35
PM MAIL   Вверх
baldina
Дата 25.12.2007, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: нет
Всего: 101



кстати, одна из основных причин появления UML - возможность обсуждать диаграммы с заказчиком. Т.е. они ему должны быть интуитивно понятны (ну хотя бы на крупном уровне абстракции). 
PM MAIL   Вверх
Platon
Дата 25.12.2007, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: нет
Всего: 40



Цитата(baldina @  25.12.2007,  02:20 Найти цитируемый пост)
что исполняемый алгоритм имеет некое состояние (state) на каждом шаге выполнения.

Ну, на самом деле в моей задаче состояние тоже присутствует, OptimizeAlgorithmPart, его можно назвать OptimizeAlgorithmState, согласен.

Цитата(baldina @  25.12.2007,  02:20 Найти цитируемый пост)
Понятно, что требуется отдельное понятие "состояние", как минимум представляющее набо пар имя/значение.

в данном случае, AlgorithmVisualizer отвечает за это состояние, и каждое состояние выводится в качестве JComponent, может быть не очень удачно, но, вашей мысли соответсствует.

Цитата(baldina @  25.12.2007,  02:20 Найти цитируемый пост)
Поскольку ничего более нам неизвестно, тут можно пофантазировать. Например, "задача" имеет некоторые атрибуты, указывающие класс алгоритмов, пригодных для решения.

Это и сделано ;) с помощью addAlgorithm(Class problemType, Algorithm algo) мы можем составить карту, привязку определенного типа задач к определенным типам алогритмов.

Цитата(baldina @  25.12.2007,  02:20 Найти цитируемый пост)
Т.е. если удастся, должны получиться связи вроде

а разве у меня не что-то подобное?
PM MAIL ICQ   Вверх
baldina
Дата 25.12.2007, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: нет
Всего: 101



Цитата

в данном случае, AlgorithmVisualizer отвечает за это состояние, и каждое состояние выводится в качестве JComponent, может быть не очень удачно, но, вашей мысли соответсствует.

Мне кажется не очень удачным, согласно принципа "одна задача - один класс".

Цитата

а разве у меня не что-то подобное? 

Подобное - да. Видимо мысль развивалась в похожем направлении, только из диаграммы не очень очевидно. Имхо.

Добавлено через 1 минуту и 32 секунды
Цитата

problem<----solver---->algorithm---->state<-----visualizer


здесь подразумевалось, что ---> означает "знает" и "управляет". обращаю внимание, что стрелки лишь в одну сторону
PM MAIL   Вверх
0000
Дата 25.12.2007, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.7.2006
Где: Нижний Новгород

Репутация: нет
Всего: 5



Цитата(baldina @ 25.12.2007,  01:20)
Цитата

4. В системе должна быть подсистема отрисовки работы алгоритма (на каждом шаге)

вот это как-то непонятно отражено.
Поясню:
Надо уяснить, что такое отрисовка работы алгоритма на каждом шаге.
Из понятия "шаг алгоритма" и понятия алгоритма в целом следует вывод, что исполняемый алгоритм имеет некое состояние (state) на каждом шаге выполнения. Т.е. в данном контексте можно рассматривать алгоритм как (конечный) автомат. 
Отрисовка - вывод состояния (например, перечень текущих переменных с их значениями).

Итак, требуется отдельное понятие "состояние", как минимум представляющее набо пар имя/значение.
На этом пока можно остановиться (хотя мысль летит дальше, можно додумать стек текущих имен и т.п.)



Поскольку ничего более нам неизвестно, тут можно пофантазировать. Например, "задача" имеет некоторые атрибуты, указывающие класс алгоритмов, пригодных для решения. Такой будет вывод, или нет, но в результате должно быть понятно, как именно задача связана с алгоритмом через решатель. Сейчас это не понятно.

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

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

По поводу отрисовки...
Тут я задачу дал совсем уж абстрактно, но можно пофантазировать например так - алгоритм на каждой своей инерации оповещает систему о том, что он выполнил свой очередной шаг и может предоставить сведения о своем состоянии. Это довольно просто спроектировать с применением шаблона Наблюдатель (Observer)..


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

По поводу того, что алгоритм должен знать какую задачу он решает..должен..но может быть так, что ему не нужно знать обо всей задаче. что если в задаче будут храниться еще какие-то данные, например, сведения о построении двойственной к задаче оптимизации?.. и тут одним из вариантов решения может служить то, чтобы разделить состояние задачи на 2 части - которая нужна алгоритмам и которая не нужна...хотя этим можно пренебречь и информировать алгоритм о задаче в целом.
PM MAIL ICQ   Вверх
Mayk
Дата 25.12.2007, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: нет
Всего: 134



Цитата(Platon @  19.12.2007,  14:37 Найти цитируемый пост)

Так, что прошу подкинуть задачку и проследить ее корректное решение.

Вот например. Корректность смотреть в комментах и гугле. 
На RSDN'е эту задачу подробно разбирали.



--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
ida
Дата 25.12.2007, 16:42 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


замужем
****


Профиль
Группа: Завсегдатай
Сообщений: 2277
Регистрация: 14.5.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 58



Цитата(baldina @ 25.12.2007,  00:26)
тем не менее некоторые вещи, не вытекающие прямо из данной постановки, а рожденные в процессе анализа (пусть и умозрительного, а точнее - общего, в отсутствие достаточных данных), на диаграмме должны найти отражение.

Да-да, именно умозрительного
Т.е. ничего общего с практикой вообще не имеющего. Я видите ли очень хорошо себе представляю, что это такое - ежедневно сталкиваюсь по работе. От такого умозрительного анализа хочется взять толстую грязную палку и проложить вдоль спины программиста smile Сопровождая словами: "Нееечего выдумывать, нееечего... ТЗ дадено - по нему и пишем."

Простите, была напугана.

Цитата(baldina @ 25.12.2007,  02:38)
кстати, одна из основных причин появления UML - возможность обсуждать диаграммы с заказчиком. Т.е. они ему должны быть интуитивно понятны

Совершенно верно.
Так вот из диаграммы, которую привел здесь Platon, заказчик не поймет ни черта.

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

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

Студент приходит на экзамен.
Отдает зачетку преподавателю, тащит билет, готовится.
Выходит отвечать. Если преподавателю нравится ответ, он ставит оценку, отдает зачетку и студент уходит. Если ответа недостаточно, преподаватель задает дополнительные вопросы. Если студент не смог ответить на дополнительне вопросы, ему предлагают тянуть другой билет или прийти на пересдачу. Решает студент.

Нарисуйте:
1. Диаграмму классов для описанного примера
2. Алгоритм - диаграмму деятельности
3. Жизненный цикл зачетки - диаграмма состояний
4. Диаграмму последовательности, где объектами будут студент и преподаватель

А там поглядим...

Это сообщение отредактировал(а) ida - 25.12.2007, 16:53
PM WWW   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Системный анализ, проектирование и UML"
Се ля ви

Форум "Системный анализ, проектирование и UML" предназначен для обсуждения вопросов, так или иначе связанных с этапами жизненного цикла автоматизированных (программных, информационных, автоматических) систем:

• предпроектные обследования объектов автоматизации;

• разработка концепции создания систем;

• моделирование бизнес-процессов (в т.ч. на UML);

• проектирование архитектуры систем;

• управление проектами;

• управление качеством;

• CASE-средства;

• реинжиниринг.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Системный анализ, проектирование и UML | Следующая тема »


 




[ Время генерации скрипта: 0.1213 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.