1. Software Error Prevention by Formal Specification and Animation
How to prevent critical and directional software errors in the
phase of requirements analysis still remains a challenge for software
engineering. In this research, we aim to work out a systematic and effective
way to carry out requirements analysis and to prevent requirements errors by
means of constructing formal specifications and carrying out specification
animation. Since most critical and directional software errors often come from
the inconsistency and incompleteness of requirements, the essential problem to
address is how to write specifications and carry out their animation so that
all the potential user requirements can be discovered and documented
consistently, and how such a process can be effectively supported.
2. Automatic Testing-Based Formal Verification (TBFV)
Formal verification for the correctness of programs based on Hoare
logic or symbolic execution has the potential to prove that the program is
bug-free with respect to its specification but suffers considerable limitations
in dealing with loops, side effect, function calls, and complex data
structures. Formal specification-based testing can be utilized to automatically
identify bugs in programs but lacks the capability of telling that the program
is bug-free in general. In this research, we aim to properly integrate
specification-based testing and Hoare logic and symbolic execution to establish
a unified approach to formal verification of programs. The essential idea is to
use testing to identify program paths and use formal verification to prove the
correctness of the identified paths. To this end, a proof obligation will be
automatically formed based both on the specification and the path, and then
either a formal proof or rigorous testing will be deployed to discharge the
proof obligation. How to automatically generate adequate test cases and how to
automatically identify program paths are the key topics for research in this
direction. Further development of this research will include automatic
debugging and automatic error correction as well as intelligent software tool
support for the technologies.
3. Human-Machine Pair Programming (HMPP)
Programming is the major
activity to provide working software advocated in the Agile development
paradigm but lacks effective techniques to address the challenges in ensuring
software quality, productivity, and maintainability. In this research, we aim
to establish an intelligent Human-Machine Pair Programming (HMPP) technology to
support efficient and reliable programming.
HMPP is characterized by the
feature that humans create algorithms, data structures, and the architecture of
the program whereas the machine takes care of checking the program under
construction to identify potential software defects or violation of standards
in the program and to predict useful program segments for enhancing the
robustness and the completeness of the program. This approach includes Software
Construction Monitoring (SCM) and Software Construction Predicting (SCP) as its
two key techniques, both of which need to integrate the AI knowledge base and
machine learning technologies into the technologies for programming. The
essential problem is how to carry out SCM and SCP so that the final program can
be efficiently produced and its qualities are guaranteed.
To help enhance the
maintainability of the program, automatic reversing from the current program
version to comprehensible graphical documentation, such as data flow diagrams
or UML diagrams, also needs to be supported and the necessary technology needs
to be worked out as well.
Another research topic is how to support the iterative programming
in which the programmer concentrates on constructing new program code while the
machine dynamically and effectively guides the programmer to review the
appropriate parts of the already constructed code to identify and correct
potential bugs. The challenge is how the programmer can be guided to choose the
appropriate target parts of the code to review, to identify bugs, and to
correct the uncovered bugs.
4. Specification-Based "Vibration" Testing
Specification-based testing is a black-box testing for programs
and can be fully automated if the specification is formalized in a formal
notation. It is characterized by the fact that test cases are generated only
based on the specification, without the need to know the structure of the
corresponding program. However, the challenge is how test cases can be
generated to efficiently cover all of the representative program paths. In this
research, we aim to establish a systematic method, called "Vibration"
Testing or simply V-Testing, based on formal specifications. The essential idea
is to repeatedly generate test cases based on the change of the distance
between two atomic predicates in the hope of increasing the program path coverage.
The problems to address include how the distance change should be planned and
how specific test cases can be automatically generated based on the changed
distance. An effective tool support for the V-Testing method is also the focus
of the research. The V-Testing can be used effectively to test programs whose
source code is not available for the tester. Another topic of this research is
how to automatically predict the reliability of the program using the
V-Testing.
5. Human-Machine Pair Review (HMPR)
Program review is a conventional but effective technique for
software quality assurance. In particular, peer review is strongly advocated.
However, peer review faces a critical limitation that the peer usually faces
great difficulty in understanding the semantics of the program and in making a
correct judgement on software defects. In this research, we try to establish en
effective technology including both a method and tool to support program review
by the programmer himself or herself. The essential issue is how the machine
can effectively remind and even guide the programmer to efficiently review the
program and to identify bugs. This approach can also be extended to review
specifications, designs, and testing documents as well.
6. Intelligent Software Engineering Environment for Agile-SOFL
Agile-SOFL is an Agile Formal Engineering Method for software
development, aiming to achieve both high software productivity and reliability.
It offers a three-step hybrid specification approach, specification-based
human-machine pair programming, and automatic specification-based testing and
verification techniques. In this research, we try to utilize AI knowledge base
and machine learning technologies to support the entire process of software development
using the above techniques in a systematic manner. The ISEE can be divided into
Method-Based ISEE, Domain-Based ISEE, and Method-Domain-Based ISEE, depending
on how the required knowledge is learned and what specific activities need to
be supported.
7. Safety/Security-Critical
Systems Specification and Verification
Safety/Security-critical systems
are required to ensure both the desired functionality and the safety/security
constraints are satisfied by the final software product. To fulfil this goal,
Agile-SOFL, characterized by specification-based programming and verification
and validation, is regarded as an effective and efficient technology. In this
research, we aim to establish a specific specification approach that properly
interweaves the functional specification with the safety/security constraints.
The functional specification can be written in the functional scenario manner
while the safety/security requirements or constraints can be derived by means
of fault tree analysis or attacking tree analysis. The questions are how to
systematically incorporate the safety/security constraints into the functional
specification for programming and how to test and verify the safety/security
properties of the program based on the specification. We will also study how
this technology can be effectively applied to develop ITS (Intelligent
Transport Systems, including automatic railway systems and automatic automobile
driving systems) and other safety/security-critical systems.
|