At Buda we take pride in delivering the best quality in every line of code we write. In fact, our work begins even before writing code: we study and understand our customer’s unique requirements, then design the right solution, after which we begin coding. We follow this through by meticulous testing and QA. Often times, in the rush to get software into production, shortcuts are taken and the risk of failure is high, particularly with custom (not off the shelf) software. An issue we do not have to face at Buda Consulting, because we take time to listen: to our clients’ requirements and their unique specifications. Every client has a set of strengths and weakness and at Buda we can ascertain these from the very first encounter with our client where we only listen, and they talk. Any piece of code is written, checked or, passed only after that. A simple maxim that has helped us stand the test of time, and sustain long and fruitful relationships with our clients.
At Buda Consulting, our approach takes more time but results in high quality code that is robust, durable and reliable.
All of our code contains exception and error handlers so that the code is very unlikely to break ungracefully. It is designed to handle both anticipated and un-anticipated events. Robust code has the following characteristics:
- The processing is segmented: should a given portion of the process fail, all the processing which has already been completed, will remain logically intact. Where appropriate, processing is divided into transactions so that a given portion of the process can be rolled back without impacting the earlier – already complete – portions of the process.
- Exceptions are logged and handled so that we can trace errors by looking in log files.
- The applications are designed to survive failures where appropriate, so that processing continues when failure occurs.
We design code using building blocks (functions or procedures) that can be used in this application and others. The impact of this is that if the overall application changes, the individual components can frequently be re-used, extending the useful life of the software. An important feature that we use regularly is the SQL function. These functions can be used in any application written in the future and can also be used in ad-hoc sql queries. This extends the usefulness of the logic written for the particular application significantly and has a very high payoff for the organization.
We employ extensive testing on all applications. This includes testing of individual components as well as system integration tests. It includes testing likely and unlikely (but possible) events. This results in a very low defect rate on our software. We do not put code into production and let the users find the bugs, a practice that we see often. This stringent testing practice takes time but is essential in order to have high quality software.