Skip to content

jcase: требования к проекту

Vasily M edited this page Apr 8, 2019 · 3 revisions

Требования к программной реализации

Модульность

  1. Основные части логики должны быть разбиты на подпрограммы - модули
  2. Каждый модуль должен выполнять только свою часть работы

Single Page Application

  1. Проект должен быть реализован в виде одной динамической веб-страницы на которую в зависимости от действий пользователя подгружаются данные.

Языки программирования

Проект должен поставляться в виде веб-приложения. Отсюда следует, что:

  1. Анимация, логика, а также все "программируемые" части проекта должны быть реализованы на "чистом" (без использования фреймворков) языке программирования JavaScript.
  2. Верстка также должна быть написана на "чистом" HTML/CSS без использования фреймворков.

Решено не использовать фреймворки в данном проекте, чтобы обойтись без множества зависимостей, чтобы проект был как можно более легковесным

Решено использовать библиотеку mxGraph для создания диаграмм и библиотеку ajv для валидации js-объекта

Решено не использовать новый фунционал объявления классов в ES6 для сохранения совместимости со старыми браузерами.

Архитектура

Основную логику веб-приложения должны осуществлять три модуля:

  1. Модуль получения JSON-файла по ссылке и десериализация его в js-объект.
  2. Модуль проверки - осуществляет проверку js-объекта на существования всех нужных полей, а также типов данных этих полей.
  3. Модуль отрисовки - отрисовывает в canvas IDEF0 диаграмму по js-объекту.

В связи с ограничением по срокам спринта решено реализовать визуализацию только уровня A0 диаграммы IDEF0.

Дизайн:

Требования к дизайну

Структура файлов проекта:

Корневая папка проекта - jcase.

  1. В корне проекта должен лежать файл index.html, содержащий в себе верстку SPA-страницы, а также загрузку всех дополнительных стилей и js-файлов.
  2. В той же директории должны находиться папки css (директория, содержащая в себе стили для страницы) и js (папка, содержащая в себе js-файлы проекта).
  3. Каждый модуль проекта должен храниться в отдельном js-файле и подгружаться в начале загрузки страницы index.html.
  4. Тесты должны лежать в папке js_test.

Файлы проекта

  1. index.html - основная верстка, реализация SPA;
  2. js/loader.js - модуль загрузки - загружает содержимое JSON-файла по ссылке;
  3. js/validator.js - модуль проверки, осуществляет проверку js-объекта на существования всех нужных полей, а также типов данных этих полей;
  4. js/visualizer.js - модуль отрисовки - отрисовывает в div контейнере диаграмму по загруженному файлу;
  5. js/idefshapes.js - фабрика для создания форм диаграммы IDEF0
  6. js/umlshapes.js - фабрика для создания форм диаграммы UML
  7. css/style.css - содержит в себе стили страницы.
  8. docs/ - папка с документацией (jsdoc)
  9. images/ - папка с sag изображениями для форм
  10. js_test/ - папка для тестов
  11. libs/ - папка для внешних библиотек
  12. samples/ - папка с примерами json файлов
  13. p.json - содержит в себе информацию о частицах для динамического анимированного фона главной страницы.

Тестирование:

Требования к тестированию

Сроки

  1. Реализация всего проекта не должна занимать больше двух недель
  2. 1-3 день. Написание основной документации проекта;
  3. 3-5 день. Разработка прототипа дизайна проекта;
  4. 5-7 день. Разработка рабочего прототипа проекта. Разработка логики.
  5. 7-8 день. Тестирование проекта.
  6. 8-11 день. Полировка проекта (автоматическое тестирование должно проходить все тесты, проект должен проходить все тесты, структура проекта и файлов должна соответствовать требованиям)

Структура JSON-файла:

{
  "package": "DevOps мобильного приложения",
  "activities": [
    {
      "id" : 0,
      "value" : "Автоматизировать процесс DevOps"
    },
    {
      "id" : 1,
      "parent" : 0,
      "value" : "Настроить конфигурацию"
    },
    {
      "id" : 2,
      "parent" : 0,
      "value" : "Собрать приложение"
    },
    {
      "id" : 3,
      "parent" : 0,
      "value" : "Протестировать приложение"
    }
  ],
  "connections": [
    {
      "id" : 0,
      "value" : "Данные конфигурации",
      "start" :  1,
      "end" : [2,3]
    }
  ],
  "person" : {
    "value": "Разработчики",
    "actors" : [
        {
          "id" : 0,
          "value" : "Программист",
          "activities" : [1,2]
        },
        {
          "id" : 1,
          "value" : "DevOps инженер",
          "activities" : [1,2]
        }
    ]
  },
  "mechanism" : {
    "value": "Программный модуль",
    "actors" : [
        {
          "id" : 0,
          "value" : "IDE",
          "activities" : [1,2]
        },
        {
          "id" : 1,
          "value" : "CI/CD система",
          "activities" : [1,2]
        }
    ]
  },
  "control": [
    {
      "id" : 0,
      "value" : "Бизнес требования",
      "activities" : [0,1,2]
    },
    {
      "id" : 1,
      "value" : "План проекта",
      "activities" : [0,1,2]
    }
  ],
  "input": [
    {
      "id" : 0,
      "value" : "Исходный код",
      "activities" : [0,2]
    },
    {
      "id" : 1,
      "value" : "Описание конфигурации",
      "activities" : [0,1]
    }
  ],
  "output": [
    {
      "id" : 0,
      "value" : "Установочный файл приложения",
      "activities" : [4]
    }
  ]
}
Clone this wiki locally