The use of this technology encourages reuse of codified knowledge. Specifically, once a domain theory has been developed, it can be used to help define additional problem specifications within that domain, or it can be combined with other domain theories to characterize larger domains. Note, however, that the characterization of large and/or complex domains is non-trivial and may take considerable effort. With respect to the synthesis system itself, a developer is free to add additional algorithm theories to its library. However, the development of such algorithm theories is complex and will require in-depth knowledge of that class of algorithm.
Synthesizing algorithms from formal specifications involves a paradigm shift from traditional programming practice. Because formal specifications are used, developers must formally characterize what the operations in the problem domain do rather than stating how they do it. In addition, maintenance is not performed on the synthesized code. Instead, the problem specification is modified to reflect the new requirement(s), and an implementation is rederived.
Synthesis of algorithms from formal specifications is independent of the target programming language. However, the synthesis environments themselves may need to be modified to support particular target languages, or code translators may be needed to translate the code generated by the synthesis environment to the desired target language.
Algorithms for non-real time, well-defined deterministic functions- such as sorting or complex scheduling- can be synthesized using this technology. However, additional work is required to determine whether this technology can be extended with notions state and nondeterminism.
This technique, along with an algorithm synthesis prototype environment called
Kestrel Interactive Development System (KIDS), was developed around 1986
[Smith
86,
Smith
91]. Although it initially supported divide-and-conquer and global
search algorithm theories, KIDS has been extended with more powerful algorithm
theories and with more sophisticated constraint propagation mechanisms. KIDS
has been used to synthesize a transportation scheduling algorithm used by US
Transportation Command; this scheduling algorithm is able to schedule 10,000
movement requests in approximately one minute, versus hours for competitive
scheduling algorithms
[Smith 93c]. Ongoing research in this area includes a formalization of local search and formalizations of complex scheduling algorithms. Proof-of-concept scheduling algorithms have been synthesized for the nuclear power-plant domain in which
- scheduled activities can have complex interactions
- timing constraints are represented by earliest start/finish times
This technology is also being extended to address the synthesis of parallel
algorithms
[