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

×


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

При создании некоторых диаграмм возникло несколько вопросов.

Диаграмма ВИ.
Прикреплена к сообщению.
1. Вообще она корректна или нет?
2. Скорее я чего-то не понимаю... Если пользователь выбирает ВИ "Редактировать существующий ФР", то он должен открыть файл этого существующего ФР, т.е. использовать ВИ "Загрузить ФР". Далее по необходимости пользователь редактирует данный ФР и может сохранить изменения. Всё вроде как логично... Далее, если пользователь выбирает ВИ "Создание нового ФР", то для того чтобы ВИ был "полным и полезным", он обязательно включает ВИ "Добавление элементов лица" и "Сохранить ФР". И вот тут мне не понятно. Ведь пользователь при создании нового ФР может так же его и редактировать, правильно?  То есть нужно указать, что ВИ "Редактировать существующий ФР" расширяет ВИ "Создание нового ФР"?

Можно рассуждать по другому. После использования ВИ "Создание нового ФР", пользователь, если ему необходимо отредактировать ФР, который только что был создан как новый, использует ВИ "Редактировать существующий ФР". Но тут тогда неуместно обязательное включение ВИ "Загрузить ФР".

3. Если у меня масштабируются и сдвигаются только элементы лица, то верно ли я указал, что ВИ "Сдвинуть элемент" и "Масштабировать элемент" расширяют ВИ "Редактирование элементов лица"?

Диаграмма классов.
1. Как в классе указать то, что он наследует атрибуты и методы стандартного в среде разработки класса?
class TMainForm : public TForm
{
     ...
}
« Последнее редактирование: 19 Января 2013, 19:42:43 от BcegoqpeHu »



Re: Разработка системы "Фоторобот" Ответ #1 : 19 Января 2013, 20:14:05
Доброго и вам.
Разработать интерфейс приложения."
Интересная задача, т.е. не само приложение, а именно интерфейс к нему?

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

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

Цитировать
2. Скорее я чего-то не понимаю... Если пользователь выбирает ВИ "Редактировать существующий ФР", то он должен открыть файл этого существующего ФР, т.е. использовать ВИ "Загрузить ФР". Далее по необходимости пользователь редактирует данный ФР и может сохранить изменения. Всё вроде как логично... Далее, если пользователь выбирает ВИ "Создание нового ФР", то для того чтобы ВИ был "полным и полезным", он обязательно включает ВИ "Добавление элементов лица" и "Сохранить ФР". И вот тут мне не понятно. Ведь пользователь при создании нового ФР может так же его и редактировать, правильно?  То есть нужно указать, что ВИ "Редактировать существующий ФР" расширяет ВИ "Создание нового ФР"?

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

Цитировать
Можно рассуждать по другому. После использования ВИ "Создание нового ФР", пользователь, если ему необходимо отредактировать ФР, который только что был создан как новый, использует ВИ "Редактировать существующий ФР". Но тут тогда неуместно обязательное включение ВИ "Загрузить ФР".
Не надо усложнять простую идею.
ВИ - это не овальчики, а это все-таки его спецификация. Попробуйте просто описать:
1. типы пользователей
2. их потребности при работе с системой
3. опишите эту потребность - скорее всего это ВИ - дайте название и сделайте описание.

Цитировать
3. Если у меня масштабируются и сдвигаются только элементы лица, то верно ли я указал, что ВИ "Сдвинуть элемент" и "Масштабировать элемент" расширяют ВИ "Редактирование элементов лица"?
Нет, это операции, шаги, часть ВИ, а не сами ВИ

Цитировать
Диаграмма классов.
1. Как в классе указать то, что он наследует атрибуты и методы стандартного в среде разработки класса?
class TMainForm : public TForm
{
     ...
}
Для этого используется обобщение(generalisation) - http://www.uml-diagrams.org/generalization.html?context=class-diagrams



Re: Разработка системы "Фоторобот" Ответ #2 : 19 Января 2013, 20:42:03
Доброго и вам.Интересная задача, т.е. не само приложение, а именно интерфейс к нему?
Переписал сюда дословно =)... Задание дают размытое, а спрашивают так, будто все требования к системе расписали =).
Спасибо за Ваш ответ, сейчас попробую сделать спецификацию.

А будет ли корректно то, что я уберу ВИ "Загрузить ФР", оставив ВИ "Редактировать существующий ФР" с вариантами использования только расширяющими его? Или сделать его спецификацию с описанием данного шага будет достаточным?

Для этого используется обобщение(generalisation) - http://www.uml-diagrams.org/generalization.html?context=class-diagrams
А как быть с атрибутами и методами наследуемого класса, нужно ли их перечислять? Возможно ли указать в заголовке класса имя родительского класса, если этот класс является стандартным? Или можно указать прямоугольник с именем родительского класса и провести к нему обобщение? Извиняюсь за, возможно, глупые вопросы, но во всех книгах приводятся примеры диаграмм классов из каких-то жизненных ситуаций (клиенты, банки) =). И ничего по этому поводу =)



Re: Разработка системы "Фоторобот" Ответ #3 : 19 Января 2013, 21:00:42
А будет ли корректно то, что я уберу ВИ "Загрузить ФР", оставив ВИ "Редактировать существующий ФР" с вариантами использования только расширяющими его? Или сделать его спецификацию с описанием данного шага будет достаточным?
Что касается меня, я бы исключил ВИ, которые вы показали по include и extend. Почему:
1. в данном случае это сделано неправильно
2. это на самом деле сильно затрудняет понимание и прочтение диаграммы
3. если ВИ связан инклюдом, это означает, что каждый экземпляр сценария основного ВИ ВКЛЮЧАЕТ в себя экземпляр включаемого ВИ
4. если ВИ связан экстендом, это означает, что в каком-то месте основого ВИ при наступлении определенного условия.
5. ВИ, которые включаются или которые расширяют реально это так называемые абстрактные ВИ. В чем абстракция, просто их реализация возможно только в рамках основного ВИ и его "проявление" за висит от контекста конкретного экземпляра основного ВИ - чувствуете как сложно понять :)
6. То, что вы пытаетесь описать, проще и лучше  и правильнее описать иными средствами
7. ну и чтобы добить :) то что нарисовано представляет собой ДЕКОМПОЗИЦИЮ поведения, а для ВИ этого делать нельзя, поскольку ВИ не функция, не алгоритм, а соглашение о поведении.

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

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

Зачем указывать в имени потомка имя родителя?
Что такое стандартный класс?
Да от потомка нужно провести связь обобщения, которая имеет полый равнобедренный(равносторонний) треугольник направленный острием на родителя.

Читается так - Родительский класс обобщает (классифицирует) потомков. Человек обобщает Мужчину и Женщину
Можно читать иначе Потомок специализирует Родителя. Мужчина - это Человек, Мужчина специализирует Человека по полу



Re: Разработка системы "Фоторобот" Ответ #4 : 19 Января 2013, 22:58:34
Описал варианты использования. 2 штуки =). Второй ВИ дался с трудом. И чувствую что здесь опять что-то не так.
Меня смущает то, что в ВИ "Редактирование существующего фоторобота" всё построено на "Если". То есть, если ничего из основного потока не выполнится, то ничего и не произойдёт. Мой преподаватель скажет, что он бесполезный =), мне кажется...

Описание вариантов использования
Создание нового фоторобота
Краткое описание:
Создание нового фоторобота для последующего использования – редактирования, сохранения и т.д.
Действующее лицо:
Пользователь системы.
Предусловия:
Нет.
Основной поток:
1.   Пользователь выбирает пункт меню «Файл - Новый».
2.   Система производит очистку холста для фоторобота.
3.   Пока фоторобот не состоит из основных частей лица (причёска, глаза, уши, нос, губы, подбородок)
3.1   Пользователь выбирает пункт меню с надписью соответствующей части лица (причёска, глаза, уши, нос, губы, подбородок и т.д.).
3.2   Система отображает множество вариантов выбранной части лица.
3.3   Пользователь выбирает (нажатием кнопкой мыши) один из представленных вариантов части лица.
3.4   Система размещает на холсте указанную часть лица.
4.   Пользователь выбирает пункт меню «Файл - Сохранить».
5.   Система отображает диалоговое окно «Сохранить как».
6.   Пользователь указывает имя файла и тип файла (Изображение (*.bmp) или Файл системы «Фоторобот»(*.phr)). И нажимает на кнопку «Сохранить».
7.    Система сохраняет файл фоторобота в указанное место в указанном формате.
Постусловия:
1.   На холсте отображён фоторобот.
2.   Система произвела сохранение фоторобота в файл.
Альтернативные потоки:
Нет.

Редактирование существующего фоторобота
Краткое описание:
Редактирование существующего фоторобота, расположенного в файле либо на холсте.
Действующее лицо:
Пользователь системы.
Предусловия:
1.   Если на холсте отсутствует изображение фоторобота, то должен существовать файл системы «Фоторобот» с расширением *.phr, содержащий фоторобот.
Основной поток:
1.   Если пользователь выбирает пункт меню «Файл - Открыть»
1.1   Система отображает диалоговое окно «Открыть».
1.2   Пользователь указывает имя файла системы, содержащего элементы и параметры частей лица, и нажимает кнопку открыть.
1.3   Система отображает содержимое файла на холст.
2.   Если пользователь выбирает пункт меню с надписью, соответствующей части лица.
2.1   Система отображает множество вариантов выбранной части лица.
2.2   Пользователь выбирает (нажатием кнопкой мыши) один из представленных вариантов части лица.
2.3   Система заменяет/устанавливает указанную часть лица на холсте в соответствии с вариантом выбранным пользователем.
3.   Если пользователь выбирает один из пунктов меню «Положение» (влево, вправо, вверх, вниз)
3.1   Система смещает редактируемую часть лица в выбранную сторону.
4.   Если пользователь выбирает один из пунктов меню «Масштабирование» (шире (по гор.), уже (по гор.), шире (по верт.), уже (по верт.))
4.1   Система производит масштабирование выбранной части лица в соответствии с выбранным пунктом меню «Масштабирование».
Постусловия:
1.   На холсте отображён фоторобот.
Альтернативные потоки:
Нет.


З.Ы. Под стандартным классом я имел ввиду стандартные классы среды разработки, такие как TForm, TButton,  TImage. Они для меня как чёрные ящики, я не знаю всех методов, которые они имеют. Но как я понял не обязательно отображать на диаграмме классов всех методов и атрибутов класса?
« Последнее редактирование: 19 Января 2013, 23:13:52 от BcegoqpeHu »



Re: Разработка системы "Фоторобот" Ответ #5 : 20 Января 2013, 00:02:59
Вы знаете, Вседофени,

Описал варианты использования. 2 штуки =). Второй ВИ дался с трудом. И чувствую что здесь опять что-то не так.
Меня смущает то, что в ВИ "Редактирование существующего фоторобота" всё построено на "Если". То есть, если ничего из основного потока не выполнится, то ничего и не произойдёт. Мой преподаватель скажет, что он бесполезный =), мне кажется...
Это вообще нормально. Не так легко научиться писать сразу и быстро отличные и правильные ВИ. Потому как определить, что такое  отличные и правильные, вряд ли полностью возможно.

Однако есть определенные признаки, которые дают определенный путь к совершенству.
Один из этих признаков следующий. Вариант использования - это ПРОТОКОЛ взаимодействия. Протокол - это ЛИНЕЙНЫЙ список действий. Вариант использования если точнее совокупность таких протоколов, ведущих к успешному ИЛИ неуспешному исходу.
. Так вот успешный обычно называют ОСНОВНЫМ, ГЛАВНЫМ, ТИПИЧНЫМ, НАИБОЛЕЕ ЧАСТЫМ - выбирайте что ближе.
А в таком потоке ну не должно быть, если должна быть прямая линия действий.  Все ЕСЛИ - это альтернативные потоки.
Впрочем тут можно найти компромисс (РЕКОМЕНДАЦИИ ПО НАПИСАНИЮ СПЕЦИФИКАЦИЙ ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ)

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

Цитировать
Создание нового фоторобота
Краткое описание:
Создание нового фоторобота для последующего использования – редактирования, сохранения и т.д.
Мне трудно представить себе криминалиста, который в надежде, что ему в будущем придется "редактирования, сохранения и т.д", он создает в течение рабочего дня новый фоторобот. Да и не фоторобот - это это скорее некая заготовка.

Поймите, ВИ это нечто, что делает 1 человек, в 1 месте, в за  сеанс (ну условно) англичане говорят coherent, т.е. нечто неразрывно связанное и имеющее смысл только вместе. ТО что у вас как описание ВИ записано - это лишь шаг.

Цитировать
Действующее лицо:
Пользователь системы.
Очень безликое ДЛ, оно мало дает какой-либо информации
Цитировать
Предусловия:
Нет.
я думаю предусловием является криминалистический инцидент, при котором требуется установить личность преступника или неизвестного человека по описанию свидетелей или знакомых
Цитировать
Основной поток:
1.   Пользователь выбирает пункт меню «Файл - Новый».
Это реализация, в ВИ не должны присутствовать элементы интерфейса, т.к. они явно или неявно задают ограничения на реализацию проекта.
Цитировать
2.   Система производит очистку холста для фоторобота.
в вашей голове сидит явно некое конкретное поведение уже существующей системы и вы его тут воспроизводите, а это не так.

Цитировать
3.   Пока фоторобот не состоит из основных частей лица (причёска, глаза, уши, нос, губы, подбородок)
3.1   Пользователь выбирает пункт меню с надписью соответствующей части лица (причёска, глаза, уши, нос, губы, подбородок и т.д.).
3.2   Система отображает множество вариантов выбранной части лица.
3.3   Пользователь выбирает (нажатием кнопкой мыши) один из представленных вариантов части лица.
3.4   Система размещает на холсте указанную часть лица.
Все это нужно отобразить Пользователь выбирает из библиотеки части лица, Система отображает результат выбора
Цитировать
4.   Пользователь выбирает пункт меню «Файл - Сохранить».
5.   Система отображает диалоговое окно «Сохранить как».
6.   Пользователь указывает имя файла и тип файла (Изображение (*.bmp) или Файл системы «Фоторобот»(*.phr)). И нажимает на кнопку «Сохранить».
7.    Система сохраняет файл фоторобота в указанное место в указанном формате.
Пользователь сохраняет полученный фоторобот, указывая имя и формат сохранения. Система сохраняет фоторобот в указаном виде.
Цитировать
Постусловия:
1.   На холсте отображён фоторобот.
2.   Система произвела сохранение фоторобота в файл.
Это можно оставить. Хотя слово холст может быть несколько неясным

Цитировать
З.Ы. Под стандартным классом я имел ввиду стандартные классы среды разработки, такие как TForm, TButton,  TImage. Они для меня как чёрные ящики, я не знаю всех методов, которые они имеют. Но как я понял не обязательно отображать на диаграмме классов всех методов и атрибутов класса?
Естественно.



Re: Разработка системы "Фоторобот" Ответ #6 : 20 Января 2013, 00:52:16
Galogen, спасибо большое за Ваши подробные ответы и критику! :)
Цитировать
Впрочем тут можно найти компромисс (РЕКОМЕНДАЦИИ ПО НАПИСАНИЮ СПЕЦИФИКАЦИЙ ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ)
Именно ими я и руководствовался :).

Цитировать
Мне трудно представить себе криминалиста, который в надежде, что ему в будущем придется "редактирования, сохранения и т.д", он создает в течение рабочего дня новый фоторобот. Да и не фоторобот - это это скорее некая заготовка.
Согласен. Но данная система является учебной :) да и задание в первом сообщении я выкладывал, там по сути вообще написано "делай как хочешь". И я на 90% уверен, учитывая характер преподавателя, что он будет удивлён отсутствием варианта редактирования :).

Цитировать
Это реализация, в ВИ не должны присутствовать элементы интерфейса, т.к. они явно или неявно задают ограничения на реализацию проекта.
...
...
в вашей голове сидит явно некое конкретное поведение уже существующей системы и вы его тут воспроизводите, а это не так.
Именно, приложение уже разработано. Хотя я понимаю, что это совсем не правильно. Но я сделал именно так, как проще это сделать, учитывая требования преподавателя. :)   
Изначально я пытался описывать ВИ так как вы сказали "в ВИ не должны присутствовать элементы интерфейса". И мне было гораздо проще =), это и логично, я же не могу знать, разрабатывая общие требования к системе, как будет выглядеть интерфейс этой системы. В результате мой преподаватель моё описание назвал "философскими записками" ;D. Это, кстати, второе задание на КП, так как первое, увы, я сдал на троечку... решил пересдать. Сейчас я пытаюсь, совмещая желания преподавателя, здравый смысл и правильную разработку uml-диаграмм, сделать так, чтобы всем было хорошо. :)


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

Как я был бы рад описать это всё именно так... :)  Я запомню Ваши рекомендации, и работая над будущими проектами, я буду поступать именно так :)

И вопрос. А нужно ли как-то по особому на диаграмме ВИ указывать альтернативные потоки? Пока в моей голове сидит следующий вид диаграммы:



Re: Разработка системы "Фоторобот" Ответ #7 : 20 Января 2013, 17:31:51
Согласен. Но данная система является учебной :) да и задание в первом сообщении я выкладывал, там по сути вообще написано "делай как хочешь". И я на 90% уверен, учитывая характер преподавателя, что он будет удивлён отсутствием варианта редактирования :).
А я вовсе и не говорил об отсутствие в вашем случае редактирование фоторобота.
Во все нет.
Естественно, система должна обеспечивать
- создание нового фоторобота, я бы лучше назвал Составить новый фоторобот;
- изменение (редактирование,, коррекцию) имеющегося фоторобота
- можно предположить и возможность удаления фоторобота
Фоторобот не может быть составлен без элементов лица, элементы лица могут добавляться, изменятся и удалятся видимо, потому можно предположить наличие ВИ Управлять библиотекой элементов лица

Цитировать
Именно, приложение уже разработано. Хотя я понимаю, что это совсем не правильно. Но я сделал именно так, как проще это сделать, учитывая требования преподавателя. :)   
Изначально я пытался описывать ВИ так как вы сказали "в ВИ не должны присутствовать элементы интерфейса". И мне было гораздо проще =), это и логично, я же не могу знать, разрабатывая общие требования к системе, как будет выглядеть интерфейс этой системы. В результате мой преподаватель моё описание назвал "философскими записками" ;D.

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


Цитировать
И вопрос. А нужно ли как-то по особому на диаграмме ВИ указывать альтернативные потоки? Пока в моей голове сидит следующий вид диаграммы:
Основная задача ДВИ показать, что окружает систему и какую функциональность она должна иметь или демонстрировать.

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



Re: Разработка системы "Фоторобот" Ответ #8 : 21 Января 2013, 12:25:45
Так же хотел выразить благодарность ув. Galogen. Очень подробно все расписываете и, как по мне - правильно. Так что ваши ответы полезны не только автору темы - еще раз спасибо.



Re: Разработка системы "Фоторобот" Ответ #9 : 23 Января 2013, 10:17:12
интересная тема, если б ещё сотрудники полиции искали преступников...



Re: Разработка системы "Фоторобот" Ответ #10 : 23 Января 2013, 10:22:50
интересная тема, если б ещё сотрудники полиции искали преступников...
Ну они ищут.



Re: Разработка системы "Фоторобот" Ответ #11 : 25 Сентября 2014, 15:40:35
Извините за нескромный вопрос. Недавно тоже начала работать над системой построения фоторобота. Не подскажите откуда можно взять базу данных элементов лица человека?? буду очень благодарна



Re: Разработка системы "Фоторобот" Ответ #12 : 25 Сентября 2014, 16:37:41
Можно здесь посмотреть, н-р:
http://sourceforge.net/p/identikit/codeidentikit/ci/master/tree/ImgIdentikit/lib/images/

И поискать по словам "face elements for identikit"
Не важно какой ты сейчас - большой или маленький, важно - как ты растешь.
Б.А.С.




 

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