456 research outputs found
Operational specification for FCA using Z
We present an outline of a process by which operational software requirements specifications can be written for Formal Concept Analysis (FCA). The Z notation is used to specify the FCA model and the formal operations on it. We posit a novel approach whereby key features of Z and FCA can be integrated and put to work in contemporary software development, thus promoting operational specification as a useful application of conceptual structures.</p
Linearizability with Ownership Transfer
Linearizability is a commonly accepted notion of correctness for libraries of
concurrent algorithms. Unfortunately, it assumes a complete isolation between a
library and its client, with interactions limited to passing values of a given
data type. This is inappropriate for common programming languages, where
libraries and their clients can communicate via the heap, transferring the
ownership of data structures, and can even run in a shared address space
without any memory protection. In this paper, we present the first definition
of linearizability that lifts this limitation and establish an Abstraction
Theorem: while proving a property of a client of a concurrent library, we can
soundly replace the library by its abstract implementation related to the
original one by our generalisation of linearizability. This allows abstracting
from the details of the library implementation while reasoning about the
client. We also prove that linearizability with ownership transfer can be
derived from the classical one if the library does not access some of data
structures transferred to it by the client
ArĂs 2.1: Adapting ArĂs for Object Oriented Language
In the software development area, software verification is important such that it can guarantee the software
fulfills its requirements. Despite its importance, verifying software is difficult to achieve. Additional
knowledge and effort are needed to write specification especially if the software is complex and big in
size. Nevertheless, there are some software that already have verified specifications. This project will
focus on extending ArĂs (Analogical Reasoning for reuse of Implementation & Specification) which has
been developed to increase verified software by reusing and transferring the specification from a similar
implementation to a target code. The extension is done to facilitate specification transferring to program
written in language other than C#, in this case Java. This extension will add functions to existing ArĂs
that will receive Conceptual Graphs representation of a program and write the specification to a file.
Another companion system is also built from Java to generate the Conceptual Graphs in Conceptual
Graph Interchange Format (CGIF) and transform the Spec# specification to JML. Finally, this new
system is evaluated by running some testing. From the result that we have, we can conclude that the
building of conceptual graph and the specification transformation is the most difficult part in our system
ArĂs 2.1: Adapting ArĂs for Object Oriented Language
In the software development area, software verification is important such that it can guarantee the software
fulfills its requirements. Despite its importance, verifying software is difficult to achieve. Additional
knowledge and effort are needed to write specification especially if the software is complex and big in
size. Nevertheless, there are some software that already have verified specifications. This project will
focus on extending ArĂs (Analogical Reasoning for reuse of Implementation & Specification) which has
been developed to increase verified software by reusing and transferring the specification from a similar
implementation to a target code. The extension is done to facilitate specification transferring to program
written in language other than C#, in this case Java. This extension will add functions to existing ArĂs
that will receive Conceptual Graphs representation of a program and write the specification to a file.
Another companion system is also built from Java to generate the Conceptual Graphs in Conceptual
Graph Interchange Format (CGIF) and transform the Spec# specification to JML. Finally, this new
system is evaluated by running some testing. From the result that we have, we can conclude that the
building of conceptual graph and the specification transformation is the most difficult part in our system
Towards sound refactoring in erlang
Erlang is an actor-based programming
language used extensively for building concurrent, reactive
systems that are highly available and suff er minimum
downtime. Such systems are often mission critical, making
system correctness vital. Refactoring is code restructuring
that improves the code but does not change
behaviour. While using automated refactoring tools is
less error-prone than performing refactorings manually,
automated refactoring tools still cannot guarantee that
the refactoring is correct, i.e., program behaviour is preserved.
This leads to lack of trust in automated refactoring
tools. We rst survey solutions to this problem
proposed in the literature. Erlang refactoring tools as
commonly use approximation techniques which do not
guarantee behaviour while some other works propose the
use of formal methodologies. In this work we aim to
develop a formal methodology for refactoring Erlang
code. We study behavioural preorders, with a special focus
on the testing preorder as it seems most suited to
our purpose.peer-reviewe
A Framework for Datatype Transformation
We study one dimension in program evolution, namely the evolution of the
datatype declarations in a program. To this end, a suite of basic
transformation operators is designed. We cover structure-preserving
refactorings, but also structure-extending and -reducing adaptations. Both the
object programs that are subject to datatype transformations, and the meta
programs that encode datatype transformations are functional programs.Comment: Minor revision; now accepted at LDTA 200
A heuristic-based approach to code-smell detection
Encapsulation and data hiding are central tenets of the object oriented paradigm. Deciding what data and behaviour to form into a class and where to draw the line between its public and private details can make the difference between a class that is an understandable, flexible and reusable abstraction and one which is not. This decision is a difficult one and may easily result in poor encapsulation which can then have serious implications for a number of system qualities. It is often hard to identify such encapsulation problems within large software systems until they cause a maintenance problem (which is usually too late) and attempting to perform such analysis manually can also be tedious and error prone. Two of the common encapsulation problems that can arise as a consequence of this decomposition process are data classes and god classes. Typically, these two problems occur together – data classes are lacking in functionality that has typically been sucked into an over-complicated and domineering god class. This paper describes the architecture of a tool which automatically detects data and god classes that has been developed as a plug-in for the Eclipse IDE. The technique has been evaluated in a controlled study on two large open source systems which compare the tool results to similar work by Marinescu, who employs a metrics-based approach to detecting such features. The study provides some valuable insights into the strengths and weaknesses of the two approache
A JML-Based strategy for incorporating formal specifications into the software development process
This thesis presents a JML-based strategy that incorporates formal specifications into the software development process of object-oriented programs. The strategy evolves functional requirements into a “semi-formal” requirements form, and then expressing them as JML formal specifications. The strategy is implemented as a formal-specification pseudo-phase that runs in parallel with the other phase of software development. What makes our strategy different from other software development strategies used in literature is the particular use of
JML specifications we make all along the way from requirements to validation-and-verification.Orientador: Néstor Catañ
- …