En

JazzTeam Software Development Company

Agile Java Development

Разработка востребованного ERP продукта, консалтинг заказчика и системные проектные преобразования

Описание проекта: очередной проект, в котором принимает участие команда JazzTeam  — это английская B2B программная платформа для управления складскими запасами и заказами для дистрибьюторов и оптовиков, а также для осуществления электронной коммерции. В базовую комплектацию продукта входят:

Проект включает в себя несколько подпроектов:

  1. Консалтинг стейхолдеров и техлидов.
  2. Внедрение полноценного CI/CD.
  3. Миграция с .NET на Java.

Технологии:

Stack: Java 7/8, Java Servlet & JSP, Apache Tomcat, MySQL, JDOM, REST API, XML/XSLT.
Фреймворки: Avalon Framework, XML-RPC, dbPool, JasperReports, MyFaces, JavaMail, PD4ML, Paypal, Gdata, jQuery Mobile.
Архитектура: Model-driven development, event-driven architecture.
CI/CD.
Тестирование (интеграционное и нагрузочное): JUnit+собственный фреймворк.
Инфраструктура: AWS, Bitbucket, Jenkins, Liquibase, CloudWatch.

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

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

Команда JazzTeam присоединилась к проекту в 2019 году. К этому времени в проекте проявились многочисленные технические долги и недостатки, которые перекрывали очевидные преимущества заложенной архитектуры:

На этом проекте компания JazzTeam выступала одновременно как:

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

С точки зрения инкремента функционала — команда JazzTeam разработала и поставила десятки новых эпиков и пользовательских историй. При этом был проведен глубокий рефакторинг существующего кода и обеспечено покрытие тестами (GUI-автотесты и юнит-тесты) разработанного функционала.

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

С точки зрения закрытия техдолгов — реализована версия продукта без .NET слоя, что позволяет сфокусироваться на Linux платформе, тем самым значительно снизив затраты на хостинг и техподдержку. Внедрены полноценные CI/CD процессы, что ускорило частоту поставок продукта и повысило качество поставляемого функционала.

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

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

Представители JazzTeam проанализировали текущее качество разработки продукта, состав и скорость команды и прочие критерии — и предложили владельцам продукта ввести в команду несколько профессиональных QA инженеров и QA Automation инженеров из числа сотрудников компании JazzTeam. .Предложение было одобрено и уже через несколько месяцев стало очевидно, насколько повысилось качество продукта.

Улучшили процесс анализа требований и постановки задач. Мы ввели на проект бизнес-аналитика с экспертизой в областях, релевантных этому проекту. Ввели фазу бизнес-анализа, прямые коммуникации BA с партнерами по продукту. На выходе мы получили четкую постановку задач разработчикам, включая DoD (Definition of Done) и Acceptance Criteria (критерий приемки). Это позволило значительно сократить время разработки функционала и повысить качество конечного продукта.

Внедрили процесс оценки задач (estimate). Мы ввели обязательный анализ разработчиком потенциальных трудозатрат по каждой задаче с разбиением на подзадачи и с учетом рисков (см. ниже). Наличие оценки трудозатрат позволяет упорядочить процесс планирования разработки, сделать планирование более прозрачным для всех членов команды и стейкхолдеров.

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

Провели Agile-трансформацию процесса разработки. Ввели ритуалы гибкой разработки, которых не хватало на проекте:

Внедрение CI/CD для осуществления автоматической сборки, регулярной проверки качества и поставки продукта. На проекте применяется частичная генерация кода из шаблонов. Генератор кода изначально не был оптимизирован под автоматическую сборку проекта Maven-ом, поэтому команда провела глубокий рефакторинг ядра проекта, чтобы исключить ручную сборку.

Создан фреймворк для написания т.н. blackbox-тестов. Такие тесты пишутся самими разработчиками и позволяют проверить сложные цепочки действий системы. При этом нет необходимости глубоко погружаться во внутреннюю структуру кода. Тесты запускаются как часть регулярных сборок проекта: по расписанию и по требованию.

Весь новый код и большинство изменений существующего кода покрывается Unit-тестами. Старый код регулярно рефакторится, чтобы он поддавался покрытию тестами.

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

Переписали .NET фронтенд на Javascript, таким образом отвязались от Windows хостинга.

Значительно освежили UI и юзабилити продукта — пользователи и стейкхолдеры довольны.

Статьи, созданные на основе проектного опыта

В процессе написания следующие статьи:

  1. Оценка оценки.
  2. Внедрение CI/CD на проекте с большим сопротивлением.
  3. Model-driven development.
  4. Blackbox тестирование.
  5. Внедрение GUI автотестов на долгоиграющем проекте.

Скриншоты:

 

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

    Имя *

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

    Email *

    Телефон

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

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