389,729 research outputs found
Recommended from our members
The Integration of Multiple and Diverse Knowledge Representation Paradigms using a Blackboard Architecture
There is increasing evidence that designers of future real-time embedded systems are turning to knowledge-based techniques in order to solve complex problems where algorithmic techniques have failed to produce a solution. In addition, many applications have been mandated to use the Ada programming language for all implementation software, including the knowledge-based components.
This thesis identifies three essential requirements needed to support the construction of these systems: first, the need to provide a library of Ada knowledge-based components that supports a variety of knowledge representation paradigms to model the diverse expert domains being encountered in complex applications; second, the need to provide the user with the means of creating and controlling multiple independent instances of the knowledge-based components to cope with the complexity and scale of the implementations; and third, the need to provide an integrating architecture in which the knowledge-based components may be embedded directly into an application environment.
These requirements have been satisfied by using ideas derived from the concept of abstract data types to construct a library of knowledge-based components; the components have been called abstract knowledge types. Subsequently, multiple instances of the abstract knowledge types have been integrated in modules called knowledge sources, which model specific problem knowledge domains. The knowledge sources have been used to construct a blackboard architecture.
The abstract knowledge types have been used to build a prototype university timetabling system in order to demonstrate their use. The research has shown that the abstract knowledge type integration approach results in a uniform implementation strategy for both conventional and knowledge-based components
Advanced Software Development Workstation Project
The Advanced Software Development Workstation Project, funded by Johnson Space Center, is investigating knowledge-based techniques for software reuse in NASA software development projects. Two prototypes have been demonstrated and a third is now in development. The approach is to build a foundation that provides passive reuse support, add a layer that uses domain-independent programming knowledge, add a layer that supports the acquisition of domain-specific programming knowledge to provide active support, and enhance maintainability and modifiability through an object-oriented approach. The development of new application software would use specification-by-reformulation, based on a cognitive theory of retrieval from very long-term memory in humans, and using an Ada code library and an object base. Current tasks include enhancements to the knowledge representation of Ada packages and abstract data types, extensions to support Ada package instantiation knowledge acquisition, integration with Ada compilers and relational databases, enhancements to the graphical user interface, and demonstration of the system with a NASA contractor-developed trajectory simulation package. Future work will focus on investigating issues involving scale-up and integration
Concrete Syntax with Black Box Parsers
Context: Meta programming consists for a large part of matching, analyzing,
and transforming syntax trees. Many meta programming systems process abstract
syntax trees, but this requires intimate knowledge of the structure of the data
type describing the abstract syntax. As a result, meta programming is
error-prone, and meta programs are not resilient to evolution of the structure
of such ASTs, requiring invasive, fault-prone change to these programs.
Inquiry: Concrete syntax patterns alleviate this problem by allowing the meta
programmer to match and create syntax trees using the actual syntax of the
object language. Systems supporting concrete syntax patterns, however, require
a concrete grammar of the object language in their own formalism. Creating such
grammars is a costly and error-prone process, especially for realistic
languages such as Java and C++. Approach: In this paper we present Concretely,
a technique to extend meta programming systems with pluggable concrete syntax
patterns, based on external, black box parsers. We illustrate Concretely in the
context of Rascal, an open-source meta programming system and language
workbench, and show how to reuse existing parsers for Java, JavaScript, and
C++. Furthermore, we propose Tympanic, a DSL to declaratively map external AST
structures to Rascal's internal data structures. Tympanic allows implementors
of Concretely to solve the impedance mismatch between object-oriented class
hierarchies in Java and Rascal's algebraic data types. Both the algebraic data
type and AST marshalling code is automatically generated. Knowledge: The
conceptual architecture of Concretely and Tympanic supports the reuse of
pre-existing, external parsers, and their AST representation in meta
programming systems that feature concrete syntax patterns for matching and
constructing syntax trees. As such this opens up concrete syntax pattern
matching for a host of realistic languages for which writing a grammar from
scratch is time consuming and error-prone, but for which industry-strength
parsers exist in the wild. Grounding: We evaluate Concretely in terms of source
lines of code (SLOC), relative to the size of the AST data type and marshalling
code. We show that for real programming languages such as C++ and Java, adding
support for concrete syntax patterns takes an effort only in the order of
dozens of SLOC. Similarly, we evaluate Tympanic in terms of SLOC, showing an
order of magnitude of reduction in SLOC compared to manual implementation of
the AST data types and marshalling code. Importance: Meta programming has
applications in reverse engineering, reengineering, source code analysis,
static analysis, software renovation, domain-specific language engineering, and
many others. Processing of syntax trees is central to all of these tasks.
Concrete syntax patterns improve the practice of constructing meta programs.
The combination of Concretely and Tympanic has the potential to make concrete
syntax patterns available with very little effort, thereby improving and
promoting the application of meta programming in the general software
engineering context
Formal Verification of Security Protocol Implementations: A Survey
Automated formal verification of security protocols has been mostly focused on analyzing high-level abstract models which, however, are significantly different from real protocol implementations written in programming languages. Recently, some researchers have started investigating techniques that bring automated formal proofs closer to real implementations. This paper surveys these attempts, focusing on approaches that target the application code that implements protocol logic, rather than the libraries that implement cryptography. According to these approaches, libraries are assumed to correctly implement some models. The aim is to derive formal proofs that, under this assumption, give assurance about the application code that implements the protocol logic. The two main approaches of model extraction and code generation are presented, along with the main techniques adopted for each approac
An active learning and training environment for database programming
Active learning facilitated through interactive, self-controlled learning environments differs substantially from traditional instructor-oriented, classroom-based teaching. We present a tool for database programming that integrates knowledge learning and skills training. How these tools are used most effectively is still an open question. Therefore, we discuss analysis and evaluation of these Web-based environments focusing on different aspects of learning behaviour and tool usage. Motivation, acceptance of the learning approach, learning organisation and actual tool usage are aspects of behaviour that require different techniques to be used
Using the DiaSpec design language and compiler to develop robotics systems
A Sense/Compute/Control (SCC) application is one that interacts with the
physical environment. Such applications are pervasive in domains such as
building automation, assisted living, and autonomic computing. Developing an
SCC application is complex because: (1) the implementation must address both
the interaction with the environment and the application logic; (2) any
evolution in the environment must be reflected in the implementation of the
application; (3) correctness is essential, as effects on the physical
environment can have irreversible consequences. The SCC architectural pattern
and the DiaSpec domain-specific design language propose a framework to guide
the design of such applications. From a design description in DiaSpec, the
DiaSpec compiler is capable of generating a programming framework that guides
the developer in implementing the design and that provides runtime support. In
this paper, we report on an experiment using DiaSpec (both the design language
and compiler) to develop a standard robotics application. We discuss the
benefits and problems of using DiaSpec in a robotics setting and present some
changes that would make DiaSpec a better framework in this setting.Comment: DSLRob'11: Domain-Specific Languages and models for ROBotic systems
(2011
Reusable Knowledge-based Components for Building Software Applications: A Knowledge Modelling Approach
In computer science, different types of reusable components for building software applications were proposed as a direct consequence of the emergence of new software programming paradigms. The success of these components for building applications depends on factors such as the flexibility in their combination or the facility for their selection in centralised or distributed environments such as internet. In this article, we propose a general type of reusable component, called primitive of representation, inspired by a knowledge-based approach that can promote reusability. The proposal can be understood as a generalisation of existing partial solutions that is applicable to both software and knowledge engineering for the development of hybrid applications that integrate conventional and knowledge based techniques. The article presents the structure and use of the component and describes our recent experience in the development of real-world applications based on this approach
- …