66 research outputs found
Automatic Transformation from SOFL Formal Specifications to Programs for Software Verification and Testing
Abstractâ The Structured Object-oriented Formal Language (SOFL) method is developed to overcome the disadvantages of existing formal methods and provide effective techniques for writing formal specifications and carrying out verification and testing. Although it has been applied to system modeling and design in practical and research projects, SOFL has not been widely applied to the industrial software development systems because of the lack of efficient tool support. Aiming at improving the existing SOFL supporting tool and solving the problem that the formal specifications cannot be directly executed, this paper firstly analyzes the relationship between the structures of SOFL formal specifications and C# programs, and then designs and implements the transforming classes for module transformations and data type transformations. Finally, a test is performed to ensure the reliability and validity of the implemented software system. Keywordsâ SOFL; Formal specifications; Automatic transformations; Programs
Automated Visualization of Input / Output for Processes in SOFL Formal Specifications
While formal specification is regarded as an effective means to capture accurate requirements and design, validation of the specifications remains a challenge. Specification animation has been proposed to tackle the challenge, but lacking an effective representation of the input / output data in the animation can considerably limit the understanding of the animation by clients. In this paper, we put forward a tool supported technique for visualization of the input / output data of processes in SOFL formal specifications. After discussing the motives of our work, we describe how data of each kind of data type available in the SOFL language can be visualized to facilitate the representation and understanding of input / output data. We also present a supporting tool for the technique and a case study to demonstrate the usability and effectiveness of our proposed technique
A new dialect of SOFL-Syntax formal semantics and tool support
Structured Object Orientated Formal Language (SOFL) is a formal method design methodology that
combines data flows diagrams and predicates in order to describe processes that can be refined. This
methodology creates a very versatile method of describing a system, which system properties can
be proven rigorously. Data flows are grouped by ports that define from which data flows data can be
consumed or on which flows data can be generated. For predicates, Logic of Partial Functions
(LFP) are used; and an undefined element that is also used to indicate if a data flows do not contain
any data.
Over time SOFL âevolved organicallyâ and a number of features were added: usability was the
main consideration for a feature being added. For a formal language to be useful there must be no
uncertainty of a specific designâs meaning. With SOFL, there is a possible contradiction between
the requirement that a process's precondition must be true when the process fire, and the fire rules.
This contradiction is due to the use of LPF.
Semantics (the meaning) of SOFL was not always updated to keep track of the changes made to
SOFL which resulted in an outdated and incomplete semantic. The incompleteness of the semantics
is a significant factor motivating the work done in this dissertation.
In this dissertation, a dialect of SOFL is created to define a semantic. Not all the elements of SOFL
are added in order that a simpler semantic can be defined. Elements that were removed include:
LPF,
Classes, and
Non-deterministic broadcast nodes.
Semantics of the dialect is created by a two-step process: firstly, an intuitive understanding of the
dialect is created, and secondly, both static and dynamic semantics are defined by means of
translations.
A translation is a mapping from the dialect to a formal language that describes a certain aspect of
the dialect. Static semantics defines the meaning of the elements that are âfixedâ in their state:
SMT-LIB is used as the target language to describe the static semantics of the dialect. Dynamic
semantics describes how an element in a design changes over time: the process algebra mCRL2 is
used as the formal language which describes the dynamic behaviour of the dialect.
The SMT-Solver Z3 and tools included in mCLR2 are used to analyse the translation of the dialect.
Use of these tools allows properties that are necessary for a design to have a well defined meaning,
to be proven. Properties that can be proven include: a process can fire, a process can fire an infinite
number of times, and a predicate that described a property.
An Eclipse plug-in is created so that translation is not required to be done manually. After a design
is translated the tools Z3 and mCRL2 are run using script files and the results of the analysis are
displayed on the screen. The desired properties could be proven but for a moderate size design, but
as the size of the design increased the analysis of the translation could not be completed due to
computational problem. Usability of the tool can be improved by not only using a textual
representation of a design, but also visual representations as in SOFL.
As a result, properties that are necessary for a design to have a well-defined meaning, can be proven
using these tools.Dissertation (MSc)--University of Pretoria, 2018.Computer ScienceMScUnrestricte
A Formal Engineering Approach for Interweaving Functional and Security Requirements of RESTful Web APIs
RESTful Web API adoption has become ubiquitous with the proliferation of REST APIs in almost all domains with modern web applications embracing the micro-service architecture. This vibrant and expanding adoption of APIs, has made an increasing amount of data to be funneled through systems which require proper access management to ensure that web assets are secured. A RESTful API provides data using the HTTP protocol over the network, interacting with databases and other services and must preserve its security properties. Currently, practitioners are facing two major challenges for developing high quality secure RESTful APIs. One, REST is not a protocol. Instead, it is a set of guidelines that define how web resources can be designed and accessed over HTTP endpoints. There are a set of guidelines which stipulate how related resources should be structured using hierarchical URIs as well as how specific well-defined actions on those resources should be represented using different HTTP verbs. Whereas security has always been critical in the design of RESTful APIs, there are no clear formal models utilizing a secure-by-design approach that interweaves both the functional and security requirements. The other challenge is how to effectively utilize a model driven approach for constructing precise requirements and design specifications so that the security of a RESTFul API is considered as a concern that transcends across functionality rather than individual isolated operations.This thesis proposes a novel technique that encourages a model driven approach to specifying and verifying APIs functional and security requirements with the practical formal method SOFL (Structured-Object-Oriented Formal Language). Our proposed approach provides a generic 6 step model driven approach for designing security aware APIs by utilizing concepts of domain models, domain primitives, Ecore metamodel and SOFL. The first step involves generating a flat file with APIs resource listings. In this step, we extract resource definitions from an input RESTful API documentation written in RAML using an existing RAML parser. The output of this step is a flat file representing API resources as defined in the RAML input file. This step is fully automated. The second step involves automatic construction of an API resource graph that will work as a blue print for creating the target API domain model. The input for this step is the flat file generated from step 1 and the output is a directed graph (digraph) of API resource. We leverage on an algorithm which we created that takes a list of lists of API resource nodes and the defined API root resource node as an input, and constructs a digraph highlighting all the API resources as an output. In step 3, we use the generated digraph as a guide to manually define the APIâs initial domain model as the target output with an aggregate root corresponding to the root node of the input digraph and the rest of the nodes corresponding to domain model entities. In actual sense, the generated digraph in step 2 is a barebone representation of the target domain model, but what is missing in the domain model at this stage in the distinction between containment and reference relationship between entities. The resulting domain model describes the entire ecosystem of the modeled API in the form of Domain Driven Design Concepts of aggregates, aggregate root, entities, entity relationships, value objects and aggregate boundaries. The fourth step, which takes our newly defined domain model as input, involves a threat modeling process using Attack Defense Trees (ADTrees) to identify potential security vulnerabilities in our API domain model and their countermeasures. aCountermeasures that can enforce secure constructs on the attributes and behavior of their associated domain entities are modeled as domain primitives. Domain primitives are distilled versions of value objects with proper invariants. These invariants enforce security constraints on the behavior of their associated entities in our API domain model. The output of this step is a complete refined domain model with additional security invariants from the threat modeling process defined as domain primitives in the refined domain model. This fourth step achieves our first interweaving of functional and security requirements in an implicit manner. The fifth step involves creating an Ecore metamodel that describes the structure of our API domain model. In this step, we rely on the refined domain model as input and create an Ecore metamodel that our refined domain model corresponds to, as an output. Specifically, this step encompasses structural modeling of our target RESTful API. The structural model describes the possible resource types, their attributes, and relations as well as their interface and representations. The sixth and the final step involves behavioral modeling. The input for this step is an Ecore metamodel from step 5 and the output is formal security aware RESTful API specifications in SOFL language. Our goal here is to define RESTful API behaviors that consist of actions corresponding to their respective HTTP verbs i.e., GET, POST, PUT, DELETE and PATCH. For example, CreateAction creates a new resource, an UpdateAction provides the capability to change the value of attributes and ReturnAction allows for response definition including the Representation and all metadata. To achieve behavioral modelling, we transform our API methods into SOFL processes. We take advantage of the expressive nature of SOFL processes to define our modeled API behaviors. We achieve the interweaving of functional and security requirements by injecting boolean formulas in post condition of SOFL processes. To verify whether the interweaved functional and security requirements implement all expected functions correctly and satisfy the desired security constraints, we can optionally perform specification testing. Since implicit specifications do not indicate algorithms for implementation but are rather expressed with predicate expressions involving pre and post conditions for any given specification, we can substitute all the variables involved a process with concrete values of their types with results and evaluate their results in the form of truth values true or false. When conducting specification testing, we apply SOFL process animation technique to obtain the set of concrete values of output variables for each process functional scenario. We analyse test results by comparing the evaluation results with an analysis criteria. An analysis criteria is a predicate expression representing the properties to be verified. If the evaluation results are consistent with the predicate expression, the analysis show consistency between the process specification and its associated requirement. We generate the test cases for both input and output variables based on the user requirements. The test cases generated are usually based on test targets which are predicate expressions, such as the pre and post conditions of a process. when testing for conformance of a process specification to its associated service operation, we only need to observe the execution results of the process by providing concrete input values to all of its functional scenarios and analyze their defining conditions relative to user requirements. We present an empirical case study for validating the practicality and usability of our model driven formal engineering approach by applying it in developing a Salon Booking System. A total of 32 services covering functionalities provided by the Salon Booking System API were developed. We defined process specifications for the API services with their respective security requirements. The security requirements were injected in the threat modeling and behavioral modeling phase of our approach. We test for the interweaving of functional and security requirements in the specifications generated by our approach by conducting tests relative to original RAML specifications. Failed tests were exhibited in cases where injected security measure like requirement of an object level access control is not respected i.e., object level access control is not checked. Our generated SOFL specification correctly rejects such case by returning an appropriate error message while the original RAML specification incorrectly dictates to accept such request, because it is not aware of such measure. We further demonstrate a technique for generating SOFL specifications from a domain model via model to text transformation. The model to text transformation technique semi-automates the generation of SOFL formal specification in step 6 of our proposed approach. The technique allows for isolation of dynamic and static sections of the generated specifications. This enables our technique to have the capability of preserving the static sections of the target specifications while updating the dynamic sections in response to the changes of the underlying domain model representing the RESTful API in design. Specifically, our contribution is provision of a systemic model driven formal engineering approach for design and development of secure RESTful web APIs. The proposed approach offers a six-step methodology covering both structural and behavioral modelling of APIs with a focus on security. The most distinguished merit of the model to text transformation is the utilization of the APIâs domain model as well as a metamodel that the domain model corresponds to as the foundation for generation of formal SOFL specifications that is a representation of APIâs functional and security requirements.ĺ壍(çĺŚ)ćłćżĺ¤§ĺŚ (Hosei University
Recommended from our members
Using formal methods to support testing
Formal methods and testing are two important approaches that assist in the development of high quality software. While traditionally these approaches have been seen as rivals, in recent
years a new consensus has developed in which they are seen as complementary. This article reviews the state of the art regarding ways in which the presence of a formal specification can be used to assist testing
Mathematics in Software Reliability and Quality Assurance
This monograph concerns the mathematical aspects of software reliability and quality assurance and consists of 11 technical papers in this emerging area. Included are the latest research results related to formal methods and design, automatic software testing, software verification and validation, coalgebra theory, automata theory, hybrid system and software reliability modeling and assessment
Development of a case tool to support decision based software development
A summary of the accomplishments of the research over the past year are presented. Achievements include: made demonstrations with DHC, a prototype supporting decision based software development (DBSD) methodology, for Paramax personnel at ODU; met with Paramax personnel to discuss DBSD issues, the process of integrating DBSD and Refinery and the porting process model; completed and submitted a paper describing DBSD paradigm to IFIP '92; completed and presented a paper describing the approach for software reuse at the Software Reuse Workshop in April 1993; continued to extend DHC with a project agenda, facility necessary for a better project management; completed a primary draft of the re-engineering process model for porting; created a logging form to trace all the activities involved in the process of solving the reengineering problem, and developed a primary chart with the problems involved by the reengineering process
Recommended from our members
Formal specification based prototyping
Rapid prototyping is an approach to software development which attempts to remedy some of the shortcomings of the linear life cycle model, e.g. its inability to cope with fuzzy requirements and system evolution. This thesis first presents a broad survey of rapid software prototyping. It describes the rationale behind the process, the applications of prototyping, and specific techniques which may be used to achieve them.
We then describe a system, called EPROS, together with its methodology, which supports a number of prototyping techniques in a coherent framework. The system is comprehensive in its approach and covers the prototyping and development of both functional and human-computer interface aspects of software systems. The former is based on the execution of VDM-based formal specification notation META-IV; the latter is based on a textual representation of state transition diagrams. Dialogue development is further supported by a rich set of abstractions which allow interaction concepts to be specified and directly executed rather than implemented.
EPROS is based on a wide spectrum language which supports the main phases of a software development process, namely specification, design, and implementation. Included in this notation is a meta abstraction facility which facilitates its extension by the programmer.
The primary application of EPROS is for evolutionary prototyping, where a system is developed iteratively and gradually from the abstract to the detailed, while it undergoes use and while its capabilities evolve. EPROS copes with all the requirements of evolutionary prototyping, namely rapid development, intermediate deliveries and gradual evolution of the system towards the final product.
The thesis also describes a number of case studies where the presented ideas are put in practice, and which provide data in support of the effectiveness of the described system
A documentation paradigm for an integrated software maintenance support environment
Recent advances in computer hardware have not been matched by comparable advances in computer software, inhibiting the production of reliable software at greater levels of productivity. Development of software is restricted by the so-called "maintenance backlog". Productivity in the maintenance sector has not kept pace with increasing annual labour costs, making the maintenance of software the major item in the budget, of organisations responsible for the development and maintenance of software. Gains in productivity can be anticipated by the exploitation of software-maintenance tools, within the framework of an Integrated .Software Maintenance Support Environment (ISMSE). for which a high-level design has been proposed in this thesis, offering comprehensive support for all phases of the software life-cycle, particularly the maintenance phase. A key factor in the reliable modification of software is the time taken to gain the prerequisite understanding, by a study of the system's documentation. This documentation degrades over a period of time, becoming unreliable, inhibiting maintenance of the software, which may be a large capital asset, ultimately, the software may become impossible to maintain, requiring replacement. Understanding gained during maintenance is wide-ranging and at various levels of abstraction, but is often NOT well-recorded, since no effective documentation system exists for recording the maintenance history of large software systems. The documentation paradigm in this thesis, used within the framework of an ISMSE, aims to provide a means of recording the knowledge gained during maintenance, facilitating easier future maintenance, and preserving the reliability of the documentation, so reducing the time required to gain an understanding of the software being maintained. This provides a powerful means of increasing productivity, while simultaneously preserving a valuable capital asset
Small business innovation research. Abstracts of completed 1987 phase 1 projects
Non-proprietary summaries of Phase 1 Small Business Innovation Research (SBIR) projects supported by NASA in the 1987 program year are given. Work in the areas of aeronautical propulsion, aerodynamics, acoustics, aircraft systems, materials and structures, teleoperators and robotics, computer sciences, information systems, spacecraft systems, spacecraft power supplies, spacecraft propulsion, bioastronautics, satellite communication, and space processing are covered
- âŚ