Safety and security software development is critical for the creation of a reliable system especially in avionics, medicine and nuclear industry. The modern process of software development includes different stages where formal methods can be applied. The model-driven development paradigm anticipates the creation of the models as artifacts on every stage of projects like requirements capturing, design stage, coding, testing. It includes such procedures as verification, code generation, and model-based testing.
We propose the life cycle of the development process where we use a number of algebraic models of the system of the different levels of abstraction on every stage for applying the algebraic methods.
WHY ALGEBRAIC (SYMBOLIC) APPROACH?
Among many problems in computer science, there are challenges which face with analyzing of all possible behaviors of models or programs. Such problems are verification, testing, cybersecurity analysis, reverse engineering. Usually, programmers face with the problem of the exponential explosion. During verification and testing activities we try to cover as much behaviors of the program as possible. Big systems have a huge or infinite number of behaviors. Concrete or heuristic methods could not cover all behaviors. The algebraic or symbolic approach allows to process with an infinite number of behaviors and to perform the programs symbolically processing the infinite set of states. For this purpose, we use traditional theories and practice from model checking and our own algebraic achievements developed together with Glushkov Institute of cybernetics: theory of predicate transformer, invariant generation, mixed computations, insertion modeling, enlarged techniques other formal methods. It gave the possibility to provide verification an testing of programs with numerous feature interactions, an enormous number of code lines.
General


STAGES OF THE V-MODEL LIFE CYCLE IN SOFTWARE DEVELOPMENT PROCESS
V-model life cycle defines the sequence of processes of development stages and defines the sources of tests for testing procedures that follow after development stages. We consider the model-driven methods, where formal models are the input of every stage and are the objects of verification and test generation.
1. STAGE OF REQUIREMENTS CAPTURING
FLaCon (Formal Languages Converter) provides the conversion from given formal requirements to internal algebraic presentation of SymTech (Behavior Algebra expressions).
Verification of requirements anticipates the following checking:
Static Requirements Checking (incompleteness, inconsistency, liveness and safety properties)
Dynamic Requirements Checking (deadlocks, non-determinisms, annotations).
The level of requirements is the highest level of product specifications. The requirements are used for the process of validation or correspondence of product to customer requirements. Using symbolic technologies it is possible to use generation of symbolic high level tests and automatically run the product under such tests on the final stage. Symbolic tests contain formulas over variables instead parameters.
Generation of code framework. The business logic that presented in requirements could be generated as program code or design specifications.The code will contain contracts (annotations) that inherited from formal requirements.
REQUIREMENTS can be presented from customer as the texts in natural language. Then the process of formalization shall be provided. The formal representation of requirement in SymTech is implemented in UCM (Use Case Maps) and language of Basic Protocols. All they have graphical interpretations.
The formalization language is UCM (Use Case Maps), standardized as part of URN (User Requirements Notation) in ITU-T recommendation (Z.151) which provides a scenario-based approach to requirements specification.
UCM is extended by the language of basic protocols developed at the Glushkov Institute of Cybernetics which represents behavioral requirements as reactions of a system to externally triggered events. Such local behaviors are modeled by basic protocols which consist of three components - pre- and postconditions and process actions.
Pre- and postcondition are represented as formulae of the basic logic language. It supports attributes of numeric and symbolic types, arrays, lists, and functional data types.
The given example shows the formal presentation of textual requirements that describe the work of traffic light.
The order and synchronization of events and basic protocols is defined by means of UCM diagrams in a graphical notation. UCM diagrams are oriented graphs with initial and final states. Nodes of the graph represent events in a system. The basic protocols notation captures the atomic actions (responsibilities) of a UCM map.
2. STAGE OF DESIGN
SymTech anticipates verification and testing of design specifications given as UML diagram and converted by FLaCon to algebraic presentation.
The main procedures implemented on this stage:
Verification of UML diagrams.
Testing of UML diagrams by high level tests.
Generation of code framework (C,Java) (SymTech 2.0).
Checking of annotations inherited from requirements.
Generation of tests for unit or integration testing.
3. STAGE OF CODING
The main procedure implemented on the stage of coding:
Verification of program (standard and given properties).
Checking for vulnerabilities.
Proving of annotations inherited from design stage.
Extraction of business logic.
SymTech 1.0 deals with C, Java, Cobol applications.
4. STAGE OF TESTING
The main procedure implemented on the stage of testing.
- model-based testing with given coverage;
- integration testing;
- symbolic model-based testing of White Box
- cybersecurity testing;
- stress testing.
5. STAGE OF VALIDATION AND SYSTEM TESTING
Testing of product by high-level tests.


Demo of MBT algebraic approach:

