Journal Articles

Barbosa LS, Sun M.  2010.  Bringing Class Diagrams to Life. Innovations in Systems and Software Engineering. 6(1-2):91–98. Abstractissej-mb10.pdf

Research in formal methods emphasizes a funda- mental interconnection between modeling, calculation and prototyping, made possible by a common unambiguous, mathematical semantics. This paper, building on a broader research agenda on coalgebraic semantics for Unified Modeling Language diagrams, concentrates on class diagrams and discusses how such a coalgebraic perspective can be of use not only for formalizing their specification, but also as a basis for prototyping.

Rodrigues N, Barbosa LS.  2010.  Slicing for Architectural Analysis. Science of Computer Programming . 75(10):828–847. Abstractrb10-preprint.pdf

Current software development often relies on non trivial coordination logic for combining autonomous services, eventually running on different platforms. As a rule, however, such a coordination layer is strongly weaved within the application at source code level. Therefore, its precise identification becomes a major methodological (and technical) problem and a challenge to any program understanding or refactoring process.
The approach introduced in this paper resorts to slicing techniques to extract coordination data from source code. Such data is captured in a specific dependency graph structure from which a coordination model can be recovered either in the form of an Orc specification or as a collection of code fragments corresponding to the identification of typical coordination patterns in the system. Tool support is also discussed.

Pinto JS, Henriques PR, Cruz D, Areias S.  2010.  Safe integration of annotated components in source projects. ECEASST. Abstract2010_opencert_10_b.pdf

The decision of using existing software components versus building from scratch custom software is one of the most complex and important choices of the entire development/integration process. However, the reuse of software components raises a spectrum of issues, from requirements negotiation to product selection and integration. The correct tradeoff is reached after having analyzed advantages and issues correlated to the reuse. Despite the reuse failures in real cases, many efforts have been made to make this idea successful.
In this context of software reuse in open source projects, we address the problem of reusing annotated components proposing a rigorous approach to assure the quality of the application under construction. We introduce the concept of caller-based slicing as a way of certifying that the integration of a component annotated with a contract into a system will preserve the correct behavior of the former, avoiding malfunctioning after integration.
To complement the efforts done and the benefits of slicing techniques, there is also a need to find an efficient way to visualize the main program with the annotated components and the slices. To take full profit of visualization, it is crucial to combine the visualization of the control/data flow with the textual representation of source code. To attain this objective, we extend the notions of System Dependence Graph and Slicing Criterion to cope with annotations.

Azevedo PJ.  2010.  Rules for contrast sets. Intelligent Data Analysis. 14(6):623-640. Abstractida_cs.pdf

In this paper we present a technique to derive rules describing contrast sets. Contrast sets are a formalism to represent groups di ferences. We propose a novel approach to describe directional contrasts using rules where the contrasting e ect is partitioned into pairs of groups. Our approach makes use of a directional Fisher Exact Test to a nd signi cant di erences across groups. We used a Bonferroni within search adjustment to control type I errors and a pruning technique to prevent derivation of non signi cant contrast set specializations.

Silva A, Bonsangue M, Rutten J.  2010.  Non-deterministic Kleene Coalgebras. Logical Methods in Computer Science. 6(3):1–39. Abstract1007.3769.pdf

In this paper, we present a systematic way of deriving (1) languages of (generalized) regular expressions, and (2) sound and complete axiomatizations thereof, for a wide variety of systems. This generalizes both the results of Kleene (on regular languages and deterministic finite automata) and Milner (on regular behaviours and finite labelled transition systems), and includes many other systems such as Mealy and Moore machines.

Silva A, Rutten J.  2010.  A coinductive calculus of binary trees. Information and Computation. 208(5):578–593. Abstract2010-rutten-silva-ic.pdf

We study the set TA of infinite binary trees with nodes labelled in a semiring A from a coalgebraic perspective. We present coinductive definition and proof principles based on the fact that TA carries a final coalgebra structure. By viewing trees as formal power series, we develop a calculus where definitions are presented as behavioural differential equations. We present a general format for these equations that guarantees the existence and uniqueness of solutions. Although technically not very difficult, the resulting framework has surprisingly nice applications, which is illustrated by various concrete examples.

Abreu R, Zoeteweij P, Van Gemund AJC.  2010.  Simultaneous debugging of software faults. Journal of Systems and Software. 84(4):573-586. Abstractjss11.pdf

(Semi-)automated diagnosis of software faults can drastically increase debugging efficiency, improving reliability and time-to-market. Current automatic diagnosis techniques are predominantly of a statistical nature and, despite typical defect densities, do not explicitly consider multiple faults, as also demonstrated by the popularity of the single-fault benchmark set of programs. We present a reasoning approach, called Zoltar-M(ultiple fault), that yields multiple-fault diagnoses, ranked in order of their probability. Although application of Zoltar-M to programs with many faults requires heuristics (trading-off completeness) to reduce the inherent computational complexity, theory as well as experiments on synthetic program models and multiple-fault program versions available from the software infrastructure repository (SIR) show that for multiple-fault programs this approach can outperform statistical techniques, notably spectrum-based fault localization (SFL). As a side-effect of this research, we present a new SFL variant, called Zoltar-S(ingle fault), that is optimal for single-fault programs, outperforming all other variants known to date.

Riboira A, Abreu R.  2010.  The GZoltar project: a graphical debugger interface. Testing–Practice and Research Techniques. :215–218. Abstracttaicpart10.pdf

Software debugging is one of the most time-consuming and expensive tasks in software development. There are several tools that contribute to this process to become faster and more ecient, but are not integrated with each other, nor provide an intuitive interface. These tools can be integrated to create an IDE plug-in, which gathers the most important debugging information into one place. GZoltar is a new project to create that missing plug-in. The main goal of GZoltar project is to reduce debugging process time and costs.

Abreu R, Van Gemund AJC.  2010.  Diagnosing multiple intermittent failures using maximum likelihood estimation. Artificial Intelligence. 174(18):1481–1497. Abstractaij10.pdf

In fault diagnosis intermittent failure models are an important tool to adequately deal with realistic failure behavior. Current model-based diagnosis approaches account for the fact that a component c"j may fail intermittently by introducing a parameter g"j that expresses the probability the component exhibits correct behavior. This component parameter g"j, in conjunction with a priori fault probability, is used in a Bayesian framework to compute the posterior fault candidate probabilities. Usually, information on g"j is not known a priori. While proper estimation of g"j can be critical to diagnostic accuracy, at present, only approximations have been proposed. We present a novel framework, coined Barinel, that computes estimations of the g"j as integral part of the posterior candidate probability computation using a maximum likelihood estimation approach. Barinel's diagnostic performance is evaluated for both synthetic systems, the Siemens software diagnosis benchmark, as well as for real-world programs. Our results show that our approach is superior to reasoning approaches based on classical persistent failure models, as well as previously proposed intermittent failure models.

Kosar T, Oliveira N, Mernik M, Pereira MJV, Črepinšek M, da Cruz D, Henriques PR.  2010.  Comparing General-Purpose and Domain-Specific Languages: An Empirical Study. Computer Science and Information Systems. 7(2):247–264.
Oliveira N, Pereira MJV, Henriques PR, da Cruz D, Cramer B.  2010.  VisualLISA: A Visual Environment to Develop Attribute Grammars. Computer Science and Information Systems. 7(2):265–290.
Garis A.  2010.  Lógica Temporal en Verificación de Modelos de Software. Origen y Evolución hasta tiempos actuales. Redalyc. XI:151-161. Abstractlogicatemporal.pdf

En sistemas de software críticos, tales como sistemas de control de vuelo de aviones o sistemas de control de ascensores, los errores de software deben ser evitados. En la actualidad, existen técnicas y herramientas para asegurar la correctitud de sistemas críticos, siendo “model checking” (chequeo de modelos) una de las más populares. Con model checking, tanto el sistema de software como las propiedades deseadas del sistema (seguridad, alcanzabilidad, etc.) se modelan utilizando lenguajes de especificación formal; es decir, lenguajes basados en conceptos lógicomatemáticos. Las propiedades son especificadas normalmente a través de un tipo de lógica denominada “lógica temporal”. Profundizando sobre dicha lógica, el presente trabajo muestra los aspectos epistemológicos relacionados, detallando sobre su origen y evolución, desde las nociones de lógicas introducidas por Aristóteles hasta su concepción como herramienta clave para la verificación de sistemas de software críticos.

Rodrigues N.  2010.  Discovering coordination patterns. Electronic Notes in Theoretical Computer Science. 260:189-207.discovering_coordination_patterns.pdf
Barbosa MB, Moss A, Page D.  2009.  Constructive and Destructive Use of Compilers in Elliptic Curve Cryptography. Journal of Cryptology. 22:259-281. Abstractpaper_final_1.pdf

Although cryptographic software implementation is often performed by expert programmers, the range of performance and security driven options, as well as more mundane software engineering issues, still make it a challenge. The use of domain specific language and compiler techniques to assist in description and optimisation of cryptographic software is an interesting research challenge. In this paper we investigate two aspects of such techniques, focusing on Elliptic Curve Cryptography (ECC) in particular. Our constructive results show that a suitable language allows description of ECC based software in a manner close to the original mathematics; the corresponding compiler allows automatic production of an executable whose performance is competitive with that of a hand-optimised implementation. In contrast, we study the worrying potential for naïve compiler driven optimisation to render cryptographic software insecure. Both aspects of our work are set within the context of CACE, an ongoing EU funded project on this general topic.

Martins M, Madeira A, Barbosa LS.  2009.  Refinement by Interpretation in a General Setting. Electronic Notes in Theoretical Computer Science. 259:105-121. Abstractrefine09-mmb.pdf

Refinement by interpretation replaces signature morphisms by logic interpretations as a means to translate specifications and witness refinements. The approach was recently introduced by the authors [13] in the context of equational specifications, in order to capture a number of relevant transformations in software design, reuse and adaptation. This paper goes a step forward and discusses the generalization of this idea to deductive systems of arbitrary dimension. This makes possible, for example, to refine sentential into equational specifications and the latter into modal ones. Moreover, the restriction to logics with finitary consequence relations is dropped which results in increased flexibility along the software development process.

Rodrigues C, Oliveira JN, Barbosa LS.  2009.  A Single Complete Relational Rule for Coalgebraic Refinement. Electronic Notes in Theoretical Computer Science. 259:3-19. Abstractrefine09-rbo.pdf

A transition system can be presented either as a binary relation or as a coalgebra for the powerset functor, each representation being obtained from the other by transposition. More generally, a coalgebra for a functor F generalises transition systems in the sense that a shape for transitions is determined by F, typically encoding a signature of methods and observers. This paper explores such a duality to frame in purely relational terms coalgebraic refinement, showing that relational (data) refinement of transition relations, in its two variants, downward and upward (functional) simulations, is equivalent to coalgebraic refinement based on backward and forward morphisms, respectively. Going deeper, it is also shown that downward simulation provides a complete relational rule to prove coalgebraic refinement. With such a single rule the paper defines a pre-ordered calculus for refinement of coalgebras, with bisimilarity as the induced equivalence. The calculus is monotonic with respect to the main relational operators and arbitrary relator F, therefore providing a framework for structural reasoning about refinement.

Campos M, Barbosa LS.  2009.  Implementation of an Orchestration Language as a Haskell Domain Specific Language. Electronic Notes in Theoretical Computer Science. 255:45-64. Abstractfoclasa-camposbarbosa09.pdf

Even though concurrent programming has been a hot topic of discussion in Computer Science for the past 30 years, the community has yet to settle on a, or a few standard approaches to implement concurrent programs. But as more and more cores inhabit our CPUs and more and more services are made available on the web the problem of coordinating different tasks becomes increasingly relevant.
The present paper addresses this problem with an implementation of the orchestration language Orc as a domain specific language in Haskell. Orc was, therefore, realized as a combinator library using the lightweight threads and the communication and synchronization primitives of the Concurrent Haskell library. With this implementation it becomes possible to create orchestrations that re-use existing Haskell code and, conversely, re-use orchestrations inside other Haskell programs.
The complexity inherent to distributed computation, entails the need for the classification of efficient, re-usable, concurrent programming patterns. The paper discusses how the calculus of recursive schemes used in the derivation of functional programs, scales up to a distributed setting. It is shown, in particular, how to parallelize the entire class of binary tree hylomorphisms.

Barbosa LS.  2009.  A perspective on service orchestration. Science of Computer Programming. 74(9):671–687. Abstractscp-bb09.pdf

Service-oriented computing is an emerging paradigm with increasing impact on the way modern software systems are designed and developed. Services are autonomous, loosely coupled and heterogeneous computational entities able to cooperate to achieve common goals. This paper introduces a model for service orchestration, which combines a exogenous coordination model, with services’ interfaces annotated with behavioural patterns specified in a process algebra which is parametric on the interaction discipline. The coordination model is a variant of Reo for which a new semantic model is proposed.

Abreu R, Zoeteweij P, Golsteijn R, Van Gemund AJC.  2009.  A practical evaluation of spectrum-based fault localization. Journal of Systems and Software. 82(11):1780–1792. Abstractjss09.pdf

Spectrum-based fault localization (SFL) shortens the test-diagnose-repair cycle by reducing the debugging effort. As a light-weight automated diagnosis technique it can easily be integrated with existing testing schemes. Since SFL is based on discovering statistical coincidences between system failures and the activity of the different parts of a system, its diagnostic accuracy is inherently limited. Using a common benchmark consisting of the Siemens set and the space program, we investigate this diagnostic accuracy as a function of several parameters (such as quality and quantity of the program spectra collected during the execution of the system), some of which directly relate to test design. Our results indicate that the superior performance of a particular similarity coefficient, used to analyze the program spectra, is largely independent of test design. Furthermore, near-optimal diagnostic accuracy (exonerating over 80% of the blocks of code on average) is already obtained for low-quality error observations and limited numbers of test cases. In addition to establishing these results in the controlled environment of our benchmark set, we show that SFL can effectively be applied in the context of embedded software development in an industrial environment.

Abreu R, Van Gemund AJC.  2009.  A low-cost approximate minimal hitting set algorithm and its application to model-based diagnosis. Abstraction, Reformulation, and Approximation (SARA). Abstractsara09_submission_16.pdf

Generating minimal hitting sets of a collection of sets is known to be NP-hard, necessitating heuristic approaches to handle large problems. In this paper a low-cost, approximate minimal hitting set (MHS) algorithm, coined Staccato, is presented. Staccato uses a heuristic function, borrowed from a lightweight, statistics-based software fault localization approach, to guide the MHS search. Given the nature of the heuristic function, Staccato is specially tailored to model-based diagnosis problems (where each MHS solution is a diagnosis to the problem), although well-suited for other application domains as well. We apply Staccato in the context of model-based diagnosis and show that even for small problems our approach is orders of magnitude faster than the brute-force approach, while still
capturing all important solutions. Furthermore, due to its low cost complexity, we also show that Staccato is amenable to large problems including millions of variables.

Clarke D, Proença J, Lazovik A, Arbab F.  2009.  Deconstructing Reo. Electronic Notes in Theoretical Computer Science. 229(2):43–58. Abstractdeconstructing_reo-entcs.pdf

Coordination in Reo emerges from the composition of the behavioural constraints of the primitives, such as channels, in a component connector. Understanding and implementing Reo, however, has been challenging due to interaction of the channel metaphor, which is an inherently local notion, and the non-local nature of constraint propagation imposed by composition. In this paper, the channel metaphor takes a back seat, and we focus on the behavioural constraints imposed by the composition of primitives, and phrase the semantics of Reo as a constraint satisfaction problem. Not only does this provide a clear intensional description of the behaviour of Reo connectors in terms of synchronisation and data flow constraints, it also paves the way for new implementation techniques based on constraint propagation and satisfaction. In fact, decomposing Reo into constraints provides a new computational model for connectors, which we extend to model interaction with an unknown external world beyond what is currently possible in Reo.

Harrison M, Campos JC.  2008.  Analysing Human Aspects of Safety-Critical Software. ERCIM News. 75:18. Abstracten75-p18.pdf

In focusing on human system interactions, the challenge for software engineers is to build systems that allow users to carry out activities and achieve objectives effectively and safely. A well-designed system should also provide a better experience of use, reducing stress and frustration. Many methods aim to help designers to produce systems that have these characteristics. Our research is concerned with the use of formal techniques to help construct such interactive systems.

Silva JL, Campos JC, Paiva A.  2008.  Model-based user interface testing with Spec Explorer and ConcurTaskTrees. Electronic Notes in Theoretical Computer Science. 208:77-93. Abstract1-s2.0-s1571066108002132-main.pdf

Analytic usability analysis methods have been proposed as an alternative to user testing in early phases of development due to the cost of the latter approach. By working with models of the systems, analytic models are not capable of identifying implementation related problems that might have an impact on usability. Model-based testing enables the testing of an implemented software artefact against a model of what it should be (the oracle). In the case of model-based user interface testing, the models should be expressed at an adequate level of abstraction, adequately modelling the interaction process. This paper describes an effort to develop tool support enabling the use of task models as oracles for model-based testing of user interfaces.

Harrison M, Kray C, Campos JC.  2008.  Exploring an option space to engineer a ubiquitous computing system. Electronic Notes in Theoretical Computer Science. 208:41-55. Abstract1-s2.0-s1571066108002119-main.pdf

Engineering natural and appropriate interactive behaviour in ubiquitous computing systems presents new challenges to their developers. This paper explores formal models of interactive behaviour in ubiquitous systems. Of particular interest is the way that these models may help engineers to visualise the consequences of different designs. Design options based on a dynamic signage system (GAUDI) are explored using different instances of a generic model of the system.

Almeida JB, Pinto JS, Vilaça M.  2008.  Token-passing Nets for Functional Languages. Electronic Notes in Theoretical Computer Science. 204:181-198. Abstract07tnfp.pdf

Token-passing nets were proposed by Sinot as a simple mechanism for encoding evaluation strategies for the λ-calculus in interaction nets. This work extends token-passing nets to cover a typed functional language equipped with structured types and unrestricted recursion. The resulting interaction system is derived systematically from the chosen big-step operational semantics. Along the way, we actually characterize and discuss several design decisions of token-passing nets and extend them in order to achieve simpler interaction net systems with a higher degree of embedded parallelism.