3,458 papers · page 169 of 173
Critical Success Factors for Knowledge-Based Software Engineering Applications
A key problem in KBSE is evaluating the utility of KBSA tools. This paper analyzes the utility of ten KBSA prototype applications that were developed as part of an advanced course. Based on this analysis, we hypothesis three new critical success factors for explaining their utili…
User Interface Design Assistance For Large-Scale Software Development
The User Interface Design Assistant (UIDA) addresses the specific design problems of style and integration consistency throughout the user interface development process and aids in the automated feedback and evaluation of a system's graphical user interface according to knowledge…
Formal Specification Tools for Test Coverage Analysis
This paper describes a prototype software tool that supports analyses for 21 structural coverage criteria. Formal techniques were developed for axiomatizing Ada and translating the path expressions of subprogram bodies into conjunctive normal form for use in a resolution-refutati…
Abstract Data Structure Recognition
We present a framework for recognition of data structures in programs, to aid in design recovery. The framework consists of an intermediate representation and a knowledge base containing information about typical implementations of abstract data types. The framework is suited for…
A Framework for Distributed System Designs
We present a framework to structure the space of designs for a class of distributed systems. The purpose of this framework is to codify known design knowledge, and thus, when given the task of developing a new system in this class, to facilitate: navigation-finding designs applic…
Agent-Based Support for Communication Between Developers and Users in Software Design
Research in knowledge-based software engineering has led to advances in the ability to specify and automatically generate software. Advances in the support of upstream activities have focussed on assisting software developers. We examine the possibility of extending computer-base…
Systematic Incremental Validation of Rule-Based Reactive Systems
Validating the specification of a reactive system, such as a telephone switching system, traffic controller, or automated network service, is difficult, primarily because it is extremely hard even to state a complete and correct set of requirements, let alone to prove that a spec…
A Formal Approach to Reusing More General Components
Using formal specifications to represent software components facilitates tire determination of reusability because they more precisely characterize the functionality of the software, and the well-defined syntax makes processing amenable to automation. This paper presents an appro…
Application of REFINE Language ToolsTM to Software Quality Assurance
We demonstrate REFINE Language Tools, a family of interactive, extensible software evaluation and reengineering tools. We also demonstrate applications of REFINE Language Tools to software quality assurance. These applications were built using Software Refinery and the REFINE Lan…
Task Oriented and Similarity-Based Retrieval
We present two support facilities for identifying design information in a repository. First, task-orientation supports the dynamic composition of repository information with respect to a designer's working context. Second, similarity-based retrieval overcomes the impediment of ex…
Integrating Object-Oriented Paradigms and Logic Programming: The OPLA Language
OPLA is an object-oriented (OO) logic programming language built on top of Common Lisp Object System (CLOS) OPLA enhances logic programming with advanced features of OO paradigm, such as multiple-inheritance, multi-methods, and the constraint-based control flow mechanism. In part…
AMPHION: Automatic Programming for Subroutine Libraries
AMPHION is a generic architecture that is specialized to a particular domain and subroutine library through a domain theory and domain-specific theorem-proving tactics. This paper discusses AMPHION-NAIF, the application of AMPHION to the domain of solar system kinematics as imple…
A Formal Approach to Domain-Oriented Software Design Environments
This paper describes a formal approach to domain-oriented software design environments, based on declarative domain theories, formal specifications, and deductive program synthesis. A declarative domain theory defines the semantics of a domain-oriented specification language and …
Knowledge-Based Risk Assessment and Cost Estimation
A knowledge-based method for software project risk assessment and cost estimation has been implemented on multiple platforms. As an extension to the Constructive Cost Model (COCOMO) [Boehm, 1981], it aids in project planning by identifying, categorizing, quantifying and prioritiz…
Using Machine Learning to Synthesize Search Programs
This paper describes how machine learning techniques are used in the MULTI-TAC system to specialize generic algorithm schemas for particular problem classes. MULTI-TAC is a program synthesis system that generates Lisp code to solve combinatorial integer constraint satisfaction pr…
Composing Reusable Software Components Through Views
The ability to combine separate reusable software components to form a complete program is necessary for effective software reuse. Views provide a clean, flexible, and efficient mechanism for combining reusable software components. A view describes how an application data type im…
A Cooperative Program Understanding Environment
The large size and high-percentage of domain-specific code in most legacy systems makes it unlikely that automated understanding tools will be able to completely understand them. Yet automated tools can clearly recognize portions of the design. That suggests exploring environment…
Graphical Support for Code-Level Software Understanding
Understanding of a software system is a prerequisite to any significant maintenance activity, and this understanding must ultimately extend to the source code itself This activity is difficult to support because of its highly interactive nature and the fact that code understandin…
Intelligent Assistance for Software Construction: A Case Study
An important type of software design task involves constructing software artifacts from existing components. Major user tasks are locating relevant components, reusing existing artifacts, and ensuring that the artifact is complete and consistent. We developed a prototype knowledg…