As software evolves, the need for quality is the same

Everything moves fast in the IT world. It is said that a year can be translated to seven years in a dog’s life. Well, the translation is much higher in IT. Every year, new computing languages are created. They might differ from the previous one by a comma, but they are created nonetheless. Should we adapt our conceptions of software quality to those new languages?

10 tips to speed up your PHP applications

When you think about PHP, it is often associated with small applications made by passionate developers for their personal use — generally websites with low database usage and/or few visitors.
Well, how wrong we are! PHP is used for a large panel of applications that generate a lot of traffic, for example public administrations or big companies. These entities require their applications maintain high scalability, availability, and, of course, no drop of performance. It’s no wonder that performance and speed are very popular quality goals when it comes to PHP.

10 tips that can improve the performance of .Net web applications

When every product has the same features, the only way to make a difference in the jungle that is today’s software ecosystem is by having the one that performs best. Of course, in this article, by product, we mean application and its code. For .Net applications, this is truer than ever. Here are ten tips that can greatly improve the performance of your .Net application

Why good architecture is a synonym of cost reduction

These days, it doesn’t matter where I go or which media channel I watch, I hear about the same thing: cost reduction. From governments to households to companies, budgets are on a diet — saving is the new sacred word. Therefore, everyone must do more with much less. When it comes to companies, the first budget to shrink is usually the IT budget. But what can be cut, and how?
Sometimes, entire projects are stopped. With luck, maybe only features will be abandoned.
Sadly, lowering the cost to develop or maintain a project doesn’t lower customers’ expectations. In fact, those expectations increase as time passes and customers’ needs stay the same: They want better, faster, and more complete applications. And it goes without saying that the application has to be rock solid, because a deceived customer can quickly turn into an ex-customer.
But the “fat” has to be cut somewhere. Some would cut the budget on the lower elements of an application — the ones that the customers never see. But this is wrong. You see, an application is like a house. Skimping on the foundation creates an enormous risk of everything else collapsing.
So if you can’t save money on the foundation, you have to remove features. But, what is a house without rooms? Doesn’t removing features also remove the meaning of the project? As you can see, it is difficult to lower a project’s budget without putting it into jeopardy. So what is the miraculous solution? Unfortunately there’s no such thing.
A good start though would be minimizing the cost of heavy maintenance. This can be done by putting a lot of thought into what architecture would be the most efficient from the beginning.
That’s easier said than done! Firstly, defining what architecture is needed is difficult enough. Secondly, it is also difficult to respect the architecture when it comes time to code it. Sometimes, circumventing the architecture permits you to deliver a feature faster. But it defeats the purpose of the architecture and creates flaws in the software. To make sure that doesn’t happen, you need a tool where you can check that your delivered code respects the architecture model.
This tool is delivered by CAST and is called Architecture Checker.
Using CAST Architecture Checker gives a lot of benefits. With it, you will be able to validate the architecture of your application from the moment it’s thought up while choosing the level of detail you want.
And you will be able to validate how good your defined architecture is respected in the developed code whenever the code is modified using the generated set of quality rules. Every time a new feature is coded by the developers, you will make sure that your architecture is respected, permitting your applications to remain robust and easily maintainable. And you will keep your costs low.
In the end, an application is like any other thing. When you ensure that it stays intact during its creation, it doesn’t require costly down the road.

Efficiency: The Need for Speed and Robustness

In today’s world, we expect everything to run efficiently. People do not have time to lose.
One small efficiency improvement, when spread over many users, can lead to massive time and money savings. This also applies to your business applications. How much time would you and your company save if your business applications were more efficient? Probably much more than you think.
But, in what forms can efficiency express itself? Well, for starters:
How many times have we not been upset by an application that does not start fast enough on our computers or on our smartphones? When a user faces this kind of annoyance, what happens? The company who developed this piece of software suffers from a bad public image. The user loses productivity every time he starts the application. Consider real-time applications used to launch rockets and satellites; such applications have no option for any delays.
We cannot forget the famous saying, “time is money.”
Therefore applications should be time efficient.
Some applications are more critical than others. If your music player crashes often, it is annoying, but not really important. But what if your email provider is not available for multiple hours? What if your spreadsheet application crashes every time you input too much data? And what if the train control software system or air traffic monitoring system crashes? The impact of such a crash is not just annoying, it can cost the lives of thousands of people, and it must be taken very seriously.
So such applications must be robust and survive in all conditions.
Fulfilling expectations
Everyone is ready to express their expectations or, more often than not, complain. But to fulfill these expectations and avoid complaints, requires a lot of work and constant actions.
Early measurements
The first action is the measurement of the application’s quality using appropriate tools. The early measurement allows the possibility to detect defects in term of speed or robustness in the early stages of the application development lifecycle, and therefore remediate it from the beginning. An example of remediation is to review the entire architecture of the application. If these types of defects are not detected from the beginning, the changes will be impossible later.
Continuous monitoring
Once remediation is done and the application already fulfills the constraints in term of efficiency, continuous monitoring can detect other issues related to memory consumption or the use of a variable without it being initialized first. These types of issues seem, at first approach, to have small consequences, but it can end with the crashing of the entire application or a very low speed. For every type of defect found (memory consumption, performance, architecture, etc.) an appropriate remediation must be also planned.
Measurement is the key
Starting with a good level of efficiency for an application is good, keeping it there is even better. So the first step in order to keep a good level of efficiency is to do a constant measurement of quality applications using the appropriate tools to detect all the potential issues before it’s too late and the damage is already done.
As with reliability, the causes of performance inefficiency are often found in violations of good architectural and coding practice — which can be detected by measuring the static quality attributes of an application. These static attributes predict potential operational performance bottlenecks and future scalability problems, especially for applications requiring high execution speed for handling complex algorithms or huge volumes of data.
Assessing performance efficiency requires checking at least the following software engineering best practices and technical attributes:

Application architecture practices
Appropriate interactions with expensive and/or remote resources
Data access performance and data management
Memory, network, and disk space management
Coding practices
Compliance with object-oriented and structured programming best practices (as appropriate)
Compliance with SQL programming best practices

Have you had issues with efficiency in your software application development? Share your story in a comment.