Веб-Студия Волненко
 

Требования к программному обеспечению

Требования к архитектуре приложения

  • Приложение должно иметь слой доступа к данным.

  • Приложение должно иметь слой бизнес логики.

  • Приложение должно иметь слой презентации данных.

  • Приложение должно иметь слой безопасности.

  • Приложение должно состоять из максимально независимых друг от друга модулей и компонентов.

  • Приложение должно запускаться на пустом хранилище данных в полной функциональности.

  • Приложение должно во время запуска проверять наличие недостающих предустановок и при необходимости устанавливать требуемые значения по умолчанию в автоматическом режиме.

  • Приложение не должно хранить в хранилище данных программный исполняемый код и запросы к хранилищу данных.

  • Приложение должно использовать одну учетную запись для подключения к хранилищу данных.

  • Приложение должно корректно восстанавливать работоспособность после перезапуска сервера приложений или серверного оборудования.

  • Приложение должно корректно работать на следующих операционных системах: MS Windows, Unix, Linux, Mac OS.

  • Приложение должно использовать открытые форматы данных (XML, SOAP, JSON, AMF, CSV) для экспорта-импорта данных.

Требования к безопасности приложения

  • Запросы к хранилищу данных должны отправляться только через конструкцию "Prepare Statement".

  • Методы Java-классов с важной бизнес-логикой должны иметь аннотации с указанием необходимых привелегий доступа на исполнение конкретного метода.

  • Приложение должно проверять права на запуск серверного метода исходя из привелегий запуска конкретного метода и привелегий пользователя.

  • Приложение не должно хранить где-либо пароли пользователей системы в открытом виде.

  • Приложение должно использовать механизмы хеширования данных для работы с паролями пользователей системы.

  • Приложение должно использовать механизмы хеширования данных с "солью" для подписи данных и хранения паролей пользователей системы.

  • Приложение должно использовать механизмы хеширования данных с несколькими проходами стандарных алгоритмов хеширования (например, md5 или sha) для многократного увеличения времени генерации таблицы сопоставления hash-значений с целью обеспечения обратного декодирования.

Требования к репозиторию исходного кода

  • Репозиторий исходного кода должен игнорировать временные файлы.

  • Репозиторий исходного кода должен игнорировать большие бинарные данные.

  • Большие бинарные данные должны храниться в отдельном репозитории.

  • Репозиторий исходного кода должен использоваться с учетом работы на файловых системах для операционных систем MS Windows, Unix, Linux, Mac OS.

  • Фиксация изменений в репозиторий исходного кода должна всегда сопровождаться поясняющим комментарием.

Требования к программному коду

  • Программный код должен иметь кодировку UTF-8.

  • Программный код должен иметь общепринятое форматирование строк.

  • Название классов должно начинаться с заглавной буквы в стиле UpperCamelCase.

  • Программный код должен содержать поясняющие комментарии.

  • Сигнатуры методов Java-классов должны иметь аннотации @NotNull и @Nullable.

  • В коллекциях должны содержаться только объекты из одного семейства классов или null-значения.

  • В программном коде должны быть локализованы места проверки и приведения типов с ипользованием конструкций "instanceof", "is", "as".

  • При использовании условных блоков внутри метода стремиться быстрей выйти из метода при помощи оператора "return".

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

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

  • При разработке программного кода по возможности исключить использование вложенных циклов.

  • Программный код приложения не должен содержать пользовательских данных или ссылок на них (кроме предустановленных учетных записей пользователей и их ролей и автоматических тестов на демонстрационных данных).

Требования к серверному приложению

  • Серверное приложение должно проектироваться и разрабатываться с учетом последующей работы в кластерном окружении.

  • Серверное приложение для обеспечения корректной работы в класном окружении должно иметь Stateless-логику.

  • Серверные Stateless приложения не должны использовать файловую систему для временного и постоянного хранения пользовательстких данных.

  • Серверные Stateless приложения должны использовать только кластреные реализации распределенного кеша.

  • Серверное приложение должно обеспечивать и поддерживать целостность и согласованность данных в хранилище данных.

Требования к хранилищу данных

  • Сущности системы должны иметь поле с уникальным идентификатором в формате UUID для SQL хранилища данных.

  • Сущности системы должны иметь поле с уникальным идентификатором в записи которого может содержаться информации о нахождении данных на определенном сервере в кластере.

  • Сущности системы должны иметь поле с датой создания.

  • Сущности системы должны иметь поле с датой обновления.

  • Сущности системы должны храниться в нормализованном виде.

  • Сущности системы должны иметь префиксы для физического названия таблиц для исключения конфликтов с зарезервированными SQL-операторами.

  • Запросы к SQL-хранилищу данных должны соответствовать General SQL для возможной замены используемого СУБД.

  • Запросы к SQL-хранилищу данных в JPA-приложениях должны осуществляться через PersistenceUnit с ипольщованием JPQL.

  • Динамические SQL-запросы к SQL-хранилищу данных в JPA-приложениях должны собираться с помощью механизма Criteria.

  • Пользовательские данные не должны содержать META-информацию о хранилище данных.

  • META-информация хранилища данных не должна содержать пользовательских данных.

  • Хранилище данных должно позволять корректно экспортировать и импортировать дамп данных с помощью предусмотренных стандартных средств администирования.

  • Хранилище данных должно иметь поддержку репликации данных по сети.

  • Хранилище данных должно иметь поддержку работы в режиме Multi-Master в кластерном окружении.

Требования к технологии шардинга данных

  • Технология шардинга данных должна предусматривать использование новых серверов в будущем.

  • Технология шардинга данных должна позволять быстро вводить в эксплуатацию новые сервера.

  • Технология шардинга данных должна позволять быстро выводить из эксплуатации старые сервера.

  • Технология шардинга данных должна поддерживать перераспределение данных в кластере без оказания существенной нарузки на сеть.

  • Технология шардинга данных должна поддерживать перераспределение данных в кластере без нарушения целостности и согласованности данных.

  • Технология шардинга данных должна обеспечивать достаточную избыточность данных для обеспечения сохранности данных в кластере во время одновременной поломки одного и более серверов.

  • Технология шардинга данных должна позволять управлять распределением данных в кластере для устранения холодных и горячих зон кластера.

Требования к веб-сервисам

  • Веб-сервисы приложения должны иметь документацию.

  • Веб-сервисы приложения должны иметь пакет позитивных и негативных интеграционных тестов.

  • Веб-сервисы приложения всегда должны возвращать данные или код ошибки.

  • Веб-сервисы приложения не должны передавать данные об установленном программном и аппаратном обеспечении сервера.

  • Веб-сервисы приложения должны передавать данные в формате UTF-8.

  • Веб-сервисы приложения должны быть спроектированы и реализованы с учетом минимизации сетевого трафика.

  • Веб-сервисы приложения должны использовать протоколы HTTP или HTTPS для передачи данных по сети.

  • Веб-сервисы приложения для аунтификации пользователя должны использовать механизм Cookie или механизм SESSIONID.

  • Веб-сервисы приложения должны корректно устанавлиать и передавать HTTP-заголовки о размере и типе передаваемых данных.

  • Веб-сервисы приложения должны корректно устанавлиать и передавать HTTP-заголовки о кешировании данных.

  • Веб-сервисы приложения должны использовать GZip сжатие при передаче данных.

  • Веб-сервисы приложения должны передавать данные в одном или нескольких из следующих форматов: REST+JSON, REST+XML, SOAP, XML-RPC или AMF.

  • Веб-сервисы приложения не должны хранить в серверной HTTP-сессии контекст.

Требования к веб-страницам

  • Веб-страницы должны иметь кодировку UTF-8.

  • Веб-страницы должны иметь корректный HTML-код.

 

Оформить подписку на новости и предложения компании

 
 
 
Услуги  •  Формат работ  •  Стоимость работ  •  Контакты
ИП Волненко Д.Э. ОГРНИП: 313632403800021 ИНН: 632401512936
denis@volnenko.ru