|
![]() |
| |
|
|||
| |
FermaT: Program Transformation ToolkitThe FermaT Transformation System is a powerful industrial-strength program transformation system based on the WSL language.The system uses formal proven program transformations, which preserve or refine the semantics of a program while changing its form. These transformations are applied to restructure and simplify the legacy systems and to extract higher-level representations.
By using an appropriate sequence of transformations, the extracted
representation is guaranteed to be equivalent to the original code
logic. The Wide Spectrum Language, called WSL is a logic-based formal
method used for the transformation. Over many years a large catalogue
of proven transformations has been developed, together with
mechanically verifiable applicability conditions. These have been
applied to many software development, reverse engineering and
maintenance problems.
Theoretical FoundationThe theoretical work, on which FermaT is based, originated in research on the development of a language in which proofs of equivalence for program transformations could be achieved as easily as possible for a wide range of constructs. WSL is the "Wide Spectrum Language" used to support program transformation and includes low-level programming constructs and high-level abstract sp ecifications within a single language. This has the advantage that it is not necessary to differentiate between programming and specification languages: the entire transformational development of a program from abstract specification to detailed implementation can be carried out in a single language. During this process, different parts of the program may be expressed at different levels of abstraction. So a wide-spectrum language forms an ideal tool for developing methods for formal program development and also for formal reverse engineering.A program transformation is an operation that modifies a program into a different form that has the same external behavior (i.e. it is equivalent under precisely defined denotation semantics). Since both programs and specifications are part of the same language, transformations can be used to demonstrate that a given program is a correct implementation of a given specification. A refinement is an operation, which modifies a program to make its behavior more defined and/or more deterministic. Typically, the author of a specification will allow some latitude to the developer, by restricting the initial states for which the specification is defined, or by defining a nondeterministic behavior. For example, the program is specified to calculate a root of an equation, but is allowed to choose which of several roots it returns. In this case, a typical implementation will be a refinement of the specification rather than a strict equivalence. The opposite of refinement is abstraction: we say that a specification is an abstraction of a program, which implements it. ExampleAn example of a transformation is reversing the branches in an if statement: if B then S1 else S2 fi is equivalent to: if not B then S2 else S1 fiApplicationsFermaT has applications in forward engineering (developing provably-correct software from high-level specifications), reverse engineering (determining the high-level specification of an existing software system) and language migration. FermaT has been used in several large-scale migration projects, transforming over a million lines of low-level assembler code into high-level structured and maintainable C. Examples are:
LicenceFermaT is available under the GNU GPL (General Public Licence) from the following web site: FermaT, together with an extended transformation catalogue, forms the core of the commercial FERMAT Migration and Comprehension Workbench produced by Software Migrations Ltd. (SML). The Workbench includes a number of tools for assembler analysis, comprehension and migration including dataflow analysers and program slicing.
AnaTempura: Runtime Verification & Animation ToolkitAssuring the correctness of hardware and software systems, like digital circuits and communications protocols, is a difficult task:
AnaTempura, which is built upon the C version of Tempura, is a tool for the runtime verification of systems using Interval Temporal Logic (ITL) and its executable subset Tempura. Runtime verification
main() { long y, fac=1; assertion("fac", fac); text_out("Enter the seed:"); scanf("%d",&y); assertion("y", y); while (y>1) { fac=fac*y; assertion("fac", fac); y=y-1; assertion("y", y); } } will generate the sequence: !PROG: assert fac:1:! !PROG: assert y:4:! !PROG: assert fac:4:! !PROG: assert y:3:! !PROG: assert fac:12:! !PROG: assert y:2:! !PROG: assert fac:24:! !PROG: assert y:1:! The corresponding behaviour (interval): ![]() Location of assertion points is determined by the variables used in our property of interest. Simple search trough the source code will locate all places where the variables are changing. We will place the assertion points directly after those "places of change". This will ensure that behaviour generated during the runtime of the system is indeed the "correct" behaviour.
For the factorial example the property we want to check is: Example of Program AnimationLetter sorter: a control program for sorting letters that uses 2 sensors and 2 solenoids.
A fragment of the C code is shown below.
Screendump of the corresponding animation: LicenseAnaTempura is available under the GNU GPL (General Public Licence) from the ITL homepage.SANTA:Security Analysis Toolkit for AgentsWith the continuous expansion of the Internet and the growing amount of embedded software, accessing and operating in this open environment, new technologies are needed to address the arising complexity and its implication on the security of the system.The agent approach is promising to solve some of the problems that arise in an open, decentralised environment. It allows the dynamic evolution of the system and reflects the autonomous organisations that contributing to the network. In this approach the system is composed of autonomous programs (agents), that aim to achieve specific goals. Agents can communicate with other agents in the system, i.e. to request information, or specific services. Each agent is designed for a specific problem and therefore has a very specific set of skills. A group of cooperating agents is able to solve problems that are beyond the capabilities of each individual agent. Security critical applications that are operating in an open environment, e.g. the Internet, are highly vulnerable to attacks. Most agents in the system are not benevolent, i.e. they have conflicting goals. Not all agents in the system will have the same level of trust. Whilst some information is vital for trusted agents and must be available, other agents must not obtain this information. Examples are battle-field and business strategies, where information-leakage is critical and can lead to loss of life or property. Beside mechanisms that ensure the confidentiality, integrity and non-repudiation of exchanged messages, it is necessary to be able to control and analyse the information flow in the system. Methodologies and tool-support that focus on the information-flow are needed. Furthermore security-policies in open systems are dynamic and must be able to change over time and on events. Security models that capture this requirement are needed. ObjectiveTo assist in the design of security-critical, distributed applications we are developing the SAnTA-Toolkit as an Integrated Development Environment (IDE) for secure agents in Data and Information Fusion. The workbench contains 3 major parts:Formal ModelA formal model allows to proof properties of the system design. Mission critical and in military applications must be based on a sound formal model. In our formal model security and functional and temporal requirements are expressed in a uniform way. This uniformity allows the specification of dynamically changing security policies.Design LanguageFormal specifications are abstract. The implementation of a formal specification is an non-trivial task. To close the gap between the abstract specification and a concrete implementation, we provide the widespectrum language SAnTA-WSL. In this language both abstract specification and concrete implementation constructs are expressed. Sound refinement rules are applied to preserve the semantic from the specification to the implementation.Tool-SupportImportant for the success of every formal development approach is the provided tool-support. The range in which tool-support is needed is multifold:
OverviewThis section describes the SAnTA-workbench in greater detail. The following diagram shows the different modules that constitute the SAnTA-workbench.![]() Formal ModellingOur approach is aligned on the formal -to- applied axis. Based on a simple computational model with semantics given in Interval Temporal Logic (ITL), security and functional requirements are expressed at the same level of abstraction within a uniform formal framework.
![]() The Security Policy Analysis Tool (SPAT, see above picture) especially focus on the analysis of security policies. It allows to display access-control matrix, delegation matrix and information flow in a tabular representation. Queries can interactivly be made to limit the scope of the analysis to critical parts. Figure 1 shows the user interface of SPAT.
![]() The red rectangles represent subjects (users) in the system. The green ovals represent objects that can be accessed by this users. The solid arrows show that the policy allows the direct information flow from a sub ject to an ob ject and vice versa. The dotted lines represent the transitive closure of the direct information flow. E.g. information can flow from Bob to Alice via the object Carolrecord. AnaTempura is an extension to the original Tempura interpreter, that allows the runtime-validation of executables. To achieve this, assertions are inserted in the executable, that are then validated against the formal specification. AcknowlegementThis work is partially funded by the DIF-DTC through project 12.5.1, "Secure and Trusted Agents for Information Fusion".Krit: Nonlinear Aircraft Dynamics Analysis and Flight Clearance ToolkitAn investigation of aircraft dynamics at high angles of attack and intensive spatial manoeuvring is closely coupled with combat aircraft agility and also flight safety of all types of aircraft including passenger airliners.
The qualitative methods for
nonlinear dynamical systems and bifurcation analysis are very
efficient tools for investigation of nonlinear aircraft
dynamics. These methods significantly complement the common
engineering approach mostly based on linearization of motion
equations and direct numerical simulation of aircraft dynamics.
Mathematical BackgroundAn aircraft dynamics can be described by an autonomous nonlinear dynamical system depending on a number of parameters such as control inputs, aircraft parameters, flight conditions, etc. (see following picture):![]() The basic KRIT algorithms allow user compute all possible equilibria, steady periodical orbits, complicated steady attractors at some fixed values of parameters (see next picture). ![]() The efficient continuation algorithm supports computation of attractor characteristics at variation of the system parameters. For every stable attractor KRIT can perform the computation of a region of attraction.
The computational algorithms in the current version of KRIT
provide a high level of automation. The KRIT front end GUI's allow
user to perform rather complicated investigation of aircraft critical
flight regimes in support of flight clearance purposes. The GUI's for
continuation analysis, manoeuvre design and flight clearance are
presented in next two pictures, respectively.
AcknowledgementThe work has been carried out at DMU and funded by QinetiQ Ltd, Bedford, UK.ITL ToolsWe have developed a set of tools for the verification and specification of systems using Interval temporal Logic.
See the ITL homepage for more details and how to download the tools. |
|
||
| |
|