by Patrizia Asirelli, Antonia Bertolino and S. Gnesi
An applied research project which aims at integrating a set of tools that support the different phases of the software life cycle into a development environment is now under way at IEI-CNR.
Quality software is produced by the thoughtful application of good engineering methods and tools throughout the specification, design, code and testing stages. Unfortunately, researchers have often centred their attention on the problems of specific stages of the cycle. Although, in a sense, this has been necessary to achieve significant advancements in particular areas, focusing efforts on single stages of software development is not effective per se. Development must proceed in a controlled and coordinated way if the quality of the resulting product is to be guaranteed. This is the main reason why software engineers have shown great interest in the modelling and controlling of the software process over the last two decades.
A set of prototype tools (Gedblog, NL2ACTL and BAT) for the automation of different steps in the software development process have been designed and implemented at IEI-CNR in the context of the recently concluded CNR Finalised Project "Information Systems and Parallel Computation". We here briefly describe the functionalities of these tools.
The Gedblog system, which is based on logic database theory, is a uniform environment that supports the fast prototyping of applications benefiting from a declarative specification style, e.g., applications which demand support for knowledge management and for its graphic representation.
NL2ACTL is a prototype tool that translates Natural Language expressions into Temporal Logic formulae. It has been developed to test the use of Natural Language in a friendly interface in order to make the expression of formal requirements easier for the user. NL2ACTL deals with sentences describing the occurrence of system performed actions. A precise semantics in terms of a particular temporal logic formulae is associated with each sentence. If this semantics is not ambiguous, an immediate translation is provided; otherwise, a dialogue with the user is started in order to solve the ambiguities inherent in many natural language expressions.
BAT supports the analysis and structural testing of application programs. It includes an interactive graphical interface. It accepts a program module (a set of units) and automatically derives and visualises the control flowgraph for a user selected unit. The user can inspect this flowgraph interactively, using the mouse. BAT derives complexity metrics for the control flowgraph for use in evaluating the cost of coverage testing. It also derives the set of "unconstrained arcs", i.e., the minimum set of branches in the program unit that, if exercised, would guarantee full branch coverage. BAT also provides the user with a set of control flow paths that cover the unconstrained arcs and thus satisfy the branch testing criterion, provided that these paths are feasible. In any case, they are derived following a heuristics that minimises the incidence of the path infeasibility problem.
Our idea is to integrate these three tools into one environment supporting software development from the user requirements expressed in natural language up to the validation phase, using Gedblog as a core. In fact, both NL2ACTL and BAT need an information repository for the analysed programs and Gedblog could act as such a repository. In turn, the deductive capabilities and the graphical environment provided by Gedblog could be exploited to further improve the effectiveness of the other two tools.
We intend to run a set of case studies to experiment the integrated use of these tools. As the project only began this year, so far, we have conducted just one such study, in which we tried Gedblog as a test oracle for a set of requirements expressed as temporal logic formulae. In other words, we first incorporated the Gedblog knowledge base with a set of formally expressed requirements describing the expected behaviour of a given program. Gedblog was then used to automatically check the results of a set of (separately executed) tests and to indicate those tests that failed. We are now working towards the integration of Gedblog and NL2ACTL in order to generate an automatic environment that performs specification animation.
The implementation of an integrated environment for the development of quality software is an ambitious goal, and perhaps we will not be able to achieve it completely. However, we are convinced that the sharing of our different backgrounds and viewpoints while working together towards this common goal is worth the effort and will certainly produce many useful insights and side effects.