4,091 research outputs found
Including non-functional issues in Anna/Ada programs for automatic implementation selection
We present an enrichment of the Anna specification language for Ada aimed at dealing not only with functional specification of packages but also with non-functional information about them. By non-functional information we mean information about efficiency, reliability and, in general, any software attribute measuring somehow the quality of software (perhaps in a subjective manner). We divide this information into three kinds: definition of non-functional properties, statement of non-functional behaviour and statement of non-functional requirements; like Anna annotations, all of this information appears in Ada packages and package bodies and their syntax is close to Ada constructs. Non-functional information may be considered not only as valuable comments, but also as an input for an algorithm capable of selecting the “best” package body for every package definition in a program, the “best” meaning the one that fits the set of non-functional requirements of the package in the program.Peer ReviewedPostprint (author's final draft
Recommended from our members
Arcadia, a software development environment research project
The research objectives of the Arcadia project are two-fold: discovery and development of environment architecture principles and creation of novel software development tools, particularly powerful analysis tools, which will function within an environment built upon these architectural principles.Work in the architecture area is concerned with providing the framework to support integration while also supporting the often conflicting goal of extensibility. Thus, this area of research is directed toward achieving external integration by providing a consistent, uniform user interface, while still admitting customization and addition of new tools and interface functions. In an effort to also attain internal integration, research is aimed at developing mechanisms for structuring and managing the tools and data objects that populate a software development environment, while facilitating the insertion of new kinds of tools and new classes of objects.The unifying theme of work in the tools area is support for effective analysis at every stage of a software development project. Research is directed toward tools suitable for analyzing pre-implementation descriptions of software, software itself, and towards the production of testing and debugging tools. In many cases, these tools are specifically tailored for applicability to concurrent, distributed, or real-time software systems.The initial focus of Arcadia research is on creating a prototype environment, embodying the architectural principles, which supports Ada1 software development. This prototype environment is itself being developed in Ada.Arcadia is being developed by a consortium of researchers from the University of California at Irvine, the University of Colorado at Boulder, the University of Massachusetts at Amherst, TRW, Incremental Systems Corporation, and The Aerospace Corporation. This paper delineates the research objectives and describes the approaches being taken, the organization of the research endeavor, and current status of the work
Systematic formulation of non-functional characteristics of software
This paper presents NoFun, a notation aimed at dealing with non-functional aspects of software systems at the product level in the component programming framework. NoFun can be used to define hierarchies of non-functional attributes, which can be bound to individual software components, libraries of components or (sets of) software systems. Non-functional attributes can be defined in several ways, being possible to choose a particular definition in a concrete context. Also, NoFun allows to state the values of the attributes in component implementations, and to formulate non-functional requirements over component implementations. The notation is complemented with an algorithm able to select the best implementation of components (with respect to their non-functional characteristics) in their context of use.Peer ReviewedPostprint (published version
Browsing a component library using Non-functional Information
This paper highlights the role of non-functional information
when reusing from a component library. We describe a method for selecting
appropriate implementations of Ada packages taking non-functional constraints
into account; these constraints model the context of reuse. Constraints
take the form of queries using an interface description language
called NoFun, which is also used to state non-functional information in Ada
packages; query results are trees of implementations, following the import
relationships between components. We define two different situations when
reusing components, depending whether we take the library being searched
as closed or extendible. The resulting tree of implementations can be manipulated
by the user to solve ambiguities, to state default behaviours, and
by the like. As part of the proposal, we face the problem of computing from
code the non-functional information that determines the selection process
USTOPIA REQUIREMENTS THOUGHTS ON A USER-FRIENDLY SYSTEM FOR TRANSFORMATION OF PROGRAMS IN ABSTRACTO
Transformational programming is a program development method which is usually applied
using 'pen and paper'. Since this requires a lot of clerical work (copying expressions, con-
sistent substitution) which is tiresome and prone to error, some form of machine support is
desirable. In this paper a number of systems are described that have already been built to
this aim. Some of their shortcomings and limitations are identified. Based on experience
with program transformation and transformation systems, a long list of features is given
that would be useful in an 'utopian' transformation system. This list is presented using
an orthogonal division of the problem area. A number of problems with the realisation of
some aspects of our 'utopian' system are identified, and some areas for further research
are indicated
GRASP/Ada (Graphical Representations of Algorithms, Structures, and Processes for Ada): The development of a program analysis environment for Ada. Reverse engineering tools for Ada, task 1, phase 2
The study, formulation, and generation of structures for Ada (GRASP/Ada) are discussed in this second phase report of a three phase effort. Various graphical representations that can be extracted or generated from source code are described and categorized with focus on reverse engineering. The overall goal is to provide the foundation for a CASE (computer-aided software design) environment in which reverse engineering and forward engineering (development) are tightly coupled. Emphasis is on a subset of architectural diagrams that can be generated automatically from source code with the control structure diagram (CSD) included for completeness
ComProLab: A component programming laboratory
We present here an approach to component programming which defines languages and tools at both the product and the process levels. At the product level, we allow the use of already existing languages to write functional specifications and implementations of components; also, we provide a notation to state their non-functional specifications, which involve operational attributes as efficiency. Functional specifications can be employed to perform prototyping in a mixed execution framework, which allows the combination of algebraic specifications and imperative code, while non-functional specifications are used to select automatically the best implementation of every component appearing in a software system. At the process level, we have introduced a set of basic program development tasks and we have defined a process language to formulate software process models as particular combinations of these tasks. A process assistant can be used to guide software development following any model defined with this language.Peer ReviewedPostprint (author's final draft
The convenience for a notation to express non-functional characteristics of software components
Software systems are characterised both by their functionality (what the system does) and by their non-functionality (how does the system behave with respect to some observable attributes like performance, reusability, reliability, etc.). Both aspects are relevant to software development. However, non-functional issues have received little attention compared to functional ones. In this position paper we highlight the role of non-functionality, and we claim for a notation to deal with them. We enumerate some design principles for such a notation, and then we make a proposal, which allows to de ne non-functional attributes of software, non-functional behaviour of components with respect to these attributes, and also non-functional requirements over implementations.Peer ReviewedPostprint (author's final draft
Ada as a design specification language
The primary thesis objective is research into current approaches to design specification languages, emphasizing Ada. Requirements specification is touched upon. Design specification is explored and related to requirements and implementation. The role of language in design is discussed, as well as objectives of the design specification and features that a specification language should provide in order to meet those objectives. Formal language is contrasted with natural language. Some formal specification languages are described, both Ada related and not Ada related. The secondary objective, the thesis project, is to illustrate a design specification in a formal language, Ada. The purpose of the project is to compare the Ada expression of an example design with the natural language specification for the same system
Recommended from our members
Rapid software prototyping
Rapid Prototyping is an approach to software development which emphasizes quick implementation of a working program. This dissertation makes two principal contributions. First, it provides concepts, techniques, and a philosophy of Rapid Software Prototyping and characterizes the benefits and limitations of its use. Second, it makes a contribution to programming environments which support Rapid Prototyping. An experimental language, Castor, is described which was implemented to validate this approach in the prototyping of Ada programs*. The following summarize the main results of this research:..
- …