How to Build Better Software

How to Build Better Software 2548 1422 KRONOMETRIX

A better way to design software

Companies are pushing lots of updates to fix different vulnerabilities and software defects at an alarming rate. Many developers are focusing heavily on coding, writing software in sprints, based on user stories, using scrum or other agile methodologies but still fail to deliver robust software.

Programming is not coding!
What is the difference and why is it important to know?

We would like to present three main things how anyone can use to learn build better and more reliable software.

Precise Designs

Being agile does not mean you should forget what and how your software should do. These must be written down in a precise form, not based on plain English prose, static diagrams, user stories or some sort of pseudo-code. 

And that means using formal methods, like TLA+ which will help you validate and find very subtle design bugs before implementing or writing a single line of code, not found through any other method or technology. Formal methods are mathematically techniques for the specification, development, analysis, and verification of software and hardware systems.


There are many implementations of formal methods used in industry: TLA+, Alloy, Petri Nets and may other implementations. Several companies are using formal methods. For example TLA+: Amazon Web Services uses TLA+ to design its own products (S3, DynamoDB, EBS), Microsoft (Xbox), Intel (microprocessor design),  European Space Agency (Rosetta spacecraft using OpenComRTOS operating system)

Programming vs Coding

“Coding is the easy part of the programming”. Every time you plan to build a new program, there are three main things involved:

  • first you must decide what the program should do
  • then one should think how to do it, for example what algorithm to use
  • and then do it, by selecting a programming language and start coding

Without thinking very carefully about the first two parts , what and how the program will work, and writing down these into a precise format, what we call a specification, nobody can answer what means for the program to operate correctly. We call these the two main parts, the programming part.

Programming means working on a high level aspect of your program, at the algorithm level rather than the code level.

Coding is the last part of building the program, after the high level designs are in place. This requires to select a programming language and start the low-level part of the program, the implementation.

Scalability Analysis

Last but not least you should quantify the performance of your application. If you can’t quantify it, you will not be able to guarantee it. This means using a mathematical model, like Universal Scalability Law (USL) to validate your performance results and conduct a proper scalability analysis. 

There are two main benefits using USL for our program:

  • Validate our performance test results. Many companies are conducting lots of performance tests without making sure the results are also correct. The USL model helps us on this part
  • Project the application performance for different payloads
The USL model

There are different ways to use USL, from using Excel/OpenOffice, R or any other data numerical application.

At Kronometrix

Building software is not easy. With a small budget we managed to build a robust platform which can operate without human interventions for years, use less electricity vs. other similar solutions. Using USL, TLA+ have helped us to achieve these goals. Get started today with our free Kronometrix data analytics platform. If you have any questions or what to know more about our products and services please contact us!

Kronometrix CloudView Managed Service

Kronometrix CloudView Managed Service 17280 11520 KRONOMETRIX

Find out if your applications and services are properly configured and optimised for your business and customers

A lot of organizations are spending considerable time and energy, to detect and correct improper service configurations, which have a direct impact to the main operation and functionality, as poor performance or outages. These activities, many times, continue as a fire-fighting exercise, without a strategy and direction, exhausting everybody and getting very expensive.

Kronometrix CloudView brings all necessarily tools and utilities to build and define a direction, to simplify all these and get the job done.

For example, when we deployed Kronometrix CloudView for Nexetic, one of our customers, we have received several alarms from various parts of the applications and systems. Kronometrix uses a special algorithm, based on sampling the prescribed frequency and duration of trigger events, to eliminate the typical flood of unnecessarily repetitive alarms. Having a relatively high number of alarms was an indication for us, that certain things were not properly configured or correctly set to run.

Using the alarm list, we were able to navigate and detect the most important parts of the system and services which required immediate attention. Working with the devops team, we were able to take one issue at the time, perform changes to immediately improve the performance and ultimately the availability of the service.

How it works

To help you run your business smoothly in the cloud, we continuously monitor your applications, services, and operating system instances: no matter whether it be public, private or a hybrid cloud nor which vendor you have selected to provide the infrastructure. Moreover, when things go wrong or become inefficient, we let you know what the problem is and how best to fix it.Kronometrix Cloudview is an enterprise service, built on top of Kronometrix SaaS designed to track your cloud infrastructure usage and keep you aware of changes before they happen. It includes:

  • Real-time performance analysis of your cloud instances,  operating systems, storage and enterprise services
  • End-user performance and availability of web applications and websites, Internet services
  • Validity of X.509 security certificates 
  • A complete managed services support package, 8×5 or 24×7 for continuous service operations, including incident management and root-cause analysis

The service includes a managed service package, which will allow the Kronometrix Operations team to access and remotely operate your services. Our operators are highly skilled professionals with over 25 years of UNIX/Linux experience. Kronometrix will measure and analyse all your services. In this way we will help you to stop fire-fighting and focus on whatever matters most to your business, by keeping all your critical services running.

If you have any questions or need more information about our service,  please visit Kronometrix CloudView, check out CloudView FAQ or contact us.

Tuning Java Virtual Machine

Tuning Java Virtual Machine 3000 2250 KRONOMETRIX

Usually Java applications are deployed with default settings not suitable for production usage

JVMTune is a specialised performance analysis and observability service for Java based applications, focused to the Java Virtual Machine configuration: the heap memory usage, the garbage collection statistics and the overall system memory footprint.

In general Java based applications are deployed with default or ad-hoc settings without proper testing and not suitable for production usage. It is important to analyse all these aspects to make sure your applications is good throughput and response time.

The heap memory configuration will be checked, including: Young, Old and Permanent generation sizes. Each generation will be tuned based on the various synthetic load tests and we will ensure that the heap footprint is properly set and the application works properly without errors. A garbage collector will be selected in order to minimise the number of collection activities and ensure the application has a good throughput.

Improper memory settings can cause poor performance and affect overall availability of your application.

We will look for the following goals:

  • throughput – the total time not spent in garbage collection
  • pause time – the time during the application is paused when the collection takes place
  • frequency – how often the collection occurs

Every time your application is changing, you should consider running JVMTune service, in order to ensure the throughput and response time are correct. System developers, devops and architects are directly interested to know how the Java based applications are functioning and performing over time. Avoid outages, maximise application performance with JVMTune.

Turbo charge your Java applications. Get in touch with us for more information about JVMTune and how can you get started.

Get in touch

If you have any questions about our products and services, please contact us.