Проектирование программного обеспечения
Можно выделить следующие сущности, которые будут использоваться в системе: · Пользователь. Её атрибуты: o id; o имя; o пароль. · Роль. Её атрибуты: o id; o название. · Атрибут коллекции. Её атрибуты: o id; o название атрибута; o тип атрибута. · Тип коллекции. Её атрибуты: o id; o название типа. · Коллекция. Её атрибуты: o id; o id типа коллекции; o id пользователя создавший эту коллекцию; o название коллекции. · Сущность — это объект коллекции. Её атрибуты: o id; o id коллекции. · Значение o id сущности; o id атрибута; o значение, которое хранит поле. Для поддержания целостности базы данных, были созданные следующие сущности:
Опираясь на выделенные сущности, можно построить схему базы данных. Схема базы данных представлена на рисунке 5 Рисунок 5 — Схема базы данных. Для возможности переноса базы данных скрипты для генерации таблиц должны храниться в.sql файлах. Стоит отметить, что необходимо отдельно создать.sql файлы, которые заносят в базу тестовые данные, для возможности отладки программного кода. Для работы с базой данных, необходимо создать объекты, которые предоставляли интерфейсы к таблицам. Поэтому для всех таблиц, кроме связующих таблиц users_roles и type_attribute, будут созданы классы для работы с ними. Стоит отметить, что все классы данного типа должны наследовать интерфейс DAO, в котором имеются четыре метода: create, read, update, delete. Для обеспечения необходимого функционала создаваемого продукта, необходимы сервисы. Сервисы – это классы, которые реализуют некоторую часть логики приложения. Каждый метод в данных классах реализует некоторый функционал создаваемой программы. Всего необходимо 4 сервиса: сервис для работы с атрибутами, сервис для работы с коллекциями, сервис для работы с разными типами элементов коллекций, сервис работающий с данными пользователя. Требуется также реализовать паттерн MVC. Для его реализации необходим класс, который будет являться «контроллером». Данный класс должен имеет метод инициализирующий необходимые объекты. Он будет использоваться, чтобы создавать объекты, которые будут нужны, и помещать их в контейнер для объектов. Также должны быть методы, перехватывающие запросы клиента и выполняющие некоторые действия, используя специальный метод – «экшн». Это метод должен реализовывать основной функционал «контроллера». Для получения имени «экшна», который необходимо выполнить должен существовать метод, который выдаёт имя «экшна» на основании запроса клиента. Необходимо создать единый интерфейс, который будет предоставлять метод, позволяющий использовать «экшны». Данный интерфейс должен наследовать каждый создаваемый нами «экшн». Это необходимо, т. к. наш контроллер будет запускать именно этот метод во всех «экшнах» и передавать ему данные через входные параметры. Для работы веб-сайта необходимо создать несколько страниц – страницу авторизации, основную страницу, страницу со списком коллекций и страницу, которая будет показываться в случае, если действие пользователя невозможно выполнить. Также необходимо, чтобы данные о работе заносились в лог. Поэтому каждый класс должен иметь необходимый функционал для этого. В данном приложении этот функционал будет обеспечиваться за счет сторонних библиотек.
|