3 Описание форматов входных и выходных файлов

advertisement
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Волгоградский государственный технический университет»
Факультет электроники и вычислительной техники
Кафедра «Программное обеспечение автоматизированных систем»
Проектные решения
Студенты:
Сперцян К.М.
Саркисова Е.А.
Емельянов Д.В.
Липов М.Э.
Группа ПрИн-466
Руководитель работы (проекта) ______________________
(подпись и дата подписания)
Волгоград 2015 г.
Жукова И.Г.
2
Содержание
1 Диаграмма вариантов использования ................................................................ 3
2 Сценарии использования ..................................................................................... 3
3 Описание форматов входных и выходных файлов........................................... 7
4 Диаграмма классов ............................................................................................... 8
5 Анализ диаграммы классов ............................................................................... 11
6 Описание диаграммы классов ........................................................................... 12
7 Описание методики тестирования .................................................................... 24
8 Набор тестов........................................................................................................ 24
9 Журнал тестирования ........................................................................................ 29
10 Распределение работ по двухнедельному циклу .......................................... 30
Приложение А Руководство пользователя ......................................................... 32
Приложение Б Руководство системного программиста.................................... 37
3
1 Диаграмма вариантов использования
Рисунок 1 Диаграмма вариантов использования
2 Сценарии использования
Главный успешный сценарий.
1. Пользователь запускает программу.
2. Программа выводит главное окно.
3. Пользователь создает новую диаграмму.
4. Пользователь редактирует диаграмму.
5. Пользователь сохраняет диаграмму в файл.
6. Пользователь закрывает программу.
7. Программа завершает работу.
4
Сохранение диаграммы в файл.
1. Пользователь жмет «Сохранить» впервые или «Сохранить как».
2. Пользователю предлагается зашифровать файл диаграммы.
3. Пользователь соглашается.
4. Пользователь вводит ключ шифрования.
5. Появляется окно проводника, и пользователь указывает желаемую
директорию и название файла для сохранения.
6. Файл сохраняется в указанной директории с указанным названием и
расширением .dex.
5б. Пользователь отказывается выбирать файл.
.1: Файл не сохраняется, пользователь возвращается в главное окно
программы.
3а. Пользователь отказывается от шифрования
.1: Продолжаются действия из пункта 5.
1б. Пользователь жмёт «Сохранить» для диаграммы, которая ранее была
сохранена или открыта из файла.
.1: Диаграмма сохраняется в файл, в который ранее была сохранена или из
которого была загружена.
Открытие диаграммы из файла.
1. Пользователь жмёт «Открыть».
2. В появившемся окне пользователь указывает желаемую директорию и
название файла с расширением .dex.
3. Из выбранного файла загружается и отображается в рабочем поле
диаграмма.
5
3а. Выбранный файл поврежден.
.1: Пользователю сообщается о повреждении файла.
.2: Диаграмма из файла не загружается, пользователь возвращается в главное
окно программы.
3б. Выбранный файл зашифрован.
.1: У пользователя запрашивается ключ шифрования
.2: Продолжаются действия из пункта 3.
3б1а. Указан неверный ключ
.1: Выполняются действия альтернативы 3а.
2а. Пользователь отказывается выбирать файл.
.1: Диаграмма из файла не загружается, пользователь возвращается в главное
окно программы.
1а. При нажатии «Открыть» в текущей диаграмме есть несохраненные
изменения.
.1: Пользователю предлагается сохранить изменения.
.2: Пользователь соглашается.
.3: Происходит сохранение диаграммы в файл (см. выше).
.4: Продолжаются действия из пункта 2.
1а2а. Пользователь отказывается.
.1: Продолжаются действия из пункта 2.
1а2б. Пользователь жмёт «Отмена».
.1: Диаграмма из файла не загружается, пользователь возвращается в главное
окно программы.
6
Экспорт диаграммы в графический формат.
1. Пользователь жмет «Экспортировать».
2. В появившемся окне пользователь указывает желаемую директорию и
название файла.
3. Изображение сохраняется в указанной директории с указанным названием
и расширением .img.
2б. Пользователь отказывается выбирать файл.
.1: Изображение не сохраняется, пользователь возвращается в главное окно
программы.
Печать диаграммы.
1. Пользователь жмёт «Печать».
2. В появившемся окне выбирает принтер для печати.
3. Диаграмма распечатывается на выбранном принтере.
Предварительный просмотр диаграммы.
1. Пользователь жмёт «Предварительный просмотр».
2. Демонстрируется новое окно с диаграммой в виде изображения.
2а. Пользователь жмёт в окне предварительного просмотра «Меню» ->
«Печать».
.1: Выполняются действия из альтернативы «Печать диаграммы».
2б. Диаграмма пустая
.1: Пользователю выдаётся сообщение о том, что нечего демонстрировать.
7
3 Описание форматов входных и выходных файлов
Файлы
диаграмм
сохраняются
с
расширением
.dex.
Данные
сохраняются в формате xml. В файл сохраняется информация о каждом
объекте диаграммы. Для каждого объекта записываются его:






идентификатор;
стили;
текст подписи;
размеры;
координаты (для объектов, не являющихся связями);
координаты концов (для связей).
8
4 Диаграмма классов
Рисунок 2 Диаграмма классов (часть 1)
9
Рисунок 3 Диаграмма классов (часть 2)
10
Рисунок 4 Диаграмма классов (часть 3)
11
5 Анализ диаграммы классов
Таблица 1 Анализ диаграммы классов
Новые задачи
Трудоемкость
Комментарии
Предварительный
просмотр
диаграммы
средняя
Требуется добавление
класса
окна
для
просмотра
и
дополнение в основной
класс MyFrame
Рамка
для высокая
диаграммы
Шифрование файла высокая
Добавление
Вывод на печать
низкая
Расширение
класса
MyGraphComponent
Элемент
соединитель
страниц
средняя
Добавление
новых
классов.
Расширение
класса MyFrame.
Валидация стрелок
высокая
Дополнение
функциональности
классов
стрелок,
MyFrame, MyGraph.
Валидация
объектов
высокая
Расширение
MyFrame
класса
Расширение
MyFrame
BasicElement.
класса
и
Привязка связей к высокая
элементам
Требуется добавление
классов
для
шифрования
и
дополнение в основной
класс MyFrame
12
6 Описание диаграммы классов
1. MyCell
Назначение: Класс представляет элемент графа – вершину или связь.
Его назначение выделить общие для всех используемых элементов свойства
и стили, например, такие как возможность удаления, выравнивание, размер,
цвет и шрифт надписи на элементе.
Методы:
1.1.
void addStyle(String param, String value)
Аргументы:
param – название параметра
value – значение параметра
Назначение: добавляет к имеющимся стилям новый.
1.2.
void setPosition(double x, double y)
Аргументы:
X, Y – координаты точки на рабочей области (в писклях).
Назначение: задает положение элемента на рабочей области.
1.3.
public String getFullText()
Назначение: возвращает полный текст элемента.
1.4.
void setPosition(double x, double y)
Аргументы:
x - координата х точки, в которую надо установить элемент
y - координата у точки, в которую надо установить элемент
Назначение: установка позиции элемента.
1.5.
1.6.
void ValidateText(String input)
input – текст подписи.
Назначение: устанавливает полный текст для элемента. Если длина
надписи больше максимально возможной для данного элемента, то
надпись обрезается.
setFullText()
Назначение: установить полный текст элемента как видимый.
13
1.7.
int getMaxTextLenght()
Назначение: возвращает максимальную длину видимого текста для
данного элемента.
Связь с другими классами: Наследуется от библиотечного класса MyCell.
Является абстрактным.
2. Connector
Назначение: Представляет собой элемент -
связь между вершинами
графа. Определяет общие для всех видов связей свойства и стили, такие как
толщина линии, цвет, форма изгибов, способность изменять форму.
Методы:
2.1.
boolean checkConnection(MyCell source, MyCell target)
Аргументы:
source – объект, от которого идет связь
target - объект, к которому идет связь
Возвращаемое значение: признак возможности установки связи
между заданными элементами в заданном направлении.
2.2.
void setFromPoint(mxPoint fromPoint)
Аргументы:
fromPoint - координата точки привязки
Назначение: Установка точки привязки к объекту, от которого идет
связь.
2.3.
mxPoint fromPoint()
Назначение: получить начальную точку привязки.
2.4.
void setToPoint(mxPoint toPoint)
Аргумент:
toPoint - координата точки привязки
Назначение: Установка точки привязки к объекту, к которому идет
связь.
2.5.
mxPoint toPoint()
Назначение: получение конечной точки привязки связи.
14
2.6.
void setGeometry(mxGeometry g)
Назначение: Задать геометрию элементу.
Связь с другими классами: Наследуется от класса MyCell. Является
абстрактным.
3. Association
Назначение: Представляет элемент графа – ненаправленная ассоциация.
Задает стили, характеризующие данный вид связи.
Связь с другими классами: Наследуется от класса Connection.
4. SequencenFlow
Назначение: Представляет элемент графа – управляющий поток. Задает
стили, характеризующие данный вид связи.
Связь с другими классами: Наследуется от класса Connection.
5. Event
Назначение: Представляет элемент графа – простое событие. Задает стили,
характеризующие данный вид вершины.
Связь с другими классами: Наследуется от класса MyCell.
6. Timer
Назначение: Представляет элемент графа – таймер. Задает стили,
характеризующие данный вид вершины.
Связь с другими классами: Наследуется от класса Event.
7. StartEvent
Назначение: Представляет элемент графа – начальное событие. Задает
стили, характеризующие данный вид вершины.
Связь с другими классами: Наследуется от класса Event.
8. EndEvent
Назначение: Представляет элемент графа – завершающе событие. Задает
стили, характеризующие данный вид вершины.
Связь с другими классами: Наследуется от класса Event.
9. Task
15
Назначение: Представляет элемент графа – задание. Задает стили,
характеризующие данный вид вершины.
Связь с другими классами: Наследуется от класса MyCell.
10.Gateway
Назначение: Представляет элемент графа – логический оператор. Задает
стили, общие для всех логических операторов.
Связь с другими классами: Наследуется от класса MyCell. Является
абстрактным.
11.Exclusive
Назначение: Представляет элемент графа логический оператор
–
Исключающее «или». Задает стили, характеризующие данный вид вершины.
Связь с другими классами: Наследуется от класса Gateway.
12.Inclusive
Назначение: Представляет элемент графа логический оператор
–
Включающее «или». Задает стили, характеризующие данный вид вершины.
Связь с другими классами: Наследуется от класса Gateway.
13.Parallel
Назначение: Представляет элемент графа логический оператор – «и».
Задает стили, характеризующие данный вид вершины.
Связь с другими классами: Наследуется от класса Gateway.
14.Annotation
Назначение: Представляет элемент графа – текстовая аннотация. Задает
стили, характеризующие данный вид вершины.
Связь с другими классами: Наследуется от класса MyCell.
15. Pool
Назначение: Представляет элемент графа – свернутый пул. Задает стили,
характеризующие данный вид вершины. Связь с другими классами:
Наследуется от класса MyCell.
16.StartPageConnector
16
Назначение: Представляет элемент графа – начальный соединитель
страниц. Задает стили, характеризующие данный вид вершины. Связь с
другими классами: Наследуется от класса StartEvent.
17.EndPageConnector
Назначение:
Представляет
элемент
графа
–конечный
соединитель
страниц. Задает стили, характеризующие данный вид вершины. Связь с
другими классами: Наследуется от класса EndEvent.
18. enum Tool
Назначение: список типов элементов графа, которые можно создать.
19.MyGraph
Назначение: построение графа. Позволяет добавлять и удалять вершины и
связи между ними.
Поля:
a) MyGraphComponent gc
Назначение: рабочая область построения диаграммы.
Методы:
a)
Image getImage()
Назначение: получение изображения графа.
Возвращаемое значение – изображение.
b)
void addConnection(Connection connect, MyCell source, Mycell target)
Аргументы:
connect – связь между объектами
source – начальная вершина
target – конечная вершина
Назначение: добавляет связь connect между элементами source и target.
c) void setPasting(boolean val)
Назначение: устанавливает признак – происходит вставка.
d) boolean isPasting()
Назначение: получить признак – происходит ли вставка.
17
e) int connectionLength(ArrayList<mxPoint> points)
Аргументы:
Points – точки на рабочей области
Возвращаемое значение: длина пути по точкам.
f) boolean repaintConnections(HashSet<Connector> changedEdges)
Назначение: перестраивает связи для перемещенных стрелок.
g) void deleteSelectedObjects()
Назначение: удалить выделенные объекты.
h) boolean hasEdgesBetween(MyCell source, MyCell target)
Аргументы:
Source – начальная вершина связи.
Target – конечная вершина
Назначение: определяет есть ли связь между элементами в заданному
направлении.
Связь с другими классами: наследуется от библиотечного класса mxGraph.
20.MyFrame
Назначение: Класс представляет собой главное окно программы. Реагирует
на действия пользователя.
Методы:
a) MyGraphComponent getGraphComponent()
Назначение: получение рабочей области.
b) MyFrame getFrame()
Назначение: получение экземпляра окна.
c) void setCurrentTool (Tool tool)
Аргументы: tool – инструмент, который нужно установить.
Назначение: установить заданный инструмент как активный. Выделить
его на панели инструментов.
d) void resetCurrentTool()
Назначение: сбросить установленные инструменты.
e) void showGraphPopupMenu(MouseEvent e)
Назначение: демонстрация меню по правой кнопке мыши.
f) void saveDialog()
Назначение: отображает диалог сохранения файла.
g) void encryptDialog()
Назначение: отображает диалог шифрования файла.
h) void decryptDialog()
18
Назначение: отображает диалог расшифровки файла.
i) void openDialog ()
Назначение: отображает диалог открытия файла.
j) void saveQuestionDialog ()
Назначение: отображает диалог сохранения файла при изменениях.
k) void save ()
Назначение: Сохранение файла.
Связь с другими классами: наследуется от библиотечного класса MyFrame
21.MyGraphComponent
Назначение: Виджет для отображения графа. Отлавливает действия мыши на
рабочей области это его поведение используется для добавления и удаления
элементов графа.
Методы:
a)
MyGraph createNewGraph()
Назначение: создает новый граф и очищает рабочую область (используется
для функции «Новый»).
Возвращаемое значение: новый пустой граф.
b) Point getTrueMousePosition()
Назначение: Возвращает позицию мыши на рабочей области.
c) void print()
Назначение: выводит диаграмму на печать.
d) ArrayList <ArrayList<mxCell>> getVerticeIntersections ( )
Назначение:
Возвращает
пересечения
объектов
(наследников
BasicElement) с другими объектами.
e) ArrayList <ArrayList<mxCell>>
getIntersectionsBetwenVerticesAndEdges()
Назначение: Возвращает пересечения объектов (наследников
BasicElement) с дугами.
f) boolean isIntersectoin(Rectangle r1, Rectangle r2)
Аргументы:
r1 - первый прямоугольник
r2 - второй прямоугольник
19
Назначение: метод определяет пересекаются ли прямоугольники.
Связь с другими классами: наследуется от библиотечного класса
mxGraphComponent. Содержит модель графа.
22.CellFactory
Назначение: создание элементов графа.
Методы:
a)
MyCell createCell(tool Tool)
Аргументы:
tool – тип элемента графа
Возвращаемое значение: элемент заданного типа.
Назначение: создание элемента графа заданного типа.
23.FileWorker
Назначение: работа с файлами (сохранение/загрузка графа).
Методы:
a) Void saveGraph (MyGraphComponent component, File file)
Аргументы:
Component – компонент с графом содержит все элементы, а так же их
положение на рабочей области.
File – файл, в который нужно сохранить граф.
Назначение: сохранение графа в файл в формате XML.
b) Void loadGraph (MyGraphComponent component, File file)
Аргументы:
Component – компонент, на который нужно поместить граф.
File – файл с данными о графе.
Назначение: загрузка из файла графа в формате XML.
c) void saveAsImag( mxGraphComponent graphComponent, String fileName)
Аргументы:
graphComponent - рабочая область диаграммы
fileName - имя файла сохранения
Назначение: Экспорт в изображение.
20
d) String fName()
Назначение: получить имя текущего файла.
e) void setFName(String newVal)
Аргументы:
newVal – новое имя файла.
Назначение: установить новое имя файла.
f) boolean cryptAsked()
Назначение: получение флага необходимости шифрования.
g) void setCryptAsked(boolean f)
Назначение: установка флага необходимости шифрования.
h) String cryptKey()
Назначение: получение ключа шифрования.
i) void setCryptKey(String key)
Аргументы: key – новый ключ шифрования.
Назначение: установка ключа шифрования.
j) void setModified(boolean f)
Назначение: установка флага наличия изменений в файле.
k) boolean modified()
Назначение: получение флага наличия изменений в файле.
24. EdgeHandler
Назначение: менеджер стрелок.
Поля:
Методы:
a) ArrayList<mxPoint> FindEdgePoints(mxCell from, mxCell to, mxPoint
fromPoint, mxPoint toPoint, Object[] objects)
Назначение: вычислить прохождение связи от одного элемента к
другому через поле.
Поиск производится при помощи алгоритма А*. Приоритет в
проведении связи отдаётся минимизации пересечений со связями,
затем минимизации длины пути. Для проведения связи предварительно
21
получаются доступные точки привязки объекта, затем проводятся связи
между несколькими парами точек привязок. Из полученных путей
выбирается
путь
минимальной
длины.
Для оптимизации времени работы алгоритма, поиск ведется в соседних
4-х клетках, при этом просчитывается Манхэттенское расстояние до
цели. Связь не проводится, если количество пересечений слишком
большое (защита от наложения). Поиск нужного пути может занимать
длительное время, если диаграмма нагружена элементами и связями.
Аргументы:
From - откуда ведется стрелка.
To - куда ведется стрелка.
fromPoint - точка привязки объекта from.
toPoint - точка привязки объекта to.
Objects – список всех объектов на поле.
Возвращаемое значение: массив точек – путь связи.
25. Table
Назначение: Класс для представления поля в виде, требуемом
алгоритму А*.
Поля:
a) Int Width – ширина поля
b) Int Height – высота поля
c) Cell[][] table – клетки на поле
Методы:
a) add(Cell cell)
Аргументы:
Cell – новая ячейка.
Назначение: добавить клетку на карту.
b) T get(int x, int y)
Назначение: получить клетку по координатам x, y.
c) void printp()
Назначение: печать всех клеток поля
26.Cell
Назначение: клетка таблицы Table для алгоритма А*.
Поля:
a) int x,y
Назначение: координаты клетки в таблице.
22
b) Cell parent
Назначение: клетка, из которую мы пришли в данную.
c)
boolean blocked
Назначение: признак -заблокирована ли клетка
d) boolean start
Назначение: признак - является ли клетка клеткой начала поиска
пути.
e) boolean finish
Назначение: признак является ли клетка клеткой конца поиска пути
f) boolean road
Назначение: признак - является ли клетка участком пути
g) int F,G,H
Назначение: стоимости движения через клетки.
27. Encryptor
Назначение: Класс для шифрования и расшифрования файлов
диаграммы. Шифрование происходит алгоритмом Полибия с
использованием ключа, задаваемого пользователем.
Методы:
a) String encrypt(String text, String key)
Аргументы:
text - шифруемый текст
key - ключ шифрования
Назначение: шифрование текста.
b) String decrypt(String text, String key)
Аргументы:
text - шифруемый текст
key - ключ шифрования
Назначение: расшифровка текста.
28. MyButton
Назначение: кнопка панели инструментов.
Методы:
a) void active(boolean active)
Назначение: задать активность кнопки.
29. SystemRussifier
23
Назначение: Русификатор системных диалогов с пользователем.
Методы:
a) void Russify()
Назначение: русификация текстовых констант системных диалогов.
30. VertexHandler
Назначение: менеджер стрелок – управляет путями проведения стрелок
для соблюдения непересечения их с объектами.
Методы:
a) int GetAdjustX(int pos, int width)
Назначение: Получить координату X верхнего левого угла исходя из
ширины и координаты центра.
b) int GetAdjustX(int pos, int width)
Назначение: Получить координату Y верхнего левого угла исходя из
высоты и координаты центра.
c) ArrayList<mxPoint> FindPlacesOnPerimetrForEdge(mxCell from,
mxCell to)
Аргументы:
from - элемент от которого ведется связь.
to - элемент, к которому ведется связь.
Назначение: поиск свободной точки привязки на периметре объекта
from при проведении стрелки к объекту to.
d) mxPoint PerimeterPointToRelativeCoordinates(int p, Rectangle borders)
Аргументы:
p - точка на периметре объекта
borders - границы объекта
Назначение: перевод в реальные координаты из точки на периметре.
e) mxPoint PerimeterPointToObjectCoordinates(int p, Rectangle borders)
Аргументы:
p - точка на периметре объекта
borders - границы объекта
Назначение: перевод в координаты элемента из точки на периметре.
f) mxPoint ToRelativeCoordinates(mxPoint old, Rectangle borders)
Аргументы:
old - реальные координаты
borders - границы объекта
Назначение: перевод в реальные координаты из относительных.
g) mxPoint FromRelativeCoordinates(mxPoint old, Rectangle borders)
24
Аргументы:
old - относительные координаты
borders - границы объекта
Назначение: перевод в относительные координаты из реальных.
7 Описание методики тестирования
В процессе разработки и отладки программы были использованы
следующие методы тестирования:
 модульное
 интеграционное
 визуальное
8 Набор тестов
Таблица 2 Набор тестов
Начальное состояние
Элемент
инструментов
Действие
панели Клик по элементу А (ЛКМ)
А
не
Конечное состояние
Элемент панели инструментов
А выбран
выбран
Элемент
панели Клик по элементу А (ЛКМ)
инструментов А выбран
Ни
один
элемент
панели
инструментов не выбран
Клик по элементу Б (ЛКМ)
Элемент панели инструментов
А не выбран, элемент панели
инструментов Б выбран
Клик по рабочему полю На
(ЛКМ)
поле
находится
новый
объект
соответствующий
элементу
А
в
режиме
редактирования текста (если
требуется)
Ни один элемент панели Клик по рабочему полю Ничего не изменилось
инструментов не выбран
(ЛКМ)
Объект А на рабочем Клик по объекту А (ЛКМ)
Объект А на рабочем поле
поле не выделен
выделен
25
Начальное состояние
Действие
Конечное состояние
Объект А на рабочем Двойной клик по объекту А Объект А перешел в режим
поле
не
находится
в (ЛКМ)
редактирования
режиме редактирования
Объект А на рабочем Нажатие
поле находится в режиме или
редактирования
Объек
А
в
клавиши
смена
Enter Объект А выходит из режима
таргета
с редактирования,
элемента А
сохраняются
позиции Draganddrop
Объек А в позиции {х2,y2}
{х1,y1}
Выбран
изменения
соответственно переносу
соединяющий Клик по объекту А (ПКМ), Между объектами
элемент
панели клик по объекту Б (ПКМ)
А
и
Б
появилось соединение
инструментов
После начала работы с Нажата кнопка "File - New"
диаграммой
Создается новая диаграмма
изменений Нажатакнопка "File - Save Появляется окно сохранения
не было (диаграмма не as..."
открыта из файла)
файла
Нажата кнопка "File - Save"
Нажата
кнопка
"File
- Открывается
диаграмма
из
сообщение
об
файла
Open"
(файл не битый)
Нажатакнопка "File - Open"
Появляется
(файлбитый)
ошибке
Закрытие программы
Программа закрывается
После начала работы с Нажата кнопка "File - New"
Создается новая диаграмма
диаграммой
изменений Нажатакнопка "File - Save Появляется окно сохранения
не
(диаграмма as..."
было
открыта из файла)
файла
Нажата кнопка "File - Save"
Диаграмма сохраняется в свой
файл
Нажата
кнопка
"File
- Открывается
Open"
диаграмма
из
сообщение
об
файла
(файл не битый)
Нажатакнопка "File - Open"
Появляется
(файлбитый)
ошибке
Закрытие программы
Программа закрывается
26
Начальное состояние
Действие
Конечное состояние
После начала работы с Нажата кнопка "File - New"
Появляется
диаграммой произошли
сохранить
изменения (диаграмма не
согласиться
открыта из файла)
сохранения файла
Нажата
кнопка
"File
- Появляется
Open"
сохранить
(файл не битый)
предложение
диаграмму,
если
откроется
окно
предложение
диаграмму,
если
согласиться
откроется
окно
сохранения
файла,
после
сохранения
или
отказа
открывается
диаграмма
из
файла
Нажата
кнопка
"File
- Появляется
Open"
сохранить
(файл битый)
предложение
диаграмму,
если
согласиться
откроется
окно
сохранения
файла,
после
сохранения
или
отказа
появляется
сообщение
об
ошибке (открыта предыдущая
диаграмма)
Нажатакнопка "File - Save Появляется окно сохранения
as..."
файла
Нажата кнопка "File - Save"
Закрытие программы
Появляется
сохранить
предложение
диаграмму,
если
согласиться
откроется
окно
сохранения
файла,
после
сохранения
или
отказа
программа закрывается
После начала работы с Нажата кнопка "File - New"
Появляется
диаграммой произошли
сохранить
изменения
согласиться
(диаграмма
открыта из файла)
предложение
диаграмму,
диаграмма
сохраняется в свой файл
Нажатакнопка "File - Save
если
27
Начальное состояние
Действие
Конечное состояние
as..."
Нажата кнопка "File - Save"
Диаграмма сохраняется в свой
файл
Нажата
кнопка
"File
-
Open"
(файл не битый)
Нажатакнопка "File - Open"
Появляется
(файлбитый)
сохранить
предложение
диаграмму,
если
согласиться
откроется
окно
сохранения
файла,
после
сохранения
или
отказа
появляется
сообщение
об
ошибке (открыта предыдущая
диаграмма)
Закрытие программы
Появляется
сохранить
предложение
диаграмму,
если
согласиться
откроется
окно
сохранения
файла,
после
сохранения
или
отказа
программа закрывается
На поле есть элемент А Создается объект В так, что Объекта
(объект или стрелка)
В
на
поле
нет,
его контур пересекается с система выдает ошибку
контуром элемента А
На поле есть элемент А Объект В переносится так, Объект В возвращается на
(объект или стрелка) и что
объект В
его
контур исходную позицию
пересекается с
контуром
элемента А
Размер объекта B меняется Объект
так,
что
его
пересекается с
В
возвращается
к
контур исходному размеру
контуром
элемента А
Поле с объектами
Попытка
провести Связь не проведена, система
недопустимую связь
выдает ошибку
28
Начальное состояние
Действие
Конечное состояние
Нажата кнопка Меню – Открывается
окно
Предварительный
пропорциональное листу А4,
просмотр
содержащее скрин диаграммы
Нажата кнопка Меню – Открывается окно печати
Печать
Пустое поле
Нажата кнопка Меню – Выдается сообщение о том,
Предварительный
что граф пуст
просмотр
Три объекта стоят в ряд От объекта A проводится Между объектами А и С
стрелка к объекту С
(A,B,C)
проведена
стрелка,
которая
огибает объект В
На поле четыре объекта От объекта C проводится Между объектами А и С
(А,
В,
С,
и
D) стрелка к объекту D
проведена
стрелка
На
между объектами А и В
и
поле
выделен
которая
огибает объект В и стрелку
между
А
стрелка,
В
объект
А ПКМ
по
объекту
А
- Объект А находится в буфере
объекту
А
- Объект А пропадает с поля и
Копировать
ПКМ
по
Вырезать
находится в буфере
На поле объекты А и В ПКМ по объекту А или В - Объекты А и В находится в
выделены
Копировать
буфере
(с
сохранением
расстояния между ними)
ПКМ по объекту А или В - Объекты А и В пропадают с
Вырезать
поля и находится в буфере (с
сохранением
расстояния
между ними)
Объект А находится в ПКМ по полю - Вставить На поле появляется объект А
буфере
(после вставки объект А не
будет
пересекаться
с
другими объектами)
ПКМ по полю - Вставить Поле не меняется
29
Начальное состояние
Действие
Конечное состояние
(после вставки объект А
будет
пересекаться
с
другими объектами)
Объекты
А
и
В ПКМ по полю - Вставить На поле появляется объекты А
находятся в буфере
(после вставки ни один из и В
объектов А или В не будет
пересекаться
с
другими
объектами)
ПКМ по полю - Вставить Поле не меняется
(после вставки хотя бы
один из объектов А или В
будет
пересекаться
с
другими объектами)
9 Журнал тестирования
Таблица 3 Журнал тестирования
Дата
Найдено
2015-11-27
Валидация объектов позволяет переместить или создать объект
вплотную к другому
2015-11-29
После
повторного
сохранения
диаграмма
считалась
модернизированной
2015-11-29
Запрос ключа шифрования осуществляется при открытии не
зашифрованного файла
2015-12-03
Ошибка NullPointerException при перемещении мыши с
элемента на поле
2015-12-03
Сохранение текста в картинку для пула/задания/аннотации не
происходит
2015-12-03
Перенос объекта на текст не валидируется
2015-12-03
При
заполнении
задачи
большим
кол-вом
букв
'Щ',
30
сокращенный текст выходит за границы
При вставке с наложением объект дублировался над исходным
2015-12-03
объектом
Вставка недопустимых объектов (copy/paste) не валидируется
2015-12-03
(например создать второй StartEvent)
Ситуация
2015-12-07
перенос Задание так, чтобы подпись События
оказалась полностью внутри Задания, но не цеплялось само
событие не валидируется
На отрицательной части графа объекты не валидируются (как
2015-12-07
будто их координаты сдвинуты на столько, на сколько сдвинут
граф)
При загрузке из файла неправильно работает отображение
2015-12-10
полного текста в всплывающей подсказке
10 Распределение работ по двухнедельному циклу
Таблица 4 Распределение задач
Задача
Исполнитель
Временные
Статус
затраты (часов)
Валидация объектов
Липов М.
10
100%
Элемент «Соединитель страниц»
Саркисова Е.
2
100%
Предварительный просмотр диаграммы
Липов М.
2
100%
Функция вывода диаграммы на печать
Саркисова Е.
2
100%
количества Саркисова Е.
2
100%
Проверки
начальных/конечных
состояний
и
разделителей страниц
Шифрование файла диаграммы
Сперцян К.
2
100%
Русификация интерфейса
Липов М.
1
100%
сторон Сперцян К.
2
100%
Вырезание/копирование/вставка
Сперцян К.
2
100%
Валидация допустимости связей
Саркисова Е.
3
100%
Внедрение
положительных
старого проекта
31
Задача
Исполнитель
Временные
Статус
затраты (часов)
Исправление ошибок первого релиза
Проведение связей без пересечений
Переработка
интерфейса
Саркисова Е.
3
100%
Липов М.
3
100%
Сперцян К.
20
70%
1
100%
проведения Саркисова Е.
связей
Переработка панели элементов
Саркисова Е.
3
100%
Техническое задание
Емельянов Д.
6
100%
Проектные решения
Емельянов Д.
6
100%
Руководство пользователя
Емельянов Д.
1
100%
Руководство системного программиста
Емельянов Д.
2
100%
32
Приложение А Руководство пользователя
1 Назначение и условия применения программы
Программа предназначена для создания и редактирования диаграмм
бизнес процессов в соответствии со стандартом BMPN (версия не младше
2.0).
Программа
должна
соответствовать
требованиям
надежности,
Программы
необходима
функциональности, эргономичности.
Программа называется «DiagramEditorX».
Для
корректного
функционирования
операционная система Windows XP и новее.
Программа написана с помощью языка программирования Java
и
библиотеки jgraphx.
2 Характеристики программы
2.1 Требования к функциональным характеристикам
Главные функции:
 Программный продукт должен обеспечивать удобное редактирование
диаграммы процесса.
 Должно
быть
предусмотрено
создание,
изменение,
удаление
структурных элементов, их положения на странице.
 Программа должна реализовывать добавление объектов и связей на
рабочую область.
 Должно быть реализовано открытие ранее созданного файла для
дальнейшего редактирования.
Основные функции:
 Программа
элементов.
должна
позволять
изменять
положение
единичных
33
 Программа должна предусматривать возможность изменять размер
элементов.
 Должна быть реализована возможность добавлять к элементам
текстовое описание.
 Должна быть реализована функция удаления объектов и связей с
рабочей области.
Вспомогательные функции:
Первый релиз:
 Программа должна осуществлять выделение нескольких элементов.
 Программа должна осуществлять перемещение выделенных элементов
по рабочей области.
 Должно быть реализовано удаление нескольких выделенных элементов
с рабочей области.
 При удалении элемента диаграммы должны удаляться все связи,
«компоненты» и надписи, связанные с этим элементом.
 Должна
быть
реализована
функция
сохранения
диаграммы
в
изображение.
Второй релиз:
 Программа должна осуществлять вывод диаграммы на печать.
 Программа
должна
осуществлять
функцию
предварительного
просмотра диаграммы.
 Программа должна осуществлять защиту файла диаграммы путем
шифрования с паролем криптостойким алгоритмом.
 Программа должна осуществлять функции копирования, вырезания и
вставки, как в одном экземпляре программы, так и между несколькими.
2.2 Требования к надежности
При всех доступных взаимодействиях пользователя с программой она
не завершает свою работу аварийно.
34
2.3 Требования к составу и параметрам технических средств
Требования составлены в соответствии с требованиями для работы Java
Runtime Environment версии 1.8.0_65
 Оперативная память - не менее 256 Мб.
 Процессор не младше Pentium 2 266 MGz.
 Пространство на жестком диске - 350 Мб.
 Минимальное разрешение экрана – 720x500 пикселей.
 Устройства ввода: мышь, клавиатура
2.4 Требования к информационной и программной совместимости
 ЭВМ должна работать под управлением ОС Windows не
ниже версии Windows XP.
 Программа должна запускаться на машине с установленной
JDK версии не ниже 7.0.
3 Обращение к программе
Программа представляет собой окно с рабочей областью и панелью
элементов. Обращение к программе происходит посредством выбора
нужного элемента на панели инструментов для его создания на рабочей
области. Редактирование элементов происходит на рабочей области. Работа с
файлами происходит в вкладке «Файл» в верхней левой части экрана.
4 Входные и выходные данные
Формат входных и выходных файлов описан в пункте 10 технического
задания.
35
5 Сообщения
Таблица 1 Сообщения программы, выдаваемые пользователю
Файл сохранён: <имя файла>
Выдаётся при успешном сохранении в
файл
Ошибка при сохранении в файл
Ошибка
при
Выдаются при возникновении ошибки
в записи в файл (например, если файл
экспорте
защищен от записи)
изображение
При считывании файла произошла Выдаётся при невозможности открыть
ошибка.
Возможно,
файл сохранённую диаграмму из файла
поврежден
Зашифровать сохраняемый файл?
Вопрос о необходимости зашифровать
сохраняемый файл
Введите ключ шифрования:
Запрос
ключа
шифрования
при
положительном ответе на предыдущий
вопрос
Файл зашифрован. Введите ключ Запрос
шифрования:
Диаграмма
ключа
шифрования
при
считывании зашифрованного файла
не
сохранена. Выдаётся при попытке открыть или
Сохранить?
создать
файл
при
наличии
несохраненных изменений в текущем
Нечего демонстрировать
Выдаётся при вызове предварительного
просмотра пустой диаграммы
В элементе может содержаться не Выдаётся при попытке добавить к
более <N> символов
элементу
подпись
длиной
больше
максимально разрешенной
Невозможно
ассоциативную
установить Выдаётся
связь
при
между ассоциативной
попытке
связи
создания
между
36
элементами
элементами,
для
которых
она
не
предусмотрена
Невозможно
установить
поток Выдаётся
управления между элементами в потока
этом направлении
при
попытке
управления
в
проведения
выбранном
направлении между элементами, для
которых она не предусмотрена
Cвязь
между
элементами
уже Выдаётся
при
попытке
проведения
установлена
дублирующей связи
Наложение объектов недопустимо
Выдаётся, когда пользователь пытается
создать объект поверх существующего
На диаграмме не может быть Выдаются при попытке добавления
более
одного
закрывающего более одного допустимого элемента из
соединителя страниц
группы
На диаграмме не может быть
более
одного
открывающего
соединителя страниц
На диаграмме не могут быть
начальное
событие
открывающий
и
соединитель
одновременно
Невозможно построить все связи Выдаётся
из новой позиции.
при
невозможности
перестроить все связи объекта после его
перемещения.
Невозможно проложить путь для Выдаётся
связи.
при
невозможности
проведения связи между элементами,
удовлетворяющей
ограничениям.
заявленным
37
Приложение Б Руководство системного программиста
1 Общие сведения
Программа предназначена для создания и редактирования диаграмм
бизнес процессов в соответствии со стандартом BMPN (версия не младше
2.0).
Программа
должна
соответствовать
требованиям
надежности,
функциональности, эргономичности.
2 Структура программы
Структура программы представлена в разделе 4 документа проектные
решения.
3 Настройка программы
Изначально программа представляет собой установщик, исполняемый
файл с расширением .exe. Для установки программы нужно выполнить этот
файл.
Рисунок 1 Окно начала установки
38
Рисунок 2 выбор языка
Рисунок 3 Выбор директории для установки
39
Рисунок 4 Запрос на создание ярлыка в меню "Пуск"
Рисунок 5 Запрос на создание ярлыка на рабочем столе.
40
После установки программа представляет собой исполняемый файл,
запускающий программу, и две директории:
 lib - с библиотекой jgraphx.jar
 jre - с Java Runtime Library.
Download