Catálogo de publicaciones - libros

Compartir en
redes sociales


Fundamental Approaches to Software Engineering: 8th International Conference, FASE 2005, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2005, Edinburgh, UK, April4-8, 2005. Proceedings

Maura Cerioli (eds.)

En conferencia: 8º International Conference on Fundamental Approaches to Software Engineering (FASE) . Edinburgh, UK . April 4, 2005 - April 8, 2005

Resumen/Descripción – provisto por la editorial

No disponible.

Palabras clave – provistas por la editorial

No disponibles.

Disponibilidad
Institución detectada Año de publicación Navegá Descargá Solicitá
No detectada 2005 SpringerLink

Información

Tipo de recurso:

libros

ISBN impreso

978-3-540-25420-1

ISBN electrónico

978-3-540-31984-9

Editor responsable

Springer Nature

País de edición

Reino Unido

Fecha de publicación

Información sobre derechos de publicación

© Springer-Verlag Berlin Heidelberg 2005

Tabla de contenidos

A Tool to Automate Component Clustering and Identification

Soo Ho Chang; Man Jib Han; Soo Dong Kim

It is a key activity in CBD to identify high-quality components which have high cohesion and low coupling. However, component clustering is carried out in manual fashion by developers, resulting excessive time consumption and generating errors. In this article, we present an implementation of a tool which automates a component clustering and identification method. We show how we realize a clustering method as a tool and explain techniques applied in the implementation. Using the tool, component identification can be automated, and one can generate and navigate multiple configurations to find the most appropriate one for the project effortlessly.

- Components | Pp. 141-144

Managing Variability Using Heterogeneous Feature Variation Patterns

Imed Hammouda; Juha Hautamäki; Mika Pussinen; Kai Koskimies

Feature-driven variability is viewed as an instance of multi-dimensional separation of concerns. We argue that feature variation concerns can be presented as pattern-like entities – called feature variation patterns – cross-cutting heterogeneous artifacts. We show that a feature variation pattern, covering a wide range of artifact types from a feature model to implementation, can be used to manage feature-driven variability in a software development process. A prototype tool environment has been developed to demonstrate the idea, supporting the specification and use of heterogeneous feature variation patterns. We illustrate the idea with a small example taken from J2EE, and further study the practical applicability of the approach in an industrial product-line.

Palabras clave: Feature Model; Software Product Line; Role Type; Java Implementation; Artifact Type.

- Product Lines | Pp. 145-159

Color-Blind Specifications for Transformations of Reactive Synchronous Programs

Kim G. Larsen; Ulrik Larsen; Andrzej Wasowski

Execution environments are used as specifications for specialization of input-output programs in the derivation of product lines. These environments, formalized as color-blind I/O-alternating transition systems, are tolerant to mutations in a given program’s outputs. Execution environments enable new compiler optimizations, vastly exceeding usual reductions. We propose a notion of context-dependent refinement for I/O-alternating transition systems, which supports composition and hierarchical reuse. The framework is demonstrated by discussing adaptations to realistic design languages and by presenting an exampleof a product line.

Palabras clave: Product Line; Transition System; Composition Operator; Transition Relation; Partial Evaluation.

- Product Lines | Pp. 160-174

On the Correspondence Between Conformance Testing and Regular Inference

Therese Berg; Olga Grinchtein; Bengt Jonsson; Martin Leucker; Harald Raffelt; Bernhard Steffen

Conformance testing for finite state machines and regular inference both aim at identifying the model structure underlying a black box system on the basis of a limited set of observations. Whereas the former technique checks for equivalence with a given conjecture model, the latter techniques addresses the corresponding synthesis problem by means of techniques adopted from automata learning. In this paper we establish a common framework to investigate the similarities of these techniques by showing how results in one area can be transferred to results in the other and to explain the reasons for their differences.

- Theory | Pp. 175-189

Observational Purity and Encapsulation

David A. Naumann

Practical specification languages for imperative and object-oriented programs, such as JML, Eiffel, and Spec#, allow the use of program expressions including method calls in specification formulas. For coherent semantics of specifications, and to avoid anomalies with runtime assertion checking, expressions in specifications and assertions are typically required to be strongly pure in the sense that their evaluation has no effect on the state of preexisting objects. For specification of large systems using standard libraries this restriction is impractical: it disallows many standard methods that mutate state for purposes such as caching or lazy initialization. Calls of such methods can sensibly be used for specifications and annotations in contexts where their effects cannot be observed. This paper formalizes and extends a recently proposed notion of observational purity, reducing the proof obligation to a familiar one for equivalence of two class implementations.

Palabras clave: Proof Obligation; Partial Correctness; Heap Object; Runtime Assertion Check; Lazy Initialization.

- Theory | Pp. 190-204

Towards a Theory on the Role of Ontologies in Software Engineering Problem Solving

José M. Cañete; Francisco J. Galán

We present and validate a theoretical model of methodological works in Software Engineering that, without claiming for completeness, allows us to investigate the role of ontologies in the problem solving process related with the development of software. Our main conclusion is the potential of ontologies as resources for an individual to think during problem solving. We argument that suitable ontologies can support solving strategies as well as motivate their invention. We also conclude the importance of accompany an ontology with knowledge that guides the engineer in reasoning with its concepts. The model regards a methodological work as an heterogeneous theory about a class of problems and about a number of conceptual elements. Some of the elements are ontologies, which play the role of identifying and relating aspects of the knowledge about the class of problems, making up novel perspectives on the problems that may promote solving strategies. For illustration purposes, we take Jackson’s “Problem Frames” as a case study. We analyse this work through the former model, identifying the ontologies, guides, and promoted strategies. Then we propose an alternative ontology, based on that used in the KAOS approach; we reformulate some parts of Jackson’s work through this ontology and propose a strategy as well as some guides.

Palabras clave: Ontologies; Methodologies; Modelling; Problem Solving; Cognitive Science.

- Theory | Pp. 205-219

A Framework for Counterexample Generation and Exploration

Marsha Chechik; Arie Gurfinkel

Model-checking is becoming an accepted technique for debugging hardware and software systems. Debugging is based on the “Check / Analyze / Fix” loop: check the system against a desired property, producing a counterexample when the property fails to hold; analyze the generated counterexample to locate the source of the error; fix the flawed artifact – the property or the model. The success of model-checking non-trivial systems critically depends on making this Check / Analyze / Fix loop as tight as possible. In this paper, we concentrate on the Analyze part of the debugging loop. To this end, we present a framework for generating, structuring and exploring counterexamples either interactively or with the help of user-specified strategies.

- Code Understanding and Validation | Pp. 220-236

Using Annotations to Check Structural Properties of Classes

Michael Eichberg; Thorsten Schäfer; Mira Mezini

The specification of meta-information, by using attributes in .NET or annotations in Java, along with the source code is gaining widespread use. Meta-information is used for different purposes such as code generation or configuration of the environment in which a class is deployed. However, in most cases using an annotation also implies that constraints, beyond those defined by the language’s semantics, have to be followed. E.g., a class must define a no-arguments constructor or the parameters of a method must have specific types. Currently, these constraints are not checked at all or only to a very limited extend. Hence, a violation can remain undetected and result in deployment-time or even subtle run-time errors. In this paper, we present a user-extensible framework that enables the definition of constraints to check the properties of annotated elements. Further, we demonstrate the application of the framework to check the constraints defined in the EJB 3.0 specification, and an evaluation of the approach based on checking the xPetstore-EJB3.0 project from within Eclipse to test the performance.

Palabras clave: Query Language; Path Expression; Context Node; Implementation Restriction; Query Container.

- Code Understanding and Validation | Pp. 237-252

Improving System Understanding via Interactive, Tailorable, Source Code Analysis

Vladimir Jakobac; Alexander Egyed; Nenad Medvidovic

In situations in which developers are not familiar with a system or its documentation is inadequate, the system’s source code becomes the only reliable source of information. Unfortunately, source code has much more detail than is needed to understand the system, and it disperses or obscures high-level constructs that would ease the system’s understanding. Automated tools can aid system understanding by identifying recurring program features, classifying the system modules based on their purpose and usage patterns, and analyzing dependencies across the modules. This paper presents an iterative, user-guided approach to program understanding based on a framework for analyzing and visualizing software systems. The framework is built around a pluggable and extensible set of clues about a given problem domain, execution environment, and/or programming language. We evaluate our approach by providing the analysis of our tool’s results obtained from several case studies.

Palabras clave: Processing Element; Class Diagram; Reverse Engineer; Usage View; Initial Label.

- Code Understanding and Validation | Pp. 253-268

Kaveri: Delivering the Indus Java Program Slicer to Eclipse

Ganeshan Jayaraman; Venkatesh Prasad Ranganath; John Hatcliff

This tool paper describes a modular program slicer for Java built using the Indus program analysis framework along with it’s Eclipse-based user interface called Kaveri. Indus provides a library of classes that enables users to quickly assemble a highly customized non-system dependence graph based inter-procedural program slicer capable of slicing concurrent Java programs. Kaveri is an Eclipse plugin that relies on the above library to deliver program slicing to the eclipse platform. Apart from the basic feature for generating program slices from within eclipse along with an intuitive UI to view the slice, the plugin also provides the capability for chasing various dependences in the application to understand the slice.

Palabras clave: Java Program; Program Comprehension; Concurrent Program; Program Point; Call Graph.

- Code Understanding and Validation | Pp. 269-272