Просмотр исходного кода

переписал задание на экзамен

Евгений Колесников 4 лет назад
Родитель
Сommit
822e72653c
1 измененных файлов с 118 добавлено и 45 удалено
  1. 118 45
      articles/5_0_0_0_task.md

+ 118 - 45
articles/5_0_0_0_task.md

@@ -1,85 +1,158 @@
-# Задание на экзамен по ПМ.05
+# Задание на экзамен по ПМ.05 (вариант 7 ДЭ2021)
 
 ## Описание предметной области
 
-Вашей задачей  является разработка информационной системы для медицинской лаборатории № 1 города Йошкар-Олы.
+Вашей задачей является разработка системы для производственной компании, которая
+ежедневно выпускает продукцию в большом объеме, а также реализует ее агентам, которые в
+дальнейшем продают эти товары конечным потребителям.
 
-Медицинская лаборатория № 1 работает на прием биоматериала из поликлиник города, проводит специализированные исследования, ведет базу данных исследований.
+### Основное задание на разработку
 
-Порядок работы лаборатории: на каждую единицу принятого **биоматериала** создается **заказ**, который может содержать в себе **услуги** (одну или несколько) – исследования биоматериала. У одного **пациента** может быть несколько заказов.
+Наша компания “Глазки-save” занимается производством защитных очков для различных сфер
+использования. Мы реализуем продукцию не напрямую покупателям, а работаем с агентами,
+которые уже впоследствии продают нашу продукцию конечному потребителю. Для удобного
+взаимодействия с агентами и контроля их работы нам требуется система, позволяющая
+аккумулировать всю информацию по агентам.
+Вам предстоит разработать подсистему для работы с агентами нашей компании, которая должна
+включать в себя следующий функционал:
+* просмотр списка агентов,
+* добавление/удаление/редактирование данных об агенте,
+* управление историей реализации продукции агентом.
 
-**Обеспечьте хранение в базе данных:**
+### Название приложения
 
-* биоматериалы, принятые от поликлиник (пациент, уникальный номер материала, дата принятия)
-файл: `blood.xml`
+Используйте соответствующие названия для ваших приложений и файлов. Так, например, наименование настольного приложения должно обязательно включать название компании-заказчика.
 
-* услуги лаборатории (наименование, стоимость, код услуги, срок выполнения); 
-файл: `services.csv`
+### Руководство по стилю
 
-* данные пациентов (логин, пароль, ФИО, дата рождения, серия и номер паспорта, телефон, e-mail); 
-файл: `patients.xml`
+Визуальные компоненты должны соответствовать руководству по стилю, предоставленному в качестве ресурсов к заданию в соответствующем файле. Обеспечьте соблюдение требований
+всех компонентов в следующих областях:
+* цветовая схема,
+* размещение логотипа,
+* использование шрифтов,
+* установка иконки приложения.
 
-* заказ (дата создания, услуги которые входят в заказ, статус заказа, статус услуги в заказе, время выполнения заказа (в днях))
+### Обратная связь с пользователем
 
-* данные лаборантов (логин, пароль, ФИО, последняя дата и время входа, набор услуг, которые он может оказывать)
+Уведомляйте пользователя о совершаемых им ошибках или о запрещенных в рамках задания действиях, запрашивайте подтверждение перед удалением, предупреждайте о неотвратимых
+операциях, информируйте об отсутствии результатов поиска и т.п. Окна сообщений соответствующих типов (например, ошибка, предупреждение, информация) должны
+отображаться с соответствующим заголовком и пиктограммой. Текст сообщения должен быть полезным и информативным, содержать полную информацию о совершенных ошибках
+пользователя и порядок действий для их исправления. Также можно использовать визуальные подсказки для пользователя при вводе данных.
 
-Разработанная вами база данных должна быть в **3 НФ**.
+### Обработка ошибок
 
-## Задание №1, Моделирование системы
+Не позволяйте пользователю вводить некорректные значения в текстовые поля сущностей. Например, в случае несоответствия типа данных или размера поля введенному значению.
 
-Разработайте диаграмму вариантов использования информационной системы лаборатории № 1. Определите основных актеров, варианты их использования и типы взаимодействия. 
+Оповестите пользователя о совершенной им ошибке.
+Обратите внимание на использование абсолютных и относительных путей к изображениям. Приложение должно корректно работать в том числе и при перемещении папки с исполняемым файлом.
 
-Формат представления диаграммы: PDF. 
+При возникновении непредвиденной ошибки приложение не должно аварийно завершать работу.
 
-## Задание №2, ERD
+### Предоставление результатов
 
->Посмотреть что будет на демо-экзамене, может уберем этот пункт
+Все практические результаты должны быть переданы заказчику путем загрузки файлов на предоставленный вам репозиторий системы контроля версий git. Практическими результатами
+являются
+* исходный код приложения (в виде коммита текущей версии проекта, но не архивом), 
+* исполняемые файлы, 
+* прочие графические/текстовые файлы.
 
-Создайте подробную ERD для предметной области. 
+Результаты работы каждой сессии должны быть загружены в отдельный репозиторий с названием «SessionX» (X – номер сессии).
 
-К разработанной диаграмме создайте словарь данных (пример словаря данных в папке с ресурсами).
+Для оценки работы будет учитываться только содержимое репозитория. При оценке рассматриваются заметки только в электронном виде (`readme.md`). Рукописные примечания не
+будут использоваться для оценки.
 
-## Задание №3, Работа с БД
+## Сессия 1
 
-<!-- 1 час -->
+### Проектирование требований
 
-Создайте таблицы **основных сущностей**, атрибуты, отношения и необходимые ограничения. После создания базы данных требуется импортировать предоставленные данные. Возможно, вам понадобится отформатировать данные, прежде чем загрузить их в таблицы, которые вы только что создали. В любом случае **созданные таблицы должны содержать начальные тестовые данные**.
+Для согласования процесса разработки с заказчиком Вам необходимо ознакомиться с описанием предметной области и сделать диаграмму прецедентов (Use Case) для основных пользователей системы.
 
-## Задание №4, Программирование
+Сохраните файл с диаграммой в формате PDF, используя в качестве названия следующий шаблон:
+UseCase_XX, где XX - номер вашего рабочего места.
 
-При запуске приложения окно входа – первое, что видит пользователь. На ней пользователю предлагается ввести свой логин и пароль. Только после удачной авторизации пользователь получает доступ к остальным модулям системы.
+### Спецификации к UseCase
 
-При вводе пароль должен быть скрыт маской ввода, но так же должна быть реализована возможность просмотра введенного пароля. 
+Создайте спецификации к 3 самым важным прецедентам предметной области по вашему мнению. Не забудьте указать в каждой спецификации название прецедента, актера, цель выполнения прецедента, предусловия, главную последовательность по шагам, альтернативные последовательности и постусловия.
 
-При входе система выводит фото пользователя, фамилию и имя пользователя, его роль.
+### Восстановление базы данных из скрипта
 
-После авторизации пользователь получает доступ к нужному функционалу: 
+Для восстановления таблиц в созданную базы данных воспользуйтесь предоставленным скриптом (`ms.sql`). В процессе разработки приложения Вы можете изменять
+базу данных на свое усмотрение.
 
-* лаборант может принять биоматериал, сформировать заказ;
-* пациент может посмотреть список своих заказов и список услуг лаборатории.
+### Импорт данных
 
-Реализуйте необходимые интерфейсы для всех пользователей системы. После входа в любую учетную запись должна быть реализована возможность выхода на главный экран – окно входа. 
+Заказчик системы предоставил файлы с данными (с пометкой import в ресурсах) для переноса в новую систему. Подготовьте данные файлов для импорта и загрузите в разработанную базу данных.
 
-### Прием биоматериала и формирование заказа
+## Сессия 2
 
-Лаборант получает от курьера биоматериал из поликлиник города. Каждый биоматериал приходит с листом сопровождения. 
+### Разработка desktop-приложений
 
-При приеме биоматериала лаборант формирует заказ. В данном случае заказ - это занесение в базу данных кода биоматериала и перечень услуг (далее  - исследований)
+#### Список агентов
 
-**Реализуйте интерфейс для приема биоматериала и формирования заказа.** 
+В связи с тем, что компания не реализует продукцию конечным потребителям, у нас есть множество агентов по всей стране, которые продают нашу продукцию от лица нашего бренда. Необходимо вести учёт всех агентов, а также статистику по их продажам.
 
-После ввода кода пробирки в окне формирования заказа реализуйте возможность ввода ФИО пациента, услуги. Если пациента в базе данных лаборатории нет, его необходимо добавить. Для этого открывается дополнительное модальное окно добавления пациента, в котором нужно ввести ФИО, дата рождения, серия и номер паспорта, телефон, e-mail.
+Реализуйте окно для показа краткой информации об агентах: логотип, наименование, количество продаж за год, телефон и тип агента.
 
-Реализуйте возможность добавления нескольких услуг к заказу, поле для добавления новой услуги появляется по нажатию кнопки.
+При отсутствии изображения необходимо вывести картинку-заглушку из ресурсов (picture.png).
 
-**Реализуйте интерфейс для просмотра списка заказов**
-Реализуйте поиск пациента и услуг по всем доступным данным. 
+Количество продаж вычисляется как общее количество проданных единиц продукции за последний год
+(365 дней).
 
-## Задание №5, Тестирование
+Пользователь должен иметь возможность отсортировать агентов (по возрастанию и убыванию) по следующим параметрам: наименование и приоритет агента. Выбор сортировки должен
+быть реализован с помощью выпадающего списка.
 
-Напишите UNIT-тесты для процесса добавления заказа.
+Кроме этого, пользователь должен иметь возможность отфильтровать данные по типу агента. Все типы из
+базы данных должны быть выведены в выпадающий список для фильтрации. Первым элементом в выпадающем списке должен быть “Все типы”, при выборе которого настройки фильтра сбрасываются.
 
-## Задание №6, Оформление результатов экзамена
+Пользователь должен иметь возможность искать агентов, используя поисковую строку. Поиск должен осуществляться по наименованию и контактным данным (email и номер телефона агента).
 
-Оформите пояснительную записку в файле `readme.md`. Результаты работы разместите в репозитории.
+Поиск, сортировка и фильтрация должны происходить в реальном времени, без необходимости нажатия
+кнопки “найти”/”отфильтровать” и т.п. Фильтрация и поиск должны применяться совместно. Параметры сортировки, выбранные ранее пользователем, должны сохраняться и во время фильтрации с поиском.
+
+#### Добавление/редактирование агентов
+
+Необходимо добавить возможность редактирования данных существующего агента, а также добавление
+нового агента в новом окне - форме для добавления/редактирования агента. Переходы на данное окно
+должны быть реализованы из главной формы списка: для редактирования - при нажатии на конкретный
+элемент, для добавления - при нажатии кнопки “Добавить агента”.
+
+На форме должны быть предусмотрены следующие поля: наименование, тип агента (выпадающий
+список), приоритет, логотип компании, адрес, ИНН, КПП, имя директора, телефон и email компании.
+
+При открытии формы для редактирования все поля выбранного объекта должны быть подгружены в соответствующие поля из базы данных, а таблица заполнена актуальными значениями.
+
+Приоритет агента и количество продукции должны быть целыми неотрицательными числами.
+
+Пользователь может добавить/заменить логотип агента.
+
+Для того чтобы администратор случайно не изменял несколько агентов, предусмотрите невозможность открытия более одного окна редактирования.
+
+#### Удаление агента
+
+В главном должна присутствовать кнопка “Удалить”, которая удаляет агента из базы данных. При этом должны соблюдаться следующие условия. Если у агента есть информация о точках
+продаж агентов или история изменения приоритета, то эта информация должна быть удалена вместе с агентом. Но если у агента есть информация о реализации продукции, то удаление агента из базы данных должно быть запрещено. После удаления агента система должна сразу вернуть пользователя обратно к
+списку агентов.
+
+После редактирования/добавления/удаления агента данные в окне списка агентов должны быть обновлены. 
+
+### Разработка тестовых сценариев (Test-cases)
+
+Для выполнения процедуры тестирования удаления агентов Вам нужно описать пять сценариев. Удаление может быть выполнимо, а может быть отклонено согласно требованиям предметной области.
+
+Необходимо, чтобы варианты тестирования демонстрировали различные исходы работы алгоритма. Для описания тестовых сценариев в ресурсах предоставлен шаблон `testing-template.docx.`
+
+### Создание руководства пользователя
+
+Вам необходимо разработать руководство пользователя для вашего настольного приложения, которое описывает последовательность действий для выполнения всех функций вашей системы.
+
+При подготовке документации старайтесь использовать живые примеры и скриншоты вашей системы для более наглядного пояснения шагов работы с различным функционалом.
+
+Обратите внимание на оформление документа: оформите титульный лист, используйте автоматическую нумерацию страниц, разделите руководство на подразделы и сформируйте оглавление, используйте ссылки на рисунки, нумерованные и маркированные списки для описания шагов и т.д.
+
+Сохраните итоговый документ с руководством пользователя в формате Word, используя в качестве названия следующий шаблон: Руководство пользователя_XX, где XX - номер вашего рабочего места.
+
+## Публикация результатов
+
+Результаты должны быть опубликованы в публичном репозитории и высланы на проверку экзаменатору. 
+
+В репозитории должен присутствовать файл `readme.md` с кратким резюме продукта.