202 research outputs found
Domain-specific languages
Domain-Specific Languages are used in software engineering in order to enhance quality, flexibility, and timely delivery of software systems, by taking advantage of specific properties of a particular application domain. This survey covers terminology, risks and benefits, examples, design methodologies, and implementation techniques of domain-specific languages as used for the construction and maintenance of software systems. Moreover, it covers an annotated selection of 75 key publications in the area of domain-specific languages
Programming Language Techniques for Natural Language Applications
It is easy to imagine machines that can communicate in natural language. Constructing such machines is more difficult. The aim of this thesis is to demonstrate
how declarative grammar formalisms that distinguish between abstract and concrete syntax make it easier to develop natural language applications.
We describe how the type-theorectical grammar formalism Grammatical
Framework (GF) can be used as a high-level language for natural language
applications. By taking advantage of techniques from the field of programming
language implementation, we can use GF grammars to perform portable
and efficient parsing and linearization, generate speech recognition language
models, implement multimodal fusion and fission, generate support code for
abstract syntax transformations, generate dialogue managers, and implement
speech translators and web-based syntax-aware editors.
By generating application components from a declarative grammar, we can
reduce duplicated work, ensure consistency, make it easier to build multilingual
systems, improve linguistic quality, enable re-use across system domains, and
make systems more portable
A definition of the ARCA notation
ARCA is a programming notation intended for interactive specification and manipulation of combinatorial graphs. The main body of this report is a technical description of ARCA sufficiently detailed to allow an interpreter to be developed. Some simple illustrative programs are included.
ARCA incorporates variables for denoting primitive data elements (essentially vertices, edges and scalars), and diagrams (essentially embedded graphs). A novel feature is the use of two kinds of variable: the one storing values (as in conventional procedural languages), the other functional definitions (as in nonprocedural languages). By means of such variables, algebraic expressions over the algebra of primitive data elements may represent either explicit values or formulae. The potential applications and limitations of ARCA, and more general "algebraic notations" defined using similar principles, are briefly discussed
The construction of oracles for software testing
Software testing is important throughout the software life cycle. Testing is the part of the software development process where a computer program is subject to specific conditions to show that the problem meets its intended design. Building a testing oracle is one part of software testing. An oracle is an external mechanism which can be used to check test output for correctness. The characteristics of available oracles have a dominating influence on the cost and quality of software testing. In this thesis, methods of constructing oracles are investigated and classified. There are three kinds of method of constructing oracles: the pseudo-oracle approach, oracles using attributed grammars and oracles based on formal specification. This thesis develops a method for constructing an oracle, based on the Z specification language. A specification language can describe the correct syntax and semantics of software. The contextual part of a specification describes all the legal input to the program and the semantics part describes the meaning of the given input data. Based on this idea, an oracle is constructed and a prototype is implemented according to the method proposed in the thesis
Formally-based tools and techniques for human-computer dialogues
With ever cheaper and more powerful technology. the proliferation of computer systems, and higher expectations of their users, the user interface is now seen as a crucial part of any interactive system. As the designers and users of interactive software have found, though, it can be both difficult and costly to create good interactive software. It is therefore appropriate to look at ways of "engineering" the interface as well as the application. which we choose to do by using the software engineering techniques of specification and prototyping.
Formally specifying the user interface allows the designer to reason about its properties in the light of the many guidelines on the subject. Early availability of prototypes of the user interface allows the designer to experiment with alternative options and to elicit feedback from potential users.
This thesis presents tools and techniques (collectively called SPI for specifying and prototyping the dialogues between an interactive system and its users. They are based on a formal specification and rapid prototyping method and notation called me too. and were originally designed as an extension to me too. They have also been implemented under UNIX*. thus enabling a transition from the formal specification to its implementation.
*UNIX is a trademark of AT&T Bell Laboratorie
On Language Processors and Software Maintenance
This work investigates declarative transformation tools in the context of software maintenance. Besides maintenance of the language specification, evolution of a software language
requires the adaptation of the software written in that language as well as the adaptation of the software that transforms software written in the evolving language. This co-evolution is studied to derive automatic adaptations of artefacts from adaptations of the language specification.
Furthermore, AOP for Prolog is introduced to improve maintainability of language specifications and derived tools.Die Arbeit unterstützt deklarative Transformationswerkzeuge
im Kontext der Softwarewartung. Neben der Wartung der
Sprachbeschreibung erfordert die Evolution einer Sprache
sowohl die Anpassung der Software, die in dieser Sprache geschrieben ist als auch die Anpassung der Software, die diese Software transformiert. Diese Koevolution wird untersucht, um automatische Anpassungen
von Artefakten von Anpassungen der Sprachbeschreibungen abzuleiten. Weiterhin wird AOP für Prolog eingeführt, um die Wartbarkeit von Sprachbeschreibungen und den daraus abgeleiteten Werkzeugen zu erhöhen
A framework for developing finite element codes for multi- disciplinary applications
The world of computing simulation has experienced great progresses in recent years and requires
more exigent multidisciplinary challenges to satisfy the new upcoming demands. Increasing the
importance of solving multi-disciplinary problems makes developers put more attention to these
problems and deal with difficulties involved in developing software in this area.
Conventional finite element codes have several difficulties in dealing with multi-disciplinary
problems. Many of these codes are designed and implemented for solving a certain type of problems,
generally involving a single field. Extending these codes to deal with another field of analysis
usually consists of several problems and large amounts of modifications and implementations.
Some typical difficulties are: predefined set of degrees of freedom per node, data structure with
fixed set of defined variables, global list of variables for all entities, domain based interfaces, IO
restriction in reading new data and writing new results and algorithm definition inside the code.
A common approach is to connect different solvers via a master program which implements the
interaction algorithms and also transfers data from one solver to another. This approach has been
used successfully in practice but results duplicated implementation and redundant overhead of
data storing and transferring which may be significant depending to the solvers data structure.
The objective of this work is to design and implement a framework for building multi-disciplinary
finite element programs. Generality, reusability, extendibility, good performance and memory efficiency
are considered to be the main points in design and implementation of this framework.
Preparing the structure for team development is another objective because usually a team of experts
in different fields are involved in the development of multi-disciplinary code.
Kratos, the framework created in this work, provides several tools for easy implementation
of finite element applications and also provides a common platform for natural interaction of its
applications in different ways. This is done not only by a number of innovations but also by
collecting and reusing several existing works.
In this work an innovative variable base interface is designed and implemented which is used
at different levels of abstraction and showed to be very clear and extendible. Another innovation
is a very efficient and flexible data structure which can be used to store any type of data in a
type-safe manner. An extendible IO is also created to overcome another bottleneck in dealing with
multi-disciplinary problems. Collecting different concepts of existing works and adapting them
to coupled problems is considered to be another innovation in this work. Examples are using an
interpreter, different data organizations and variable number of dofs per node. The kernel and
application approach is used to reduce the possible conflicts arising between developers of different
fields and layers are designed to reflect the working space of different developers also considering
their programming knowledge. Finally several technical details are applied in order to increase the
performance and efficiency of Kratos which makes it practically usable.
This work is completed by demonstrating the framework’s functionality in practice. First some
classical single field applications like thermal, fluid and structural applications are implemented and
used as benchmark to prove its performance. These applications are used to solve coupled problems
in order to demonstrate the natural interaction facility provided by the framework. Finally some
less classical coupled finite element algorithms are implemented to show its high flexibility and
extendibility
- …