5 Years’ Evolutionary Elaboration of Costing Software for Large Industrial Projects

checklist
  • Duration: 5 years
  • Industries: IT Industry; Supply Chain, Inventory & Order Management; Construction & Engineering; Project Management Industry
  • Services: Product Development; Backend Development; Manual Testing Services; IT Consulting; Project Management; Early-Stage Innovation, R&D Services; Software Reengineering, Refactoring and Modernization. Cloud Migration
  • Software Categories and Types: Analytics Systems, Data Analysis & Visualization; Project Management Systems (PMS); Expense and Cost Management Systems
  • IT Architecture Paradigms and Approaches: Software Frameworks Development; Model Driven Development (MDD); Plugins Architecture and Development; Object-Oriented Programming (OOP); Architectural Patterns; Event Driven Architecture
  • Technical Expertise: Java Server Side Development; Research and Development (R&D); Databases; Expandable Software Solutions (Plugin Systems); Open Source Development & Customization
  • DevOps Expertise: Advanced build organization; CI/CD Basics
  • Technologies: JUnit / TestNG; Java Standard Edition (SE); Git; Data Bases; Apache Maven; Project Management, Collaboration and Bug Tracking; Enterprise Architect; Jira; JIDE; Java; ActiveMQ; Build and Dependency Platforms and Tools; EclipseLink; Backend; Spring; Various Editors; Microsoft SQL Server (MSSQL); Kodo; Test Automation; Spring Transaction Management; Source Code Management (SCM); CI/CD and DevOps; Message Queues and Service Buses; Software Engineering and Management Tools; Swing; ORM & Persistence
project-team
  • Team size (10):
  • 1 Project Manager
  • 2 QA Manual
  • 2 QA Automation
  • 5 Backend

Provided services

Product Development, Backend Development, Custom Software Development, Frontend Development, Test Automation Services, Manual Testing Services, IT Consulting, Project Management, CI/CD Implementation & Modernization. DevOps Services, Early-Stage Innovation, R&D Services, Software Reengineering, Refactoring and Modernization. Cloud Migration, Software Integration Services, Software Maintenance and Support Services

Client

A leading cost management solution provider. The company provides an integrated solution for total cost management, dedicated for large industrial projects. It is the only tool integrating true cost estimating, cost control and project analytics.

Product

The client’s product is a cost estimation and management application tailored for large industrial corporations (oil and gas, energy). The software allows users to manage costs within the project timeframe, perform in-depth analysis, and compare estimates with benchmark projects and industry standards.

Challenge

The client’s product has a long-standing presence in the market, and they were seeking a partner to assist in its gradual evolution. This required in-depth architectural work to ensure seamless integration of new features while maintaining the integrity of the existing system.

As part of this evolution, and for the convenience of the end-users of the company’s software, it was necessary to develop and implement a multiuser mode that allows several users to open and edit the same document simultaneously.

The main challenge was that the system had a huge amount of legacy code (more than 50,000 classes), so the implementation of new functionality required serious re-engineering with the use of a separate framework.

In order to implement the framework in the system’s legacy code, JazzTeam specialists needed to master a large volume of the codebase independently, provide R&D, and propose an architectural solution.

The involvement of new developers in the project was also quite long and difficult because of the complexity of the product’s tech features.

Only after adding the new functionality the team should have started the process of transferring the system to the Web.

Project Context

Previously, the client had an extremely negative experience of cooperation with another service company. So our first goal was to address their concerns and establish a trustful working relationship built on transparency, reliability, and exceptional expertise. All this required not only deep immersion in the tasks by the developers but also the participation of a competent project manager.

The product itself was complex both technically and in terms of business functions. They used complex patterns and architectural approaches. So as far as we worked in a distributed team environment, we were in constant synchronization and close interaction with the client’s specialists and mutually adopted the best and most acceptable solutions.

Need similar project

Solution

Our task was to dive into the day-to-day development of new features while addressing an architectural issue. To accomplish this, we focused on building an effective team. At the same time, we began to tackle complex architectural experiments. We also invested heavily in improving processes to make them more predictable and sustainable.

Phase 1. Onboarding

By applying best practices of experience transfer and its proactive position, the JazzTeam development team was able to dive deep enough into the project and in the conditions of remote cooperation very quickly. After only 10 days, we started full-fledged development and started to bring significant value to the project.

The organization of the onboarding process on the project was implemented by the JazzTeam project manager, who participated in each type of service provided to the client. His duties included:

  • painless introduction of new employees to the project;
  • proper organization of the knowledge transfer process.

New engineers joined the project quickly and without stress, which contributed to the stability of the project team.

Phase 2. Creating a reference project

Being convinced of the complexity of the knowledge transfer process on the project, the JazzTeam manager initiated the preparation of a reference project for immersing new specialists in the complex codebase. The most important things were taken into account, such as:

  • detailed immersion in the core of the system;
  • the principles of bug fixing;
  • and the architectural features of the software.

The reference project allowed the developers to learn the ropes and begin comprehensive work 5 times faster.

After the successful completion of the reference project, we applied the Mentor Hour practice — meetings during which new developers ask questions about things they find difficult, and a more experienced developer answers them.

We recorded and documented the communications so the team’s experience was gathered in the Confluence as a knowledge base where new developers could get answers quickly.

Phase 3. Solving a complex architectural problem

During the work of our engineers in a distributed team, a complex architectural problem arose on one of the projects that the customer’s specialists could not solve for a long time.

We decided to take the initiative and conduct the necessary research as we have extensive experience and skills in R&D. Based on the research results, we managed to find a suitable architectural solution that fully satisfied the client. They suggested we implement this architectural concept in their product.

This process took more than a year. However, we managed to rise to the challenge while maintaining the necessary frequency of deliveries, as well as ensuring experience preservation. Having seen the full scale of the work done and the benefits our team had brought, the customer finally became convinced of our professionalism and launched cooperation on several other projects.

Processes Improvement

JazzTeam specialists employed best Agile practices in establishing and managing the development process.

We optimized the planning process, introduced the professional use of Jira, and provided regular retrospectives and weekly demos with the customer.

The Scrum approach to project management, strong management, and clear processes allowed the team to sufficiently deal with the existing code, which had been created over many years, independently and within a short time.

As the team worked based on the Scrum culture, development was carried out in stages in short iterations, and the progress of the project was constantly monitored. Our manager took a proactive position, constantly maintained communication with the client, and initiated an open discussion of all problems and nuances.

This approach brought significant value to the client as it helped to:

  • build a trust-based partnership;
  • see the development progress;
  • reach development goals faster.

Development Approaches

Implementing and applying the multiuser mode framework.

In the creation of the framework, we used the OOP principles and design patterns. Also, all developed functionality was covered with Unit tests to ensure its stable operation.

JazzTeam specialists moved the application from pessimistic locking to optimistic locking for the simultaneous work of several users, added three new locking levels, and implemented conflict resolution through the Last Write Wins strategy.

For the implementation of the multiuser mode, a part of the software was re-engineered. The system’s UI had been built within a closed library, which made debugging much more difficult. After the framework had been implemented, many components of the application didn’t work as originally planned. That’s why some parts of the legacy code were rewritten from scratch.

The work on the refactoring was coordinated with the client, and important architectural decisions on product development were made jointly.

Test Automation services

Quality assurance and modification of the manual testing process.

Initially, the project had virtually no testing base: there was only generalized documentation and 14 test scenarios. Over time, during knowledge accumulation, JazzTeam QA engineer created test documentation, namely, checklists for regression testing. Each item on the checklist had a link to test cases to verify the multiuser mode.

To keep track of dependencies between the system’s modules, we created tables, which helped to track them easily and not forget them during verification. Also, during the work on the framework, we expanded the testing team and introduced a mandatory code review.

Technological Overview

Diagram of system components and interactions them, reflecting the principle of functioningof the multiuser mode
Diagram of system components and interactions them, reflecting the principle of functioningof the multiuser mode

Result

We managed to implement an evolutionary approach, honing our focus on its application and product development.

A multiuser framework was implemented, and all stages of user acceptance testing were successfully completed.

As a result, the client’s end-users can simultaneously edit the document in real-time, as per their initial request.

Also, the implemented functionality allowed the company to migrate from the desktop to the web infrastructure. The new functionality was issued in the new application release.

Now the application is actively developing: it is gradually migrating to the web, and there are plans to develop REST API, as well as implement new functional modules of the app.

Detailed documentation on the implementation of the collaborative editing solution was prepared by the JazzTeam experts and shared with the client.

JazzTeam Achievement

Work on the project was built in accordance with the company’s practices of proactivity, decomposition of tasks, and open discussion of all nuances and complexities of the project.

We formed a stable team, the backbone of which has been engaged in this project for a very long time. With the optimized processes, new developers are now adapting much faster as they initially learn the project’s technologies, tools, and engineering practices in more comfortable conditions.

JazzTeam specialists shortly immersed in the project with a large volume of the legacy code without the need for additional knowledge transfer and sessions at the customer’s office, collaboration via video conferences was enough.

Our specialists have been developing various solutions for this company for more than 5 years already. This case became an excellent example of trust-based relations with the client, which are constantly developing. We were glad to overcome all prejudices and mistrust the customer had related to their previous negative experience.

Technologies

Stack: Java 8, JavaScript, AngularJS, Require JS, Karma, Jasmine, REST services, Active MQ, Swing, Maven.

Infrastructure: Jira, Git.

Test libraries: JUnit.

DB: Microsoft SQL Server, Apache HTTP Server.

Clients about cooperation with JazzTeam

Related projects

Recent Work

    Contact Us

    What happens next?
    • 1

      Leave your project request. We will contact you and schedule a call.

    • 2

      Signing of the NDA to ensure the project info confidentiality.

    • 3

      Negotiation of your request and the required services.

    • 4

      Team forming, coordination of workstages.

    • 5

      Contract signing and project start.