Domain Specific Language based Solution to Treat Patients with Mental Illness

checklist
  • Duration: 1 year
  • Industries: Health Care. Fitness & Recreation
  • Services: Product Development; Test Automation Services; Manual Testing Services; Early-Stage Innovation, R&D Services; Software Maintenance and Support Services
  • Software Categories and Types: Education Software
  • IT Architecture Paradigms and Approaches: Data Driven Testing (DDT); Enterprise Integration Patterns
  • Technical Expertise: Test Automation; Research and Development (R&D)
  • Technologies: Project Management, Collaboration and Bug Tracking; Jira; Apache Maven; CI/CD Automation Servers; REST; Jenkins; Data Bases; JUnit / TestNG; Java Standard Edition (SE); Java; Apache Subversion (SVN); NetBeans; IDE; Build and Dependency Platforms and Tools; Backend; Testing Frameworks; Galen Framework; Source Code Management (SCM); Standards and Protocols; Test Automation; CI/CD and DevOps; Java Applets; Languages, Protocols, APIs, Network Tools; Software Engineering and Management Tools; Swing; Java AWT; Fest Swing; Paradox
project-team
  • Team size (6):
  • 1 Project Manager
  • 1 QA Manual
  • 1 QA Automation
  • 1 Frontend
  • 1 Backend
  • 1 Business Analyst

Provided services

Project Management, Manual Testing Services, Early-Stage Innovation, R&D Services, Software Maintenance and Support Services

Client

A Spanish company, a provider of innovative solutions in medical technologies and telemedicine, specializes in scientific research and the development of diagnostic and treatment methods for mental health conditions.

Product

The product is an innovative system for treating patients with mental health disorders, developed on a unique methodology created by a professor of medicine. It is a comprehensive software solution designed for medical institutions and professionals aiming to improve the quality and accessibility of psychotherapeutic treatment.

The primary objective of the product is to facilitate effective interaction between patients and the treatment methodology through interactive learning and testing scenarios. The product includes a variety of exercise formats, such as drag and drop, selecting the correct answer from multiple choices, text entry, and more, making the treatment process not only effective but also interactive.

Additionally, the system is enriched with various special effects, such as scrolling, flashing, and smooth transitions, adding an extra level of engagement and maintaining patients’ attention during therapy.

Challenge

At the initial stage of our collaboration with the client, our team faced a challenging task. The client was already utilizing functionality developed using a free tool, setting a high bar for the integration of our solutions. The main challenge was to develop an approach that would allow us to integrate our unique exercise builder into the existing user interface (UI) without altering the client’s established processes. This requirement underscored the importance of resource conservation and the possibility of reusing existing solutions.

The next level of complexity involved the need to develop our own domain-specific language (DSL) for describing training and testing scenarios and responding to the unique requirements of the project. Creating the DSL required us to anticipate and account for numerous potential combinations and exceptions, inevitably bringing up questions of efficiently implementing test automation, including Data-Driven Testing (DDT).

These challenges tasked us with finding a harmonious solution that allows maximum integration and reuse without disrupting the client’s workflows or incurring additional development costs from scratch.

Need help

Solution

Faced with complex tasks and high requirements, our team developed and implemented a comprehensive solution that not only met the client’s unique needs but also ensured smooth integration with existing systems. Drawing on our experience and technological expertise, we were able to offer the following key solutions:

  • Integration of a Unique Exercise Builder: We integrated our exercise builder into the client’s existing user interface through the development of Java applets. These applets can load training and testing scenarios created using a specialized XML-based DSL (Domain Specific Languages) directly from a media server.
  • Development and Implementation of DSL: In response to the need for a specific language to describe scenarios, we created our XML-based DSL. This language allowed us to anticipate and account for numerous potential combinations and exceptions, thereby facilitating the implementation of efficient automated testing, including Data-Driven Testing (DDT).
  • Use of Java Applets and NetBeans IDE: Test screens and forms were developed in the visual editor of NetBeans IDE and hosted on a media server. The Java Applet connected to the server downloaded the forms and played them in test scenarios for the user. The applet supports multiple exercise formats, such as Drag and Drop, selecting the correct answer from multiple choices, and text entry. Using the NetBeans IDE visual editor for creating Java Swing forms allowed medical professionals to develop and visualize test scenarios without a programmer.
  • Customization of Components and Addition of Special Effects: We customized a variety of Swing components and added different special effects, such as scrolling, flashing, and smooth transitions, to provide a better user experience and visual appeal of the application.

Incorporating the practice of very short iterations, with two releases per week, into our development process brought significant benefits to the project. This approach allowed us to rapidly adapt to changes and requirements, ensuring that the client’s needs were met with the utmost efficiency. The frequent release schedule facilitated a continuous feedback loop between the development team and the client, enabling immediate adjustments and improvements to the software. This agility in development and deployment played a crucial role in maintaining project momentum and keeping all stakeholders aligned with the project’s progress and outcomes.

Development Approaches

Utilizing Data-Driven Testing (DDT)

Our project poses an interesting challenge, especially in terms of integration and the development of a domain-specific language (DSL). The approach based on Data-Driven Testing (DDT) serves as a powerful tool under such conditions, as it allows for efficient management of the large volumes of data and scenarios required for testing the DSL and integrated features. Here are several ways in which test automation, particularly DDT, can assist in your project:

  • Test Data Automation Creation: Utilities were developed to generate test data, capable of automatically creating diverse data sets, including various combinations and exceptions supported by our DSL. This helped us in testing scenarios and ensuring that the system operated correctly under all possible conditions.
  • Test Scenario Automation: The DDT approach was used to create tests that automatically apply different data sets to the same test scenarios. This allowed us to verify how well the DSL and integrated features handle various inputs and usage scenarios.
  • Continuous Integration and Testing: We integrated automated tests with our Continuous Integration and Deployment (CI/CD) system to ensure regular and automatic test execution with each code update. This helped quickly identify and fix bugs, maintaining high code quality.
  • DSL Validation and Verification: Specialized tests were developed to check the syntax and semantics of the DSL, ensuring it accurately meets requirements and is correctly interpreted. This was particularly important for maintaining the flexibility and extensibility of the DSL.
  • Feedback and Optimization: We also used tools to collect and analyze testing results to identify common issues and areas for optimization. This allowed us not only to improve the quality of the product but also to optimize the development and testing process.

Technological Overview

Utilizing automated software UI tests for the applet with the Robot class

Given that the test screens and forms were developed in a visual editor and hosted on a media server, a tool capable of automatically interacting with the graphical user interface (GUI) was necessary. The Robot class enables the simulation of user actions, such as mouse clicks, keyboard keystrokes, and other GUI interactions, making it ideal for testing visual components.

The project involved customizing a multitude of Swing components and creating custom effects. The Robot class allowed for testing these elements under conditions as close as possible to the real use of the application by end-users, simulating actions on the screen and verifying the visual and functional aspects of the interface.

Automation testing using the Robot class significantly sped up the testing process, making it more predictable and repeatable, which is ideal for an Agile development approach.

The use of the Robot class in this context provided a comprehensive approach to testing automation, effectively verifying the functionality and appearance of the application, as well as ensuring compatibility with rapid iterations and Agile development approaches.

Signing Java Applets with a Commercial Certificate

The reasons for this requirement were crucial for the successful execution of the project:

  • Improving Security: Signed code ensures that the application has not been altered after its release. For Java applets operating in a browser, this is critically important as it confirms the authenticity and integrity of the code to users and security systems.
  • Minimizing Security Warnings: Java applets, especially when unsigned or signed with unverified certificates, can trigger security warnings in browsers. Signing the application with a commercial certificate helps avoid such warnings, making it easier for users to interact with the application.
  • Enhancing User Trust: Signed applications are perceived as more reliable and secure, contributing to increased trust from users and enhancing their satisfaction.

Signing Java applets with a commercial certificate is a process where a digital signature is attached to the applet, guaranteeing its authenticity and integrity. Here are the main steps we took to implement the signing:

  • Obtaining a Certificate: Applying to an authorized Certification Authority (CA) that issues commercial certificates, and going through the verification process to obtain the certificate.
  • Preparing the Applet for Signing: Compiling all the components that need to be signed into a single archive file (e.g., JAR).
  • Using JDK Tools for Signing: Using the jarsigner utility from the JDK to sign the JAR files.
  • Verifying the Signature: After signing the applet, use the same jarsigner utility to verify the signature. This helps ensure that the signature was correctly applied and the archive was not altered after signing.
  • Deploying the Applet: Hosting the signed JAR file on a web server.

Testimonial

Jaume Simon
Jaume Simon
Project Manager, Euglia Telemedicina, a medical company specializing in treatment, education, and scientific research, Spain
The customer testimonial about project: Java applet for training and testing

"IT outsourcing is a powerful tool in the hands of professionals. For an IT project to be successful, three conditions must be met: continuous information exchange, technical excellence, and high-quality standards. The developers from JazzTeam fully met these requirements during their work on the project for Euglia Telemedicine."

Result

The key outcome of the project was the successful trial and implementation of the applet across numerous medical institutions, which not only expanded the accessibility of treatment methods nationwide but also significantly reduced the costs of medical services in this area. This was achieved through the capability for dynamic loading and display of educational materials directly by medical staff, minimizing the need for external developers and simplifying the process of updating and adapting treatment methods.

Using the Robot class in conjunction with Data-Driven Testing (DDT) enables the automation of UI testing based on various scenarios and data, enhancing the flexibility and efficiency of testing. The development of a specialized XML-based DSL for describing test scenarios allows for a detailed and flexible definition of testing processes. The Robot class was integrated with these scenarios for automatic test execution, improving the accuracy and repeatability of testing.

The development was conducted using modern project and quality management methodologies, including Agile, Jira, and automated UI testing, enabling us to achieve high standards of quality and timeliness in implementing changes.

Technologies

Backend: Java Applets, AWT/Swing, Restful web services, Custom classloading

Test Automation: JUnit, Applet UI-testing features (FestSwing)

CI/CD and DevOps: Maven, Jenkins

Software Engineering and Management Tools: NetBeans forms, SVN, Jira

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.