Correctness is the ability of software products to perform their exact tasks, as defined by their specification.It is the prime quality. If a system does not do what it is supposed to do,everything else about it whether it is fast, has a nice user interface matters little.But this is easier said than done. Even the first step to correctness is already difficult. we must be able to specify the system requirements in a precise form, by itself quite a challenging task.
Methods for ensuring correctness will usually be conditional. A serious software system, even a small one by today’s standards, touches on so many areas that it would be impossible to guarantee its correctness by dealing with all components and properties on a single level. Instead, a layered approach is necessary, each layer relying on lower ones.Many practitioners, when presented with the issue of software correctness, think about testing and debugging.
In the conditional approach to correctness, we only worry about guaranteeing that each layer is correct on the assumption that the lower levels are correct.This is the only realistic technique, as it achieves separation of concerns and lets us concentrate at each stage on a limited set of problems. You cannot usefully check that a program in a highlevel language X is correct unless you are able to assume that the compiler on hand implements X correctly.
This does not necessarily mean that you trust the compiler blindly, simply that you separate the two components of the problem.compiler correctness, and correctness of your program relative to the language’s semantics. In the method described in this book, even more layers intervene: software development will rely on libraries of reusable components, which may be used in many different applications.
No comments:
Post a Comment