Skip to content

dkurillo/sa-test-task

Repository files navigation

Тестовое задание на позицию системного аналитика

Текст задания

Решение

Задание состоит из двух частей:

  • Проектирование логической модели и написание трех SQL-запросов
  • Проектирование архитектуры сервиса, реализующего бизнес-требование

Вначале спроектируем логическую модель БД. На ее основе можно автоматически сгенерировать физическую модель и DDL-скрипты для соответсвующей БД. Для этого будем использовать функциональность ПО Enterprise Architect. В качестве РСУБД используем Postgresql.

Модель и SQL-запросы

Исходник UML-диаграммы

Логическая модель

logical

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

logical

DDL-скрипты

SQL-скрипт 1

SQL-скрипт 2

SQL-скрипт 3

Архитектура сервиса

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

В качестве архитектуры сервиса заявок допустимо использовать стандартный паттерн layered architecture, состоящий из следующих уровней:

  • Уровень контроллеров - содержить обработчики REST API запросов
  • Сервисный уровень - содержит бизнес-логику обработки внешних запросов
  • Уровень доступа к РСУБД (уровень репозиториев), инкапсулирующий в себе логику работы с БД

Базовый паттерн

Уровень контроллеров

Определения методов контроллеров можно сформировать автоматически, если описать бизнес-функциями в стандарте OAS. Усеченный вариант реализации OAS 3.0 под заданные бизнес-функции. В yaml файле представлены базовые CRUD-функции работы с заявками. Функции работы с договорами, справочниками, объектами, контрагентами не реализованы.

Сервисный уровень

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

Уровень доступа к БД

Реализуется разработчиками сервиса. Схема БД представлена ранее в виде физической модели.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published