ДжазТим — надежный технологический партнер

Agile разработка ПО на Java

Система учета и контроля расходов телекоммуникационных услуг

Описание проекта

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

Система представляет собой группу приложений:

  • Веб-приложение для клиентов
  • Веб-приложение для администраторов системы
  • Серверный компонент для обработки событий

Веб-приложение для клиентов предоставляет единую точку входа получения информации о всех счетах клиента (mobile, fixed, RAS, data) и выступает как служба ведения отчетности организации на всех уровнях — корпоративном, региональном и в масштабах страны, в рамках компании на уровне менеджмента и на пользовательском уровне. Данное приложение позволяет клиенту управлять информацией об организации, разграничивать права внутри компании между сотрудниками, организовать структуру иерархии компании, контролировать расходы за определенный период и т.д.

Веб-приложение для администраторов управляет различными аспектами системы: управление пользователями, контроль за состоянием системы, просмотр событий системы, просмотр и удаление счетов клиентов, управление шаблонами писем, добавление локализации, добавлением справочных данных в систему и т. д.

Серверный компонент для обработки событий представляет собой многопоточное java приложение, которое отвечает за обработку различных событий, которые были инициированы другими приложениями.

Основными событиями данного приложения являются:

  • Создание новых клиентов
  • Загрузка и обработка счетов клиента в систему
  • Обновление структуры существующих организаций
  • Удаление устаревшей информации
  • Восстановление пароля пользователя
  • Активация и блокировка пользователя и т.д.

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

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

Техническое описание проекта

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

Веб-приложения реализованы на основе MVC-паттерна, который разделяет модель (бизнес-логику), представление (HTML-страницы) и контроллер (отвечающий за передачу данных от модели к представлению и обратно).Серверная часть приложений реализована на языке Java c использованием широко известных фреймворков Struts2 и Spring.

Клиентская часть реализована с применением технологий HTML, CSS, JavaScript, JQuery, AJAX, Struts2 tags, JSTL tags.

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

Для поддержки ролей пользователей и их управления используется Spring Security.

Система позволяет предоставлять различным пользователям разные уровни доступа для обеспечения наибольшей безопасности.

Связь между двумя веб-приложениями организована через технологию единого входа (Single Sign-On), что позволяет администратору переходить в другое приложение без повторной аутентификации.

Реализована защита приложений от различных уязвимостей и хакерских атак (к примеру: CSRF, XSS) с поддержкой кроссбраузерности с использованием CSP2.0 для более новых версий браузеров, а также реализовано собственное решение с использованием MutationObserverAPI для старых версий браузеров. В качестве сервера веб-приложений использовался Tomcat.

Серверный компонент для обработки событий представляет собой многопоточное консольное приложение. Данное приложение позволяет обрабатывать и загружать файлы нескольких форматов (CSV, PDF, XML), также принимает справочные данные из XLS и JSON-файлов. Связь с другими приложениями системы организована посредством сложной событийной модели. Количество потоков для обработки событий определяется пользователем. Управление потоками организовано с помощью стандартного пакета java.util.concurrent.

Система использует базу данных Oracle. В базе данных присутствуют 2 вида таблиц:

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

Для выполнения сложных операций с данными в БД используются хранимые процедуры на языке PL/SQL, что повышает производительность, расширяет возможности программирования и поддерживает функции безопасности данных.

Взаимодействие с базой данных осуществляется с помощью Hibernate и JPA. В некоторых случаях для достижения лучшей производительности используется JDBC Connection.

Технологии

Stack: Java, Maven, JPA (Hibernate), JDBC Connection, Servlet API, TagLib, JSTL, Jaxb, SuperCSV, JAX-WS, Apache commons, Apache POI.
Infrastructure: Jenkins, SVN.
Frameworks: Struts2, Spring, Spring security.
Test Automation libraries: Mockito, JUnit.
DB: Oracle, PL/SQL.
Other libraries: Ehcache, Achartengine.

Скриншоты

Что делали на проекте, наши обязанности

Силами нашей команды выполнялись следующие работы:

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

Особенности проекта

  • Среди особенностей данного проекта отдельно стоит отметить его долгосрочность взаимодействия с заказчиком: наша совместная работа на проекте длилась более четырех лет.
  • Работа с Legacy system. Приложение разрабатывалось на протяжении 10 лет, использовались старые версии библиотек. Возникала необходимость поддержки совместной работы новых и старых версий различных библиотек.
  • Коммуникации и совместная работа с территориально распределенными англо- и русскоязычной командами.
  • Интеграция всех частей системы: веб-приложений, компонент для обработки событий, мобильное приложение для android платформы.
  • Создание хранимых процедур на языке PL/SQL для СУБД Oracle.
  • Первоначальное отсутствие тестов, javadocs, документации.
  • Ведение проекта по Scrum методологии, использование Jira для управления проектом и коммуникаций с заказчиком.

Результат проекта

  • Реализован новый функционал и исправлены баги.
  • Внедрен Continuous Integration.
  • Реализован автоматический деплой приложений.
  • Написаны тесты для UI с использованием xml2selenium, юнит-тесты для серверной части и андроид-приложения.
  • Проведен анализ приложения на OWASP Top 10 Most Critical Web Application Security Risks, нами были исправлены проблемы с уязвимостью приложений.
  • На протяжении всего периода разработки нового функционала мы также занимались сопровождением и поддержкой Live-систем заказчика, и сделали этот процесс стабильным.

Достижения компании на проекте

  • Выполнено документирование проекта. Создано порядка 30 документов с техническим описанием, мануалами, диаграммами, описанием работы приложений:
  • различные диаграммы для поддержки стабильности проекта на протяжении всего периода времени,
  • документ с описанием как работать с иерархиями компании, Installation guide,
  • видео и аудио учебные материалы для быстрого погружения нового сотрудника в проект.
  • На проекте нами была выполнена нормализация базы данных — была применена структура связей между полями и таблицами для снижения вероятности возникновения ошибок, оптимизации объема на жестком диске.
  • Был внедрен Continuous Integration и авто-тесты, реализован автоматический деплой приложений на сервер заказчика.
  • Улучшена методология автоматического популирования БД структурой базы и данными.

Свяжитесь с нами, чтобы обсудить Ваш IT-проект

    Имя *

    Название компании

    Email *

    Телефон

    Чем мы можем Вам помочь? *

    * – Обязательные поля для заполнения