scholarly journals Transforming Event B Models into Verified C# Implementations

10.29007/9wm9 ◽  
2018 ◽  
Author(s):  
Dominique Mery ◽  
Rosemary Monahan

The refinement-based approach to developing software is based on thecorrect-by-construction paradigm were software systems are constructed via the step-by-step refinement of an initial high-level specification into a final concrete specification. Proof obligations, generated during this process are discharged to ensure the consistency between refinement levels and hence the system's overall correctness.Here, we are concerned with the refinement of specifications using the Event B modelling language and its associated toolset, the Rodin platform. In particular, we focus on the final steps of the process where the final concrete specification is transformed into an executable algorithm. The transformations involved are (a) the transformation from an Event B specification into a concrete recursive algorithm and (b) the transformation from the recursive algorithm into its equivalent iterative version. We prove both transformations correct and verify the correctness of the final code in a static programme verification environment for C# programs, namely the Spec# programming system.

2021 ◽  
Vol 30 (3) ◽  
pp. 1-33
Author(s):  
Xiao Cheng ◽  
Haoyu Wang ◽  
Jiayi Hua ◽  
Guoai Xu ◽  
Yulei Sui

Static bug detection has shown its effectiveness in detecting well-defined memory errors, e.g., memory leaks, buffer overflows, and null dereference. However, modern software systems have a wide variety of vulnerabilities. These vulnerabilities are extremely complicated with sophisticated programming logic, and these bugs are often caused by different bad programming practices, challenging existing bug detection solutions. It is hard and labor-intensive to develop precise and efficient static analysis solutions for different types of vulnerabilities, particularly for those that may not have a clear specification as the traditional well-defined vulnerabilities. This article presents D eep W ukong , a new deep-learning-based embedding approach to static detection of software vulnerabilities for C/C++ programs. Our approach makes a new attempt by leveraging advanced recent graph neural networks to embed code fragments in a compact and low-dimensional representation, producing a new code representation that preserves high-level programming logic (in the form of control- and data-flows) together with the natural language information of a program. Our evaluation studies the top 10 most common C/C++ vulnerabilities during the past 3 years. We have conducted our experiments using 105,428 real-world programs by comparing our approach with four well-known traditional static vulnerability detectors and three state-of-the-art deep-learning-based approaches. The experimental results demonstrate the effectiveness of our research and have shed light on the promising direction of combining program analysis with deep learning techniques to address the general static code analysis challenges.


2015 ◽  
Vol 16 (2) ◽  
pp. 189-235 ◽  
Author(s):  
DANIELA INCLEZAN ◽  
MICHAEL GELFOND

AbstractThe paper introduces a new modular action language,${\mathcal ALM}$, and illustrates the methodology of its use. It is based on the approach of Gelfond and Lifschitz (1993,Journal of Logic Programming 17, 2–4, 301–321; 1998,Electronic Transactions on AI 3, 16, 193–210) in which a high-level action language is used as a front end for a logic programming system description. The resulting logic programming representation is used to perform various computational tasks. The methodology based on existing action languages works well for small and even medium size systems, but is not meant to deal with larger systems that requirestructuring of knowledge.$\mathcal{ALM}$is meant to remedy this problem. Structuring of knowledge in${\mathcal ALM}$is supported by the concepts ofmodule(a formal description of a specific piece of knowledge packaged as a unit),module hierarchy, andlibrary, and by the division of a system description of${\mathcal ALM}$into two parts:theoryandstructure. Atheoryconsists of one or more modules with a common theme, possibly organized into a module hierarchy based on adependency relation. It contains declarations of sorts, attributes, and properties of the domain together with axioms describing them.Structuresare used to describe the domain's objects. These features, together with the means for defining classes of a domain as special cases of previously defined ones, facilitate the stepwise development, testing, and readability of a knowledge base, as well as the creation of knowledge representation libraries.


Author(s):  
Anton Dries ◽  
Angelika Kimmig ◽  
Jesse Davis ◽  
Vaishak Belle ◽  
Luc de Raedt

The ability to solve probability word problems such as those found in introductory discrete mathematics textbooks, is an important cognitive and intellectual skill. In this paper, we develop a two-step end-to-end fully automated approach for solving such questions that is able to automatically provide answers to exercises about probability formulated in natural language.In the first step, a question formulated in natural language is analysed and transformed into a high-level model specified in a declarative language. In the second step, a solution to the high-level model is computed using a probabilistic programming system. On a dataset of 2160 probability problems, our solver is able to correctly answer 97.5% of the questions given a correct model. On the end-to-end evaluation, we are able to answer 12.5% of the questions (or 31.1% if we exclude examples not supported by design).


Author(s):  
Paulius Stankaitis ◽  
Alexei Iliasov ◽  
Tsutomu Kobayashi ◽  
Yamine Aït-Ameur ◽  
Fuyuki Ishikawa ◽  
...  

AbstractThe decentralised railway signalling systems have a potential to increase capacity, availability and reduce maintenance costs of railway networks. However, given the safety-critical nature of railway signalling and the complexity of novel distributed signalling solutions, their safety should be guaranteed by using thorough system validation methods. To achieve such a high-level of safety assurance of these complex signalling systems, scenario-based testing methods are far from being sufficient despite that they are still widely used in the industry. Formal verification is an alternative approach which provides a rigorous approach to verifying complex systems and has been successfully used in the railway domain. Despite the successes, little work has been done in applying formal methods for distributed railway systems. In our research we are working towards a multifaceted formal development methodology of complex railway signalling systems. The methodology is based on the Event-B modelling language which provides an expressive modelling language, a stepwise development and a proof-based model verification. In this paper, we present the application of the methodology for the development and verification of a distributed protocol for reservation of railway sections. The main challenge of this work is developing a distributed protocol which ensures safety and liveness of the distributed railway system when message delays are allowed in the model.


2011 ◽  
Vol 12 (1-2) ◽  
pp. 127-156 ◽  
Author(s):  
JOACHIM SCHIMPF ◽  
KISH SHEN

AbstractECLiPSe is a Prolog-based programming system, aimed at the development and deployment of constraint programming applications. It is also used for teaching most aspects of combinatorial problem solving, for example, problem modelling, constraint programming, mathematical programming and search techniques. It uses an extended Prolog as its high-level modelling and control language, complemented by several constraint solver libraries, interfaces to third-party solvers, an integrated development environment and interfaces for embedding into host environments. This paper discusses language extensions, implementation aspects, components, and tools that we consider relevant on the way from Logic Programming to Constraint Logic Programming.


Author(s):  
László Horváth

Engineering modeling software systems have been developed during a long integration process from separated partial solutions to current modeling software platforms (MSPs). MSP is expected to provide all necessary model creation and application capabilities during integrated innovation and the life cycle of commercial and industrial products (CIP). Recently, advanced CIP is operated by component systems organized within an increasingly autonomous cyber physical system (CPS). CIP is represented by the engineering model system (EMS). EMS is driven by active contexts between the outside world and EMS, between component models of EMS, and between objects in a component model. EMS reacts to any new contribution using all formerly represented contexts. Consistent structure of contexts gives autonomous operation capability for EMS. Active contexts between the outside world and EMS make EMS sensitive to outside world changes. In the other direction, EMS can generate advice for the outside world using high level and well-organized active knowledge as context. Contributing to research in key issues around EMS and the relevant software technology, this paper introduces results in requirements against MSP capabilities to represent intelligent driving content (IDC) in EMS. A novel organized structure of IDC and continuous engineering (CE) aspects of IDC development are explained and discussed placing the main emphasis on situation awareness. Finally, a new concept is introduced in which purposeful EMS acts as the only media in communication of researchers. Specially configured MSP facilitates participation from industrial, institutional, and academic organizations. The research proceeds at the Laboratory of Intelligent Engineering Systems (IESL) in the organization of the Óbuda University.


Author(s):  
Reyes Delgado Paola Yuritzy ◽  
Mora Tavarez José Manuel ◽  
Duran-Limon Hector Alejandro ◽  
Rodríguez-Martínez Laura Cecilia ◽  
Mendoza González Ricardo ◽  
...  

The design Software Architecture (SA) is an essential activity in the modern development software systems. This SA design activity defines its core components, the interrelationships among them, and a set of essential attributes expected for the final software. While this design is realized in a high level of abstraction, missing this activity or a wrong conduction of it will have negative effects in further software development phases, and lately in the final software. Thus, SA design methods are relevant to be studied and applied. In this article, we review the SA design methods that are (explicitly or implicitly) included in five well-known Software Development Methodologies (SDMs). We report: (1) a brief description of the five SDMs; (2) a substantial description of the SA design methods used in each SDM; and (3) a comparative analysis among them using an evaluation template posited by well-recognized experts in this topic. Our results suggest that SA design methods, while sharing a similar design purpose and some activities, they also present a varied structured and nomenclature.


2012 ◽  
pp. 201-222
Author(s):  
Yujian Fu ◽  
Zhijang Dong ◽  
Xudong He

The approach aims at solving the above problems by including the analysis and verification of two different levels of software development process–design level and implementation level-and bridging the gap between software architecture analysis and verification and the software product. In the architecture design level, to make sure the design correctness and attack the large scale of complex systems, the compositional verification is used by dividing and verifying each component individually and synthesizing them based on the driving theory. Then for those properties that cannot be verified on the design level, the design model is translated to implementation and runtime verification technique is adapted to the program. This approach can highly reduce the work on the design verification and avoid the state-explosion problem using model checking. Moreover, this approach can ensure both design and implementation correctness, and can further provide a high confident final software product. This approach is based on Software Architecture Model (SAM) that was proposed by Florida International University in 1999. SAM is a formal specification and built on the pair of component-connector with two formalisms – Petri nets and temporal logic. The ACV approach places strong demands on an organization to articulate those quality attributes of primary importance. It also requires a selection of benchmark combination points with which to verify integrated properties. The purpose of the ACV is not to commend particular architectures, but to provide a method for verification and analysis of large scale software systems in architecture level. The future research works fall in two directions. In the compositional verification of SAM model, it is possible that there is circular waiting of certain data among different component and connectors. This problem was not discussed in the current work. The translation of SAM to implementation is based on the restricted Petri nets due to the undecidable issue of high level Petri nets. In the runtime analysis of implementation, extraction of the execution trace of the program is still needed to get a white box view, and further analysis of execution can provide more information of the product correctness.


2013 ◽  
Vol 4 (2) ◽  
pp. 1-18 ◽  
Author(s):  
Per Håkon Meland ◽  
Erlend Andreas Gjære

The Business Process Modeling Notation (BPMN) has become a popular standard for expressing high level business processes as well as technical specifications for software systems. However, the specification does not contain native support to express security information, which should not be overlooked in today’s world where every organization is exposed to threats and has assets to protect. Although a substantial amount of work enhancing BPMN 1.x with security related information already exists, the opportunities provided by version 2.0 have not received much attention in the security community so far. This paper gives an overview of security in BPMN and investigates several possibilities of representing threats in BPMN 2.0, in particular for design-time specification and runtime execution of composite services with dynamic behavior. Enriching BPMN with threat information enables a process-centric threat modeling approach that complements risk assessment and attack scenarios. We have included examples showing the use of error events, escalation events and text annotations for process, collaboration, choreography and conversation diagrams.


Sign in / Sign up

Export Citation Format

Share Document