|

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.
|