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.
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.
Examples
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!