Software experts involved in Computer Support in Sydney agree that virtually every non- trivial program contains errors. Therefore, techniques have been developed to deal with tolerant faults within programs. These techniques include defensive programming, exception handling, redundancy and monitoring programs (eg, watchdog timer) as well as the plausibility of the program during development and data during program execution.

In addition, a number of advanced applications offered that analyze either the source code or the binary code and try to find automates common mistakes. This category includes about programs for execution monitoring , which usually detect faulty memory accesses and memory leaks reliable. Examples are the tool freely available Valgrind and Purify the commercial.

Another category of test programs includes applications that analyze source code or binary code statically and about unclosed resources and other problems to find and can report.


It is quite reasonable that the test is developed before the actual program . It is thus achieved that a test is not written , matching the pre-written program. This can be done by determining test cases using the specifications already during the analysis and design phase. The determination of test cases at this early stage of software development also allows the examination of the requirements for the program testability and completeness.

The test cases identified through the specification and provide the basis for acceptance tests and can be continuously refined throughout the development process. Some software vendors lead test phases by partial public participation and give out beta versions to get tested by Computer Support in Sydney experts.

An example for detecting errors at run-time of a computer program are assertions that help terms are queried , which are in accordance with program design always met. Other mechanisms such as exception handling and exception trap. Through the implementation of Proof – Carrying Code , the software can provide and ensure their reliability to some extent at runtime.


Complete freedom from defects for software that exceeds a certain complexity limit is neither achievable nor demonstrable. Even expensive or frequently tested software inevitably contains programming errors.

We then speak with good useful programs not error-free , but of stability and robustness. A software is considered to be stable or robust if errors only occur very rarely, and then only bring these minor inconveniences and do not cause significant damage or losses.

In special cases, a proof of the correctness of a program is possible. Particularly in areas where the use of software is associated with high financial, economic or human risks, such as in military or medical premises software or in the aerospace industry.