Автор Тема: Продажа автомобилей  (Прочитано 6177 раз)

Ilya2211

  • Newbie
  • *
  • Сообщений: 11
  • Рейтинг читателей: 0
    • Просмотр профиля
Продажа автомобилей
« : 02 Октября 2015, 23:17:44 »
Доброго времени, форумчане! С UML по сути не знаком, но подкинули одну задачу.

ПРОДАЖА АВТОМОБИЛЕЙ. Система должна обеспечивать ведение базы новых и подержанных автомобилей (марка, страна, год выпуска, технические характеристики, особенности исполнения, техническое состояние, запрашиваемая цена), ведение базы покупателей (контактные координаты, требования к марке, техническим характеристикам и техническому состоянию, допустимая цена автомобиля), автоматизированный подбор вариантов для покупателя, формирование заявок для поставщиков и перегонщиков автомобилей.

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

Заинтересованные лица:
1) Клиент
2) Менеджер
3) Администратор

Цели:
1) Клиент
- Приобрести автомобиль, который соответствует его требованиям, по комфортной для него цене.
2) Менеджер
 - Ознакомить клиента с авто, которые попадают под требования клиента;
 - Быстро сформировать заявку поставщикам, или перегонщикам, или необходимого автомобиля нет в наличии;
 - С прибылью продать выбранный клиентом автомобиль.  :)
3) Администратор
 - Занести новый автомобиль в базу, или отредактировать существующую информацию;
 - Занести в базу нового клиента или отредактировать информацию о уже занесенном клиенте.

Подскажите пожалуйста, имеет ли данная ДК право на жизнь? И если нет (а так и есть), по возможности ткните меня мордой лица в допущенные ошибки.



Galogen

  • Member of CAR
  • Hero Member
  • *****
  • Сообщений: 6063
  • Рейтинг читателей: 192
  • Аксакал
    • Просмотр профиля
    • Профиль в Моем Круге
Re: Продажа автомобилей
« Ответ #1 : 02 Октября 2015, 23:38:33 »
Типичная ошибка студента, пытаться в одной диаграмме классов отобразит и структурные и поведенческие аспекты.

1. Я бы убрал Администратора, - это просто роль, скорее всего она проявится на уровне прав доступа.
2. Менеджер - убрать связь с Требований клиента,
3. Не понятно что такое подбор автомобиля
4. Нет сущности, отражающей факт продажи. введите Продажу
5. Не понятна причина использования зависимостей - убрать имхо
6. Иерархия автомобилей на мой взгляд не обоснована

Короче морда в крови.

Может лучше начнете с диаграммы вариантов использования?

Ilya2211

  • Newbie
  • *
  • Сообщений: 11
  • Рейтинг читателей: 0
    • Просмотр профиля
Re: Продажа автомобилей
« Ответ #2 : 03 Октября 2015, 00:03:05 »
Galogen, спасибо что откликнулись!

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

Не понятна причина использования зависимостей - убрать имхо
Я отталкивался от того, что при изменении свойств экземпляра класса "ТребованияКлиента", "подборАвто" и "ЗаявкаПоставщику" тоже поменяют свои свойства. Или я снова
Типичная ошибка студента, пытаться в одной диаграмме классов отобразит и структурные и поведенческие аспекты.
?
Хорошо, начну с ДВИ, спасибо за совет!

Galogen

  • Member of CAR
  • Hero Member
  • *****
  • Сообщений: 6063
  • Рейтинг читателей: 192
  • Аксакал
    • Просмотр профиля
    • Профиль в Моем Круге
Re: Продажа автомобилей
« Ответ #3 : 03 Октября 2015, 00:51:34 »
Подбор в данном случае - сам поисковый механизм системы, который собирает информацию об авто, согласно заданным менеджером критериям. "Подбор" можно считать как еще одно заинтересованное лицо?
Подбор - это процесс. Это динамическая часть вашего проекта. Это поведение. Вы же начинаете с модели предметной области. Грубо говоря с модели базы данных, но зачем-то примешивайте в нее поведенческий аспект. Это неправильно.

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

На каком-то общем уровне, это операция Менеджера. Но Менеджер - это человек, который в нашей системе может быть частично заменен и разделен на один или несколько классов, которые будут хранить сведения о Менеджере и документах (работ) которые он выполняет - в этом случае будет создать сущностный класс = таблица в БД, а также будет выполнять какую-то ответственность, поведение что-то типа МенеджерПодбора - класс который берет на себя вопрос подбора авто клиенту, а реальный менеджер = Человек-сотрудник - только нажимает кнопочку на интерфейсе - Подобрать авто, а это по смыслу - вариант использования.

Цитировать
Я отталкивался от того, что при изменении свойств экземпляра класса "ТребованияКлиента", "подборАвто" и "ЗаявкаПоставщику" тоже поменяют свои свойства. Или я снова ?
Тупишь? Точно так.

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

Цитировать
Хорошо, начну с ДВИ, спасибо за совет!
С чего начать с ДВИ или ДК не суть важно, реально это два параллельных процесса.

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

Так что я бы начал с хотя бы краткого изучения UML http://book.uml3.ru

Ilya2211

  • Newbie
  • *
  • Сообщений: 11
  • Рейтинг читателей: 0
    • Просмотр профиля
Re: Продажа автомобилей
« Ответ #4 : 05 Октября 2015, 21:32:14 »
И снова здравствуйте

Смешались в кучу кони, люди...
Да, извините заранее, за вызванные негативные эмоции при просмотре приложенных диаграмм.
Попытаюсь правильно поставить вопрос, который сейчас крутится у меня в голове. Предмет называется "Разработка программных приложений", но ведь на данном этапе, при построении ДВИ я пытаюсь описать (правда пытаюсь) саму предметную область? Без привязки к конкретной, "разрабатываемой" системе?

Попытался набросать ДВИ, вот что из этого вышло.

Galogen

  • Member of CAR
  • Hero Member
  • *****
  • Сообщений: 6063
  • Рейтинг читателей: 192
  • Аксакал
    • Просмотр профиля
    • Профиль в Моем Круге
Re: Продажа автомобилей
« Ответ #5 : 11 Октября 2015, 00:27:40 »
Да, извините заранее, за вызванные негативные эмоции при просмотре приложенных диаграмм.
Да, ничего, не оправдывайтесь. То, что пытаетесь разобраться уже хорошо. Вообще нужно подумать о менторском бизнесе, за весьма умеренную плату натаскивать по практическим вопросам удаленно. Просто иначе мотивация снижается, когда-то было интересно разбирать ошибки диаграмм. Сейчас уже лениво.

Ну, по существу.

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

Тут также вопрос, а почему Клиент - действующее лицо, как он взаимодействует с системой?

У вас есть ВИ - Выполнить поиск авто в бд, а почем Редактировать авто в бд или удалить авто из бд не предусматривает Выполнить поиск авто в бд?

Определиться с выбором авто - это чья цель - сейчас это какой-то абстрактный ВИ, который выполняется только в контексте Выполнения поиска авто в бд??? Что само по себе забавно. И который выполняется вдруг менеджером??

А продажа автомобиля может выполняться без оформление документов на продажу?? и чем принципиально оформление документов на продажу отличается от собственно продажи?

Ilya2211

  • Newbie
  • *
  • Сообщений: 11
  • Рейтинг читателей: 0
    • Просмотр профиля
Re: Продажа автомобилей
« Ответ #6 : 12 Октября 2015, 01:16:43 »
Тут также вопрос, а почему Клиент - действующее лицо, как он взаимодействует с системой?

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

- добавить авто в бд, редактировать авто в бд, удалить авто из бд - сами наименования не хороши, хотя возможны
аналогично по клиенту.
Является ли возможным "обзывания" всех эти ВИ как ВнесениеИзменений?

По последним трем пунктам полностью с Вами согласен. Увы, сразу это не дошло.
« Последнее редактирование: 12 Октября 2015, 01:19:03 от Ilya2211 »

davvol

  • Full Member
  • ***
  • Сообщений: 211
  • Рейтинг читателей: 33
    • Просмотр профиля
Re: Продажа автомобилей
« Ответ #7 : 12 Октября 2015, 12:39:20 »
ВИ начинающиеся с "выполнить поиск" - явно избыточные, уберите их, все станет выглядеть куда лучше.

Еще меня смущает что можно продать автомобиль не выбирая клиента. Как так?
Я бы сделал выбор клиента как Include к продаже автомобиля.

Ilya2211

  • Newbie
  • *
  • Сообщений: 11
  • Рейтинг читателей: 0
    • Просмотр профиля
Re: Продажа автомобилей
« Ответ #8 : 14 Октября 2015, 00:48:29 »
На каком-то общем уровне, это операция Менеджера. Но Менеджер - это человек, который в нашей системе может быть частично заменен и разделен на один или несколько классов, которые будут хранить сведения о Менеджере и документах (работ) которые он выполняет - в этом случае будет создать сущностный класс = таблица в БД, а также будет выполнять какую-то ответственность, поведение что-то типа МенеджерПодбора

Набросал сейчас ДК согласно Вашим замечанием. Не могу решить, как обомзвать ассоциации между Автомобиль-Продажа и Клиент-Продажа. И как я понял, связывать Требования и Продажа посредством зависимости не имеет смысла?
Имеет ли смысл композиция между Клиент и Требования? Или же, более верный вариант - перенести атрибуты из Требования в Клиент и удалить класс Требования?
"Продажа" из себя представляет по сути заключенный договор между организацией и клиентом.
« Последнее редактирование: 14 Октября 2015, 01:10:45 от Ilya2211 »

Ilya2211

  • Newbie
  • *
  • Сообщений: 11
  • Рейтинг читателей: 0
    • Просмотр профиля
Re: Продажа автомобилей
« Ответ #9 : 14 Октября 2015, 00:52:17 »
ВИ начинающиеся с "выполнить поиск" - явно избыточные, уберите их, все станет выглядеть куда лучше.

Еще меня смущает что можно продать автомобиль не выбирая клиента. Как так?
Я бы сделал выбор клиента как Include к продаже автомобиля.


Вы имели ввиду такой вариант?
« Последнее редактирование: 14 Октября 2015, 01:07:09 от Ilya2211 »

davvol

  • Full Member
  • ***
  • Сообщений: 211
  • Рейтинг читателей: 33
    • Просмотр профиля
Re: Продажа автомобилей
« Ответ #10 : 14 Октября 2015, 11:58:45 »
Вы имели ввиду такой вариант?

Не совсем.
1. Я говорил как Include к продаже автомобиля, а не к выбору.
2. Почему пропала связь между актором и "Выбрать автомобиль"? Почему он вдруг утратил такую возможность?

Ilya2211

  • Newbie
  • *
  • Сообщений: 11
  • Рейтинг читателей: 0
    • Просмотр профиля
Re: Продажа автомобилей
« Ответ #11 : 14 Октября 2015, 12:23:54 »
Не совсем.
1. Я говорил как Include к продаже автомобиля, а не к выбору.
2. Почему пропала связь между актором и "Выбрать автомобиль"? Почему он вдруг утратил такую возможность?


Мои мысли по первому пункту: при продаже автомобиля конкретному клиенту, менеджер ведь не может сразу перейти от Выбор клиента к Продать автомобиль?  Ведь менеджер продает конкретный авто, который до этого был подобран для клиента в базе? Или я снова заблуждаюсь?

Насчет второго пункта, да. С утра я заметил свою ошибку, но к сожалению, на работе не имею возможности поправить этот недочет, дома всё исправлю.

Galogen

  • Member of CAR
  • Hero Member
  • *****
  • Сообщений: 6063
  • Рейтинг читателей: 192
  • Аксакал
    • Просмотр профиля
    • Профиль в Моем Круге
Re: Продажа автомобилей
« Ответ #12 : 14 Октября 2015, 23:12:19 »
Клиент не взаимодействует со системой напрямую, все воздействия осуществляет действующее лицо Менеджер. Он ищет, изменяет, добавляет. Вы это имеете ввиду? Но как тогда быть с теми же требованиями к авто, или изменениям каких либо данных со стороны клиента?
Клиент заинтересованное лицо, он может влиять на реализацию систему, но сам он не действует с ней и должен остаться за кадром. Если Вам важно показать взаимодействие клиента с системой, нужно подняться на уровень выше. При этом он передает свои требования менеджеру, и менеджер уже осуществляет подбор авто. Иначе, клиент может оставлять заявку на подбор и превратиться в пользователя.

Цитировать
Ведь тогда результат работы системы может быть другим.
А что может измениться?
 
Цитировать
Является ли возможным "обзывания" всех эти ВИ как ВнесениеИзменений?
Мне не нравится, так как Вы спускаетесь на уровень реализации. Вообще, это называется CRUD вариант использование и может называться: Управление списком: <клиентов> и т.п. можно абcтрагироваться до <объектов>. В рамках которога описывать сценарии добавления, изменения, удаления и ... поиска элемента списка.

Представленный вариант диаграммы мне представляется сложным, хотя наверное и возможным.

Galogen

  • Member of CAR
  • Hero Member
  • *****
  • Сообщений: 6063
  • Рейтинг читателей: 192
  • Аксакал
    • Просмотр профиля
    • Профиль в Моем Круге
Re: Продажа автомобилей
« Ответ #13 : 14 Октября 2015, 23:25:16 »
Набросал сейчас ДК согласно Вашим замечанием. Не могу решить, как обомзвать ассоциации между Автомобиль-Продажа и Клиент-Продажа.
Автомобиль - Продажа (я бы сделал кратность 1 со стороны авто и много со стороны продажи - один и тот же тип авто может продаваться в разных продажах) ну наоборот - понятно, на каждый авто оформляется одна продажа. Название связи - участвует в

Клиент- Продажа - кратность только 1 - *, никак иначе, в Продаже участвует только 1 клиент, а не много одновременно. Клиент в принципе может осуществлять много продаж,

Хотя тут возможны варианты

Цитировать
И как я понял, связывать Требования и Продажа посредством зависимости не имеет смысла?
Как продажа связана с требованиями? Они влияют на выбор, а продажа - это отражение факта передачи автомобиля клиенту за соответствующее вознаграждение.

Кстати связь Между Требованием и Клиентом не верна, кратность наоборот. И по-моему смоделировано не верно. Требования = Критерии отбора. Т.е. каждый автомобиль может быть описан определенными характеристика = критериями отбора, клиент по сути  выбирает из некоего определенного набора характеристик, задает дапазоны: цена: от а до б, цвет , синий или черный или металик, ну и т.п.
Цитировать
Имеет ли смысл композиция между Клиент и Требования? Или же, более верный вариант - перенести атрибуты из Требования в Клиент и удалить класс Требования?
Может но смотрите выше.
Цитировать
"Продажа" из себя представляет по сути заключенный договор между организацией и клиентом.
Продажа - это процесс. Договор - это документ. Вы можете иметь класс Продажи и/или Договор, а можете не иметь - решать Вам и связано с постановкой задачи и потребностями заказчика.
И вообще у вас бардак с кратностью связей:)

SALar

  • Member of CAR
  • Sr. Member
  • *****
  • Сообщений: 487
  • Рейтинг читателей: 32
    • Просмотр профиля
    • 255 ступеней
Re: Продажа автомобилей
« Ответ #14 : 15 Октября 2015, 15:07:39 »
2 Ilya2211
Вы зря начали с UML диаграммы. Нет методических материалов по проверке таких диаграмм на полноту, выдерживания уровней и т.д.
Начните с текстовых описаний по Коберну.
Сергей Мартыненко
http://martyinenko-sergey1.moikrug.ru/