Escher Technologies Escher Technologies
Home Tools Services Support News Company Contact Associates Publications
Escher Technologies
More:
arrowOur software tools
arrowAbout Perfect Developer
arrowWhat others say about PD
arrowCritical software
arrowYour development process
arrowPD process overview
arrowThe technology behind it
arrowEvaluating Perfect Developer



Perfect Developer - Making software bugs extinct!
 

Products - Perfect Developer FAQs

Perfect Developer FAQ

What is Perfect Developer?

Perfect Developer is a software development system designed to eliminate errors in the coding process, thereby drastically reducing the incidence of software bugs. The product is also expected to lead to a large productivity gain in the software development process.

Why do software systems contain bugs?

When developing software, errors may be introduced at any stage: during requirements analysis, specification, design, coding, compilation and execution. Fortunately, execution errors (i.e. bugs in the processor chip) are rare; compiler code-generation bugs are also quite unusual when using mature languages and compilers. However, errors in the requirements analysis, specification and coding phases are very common when using traditional software development processes.

The introduction of object-oriented languages and tools has reduced the incidence of errors only slightly, whereas the increasing size and complexity of commercial software packages has resulted in an explosion in the numbers of bugs per package. Another effect of increasing complexity is that testing becomes less effective at finding bugs, because the number of possible test cases is far too great to cover in an acceptable length of time.

How does Perfect Developer eliminate coding errors?

When using a traditional programming language, you tell the computer what steps you want it to take. It is completely up to you to make sure that the steps you have specified will produce the desired result, which leaves plenty of room for error.

Using Perfect Developer, you start by telling the computer what you want to achieve, not how to achieve it. In simple cases, Perfect Developer will generate code needed to achieve the result automatically (even if the generated code is too slow for production use, it means that a prototype can be produced rapidly). In more complex cases, the user specifies the steps needed to whatever level of detail is necessary; Perfect Developer then verifies that those steps will achieve the required result.

How does Perfect Developer help to eliminate specification and design errors?

A system specification may be checked against requirements by expressing the requirements as required properties about the behavior of the system. As part of the verification process, Perfect Developer will attempt to prove these properties.

Correctness of design requires that all the components used in the design are used within their limitations and that the behavior of the assembly of components satisfies the specification of the system. This too is checked by Perfect Developer.

How are programs developed using Perfect Developer?

Following requirements analysis, the system architecture is designed (using UML tools if desired). This architecture and the required behavior are expressed in the Perfect Developer language (Perfect). Where necessary, the required steps are also expressed in Perfect as implementation detail in the same source text.

The Perfect compiler is then run to check for syntactic and semantic errors, verify that the specification is complete and contains no contradictions, verify that no illegal operations will be performed when the program is run, verify that all implementation detail achieves the specified result, and produce a program in a traditional computer language. This program is then compiled for the target machine and operating environment in the usual way.

Where necessary, parts of the design may be optimized by refining the data model to a more efficient data structure and/or by refining the specifications of class methods to efficient implementations. These refinements are validated by Perfect Developer and code is generated in the normal way.

Why does Perfect Developer need a new language?

Currently the industry uses programming languages (e.g. C++, Ada, Java) and to a lesser extent, specification languages (e.g. Z, VDM). Unfortunately these are very different types of language and it is very hard to relate a specification written in Z or VDM to a program written in a programming language. Also, the syntax of current specification languages is highly mathematical and difficult for programmers to learn.

The Perfect language has been designed to express both specification and implementation of object-oriented software systems, and uses syntax familiar to programmers instead of the more mathematical notation of Z and VDM.

Is Perfect easy to learn?

We have designed Perfect to be easy for existing programmers to learn whilst not being so similar to existing languages as to be confusing. The main learning task is not so much the language, rather the attitude needed (i.e. specify exactly what conditions apply and what has to be achieved before writing the code). It is rather like learning object-oriented development when one already has experience of procedural development, in that best results require a new approach to be learned.

What systems does it run on?

Perfect Developer may be hosted under either Windows or Linux on x86-based hardware.

What systems can it generate software for?

Because Perfect Developer generates output in a traditional programming language, it can generate programs for any processor and any operating environment. The only requirements are that you have a compiler for the output language and the target machine and an environment library describing those parts of the operating environment which your system needs to use. Escher Technologies will be writing libraries for the most popular operating environments. Other environment libraries may be developed by Escher Technologies under contract, or by the user.

What output languages are supported?

The current compiler generates output in C++ as defined by ISO 14882:1998 or Java 2 as defined by Sun Microsystems. Generation of Ada 95 is under investigation.

Can it be integrated with existing applications?

Yes, software developed using Perfect Developer can be interfaced with other C++ or Java code.

What is the mathematical basis of Perfect Developer?

The Perfect Developer concept is based on the weakest-precondition calculus of Dijkstra and a typed logic of partial functions.

What language is Perfect Developer developed in?

There would be no point in selling a product to generate bug-free code if it contained bugs itself, therefore nearly all of Perfect Developer is implemented in its own technology. The parser is generated automatically by a tool that produces Perfect specifications directly from the language grammar. The lowest levels of the run-time system and environment libraries are written in the target language (Ada 95, C++ or Java); higher levels are written in Perfect so that they can be verified.

How can I find out more?

Information will be added to our Web page at www.eschertech.com from time to time. If you would like further information or an evaluation copy, please complete the form here.

 


Home    TOPTOP
Copyright © 1997-2010 Escher Technologies Limited. All rights reserved. Information in this document is subject to change without notice.