It is possible to design a software without error, until we find one ... Software confront the hardships of different human behaviors and different technologies rapidly evolving.
From the smallest to the largest software development company in the world, when you install a new program, an upgrade is performed sooner or later in order to apply patches. "Total perfection" the first time has a price.
Before signing a project in IT (information technology), particularly in the creation of software, it is imperative that stakeholders (customers and developers) agree on the requirements, but also to terms of tolerances regarding critical errors.
For example, a program that performs financial transactions, such as an ATM, may require a large amount of testing to prevent fraud or to avoid communication errors because the financial company could suffer major losses. It is imperative to identify critical paths where we cannot make a mistake that would result in a significant impact. A manufacturing company may find itself in an untenable situation if production is stopped for several hours because of a fault in a specialized application.
To avoid problems, it is necessary to predict and identify the impact of errors, prepare test cases to put the new program to the test, document and automate tests to avoid repetition of the same tests, etc... Depending on the program, the scope of the quality assurance can become very impressive in time and money. Sometimes for a specialized and relatively simple to design application, the cost of testing exceeds several times the cost of the program itself.
How much is the customer willing to pay for the quality they require? What type of errors must the client absolutely avoid? When creating a software based on an existing process, these questions are easy to answer, because we knows the field and we already know what to expect. But when creating a new software based on a non-existent business processes, it is much more difficult. It sometimes takes a lot more depth and analysis.
Software designers must therefore make the effort to find the elements of risk and determine in advance the testing to expect in order to come up with a reliable solution and avoid critical errors. It appears simple, but often organizations forget to add it to the budget. The level of software quality will be determined by the budget, time allocated and extended needs. These three factors combined are the key to determine the success of an IT project.