





|
|
[1]
|
V. Ambriola and A.Kmiecik.
Architectural transformations.
In In Proc. 14th International Conference on Software
Engineering and Knowledge Engineering. ACM Press, 2002.
[ bib ]
The first draft of a software architecture almost never constitutes the
final picture of the system to be developed. In most cases it misses some of
required properties and needs to be improved or even completely rebuilt. The
software architect applies architec-tural transformations in order to
repair the system structure. In this paper we present our approach to
software architecture and architectural transformations. We also discuss
three related issues: ADLs, architectural styles and non-functional
requirements. Some arguments for architectural change automation are also
given.
|
|
[2]
|
V. Ambriola and A.Kmiecik.
Transformations for software architectural model change.
Submitted for publication, International Journal of Foundations of
Computing and Decision Sciences, 2003.
[ bib ]
Architectural transformations make up the core of architectural design and play a crucial role in user requirements satisfaction. Because of their impact to software structure and behavior, they directly influence the values of software quality attributes. For this reason they can become not only a way for well specified and automated software architecture development but also a mechanism for early stage software quality management. This paper introduces the notion of architectural transformations and their impact to software architecture model. It points at the relationship among transformations, non-functional requirements and architectural styles. It gives the arguments for architectural change automation. A motivating example of how transformations can be employed to custom software architect activities is also given.
|
|
[3]
|
V. Ambriola and A.Kmiecik.
Experimenting with model level architectural transformations.
In To appear In Proc. Second Polish Conference on Information
Technology,, 2004.
In polish.
[ bib ]
Model-driven engineering reaches more and more followers and gradually grows up as an incoming solution to the software-intensive systems production. Architectural modeling (or design) seems to play a fundamental role in this kind of development not only because of its very nature but also because of its impact to final product structure and behavior as well as user requirements satisfaction. Incremental and iterative character of architectural design sets a special attention to the aspects of architecture model restructuring, where architectural transformations are the key architect00D5s instrument for introducing quality dedicated changes. Since architectural designs constantly grow in complication because of systems complexity, there is a substantial need to support architect during model architectural transformations.
This paper presents our efforts in defining model-level architectural transformations. It provides definition and classification of architectural transformations and describes the semantics of three selected transformations: for component moving, for component splitting and for class splitting.
An example of employing the transformations to improve the architecture of an industrial WebGIS system is also given.
|
|
[4]
|
D. Ancona, C. Anderson, F. Damiani, S. Drossopoulou, P. Giannini, and E. Zucca.
A provenly correct translation of Fickle into Java.
[ bib |
.html ]
We present a translation from Fickle, a
small object-oriented language allowing objects to
change their class at run-time, into Java. The
translation is provenly correct, in the sense that
we have shown it to preserve the static and dynamic
semantics. Moreover, it is compatible with separate
compilation, since the translation of a
Fickle class does not depend on the implementation
of used classes. Based on the formal system, we have
developed an implementation. The translation turned
out to be a more subtle problem than we expected,
and the proofs helped us uncover several subtle
errors. In this paper, we discuss four different
possible approaches we considered for the design of
the translation and justify our choice, we present
formally the translation and the proof of
preservation of the static and dynamic semantics,
and we discuss the prototype implementation. The
language Fickle has undergone, and is still
undergoing several phases of development. In this
paper we are discussing the translation of
FickleII.
|
|
[5]
|
D. Ancona, S. Fagorzi, E. Moggi, and E. Zucca.
Mixin modules and computational effects.
In ICALP2003, volume 2719 of Lecture Notes in Computer
Science. Springer-Verlag, 2003.
[ bib |
.pdf ]
|
|
[6]
|
D. Ancona, S. Fagorzi, and E. Zucca.
A calculus for dynamic linking.
In Blundo and Laneve, editors, Proc. Italian Conference on
Theoretical Computer Science 2003, number 2841 in Lecture Notes in Computer
Science, pages 284-301. Springer-Verlag, October 2003.
[ bib |
.pdf ]
We define a calculus for modeling dynamic linking
independently of the details of a particular
programming environment. The calculus distinguishes
at the language level the notions of software
configuration and execution, by introducing separate
syntactic notions of linkset expression and command,
respectively. A reduction step can be either a
simplification of a linkset expression, or the
execution of a command w.r.t. a specific underlying
software configuration denoted by a linkset
expression; because of dynamic linking, these two
kinds of reductions are interleaved. The type system
of the calculus, which is proved to be sound, relies
on an accurate dependency analysis for ensuring type
safety without losing the advantages offered by
dynamic linking.
|
|
[7]
|
D. Ancona, S. Fagorzi, and E. Zucca.
A calculus with lazy module operators.
Submitted, 2003.
[ bib |
.pdf ]
Modern programming environments such as those of
Java and C# support dynamic loading of software
fragments. More in general, we can expect that in
the future systems will support more and more forms
of interleaving of reconfiguration steps and
standard execution steps, where the software
fragments composing a program are dynamically
changed and/or combined on demand and in different
ways. However, existing kernel calculi providing
formal foundations for module systems are based on a
static view of module manipulation, in the
sense that open code fragments can be flexibly
combined together, but all module operators must be
performed once for all before starting
execution of a program, that is, evaluation of a
module component. The definition of clean and
powerful module calculi supporting lazy
module operators, that is, operators which can be
performed after the selection of some
module component, is still an open problem. Here, we
provide an example in this direction (the first at
our knowledge), defining CMSl, an
extension of the Calculus of Module Systems
[?] where module operators can
be performed at execution time and, in particular,
are executed on demand, that is, only when needed by
the executing program. In other words, execution
steps, if possible, take the precedence over
reconfiguration steps. The type system of the
calculus, which is proved to be sound, relies on a
dependency analysis which ensures that execution
will never try to access module components which
cannot become available by performing
reconfiguration steps.
|
|
[8]
|
D. Ancona and G. Lagorio.
Stronger Typings for Separate Compilation of Java-like
Languages (Extended Abstract).
In Fifth Workshop on Formal Techniques for Java Programs, July
2003.
[ bib |
.pdf |
http ]
We define a formal system supporting
separate compilation for a small but significant Java-like
language.
This system is proved to be stronger than the standard compilation
of both Java and C#, in the sense that it better
supports software reuse by avoiding unnecessary recompilation steps after
code modification which are usually performed by using the standard compilers.
This is achieved by introducing the notion of local type assumption
allowing the user to specify weaker requirements on the source fragments
which need to be compiled in isolation.
Another important property satisfied by our system is compositionality,
which corresponds to the intuition that
if a set of fragments can be separately compiled
and such fragments are compatible, then it is possible
to compile all the fragments together as a unique program
and obtain the same result.
|
|
[9]
|
D. Ancona, G. Lagorio, and E. Zucca.
A formal framework for Java separate compilation.
In B. Magnusson, editor, ECOOP'02 - European Conference on
Object-Oriented Programming, Lecture Notes in Computer Science, pages
609-635. Springer-Verlag, 2002.
[ bib |
.ps.gz |
.pdf ]
We define a formal notion, called compilation
schema, suitable for specifying different
possibilities for performing the overall process of
Java compilation, which includes typechecking of
source fragments with generation of corresponding
binary code, typechecking of binary fragments,
extraction of type information from fragments and
definition of dependencies among them. We consider
three compilation schemata of interest for Java,
that is, minimal, SDK and safe,
which correspond to a minimal set of checks, the
checks performed by the SDK implementation, and all
the checks needed to prevent run-time linkage
errors, respectively. In order to demonstrate our
approach, we define a kernel model for Java separate
compilation and execution, consisting in a small
Java subset, and a simple corresponding binary
language for which we provide an operational
semantics including run-time verification. We define
a safe compilation schema for this language and
formally prove type safety.
|
|
[10]
|
D. Ancona, G. Lagorio, and E. Zucca.
True separate compilation of Java classes.
In PPDP'02 - Principles and Practice of Declarative
Programming. ACM Press, 2002.
[ bib |
.pdf ]
We define a type system modeling true separate
compilation for a small but significant Java subset,
in the sense that a single class declaration can be
intra-checked (following the Cardelli's terminology)
and compiled providing a minimal set of type
requirements on missing classes. These requirements
are specified by a local type environment associated
with each single class, while in the existing formal
definitions of the Java type system classes are
typed in a global type environment containing all
the type information on a closed program. We also
provide formal rules for static inter-checking and
relate our approach with compilation of closed
programs, by proving that we get the same results.
|
|
[11]
|
Davide Ancona, Christopher Anderson, Ferruccio Damiani, Sophia Drossopoulou,
Paola Giannini, and Elena Zucca.
Translating fickleii into fickleii^-.
Technical report, DISI University of Genova and Torino, December
2002.
[ bib ]
We present a translation from FickleII (a Java-like
language allowing dynamic object re-classification,
that is, objects that can change their class at
run-time) into FickleII^- (the subset of FickleII
that does not have the reclassification
operation). The translation is proved to preserve
static and dynamic semantics; moreover, it is shown
to be effective, in the sense that the
translation of a FickleII class does not depend on
the implementation of used classes, hence can be
done in a separate way, that is, without
having their sources, exactly as it happens for Java
compilation.
|
|
[12]
|
Davide Ancona and Elena Zucca.
Principal typings for Java-like languages.
In Proceedings of POPL 2004 - the 31st ACM SIGPLAN Symposium on
Principles of Programming Languages, 2004.
[ bib |
http ]
The contribution of the paper is twofold. First, we
provide a general notion of type system supporting
separate compilation and inter-checking, and a
formal definition of soundess and completeness of
inter-checking w.r.t. global compilation. These
properties are important in practice since they
allow selective recompilation. In particular, we
show that they are guaranteed when the type system
has principal typings and provides sound and
complete entailment relation between type
environments and types. The second contribution is
more specific, and is an instantiation of the notion
of type system previously defined for Featherweight
Java [IgarashiEtAl@OOPSLA99] with method overloading
and field hiding. The aim is to show that it is
possible to define type systems for Java-like
languages, which, differently from those used by
standard compilers, have principal typings, hence
can be used as a basis for selective
recompilation.
|
|
[13]
|
Massimo Ancona and Walter Cazzola.
The Programming Language Io.
Technical Report DISI-TR-04-02, DISI, Università degli Studi di
Genova, May 2002.
Available at
http://www.disi.unige.it/person/CazzolaW/references.html.
[ bib ]
Io is an experimental programming language designed
for reflective programming. Io is inspired by
Oberon, Modula-2, Pascal and C. Io has been designed
as a tool for understanding the essence of
reflection and for teaching reflective programming
and its implementation mechanisms in under-graduate
courses, thus Io is a very concise
language. Nevertheless, Io is not a toy language: it
is located at a mid distance between toys languages
and production languages - despite its simplicity,
it can be used for developing complex and modular
programs that can be executed with a good
efficiency. Io has been kept as simple as possible
by discarding all those features neither implicitly
nor explicitly connected with reflective
programming.
|
|
[14]
|
Massimo Ancona and Walter Cazzola.
The Essence of Reflection: a Reflective Run-Time Environment.
In Proceedings of the 9th Annual ACM Symposium on Applied
Computing (SAC'04), Nicosia, Cyprus, on 14th-17th of March 2004. ACM Press.
[ bib ]
Computational reflection provides the developers with a programming
mechanism devoted to favorite code extensibility, reuse and maintenance.
Notwithstanding that, it has not achieved developers' unanimous
acceptance and its full potential yet. In our opinion, this depends on
the intrinsic complexity of most of the reflective approaches that
hinders their efficient implementation. The aim of this paper consists
of defining the essence of reflection, that is, to identify the minimal
set of characteristics that a software system must have to be considered
reflective. The consequence is the realization of a run-time environment
supporting the essence of reflection without affecting the programming
language and with a minimal impact on the programming system design.
This achievement will improve reflective system performances reducing
the impact of one of the most diffuse criticism about reflection: low
performance.
|
|
[15]
|
C. Anderson, F. Barbanera, M. Dezani-Ciancaglini, and S. Drossopoulou.
Can addresses be types? (a case study: objects with delegation).
In WOOD '03, volume 82 of Electronic Notes in Theoretical
Computer Science. Elsevier, 2003.
[ bib |
.pdf ]
We adapt the ``aliasing constraints'' approach for
designing a flexible typing of evolving
objects. Types are singleton types (addresses of
objects, as a matter of fact) whose relevance is
mainly due to the sort of ``safety property'' they
guarantee. In particular we provide a type system
for an imperative object based calculus with
delegation and which supports method and delegate
overriding, addition, and removing.
|
|
[16]
|
Christopher Anderson, Franco Barbanera, and Mariangiola Dezani-Ciancaglini.
Alias and Union types for Delegation.
Ann. Math., Comput. & Teleinformatics, 1:1-18, 2003.
[ bib |
.pdf ]
We adapt the aliasing constraints approach for
designing a flexible typing of evolving
objects. Types are singleton types (addresses of
objects, as a matter of fact) or finite unions of
these. Their relevance is mainly due to the sort of
safety property they guarantee. In particular we
provide a type system for an imperative object based
calculus with delegation and conditional expressions
and which supports method and delegate overriding,
addition, and removing.
|
|
[17]
|
L. Andrade, P. Baldan, H. Baumeister, R. Bruni, A. Corradini, R. De Nicola,
J.L. Fiadero, F. Gadducci, S. Gnesi, P. Hoffman, N. Koch, P. Kosiuczenko,
A. Lapadula, D. Latella, A. Lopes, M. Loreti, M. Massink, F. Mazzanti,
U. Montanari, C. Oliveira, R. Pugliese, A. Tarlecki, M. Wermelinger,
M. Wirsing, and A. Zawlocki.
Agile: Software architecture for mobility.
In Recent Trends in Algebraic Develeopment Techniques-16th
International Workshop, WADT 2002, number 2755 in Lectures Notes in Computer
Science. Springer-Verlag, 2003.
to appear.
[ bib ]
|
|
[18]
|
M. Baldamus, J. Bengston, G. Ferrari, and R. Raggi.
Web services as a new approach to distributing and coordinating
semantic-based verification toolkits.
Submitted for publication, 2003.
[ bib ]
We describe a coordination-oriented way of
integrating semantic-based verification environments. Our approach is
distributed, thereby moving the issue to the realm of
coordination. To this end, we argue that
tool integration, while
not new, can be given a new life by applying
the emerging paradigm of web services.
We argue that web services can not only serve
as a technological platform for our purposes but, indeed,
also as a coordination framework, addressing
all the basic issues present in the situation we are
dealing with. We give an account of
a prototype implementation of these concepts.
|
|
[19]
|
G. Baldi, A. Bracciali, G. Ferrari, and E. Tuosto.
Verifying cryptographic protocols trough a symbolic model checking
methodology.
Submitted for publication, 2003.
[ bib ]
The quest for the formal certification of properties of
security protocols is one of the most challenging research issues in the field of
formal methods. It requires the development of formal models together
with effective verification techniques, methods of detecting malicious
behaviour, and so on and so forth. In this paper, we describes a formal
methodology for verifying cryptographic protocols based on a symbolic
state space exploration technique. We also present Aspasya, a
semi-automatic verification tool based on our formal framework.
|
|
[20]
|
F. Barbanera, M. Bugliesi, M. Dezani-Ciancaglini, and V. Sassone.
Boca: A calculus of bounded capacities.
In ASIAN'03, number 2896 in Lecture Notes in Computer Science,
pages 205-223. Springer-Verlag, December 2003.
[ bib |
.pdf ]
Resource control has attracted increasing interest
in foundational research on distributed
systems. This paper focuses on space control and
develops an analysis of space usage in the context
of an ambient-like calculus with bounded capacities
and weighed processes, where migration and
activation require space. A type system complements
the dynamics of the calculus by providing static
guarantees that the intended capacity bounds are
preserved throughout the computation.
|
|
[21]
|
F. Barbanera and U. de' Liguoro.
Type assignment for mobile objects.
In Workshop COMETA, 2003.
[ bib |
.pdf ]
We address the problem of formal reasoning about
mobile code. We consider an Ambient Calculus, where
process syntax includes constructs for sequential
programming. For the sake of concreteness, and
because of practical relevance, we consider objects
using message exchange to implement method
invocation and overriding. The contribution of the
paper is a type assignment system, obtained by
combination of systems for MA and for the
Sigma-calculus. We exploit in the mobility framework
a typical feature of the intersection type
discipline for object calculi, namely late typing of
self. The proposed system is then checked against
standard properties of related systems, establishing
type invariance a completeness theorems.
|
|
[22]
|
M. Bartoletti, P. Degano, and G. Ferrari.
Security-aware program transformations.
In Proc. ICTCS 2003, Lecture Notes in Computer Science.
Springer, 2003.
[ bib ]
Stack inspection is a basic mechanism for implementing language based security.
Stack inspection is time consuming and may prevent from code optimization.
A static analysis is presented that safely approximates the access rights
granted at run-rime.
Stack inspection optimizations are then possible, along with program transformations.
|
|
[23]
|
M. Bartoletti, P. Degano, and G. Ferrari.
Static analysis for eager stack inspection.
In Workshop on Formal Techniques for Java-like Programs, 2003.
[ bib ]
The paper focuses on stack inspection, a mechanism for the implementation
of security-aware programming languages.
We introduce a static analysis which safely approximates
the set of access rights granted to code at run-time.
This analysis allows for fast implementations of stack inspection
based on an (hyper-) eager strategy.
|
|
[24]
|
M. Bartoletti, P. Degano, and G. Ferrari.
Stack inspection and secure program transformations.
International Journal of Information Security, To appear, 2004.
[ bib ]
The paper focuses on stack inspection, the access control mechanism
implemented in Java and the CLR.
We introduce a static analysis which safely approximates
the set of access rights granted to code at run-time.
This analysis provides us with the basis to reduce the run-time overhead
of stack inspection, also in combination with other program transformations.
|
|
[25]
|
L. Bettini.
A Java package for class and mixin mobility in a distributed
setting.
In N. Guelfi, E. Astesiano, and G. Reggio, editors, Proc. of
FIDJI'03, Lecture Notes in Computer Science, 2003.
To appear.
[ bib ]
Mixins, i.e., classes parameterized over the
superclass, can be the right mechanism for
dynamically assembling class hierarchies with mobile
code downloaded from different sources. In this
paper we present the Java package momi that
implements the concepts of the language
momi, which is a calculus for exchanging
mobile object-oriented code structured through mixin
inheritance. This package can be thought of as an
``assembly'' language that should be the target of a
compiler for a mobile code object-oriented
language. In order to show an usage of the package,
we illustrate how it is used by the compiler of
X-Klaim, a programming language for mobile
code where distributed processes can exchange
classes and mixins through distributed tuple
spaces.
|
|
[26]
|
L. Bettini, V. Bono, and S. Likavec.
A core calculus of higher-order mixins and classes.
In Types 2003, Lecture Notes in Computer Science.
Springer-Verlag, 2004.
To appear in Types 2003.
[ bib |
.pdf ]
This work presents an object-oriented calculus based
on higher-order mixin construction via mixin
composition, where some software engineering
requirements are modeled in a formal setting
allowing to prove the absence of
message-not-understood run-time errors. Mixin
composition is shown to be a valuable language
feature enabling a cleaner object-oriented design
and development. In what we believe being quite a
general framework, we give directions for designing
a programming language equipped with higher-order
mixins, although our study is not based on any
already existing object-oriented language.
|
|
[27]
|
L. Bettini, V. Bono, and S. Likavec.
A core calculus of mixin-based incomplete objects.
In Proceedings of FOOL 11, 2004.
To appear in the informal proceeedings of the workshop.
[ bib |
.pdf ]
We design a calculus that combines class-based
features with object-based ones, with the aim of
fitting into a unifying setting the ``best of both
worlds''. In a mixin-based approach, mixins are seen
incomplete classes from which incomplete objects can
be instantiated. In turn, incomplete objects can be
completed in an object-based fashion. Our hybrid
calculus is shown to be useful in some real world
scenarios that we present as examples.
|
|
[28]
|
L. Bettini, V. Bono, and B. Venneri.
Coordinating Mobile Object-Oriented Mobile Code.
In F. Arbarb and C. Talcott, editors, Proc. of Coordination
Models and Languages, number 2315 in Lecture Notes in Computer Science,
pages 56-71. Springer, 2002.
[ bib |
.ps.gz ]
Standard class-based inheritance mechanisms, which
are often used to implement distributed systems, do
not seem to scale well to a distributed context with
mobility. In this paper, a mixin-based approach is
proposed for structuring mobile object-oriented code
and it is shown to fit in the dynamic and open
nature of a mobile code scenario. We introduce MoMi
(Mobile Mixins), a coordination language for mobile
processes that communicate and exchange
object-oriented code in a distributed context. MoMi
is equipped with a type system, based on
polymorphism by subtyping, in order to guarantee
safe code communications.
|
|
[29]
|
L. Bettini, V. Bono, and B. Venneri.
Subtyping mobile classes and mixins.
In Proc. of Int. Workshops on Foundations of Object-Oriented
Languages, FOOL 10, 2003.
[ bib |
.ps.gz ]
MoMi (Mobile Mixins) is a coordination language for
mobile processes that communicate and exchange object-oriented
code in a distributed context. MoMi's key idea is structuring mobile
object-oriented code by using mixin-based inheritance. Mobile code
is compiled and typed locally, and can successfully interact with
code present on foreign sites only if its type is
subtyping-compliant with what is expected by the receiving site.
In this paper, we study a subtyping relation for MoMi that includes
both subtyping-in-width and subtyping-in-depth, in order to achieve
a significantly more flexible, yet still simple, communication
pattern. Technical problems arising from this extension are solved
by a static annotation procedure.
|
|
[30]
|
L. Bettini, V. Bono, and B. Venneri.
O'Klaim: a coordination language with mobile mixins.
In Proceedings of COORDINATION 2004, Lecture Notes in Computer
Science, 2004.
To appear.
[ bib |
.pdf ]
This paper presents O'Klaim (Object-Oriented
Klaim), a linguistic extension of the higher-order
calculus for mobile processes Klaim with
object-oriented features. Processes interact by an
asynchronous communication model: they can
distribute and retrieve resources, sometimes
structured as incomplete classes, i.e., mixins, to
and from distributed tuple spaces. This mechanism is
coordinated by providing a subtyping relation on
classes and mixins, which become polymorphic items
during communication. We propose a static typing
system for: (i) checking locally each process in its
own locality; (ii) decorating object-oriented code
that is sent to remote sites with its type. This
way, tuples can be dynamically retrieved only if
they match by subtyping with the expected type. If
this pattern matching succeeds, the so retrieved
code can be composed with local code, dynamically
and automatically, in a type-safe way. Thus a global
safety condition is guaranteed without requiring any
additional information on the local reconfiguration
of local and foreign code, and, in particular,
without any further type checking. Finally, we
present main issues concerning the implementation of
O'Klaim.
|
|
[31]
|
L. Bettini, S. Capecchi, and B. Venneri.
Extending java to dynamic object behaviors.
In Proc. of WOOD 2003, volume 82 of ENTCS, 2003.
[ bib ]
Class inheritance and dynamic binding are the key features of object-oriented programming and they permit designing and developing complex systems. However, standard class inheritance is essentially static and cannot be directly employed for modeling dynamic object behaviors. In this paper we propose a linguistic extension of Java, called Dec-Java, that is partially inspired by the decorator design pattern. This extension permits easily separating the basic features of objects (that are likely not to change during the application) from their behaviors (that, instead, can be composed dynamically at run-time). Thus, Dec-Java enables a dynamic extension and specialization of object responsibilities.
|
|
[32]
|
L. Bettini and R. De Nicola.
A java middleware for guaranteeing privacy of distributed tuple
spaces.
In Nicolas Guelfi, Egidio Astesiano, and Gianna Reggio, editors,
Scientific Engineering for Distributed Java Applications, International
Workshop, FIDJI 2002, Luxembourg-Kirchberg, Luxembourg, November 28-29, 2002,
Revised Papers, volume 2604 of Lecture Notes in Computer Science.
Springer, 2003.
to appear.
[ bib |
.ps.gz ]
The tuple space communication model, such as the one
used in Linda, provides great flexibility for
modeling concurrent, distributed and mobile
processes. In a distributed setting with mobile
agents, particular attention is needed for
protecting sites and information. We have designed
and developed a Java middleware, Klava, for
implementing distributed tuple spaces and operations
to support agent interaction and mobility. In this
paper, we extend the Klava middleware with
cryptographic primitives that enable encryption and
decryption of tuple fields. We describe the actual
implementation of the new primitives and provide a
few examples. The proposed extension is general
enough to be applied to similar Java frameworks
using multiple distributed tuples spaces possibly
dealing with mobility.
|
|
[33]
|
L. Bettini, R. De Nicola, and M. Loreti.
Formalizing Properties of Mobile Agent Systems.
In F. Arbarb and C. Talcott, editors, Proc. of Coordination
Models and Languages, number 2315 in Lecture Notes in Computer Science,
pages 72-87. Springer, 2002.
[ bib |
.ps.gz ]
The wide-spreading of Internet has stimulated the
introduction of new programming paradigms and
languages that model interactions among hosts by
means of mobile agents, and that are centered around
the notions of location awareness. In this paper we
show how to use formal tools, specifically a modal
logic, for formalizing properties for mobile agent
systems. We concentrate on one of these new
languages, Klaim, and we use it to specify a system
that permits maintaining the software installed on
several heterogeneous computers distributed over a
network by taking advantage of the mobile agent
paradigm.
|
|
[34]
|
L. Bettini, R. De Nicola, and M. Loreti.
Software Update via Mobile Agent Based Programming.
In Proc. of ACM SAC 2002, Special Track on Agents, Interactions,
Mobility, and Systems, pages 32-36. ACM Press, 2002.
[ bib |
.ps.gz ]
We describe a system that permits maintaining the
software installed on several heterogeneous
computers distributed over a network by taking
advantage of the mobile agent paradigm. The
applications are installed and updated only on the
central server. When a new release of an application
is installed on the server, agents are scattered
along the network to update the application on the
clients. To build a prototype system we use X-Klaim,
a programming language specifically designed to
program distributed systems composed of several
components interacting through multiple tuple spaces
and mobile code.
|
|
[35]
|
L. Bettini, R. DeNicola, and R. Pugliese.
KLAVA: a Java package for distributed and mobile applications.
Software Practice and Experience, 32(14):1365-1394, 2002.
[ bib |
.ps.gz ]
Highly distributed networks have now become a common
infrastructure for a new kind of wide-area
distributed applications whose key design principle
is network awareness, namely the ability of dealing
with dynamic changes of the network
environment. Network-aware computing has called for
new programming languages that exploit the mobility
paradigm as a basic interaction mechanism. In this
paper we present the architecture of Klava, an
experimental Java package for distributed
applications and code mobility. We explain how Klava
implements code mobility by relying on Java and show
a few distributed applications that exploit mobile
code and are programmed in Klava.
|
|
[36]
|
L. Bettini, M. Loreti, and R. Pugliese.
An Infrastructure Language for Open Nets.
In Proc. of ACM SAC 2002, Special Track on Coordination Models,
Languages and Applications, pages 373-377. ACM, 2002.
[ bib |
.ps.gz ]
The structure of open nets, like the Internet, is
highly dynamic, as the topology of component
networks continuously evolves. In this context, node
connectivity is a key aspect and a language for
distributed network-aware mobile applications should
provide explicit mechanisms to handle it. In this
paper, we address the problem of expressing dynamic
changes of node connectivity at linguistic level
and, in particular, we focus on a slight extension
of the language Klaim, that is targeted to this
aim. The extension consists of the introduction of a
new category of processes that, in addition to the
standard process operations, can execute a few new
coordination operations for establishing new
connections, accepting connection requests and
removing connections. Our extension puts forward a
clean separation between the coordinator level and
the user level and, hence, it is modular enough to
be easily applicable also to other network-aware
languages. We will also show that our approach can
be used as a guide for actual distributed
(i.e. without a single centralized server)
implementations of mobile systems.
|
|
[37]
|
Lorenzo Bettini, Rocco De Nicola, and Michele Loreti.
Formulae meet programs over the net: a framework for reliable network
aware programming.
Annals of Software Engineering, 2003.
Accepted for publication.
[ bib ]
A general framework for network aware programming is
presented that consists of a language for
programming mobile applications, a logic for
specifying properties of the applications and an
automatic tool for verifying such properties. The
framework is based on XKlaim, eXtended Klaim,
an experimental programming language specifically
designed to program distributed systems composed of
several components interacting through multiple
tuple spaces and mobile code. The proposed logic is
a modal logic inspired by Hennessy-Milner logic and
is interpreted over the same labelled structures
used for the operational semantics of XKlaim. The
automatic verification tool is based on a complete
proof system that has been previously developed for
the logic.
|
|
[38]
|
S. Bistarelli, I. Cervesato, G. Lenzini, and F. Martinelli.
Relating process algebras and multiset rewriting for immediate
decryption protocols.
In Proc. Second International Workshop on Mathematical Methods,
Models and Architectures for Computer Networks Security - MMM'03, volume
2776 of LNAI, pages 88-101. Springer, 2003.
[ bib ]
When formalizing security protocols, different specification
languages support very different reasoning methodologies, whose results
are not directly or easily comparable. Therefore, establishing clear
relationships among different frameworks is highly desirable, as it permits
various methodologies to cooperate by interpreting theoretical and
practical results of one system in another. In this paper, we examine the
nontrivial relationship between two general verification frameworks: multiset
rewriting (MSR) and a process algebra (PA) inspired to the CCS and
the pi-calculus. We present two separate mappings, one from MSR to PA
and the other from PA to MSR. Although defining a simple and
general bijection between MSR and PA appears difficult, we show that in
the specific context of cryptographic protocols they do admit effective
translations that preserve traces.
|
|
[39]
|
S. Bistarelli, I. Cervesato, G. Lenzini, and F. Martinelli.
Relating process algebras and multiset rewriting for security
protocol analysis.
In Proc. Workshop on Issues in the Theory of Security (WITS'03),
April 5 - 6, 2003, Warsaw, Poland, 2003.
[ bib ]
In this paper, we examine the
nontrivial relationship between two general verification frameworks:
multiset rewriting (MSR) and a process algebra (PA) inspired to CCS and
the -calculus. Although defining a simple and general bijection between
MSR and PA appears difficult, we show that the sublanguages needed
to specify a large class of cryptographic protocols (immediate decryption
protocols) admits an effective translation that is not only bijective and
trace-preserving, but also induces a weak form of bisimulation across
the two languages. In particular, the correspondence sketched in this
abstract permits transferring several important trace-based properties such
as secrecy and many forms of authentication.
|
|
[40]
|
Stefano Bistarelli and Simon N. Foley.
Analysis of integrity policies using soft constraints.
In Proc. IEEE 4th International Workshop on Policies for
Distributed Systems and Networks (POLICY2003), 4-6 June 2003, Lake Como,
Italy, pages 77-80. IEEE Computer Society, 2003.
[ bib ]
An integrity policy defines the situations when
modification of information is authorized and is enforced by the
security mechanisms of the system. However, in a complex
application system it is possible that an integrity policy
may have been incorrectly specified and, as a result, a user
may be authorized to modify information that can lead to
an unexpected system compromise. In this paper we outline
a scalable and quantitative technique that uses constraint
solving to model and analyze the effectiveness of application
system integrity policies.
|
|
[41]
|
Stefano Bistarelli and Simon N. Foley.
A constraint based framework for dependability goals: Integrity.
In Proc. SAFECOMP2003, volume 2788 of Lecture Notes in
Computer Science, pages 130-143. Springer, 2003.
[ bib ]
An integrity policy defines the situations
when modification of information is
authorized and is enforced by
the security mechanisms of the system.
However, in a complex application system it
is possible that an integrity policy may have been
incorrectly specified and, as a result, a user
may be authorized to modify information that
can lead to an unexpected system compromise.
In this paper we propose a scalable and
quantitative technique that uses constraint
solving to model and analyze the effectiveness of
application system
integrity policies.
|
|
[42]
|
L. Bocchi, C. Laneve, and G. Zavattaro.
A calculus for long running transactions.
In FMOODS'03, volume 2884 of Lecture Notes in Computer
Science, December 2003.
[ bib ]
We study long-running transactions in
open component-based distributed applications, such
as Web Services platforms.
Long-running transactions describe time-extensive activities that
involve several distributed components. Henceforth,
in case of failure, it is usually
not possible to restore the initial state, and firing a
compensation process is preferable.
Despite the interest of such transactional mechanisms,
a formal modeling of them is still lacking. In this paper we
address this issue by designing an extension of the asynchronous
pi-calculus with long-running transactions (and
sequences) the pit-calculus.
We study the practice of pit-calculus, by discussing few paradigmatic
examples, and
its theory, by defining a semantics and providing a correct encoding
of pit-calculus into
asynchronous pi-calculus.
|
|
[43]
|
V. Bono.
Extensible objects: a tutorial.
In Global Computing - Programming Environments,
Languages, Security and Analysis of Systems, volume 2874 of
Lecture Notes in Computer Science. Springer-Verlag, 2003.
[ bib |
.pdf ]
In the object-oriented realm, class-based languages
dominate the world of production languages, but
object-based languages have been extensively studied
to provide the foundations of the object-oriented
paradigm. Moreover, object-based languages are
undergoing a Renaissance thanks to the growing
popularity of scripting languages, which are
essentially object-based. We focus on extensible
object-based calculi, which feature method addition,
together with classical method override and method
invocation. Extensible objects can be seen as a way
to bridge the gap between the class-based setting
and the pure object-based setting. Our aim is to
provide a brief but rigorous view on extensible
objects, following a thread suggested by the concept
of ``self'' (which is the reference to the executing
object) and its related typing problems. This
tutorial may be seen as a complementary contribution
to the literature which has explored and compared
extensively pure object-based and class-based
foundations (for example, as in the books by Abadi
and Cardelli, and Bruce, respectively), but which
generally neglected extensible objects.
|
|
[44]
|
V. Bono, F. Damiani, and P. Giannini.
A calculus for ``environment-aware'' computation.
In F-WAN '02, volume 66.3 of Electronic Notes in
Theoretical Computer Science. Elsevier, 2002.
[ bib |
.pdf ]
We present a calculus for modelling
``environment-aware'' computations, that is
computations that adapt their behaviour according to
the capabilities of the environment. The calculus is
an imperative, object-based language with extensible
objects, equipped with a labelled transition
semantics. A notion of bisimulation, lifting to
computations a correspondence between the
capabilities of different environments, is
provided. Bisimulation can be used to prove that a
program is ``cross-environment'', i.e., it has the
same behaviour when run in different environments.
|
|
[45]
|
Viviana Bono, Michele Bugliesi, and Silvia Crafa.
Typed interpretation of extensible objects.
ACM Transactions on Computational Logics, 3(4), 2002.
[ bib ]
Finding typed encodings of object-oriented into
procedural or functional programming sheds light on the theoretical
foundations of object-oriented languages and their specific typing
constructs and techniques. This paper describes a type preserving and
computationally adequate interpretation of a full-fledged object
calculus that supports message passing and constructs for object
update and extension. The target theory is a higher-order
lambda-calculus with records and recursive folds/unfolds,
polymorphic and recursive types, and subtyping. The interpretation
specializes to calculi of nonextensible objects, and validates the
expected subtyping relationships.
|
|
[46]
|
Viviana Bono and J. Tiuryn.
Products and polymorphic subtypes.
Fundamenta Informaticae, 51(1-2), 2002.
[ bib ]
This paper is devoted to a comprehensive study of polymorphic
subtypes with products. We first present a sound and complete
Hilbert style axiomatization of the relation of being a subtype in
presence of ->, × type constructors and the
for all quantifier, and we show that such axiomatization is not
encodable in the system with , only. In order to give a
logical semantics to such a subtyping relation, we propose a new
form of a sequent which plays a key role in a natural deduction
and a Gentzen style calculi. Interestingly enough, the sequent
must have the form E|- T, where E is a non-commutative,
non-empty sequence of typing assumptions and T is a finite
binary tree of typing judgements, each of them behaving like a
pushdown store. We study basic metamathematical properties of the
two logical systems, such as subject reduction and cut
elimination. Some decidability/undecidability issues related to
the presented subtyping relation are also explored: as expected,
the subtyping over ->,×,for all is undecidable,
being already undecidable for the ->,for all fragment
(as proved in a previous paper by J.Tiuryn), but for the
×,for all fragment it turns out to be decidable.
|
|
[47]
|
M. Bonsangue, J. Kok, and G. Zavattaro.
Comparing coordination models and architectures using embeddings.
Science of Computer Programming, 46((1-2)):31-69, 2002.
[ bib ]
We refine the notion of embedding in order to obtain
a formal tool for the comparison of the
relative expressive power of different languages, by taking into
account also the intended architectures on which the
software components described using those languages
are executed. The new notion, called architectural embedding, is suitable
for the comparison of different communication mechanisms, and gives
rise to a natural notion of implementability. We will use this notion
to present equivalence and difference results for several coordination
models based on components that communicate either through an
unordered broadcast, through an atomic broadcast, or through a
synchronous broadcast.
|
|
[48]
|
M. Boreale, M.Buscemi, and U. Montanari.
D-fusion, a distinctive fusion calculus.
Submitted., 2003.
[ bib ]
Fusion calculus is commonly regarded as a
generalisation of pi-calculus. Actually, we prove
that there is no uniform fully abstract embedding of
pi-calculus into Fusion. This fact motivates the
introduction of a new calculus, D-Fusion, with two
binders, lambda and nu. We show that D-Fusion
is strictly more expressive than both pi-calculus
and Fusion. The expressiveness gap is further
clarified by the existence of a fully abstract
encoding of mixed guarded choice into the
choice-free fragment of D-Fusion.
|
|
[49]
|
M. Boreale, R. De Nicola, and R. Pugliese.
Trace and testing equivalence on asynchronous processes.
Information and Computation, 172(2):139-164, 2002.
[ bib ]
We study trace and may-testing equivalences in
the asynchronous versions of CCS and pi-calculus. We start from
the operational definition of the may-testing preorder and provide
for it finitary and fully abstract trace-based characterizations,
along with a complete in-equational proof system. We also touch upon
two variants of this theory, by first considering a more demanding
equivalence notion (must-testing) and then a richer version of
asynchronous CCS. The results throw light on the difference between
synchronous and asynchronous communication and on the weaker testing
power of asynchronous observations.
|
|
[50]
|
Michele Boreale and Daniele Gorla.
On compositional reasoning in the spi-calculus.
In FOSSACS: International Conference on Foundations of Software
Science and Computation Structures. Lecture Notes in Computer Science,
2002.
[ bib |
.pdf ]
Observational equivalences can be used to reason
about the correctness of security protocols
described in the spi-calculus. Unlike in CCS or in
pi-calculus, these equivalences do not enjoy a
simple formulation in spi-calculus. The present
paper aims at enriching the set of tools for
reasoning on processes by providing a few equational
laws for a sensible notion of spi-bisimilarity. We
discuss the difficulties underlying compositional
reasoning in spi-calculus and show that, in some
cases and with some care, the proposed laws can be
used to build compositional proofs. A selection of
these laws forms the basis of a proof system that we
show to be sound and complete for the strong version
of bisimilarity.
|
|
[51]
|
Michele Boreale and Daniele Gorla.
Process calculi and the verification of security protocols.
Journal of Telecommunication and Information Technology, 2002.
to appear.
[ bib |
.pdf ]
Recently there has been much interest towards using
formal methods in the analysis of security
protocols. Some recent approaches take advantage of
concepts and techniques from the field of process
calculi. Process calculi can be given a formal yet
simple semantics, which permits rigorous definitions
of such concepts as `attacker', `secrecy' and
`authentication'. This feature has led to the
development of solid reasoning methods and
verification techniques, a few of which we outline
in this paper.
|
|
[52]
|
A. Bracciali, A. Brogi, and G. Ferrari amd E. Tuosto.
Security and dynamic compositions of open systems.
In Proc. Int. Conf. PDPTA. CSREA Press, 2002.
[ bib ]
Designing software by coordinating components is
becoming a pervasive software development methodology. This practice of
building (distributed) applications is currently supported by several
industrial standards competing in the marketplace. Moreover,
Internet facilitates the distributions of services to be embedded into
applications. In this highly dynamic scenario, we discuss a
methodology to formally describe the (behavioural) features of the
single components and to reason about the properties of the assembled
applications.
|
|
[53]
|
A. Bracciali, A. Brogi, and C. Canal.
Adapting components with mismatiching behaviours.
In Proc. Component deployment, volume 2320 of Lecture
Notes in Computer Science, pages 185-199. Springer, 2002.
[ bib ]
Component adaptation is widely recognised to be one of the
crucial problems in Component-Based Software Engineering.
We present a formal methodology for adapting components with
mismatching interaction behaviours.
|
|
[54]
|
A. Bracciali, A. Brogi, and C. Canal.
Dynamiccaly adapting the behaviour of software components.
In Proc. COORDINATION 2002, volume 2315 of Lecture Notes
in Computer Science. Springer, 2002.
[ bib ]
Available component-oriented platforms address software
interoperability only at the signature level, while they do not
provide suitable mechanisms for adapting components with mismatching
interaction behaviour.
This paper presents a methodology for automatically developing
adaptors capable of solving behaviour mismatches between
heterogeneous components. These adaptors are generated from
abstract specifications of the intended connection between the
components, by taking into account both signature interfaces and
component behaviours.
|
|
[55]
|
A. Bracciali, A. Brogi, and C. Canal.
Systematic component adaption.
Electronic Notes in Theoretical Computer Science (Electronic
Notes in Theoretical Computer Science), 66(1), 2002.
[ bib ]
We present a
formal methodology for adapting components with mismatching
interaction behaviour.
|
|
[56]
|
A. Bracciali, A. Brogi, and C. Canal.
A formal approach to component adaptation.
Journal of Systems and Software, Special Issue on Automated
Component-Based Software Engineering, 2004.
(in press). A preliminary version of this paper was published in
Component deployment, Lecture Notes in Computer Science 2370, pages
185-199. Springer, 2002.
[ bib ]
Component adaptation is widely recognised to be one of the
crucial
problems in Component-Based Software Engineering (CBSE). We
present a formal methodology for adapting components with
mismatching interaction behaviour. The three main ingredients of
the methodology are:
(1) The inclusion of behaviour specifications in component interfaces,
(2) a simple, high-level notation for expressing adaptor
specifications, and
(3) a fully automated procedure to derive concrete adaptors from given
high-level specifications.
|
|
[57]
|
A. Brogi, N. Busi, M. Gabbrielli, and G. Zavattaro.
Comparative analysis of the expressiveness of shared dataspace
coordination.
In In Proc. of Workshop in Theory of Concurrency, Higher Order
Languages and Types (TOSCA'01), number 62 in Electronic Notes in Theoretical
Computer Science. Elsevier, 2001.
[ bib ]
We study the expressiveness of the most prominent
representatives of the
family of shared dataspace coordination languages, namely
Linda, Gamma and Concurrent Constraint Programming.
The investigation is carried out by
exploiting and integrating three different comparison
techniques: weak and strong modular
embedding and property-preserving encodings.
We obtain a hierarchy of coordination languages
that provides useful insights for both the design
and the use of coordination languages.
|
|
[58]
|
A. Brogi, C. Canal, and E. Pimentel.
On the specification of software adaptation.
Electronic Notes in Theoretical Computer Science (Electronic
Notes in Theoretical Computer Science), 91(2), 2003.
[ bib ]
The problem of adapting heterogeneous software components
that present mismatching interaction behaviour is one of
the crucial problems in Component-Based Software Engineering.
The aim of this paper is to contribute to setting a theoretical
foundation for software adaptation.
A formal analysis of adaptor specifications is presented, and
their usage to feature different forms of flexible adaptations
is illustrated.
|
|
[59]
|
A. Brogi, C. Canal, and E. Pimentel.
Soft component adaptation.
Electronic Notes in Theoretical Computer Science (Electronic
Notes in Theoretical Computer Science), 85(3), 2003.
[ bib ]
Component adaptation is widely recognised to be one of the crucial
problems in Component-Based Software Engineering (CBSE). We
present here a formal methodology for the soft adaptation of
components presenting mismatching interaction behaviours. The
notions of access rights (associating components with the services
they are allowed to use) and subservicing (providing alternative
services in place of those requested by components lacking the
required access rights) are exploited to feature a secure and
flexible adaptation of third-party components.
|
|
[60]
|
A. Brogi, C. Canal, and E. Pimentel.
Measuring component adaptation.
In Proceedings of Sixth International Conference on Coordination
Models and Languages. Springer, 2004.
[ bib ]
Adapting heterogeneous software components that present
mismatching interaction behaviour is one of the crucial problems
in Component-Based Software Engineering. The process of component
adaptation can be synthesized by a transformation from an initial
specification (of the requested adaptation) to a revised
specification (expressing the actual adaptation that will be
featured by the deployed adaptor component).
An important capability in this context is hence to be able to
evaluate to which extent an adaptor proposal satisfies the
initially requested adaptation.
The aim of this paper is precisely to develop different
metrics that can be employed to this end.
Such metrics can be fruitfully employed both to assess the
acceptability of an adaptation proposal, and to compare different
adaptation solutions proposed by different servers.
|
|
[61]
|
A. Brogi, E. Pimentel, and A. Roldán.
Safe composition of linda-based components.
Electronic Notes in Theoretical Computer Science (Electronic
Notes in Theoretical Computer Science), 82(6), 2003.
[ bib ]
Component-Based Software Development is an emerging discipline in the field of
Software Engineering. When constructing component-based systems, we must be
sure that the cooperative behaviour of the components and their interaction will
be successful. In this paper, we use Linda to specify the interactive behaviour of
software components. To do this, we first introduce a process algebra for Linda, and
then we define a compatibility relation providing conditions that ensure safe composition.
This relation takes into account the state of a shared tuple space which
represents the current execution. Indeed, a Linda-based computation is characterized
by the store2019s evolution, so that the set of tuples included into the store governs
each computation step. In this context, the success of the composition of a pair of
agents in presence of a suitable store can be useful to condition the acceptance of a
given component into an open running system. In order to extend our approach to
complex systems, where constructing a system involves more than two components,
we propose the use of distributed tuple spaces as the glue to join components.
Keywords: Coordination languages, components, software architecture, compatibility,
interaction, process algebras.
|
|
[62]
|
R. Bruni, C. Laneve, and U. Montanari.
Orchestrating transactions in join calculus.
In In Proc. of CONCUR '02, Lecture Notes in Theoretical
Computer Science, pages 321 - 337. Springer Verlag, 2002.
[ bib ]
We discuss the principles of distributed
transactions, then we define an operational model which meets the
basic requirements and we give a prototyping implementation for it in
join-calculus. Our model:
(1) extends BizTalk with multiway transactions;
(2) exploits an original algorithm, for distributed commit;
(3) can deal with dynamically changing communication topology;
(4) is almost language-independent.
In fact, the model is based on a two-level
classification of resources, which should be easily conveyed to
distributed calculi
and languages, providing them with a uniform transactional mechanism.
|
|
[63]
|
N. Busi, P. Ciancarini, R. Gorrieri, and G. Zavattaro.
Models for coordinating agents: a guided tour.
In A. Omicini, F. Zambonelli, M. Klusch, and R. Tolksdorf, editors,
Coordination for Internet Agents: Models, Technologies, and
Applications, chapter 1, pages 6-24. Springer-Verlag, 2001.
[ bib ]
In this paper we survey and discuss a number of
coordination models for agents.
We define a framework general enough to be able to capture the main
ideas underlying the major coordination models for agents.
The framework is based on three key concepts:
the coordinables, the coordination medium,
and the coordination rules.
We start modeling a simple dataspace-based model.
Then we structure our discussion along three directions:
more advanced coordination primitives exploitable by the
coordinables, reshaping the coordination medium, and
programming the coordination rules.
|
|
[64]
|
N. Busi, M. Gabbrielli, and G. Zavattaro.
Replication vs. Recursive Definitions in Channel Based Calculi.
In ICALP'03, volume 2719 of Lecture Notes in Computer
Science, June 2003.
[ bib ]
We investigate the expressive power
of two alternative approaches used to express
infinite behaviours in process calculi, namely,
replication and recursive definitions.
These two approaches are
equivalent in the full pi-calculus, while
there is a common agreement that this is not
the case when name mobility is not allowed
(as in the case of CCS),
even if no formal discriminating
We consider a hierarchy of calculi, previously proposed by Sangiorgi,
that spans from a fragment of CCS (named
``the core of CCS'') to the pi-calculus with internal mobility.
We prove the following discrimination result
between replication and recursive definitions:
the termination of processes is an undecidable property in the
core of CCS, provided that recursive process definitions are allowed,
while termination turns out to be decidable when only
replication is permitted. On the other hand,
this discrimination result does not hold any longer when we move to
the next calculus in the hierarchy,
which supports a very limited form of name mobility.
|
|
[65]
|
N. Busi, R. Gorrieri, R. Lucchi, and G. Zavattaro.
Secspaces: a data-driven coordination model for environments open to
untrusted agents.
In In Proc. of International Workshop on Foundations of
Coordination Languages and Software Architectures (FOCLASA'02), number (to
appear) in Electronic Notes in Theoretical Computer Science. Elsevier, 2002.
[ bib ]
In this paper we initiate an investigation
about security problems which occur when
exploiting a Linda-like data driven coordination
model in an open environment. In this scenario,
there is no guarantee that all the agents
accessing the shared tuple space are trusted.
Starting from the analysis of the few proposals
already available in the literature, we present
a novel coordination model which provides
mechanisms to manage tuple access control.
The first mechanism supports logical partitions
of the shared repository: in this way we can restrict
the access to tuples inside a partition, simply by limiting
the access to the partition itself.
The second mechanism consists of adding to the tuples
some extra information which exploit asymmetric cryptography
in order, e.g., to authenticate the producer
of a tuple or to identify its reader/consumer.
Finally, we support the possibility to define
access control policies based on the kind of operations
an agent performs on a tuple, thus discriminating
between (destructive) input and (non-destructive) read
operations.
|
|
[66]
|
N. Busi, R. Gorrieri, and G. Zavattaro.
Temporary data in shared dataspace coordination languages.
In In Proc. of International Conference on Foundations of
Software Science and Computation Structures (FOSSACS'01), number 2030 in
Lecture Notes in Computer Science, pages 121-136. Springer-Verlag, 2001.
[ bib ]
The shared dataspace metaphor is historically the
most prominent representative of the family of
coordination models.
According to this approach, concurrent processes
interact via the production, consumption, and test
for presence/absence of data in a common
repository.
Recently, the problem of the accumulation
of outdated and unwanted information in the
shared repository has been addressed and it has
been solved by introducing non-permanent
data, obtained by associating an expiration time to data.
In this paper we investigate the impact of
the adoption of different notions of
non-permanent data on the expressiveness of
a Linda based process calculus.
|
|
[67]
|
N. Busi, C. Manfredini, A. Montresor, and G. Zavattaro.
Towards a data-driven coordination infrastructure for peer-to-peer
systems.
In In Proc. of Workshop on Peer-to-Peer Computing, number 2376
in Lecture Notes in Computer Science, pages 295-299. Springer-Verlag, 2002.
[ bib ]
Shared dataspaces, initiated by Linda since
the beginning of the 80s, has been successfully adopted
as a coordination model in a huge variety of systems and
applications, going from parallel computing to web-based
collaborative work. We point out several scalability
problems which arise when trying to exploit the original
Linda coordination model in peer-to-peer systems.
The objective of this analysis is to produce some
guidelines for the design of a data-driven coordination
infrastructure suitable for the peer-to-peer scenario.
|
|
[68]
|
N. Busi, C. Manfredini, A. Montresor, and G. Zavattaro.
Peerspaces: Data-driven coordination in peer-to-peer networks.
In In Proc. of ACM Symposium on Applied Computing (SAC'03),
page (to appear). ACM Press, 2003.
[ bib ]
Shared dataspaces a` la Linda, and the underlying data-driven
coordination model, have been successfully exploited in the
development of a huge variety of applications, going from
parallel computing to web-based collaborative work.
In this paper we consider a novel class of applications,
namely those developed for peer-to-peer networks a`
la Gnutella or FreeNet. We discuss the
problems which arise when trying to exploit the original
Linda coordination model in this new scenario.
In order to address these problems, we introduce PeerSpaces,
a new coordination model particularly suited for the realm
of peer-to-peer network applications, and we present
a prototypical implementation of this coordination model
based on the JXTA peer-to-peer technology.
|
|
[69]
|
N. Busi, A. Rowstron, and G. Zavattaro.
State- and event-based reactive programming in shared dataspaces.
In In Proc. of International Conference on Coordination Models
and Languages (COORDINATION'02), number 2315 in Lecture Notes in Computer
Science, pages 111-124. Springer-Verlag, 2002.
[ bib ]
The traditional Linda programming style, based on the
introduction and consumption of data from a common
repository, seems not adequate for highly dynamic
applications in which it is important to observe
modification of the environment which occur quickly.
On the other hand, reactive programming seems more
appropriate for this kind of applications.
In this paper we consider some approaches
recently presented in the literature for embedding reactive
programming in shared dataspaces, we present a possible
classification for these approaches, and we perform
a rigorous investigation of their relative advantages and
disadvantages
|
|
[70]
|
N. Busi and G. Zavattaro.
On the serializability of transactions in javaspaces.
In In Proc. of International Workshop on Concurrency and
Coordination (CONCOORD'01), number 54 in Electronic Notes in Theoretical
Computer Science. Elsevier, 2001.
[ bib ]
JavaSpaces is a coordination infrastructure inspired by the
shared dataspace model: processes interact by introducing,
consuming, and testing for the presence/absence of data in
a common repository.
Besides these traditional operations, an event based coordination
mechanism is considered which allows for the notification of the
introduction of new instances of data in the repository.
JavaSpaces also supports transactions: multiple coordination
operations can be grouped into a bundle that acts as a single
atomic operation.
In this paper we adopt serializability as a criterion to
evaluate the correctness of the JavaSpaces transaction
semantics: we prove that serializability is satisfied
only if we restrict to output, input, and read operations.
On the other hand, in the presence of either test for absence
or event notification, serializability is not satisfied;
we propose an alternative semantics and we prove that
it supports serializability.
|
|
[71]
|
N. Busi and G. Zavattaro.
Publish/subscribe vs. shared dataspace coordination infrastructures.
In In Proc. of IEEE International Workshops on Enabling
Technologies: Infrastructure for Collaborative Enterprises (WETICE'01),
pages 328-333. IEEE Press, 2001.
[ bib ]
Two main architectural styles emerged in the panorama of
inter-agent coordination infrastructures:
the publish/subscribe model, according to which agents communicate
via the raising and catch of events,
and the shared-dataspace (i.e. Linda-like) approach, in which
communication is achieved by introducing and consuming objects from
a common repository.
In this paper we perform a rigorous comparison of the two approaches
with a particular emphasis on their interchangeability; we obtain
the following results:
(i) the shared dataspace model can be reduced to the publish/subscribe
architecture, while
(ii) the vice versa holds only if a global coordination operation,
such as copy-collect or inp, is provided among the
shared dataspace operations.
|
|
[72]
|
N. Busi and G. Zavattaro.
Some thoughts on transiently shared dataspaces.
In In Proc. of Workshop on Software Engineering and Mobility.
Co-located with ICSE'01, pages 328-333, 2001.
[ bib ]
Transiently Shared Dataspaces (TSD), recently introduced in
the coordination infrastructure Lime, represent an emerging
technology to enable the use of dataspaces for the coordination
of mobile agents:
data-sharing is allowed among agents running on hosts belonging to
the same federation (i.e., currently connected).
In this paper we present a formalization of the TSD technology
in order to provide a framework for reasoning about systems based
on this infrastructure.
In particular, we concentrate on alternative design choices
related to data migration, host connectivity, and reactive programming.
|
|
[73]
|
N. Busi and G. Zavattaro.
On the expressiveness of movement in pure mobile ambients.
In In Proc. of Foundations of Wide Area Network Computing
(FWAN'02), number 66(3) in Electronic Notes in Theoretical Computer Science.
Elsevier, 2002.
[ bib ]
Pure Mobile Ambients
(i.e., Mobile Ambients without communication)
provides three mobility primitives:
in and out for ambient movement,
and open to dissolve ambient boundaries.
In this paper we consider the expressiveness of the
primitives in and out for ambient movement;
more precisely, we concentrate on the interplay between
ambient movement and the ability to create new names
(exploiting the restriction operator).
To this aim, we consider a version of Pure Mobile Ambients
(with explicit recursive definitions instead of replication)
and we concentrate on the three fragments of the calculus
that can be obtained removing either one or both between
movement and the ability to create new names. The unique
mobility primitive that we retain in all of the considered
calculi is open.
Te three fragments are denoted as follows:
MAmv without ambient movement,
MAnew without restriction,
and MAmvnew without both movement and restriction.
We prove that both the fragments MAmv and MAnew are Turing-complete,
while this is not the case for MAmvnew. Indeed, we prove that
in this latter calculus the existence of an infinite computation turns to
be a decidable property.
|
|
[74]
|
N. Busi and G. Zavattaro.
On the Expressiveness of Movement in Pure Mobile Ambients.
In FWAN'02, volume 66 (3) of Electronic Notes in
Theoretical Computer Science, 2002.
[ bib ]
|
|
[75]
|
N. Busi and G. Zavattaro.
On the serializability of transactions in shared dataspaces with
temporary data.
In In Proc. of ACM Symposium on Applied Computing (SAC'02),
pages 395-366. ACM Press, 2002.
[ bib ]
Several coordination platforms based on the shared dataspace
approach introduces, besides the typical Linda-like coordination
primitives (used to produce, consume, and test for the presence/absence
of data in a common repository), a transaction mechanism provided
to group coordination primitives which should be executed in such a way
that either all succeed or none of them is performed.
In this paper we continue the investigation
of the serializability of transactions in shared
dataspace coordination languages.
The new contribution consists of the analysis
of the interplay between transactions and temporary data,
ie., data with an associated expiration time.
|
|
[76]
|
N. Busi and G. Zavattaro.
Expired Data Collection in Shared Dataspaces.
Theoretical Computer Science, 298:529-556, 2003.
[ bib ]
The shared dataspace metaphor is historically the
most prominent representative of the family of
coordination models.
According to this approach, concurrent processes
interact via the production, consumption, and test
for presence/absence of data in a common
repository.
Recently, the problem of the accumulation
of outdated and unwanted information in the
shared repository has been addressed.
Typical garbage collection algorithms cannot be
adopted in this context because there is no
notion of unaccessible data.
The most promising solution to this problem
consists of the introduction of the notion of
temporary data, intended as data with an
associated expiration time.
In this paper, we investigate the impact of
different mechanisms for expired data collection
on the expressiveness of shared dataspace coordination
systems with temporary data.
|
|
[77]
|
C. Calcagno, E. Moggi, and T. Sheard.
Closed types for a safe imperative MetaML.
J. Funct. Programming, 13(3):545-571, 2003.
[ bib |
.pdf ]
This paper addresses the issue of safely combining
computational effects and multi-stage
programming. We propose a type system, which
exploits a notion of closed type, to check
statically that an imperative multi-stage program
does not cause run-time errors. Our approach is
demonstrated formally for a core language called
MiniMLrefmeta. This core language safely
combines multi-stage constructs and ML-style
references, and is a conservative extension of
MiniMLref, a simple imperative subset of
SML. In previous work, we introduced a closed type
constructor, which was enough to ensure the safe
execution of dynamically generated code in the pure
fragment of MiniMLrefmeta.
|
|
[78]
|
C. Calcagno, E. Moggi, and T. Sheard.
Closed types for a safe imperative MetaML.
Journal of Functional Programming, to appear.
[ bib |
.pdf ]
This paper addresses the issue of safely combining
computational effects and multi-stage
programming. We propose a type system, which
exploits a notion of closed type, to check
statically that an imperative multi-stage program
does not cause run-time errors. Our approach is
demonstrated formally for a core language called
MiniMLrefmeta. This core language safely
combines multi-stage constructs and ML-style
references, and is a conservative extension of
MiniMLref, a simple imperative subset of
SML. In previous work, we introduced a closed type
constructor, which was enough to ensure the safe
execution of dynamically generated code in the pure
fragment of MiniMLrefmeta.
|
|
[79]
|
C. Calcagno, E. Moggi, and W. Taha.
ML-like inference for classifiers.
accepted to ESOP'04, 2003.
[ bib |
.pdf ]
Environment classifiers were recently proposed as a
new approach to typing multi-stage languages. Safety
was established in the simply-typed and
let-polymorphic settings. While the motivation for
the classifier approach was the feasibility of
inference, this was in fact not established. This
paper starts with the observation that inference for
the full classifier-based system fails. We then
identify a subset of the original system for which
inference is possible. This subset, which uses
implicit classifiers, retains significant
expressivity (e.g. it can embed the calculi of
Davies and Pfenning) and eliminates the need for
classifier names in terms. Implicit classifiers were
implemented in MetaOCaml, and no changes were needed
to make an existing test suite acceptable by the new
type checker.
|
|
[80]
|
Walter Cazzola.
mChaRM: Reflective Middleware with a Global View of Communications.
IEEE Distributed System On-Line, 3(2), February 2002.
http://dsonline.computer.org/middleware/articles/dsonline-mcharm.html.
[ bib ]
The main objective of remote-method-invocation- and object-based middleware is to provide a convenient environment for the realization of distributed computations. In most cases, unfortunately, interaction policies in these middleware platforms are hardwired into the platform itself. Some platforms, e.g., CORBA?s interceptors, offer means to redefine such details but their flexibility is limited to the possibilities that the designer has foreseen.
In this way, distributed algorithms must be exclusively embedded in the application code, breaking any separation of concerns between functional and nonfunctional code. Some programming languages like Java disguise remote interactions as local calls, thus rendering their presence transparent to the programmer. However their management is not so transparent and easily maskable to the programmer.
|
|
[81]
|
Walter Cazzola.
Remote Method Invocation as a First-Class Citizen.
Distributed Computing, 2003.
To Appear.
[ bib ]
The classical remote method invocation (RMI) mechanism
adopted by several objectbased middleware is `black-box' in
nature, and the RMI functionality, i.e., the RMI interaction
policy and its configuration, is hard-coded into the application.
This RMI nature hinders software development and reuse, forcing
the programmer to focus on communication details often marginal to
the application being developed. Extending the RMI behavior with
extra functionality is also a very difficult job, because added
code must be scattered among the entities involved in
communications.
This situation could be improved by developing the system in
several separate layers, confining communications and related
matters to specific layers. As demonstrated by recent work on
reflective middleware, reflection represents a powerful tool for
realizing such a separation and therefore overcoming the problems
referred to above. Such an approach improves the separation of
concerns between the communicationrelated algorithms and the
functional aspects of an application. However, communications and
all related concerns are not managed as a single unit that is
separate from the rest of the application, which makes their
reuse, extension, and management difficult. As a consequence,
communications concerns continue to be scattered across the
meta-program, communication mechanisms continue to be black-box in
nature, and there is only limited opportunity to adjust
communication policies through configuration interfaces.
In this paper we examine the issues raised above, and propose a
reflective approach specially designed to open up the RMI
mechanism. Our proposal consists of a new reflective model, called
multichannel reification, that reflects on and
reifies communication channels, i.e., it renders communication
channels firstclass citizens. This model is designed both
for developing new communication mechanisms and for extending the
behavior of communication mechanisms provided by the underlying
system. Our approach is embodied in a framework called ,
which is described in detail in this paper.
|
|
[82]
|
Walter Cazzola, Massimo Ancona, Fabio Canepa, Massimo Mancini, and Vanja
Siccardi.
Shifting Up Java RMI from P2P to Multi-Point.
Technical Report DISI-TR-01-13, DISI, Università degli Studi di
Genova, December 2001.
Available at
http://www.disi.unige.it/person/CazzolaW/references.html.
[ bib ]
In this paper we describe how to realize a Java RMI
framework supporting multi-point method
invocation. The package we have realized allows
programmers to build groups of servers that could
provide services in two different modes: fault
tolerant and parallel. These modes differ over
computations failure. Our extension is based upon
the creation of entities which maintain a common
state between different servers. This has been done
extending the existing RMI registry. From the user's
point of view the multi-point RMI acts just like the
traditional RMI system, and really the same
architecture has been used.
|
|
[83]
|
Walter Cazzola, Massimo Ancona, Fabio Canepa, Massimo Mancini, and Vanja
Siccardi.
Enhancing Java to Support Object Groups.
In Proceedings of the Third Conference on Recent Object-Oriented
Trends (ROOTS'02), Bergen, Norway, on 17th-19th of April 2002.
Available at
http://www.disi.unige.it/person/CazzolaW/references.html.
[ bib ]
In this paper we show how to enhancing the Java RMI
framework to support object groups. The package we
have developed allows programmers to dynamically
deal with groups of servers all implementing the
same interface. Our group mechanism can be used both
to improve reliability preventing system failures
and to implement processor farm parallelism. Each
service request dispatched to an object group
returns all the values computed by the group members
permitting the implementation of both kind of
applications. Moreover, these approaches differ both
over computations failure and over the semantic of
the implemented interface. Our extension is achieved
enriching the classic RMI framework and the existing
RMI registry with new functionalities. From user's
point of view the multicast RMI acts just like the
traditional RMI system, and really the same
architecture has been used.
|
|
[84]
|
Walter Cazzola, Ahmed Ghoneim, and Gunter Saake.
Reflective Analysis and Design for Adapting Object Run-time
Behavior.
In Zohra Bellahsène, Dilip Patel, and Colette Rolland, editors,
Proceedings of the 8th International Conference on Object-Oriented
Information Systems (OOIS'02), Lecture Notes in Computer Science 2425, pages
242-254, Montpellier, France, on 2nd-5th of September 2002. Springer-Verlag.
Available at
http://www.disi.unige.it/person/CazzolaW/references.html.
[ bib ]
Today, complex information systems need a simple way
for changing the object behavior according with
changes that occur in its running environment. We
present a reflective architecture which provides the
ability to change object behavior at run-time by
using design-time information. By integrating
reflection with design patterns we get a flexible
and easily adaptable architecture. A reflective
approach that describes object model, scenarios and
statecharts helps to dynamically adapt the software
system to environmental changes. The object model,
system scenario and many other design information
are reified by special meta-objects, named
evolutionary meta-objects. Evolutionary
meta-objects deal with two types of run-time
evolution. Structural evolution is carried out by
causal connection between evolutionary meta-objects
and its referents through changing the structure of
these referents by adding or removing objects or
relations. Behavioral evolution allows the system to
dynamically adapt its behavior to environment
changes by itself. Evolutionary meta-objects react
to environment changes for adapting the information
they have reified and steering the system
evolution. They provide a natural liaison between
design information and the system based on such
information. This paper describes how this liaison
can be built and how it can be used for adapting a
running system to environment changes.
|
|
[85]
|
Walter Cazzola, Ahmed Ghoneim, and Gunter Saake.
Software Evolution through Dynamic Adaptation of Its OO Design.
In Hans-Dieter Ehrich, John-Jules Meyer, and Mark D. Ryan, editors,
Objects, Agents and Features: Structuring Mechanisms for Contemporary
Software, Lecture Notes in Computer Science. Springer-Verlag, February
2004.
[ bib ]
In this paper we present a proposal for safely evolving a software
system against run-time changes. This proposal is based on a reflective
architecture which provides objects with the ability of dynamically
changing their behavior by using their design information. The
meta-level system of the proposed architecture supervises the evolution
of the software system to be adapted that runs as the base-level system
of the reflective architecture. The meta-level system is composed of
cooperating components; these components carry out the evolution against
sudden and unexpected environmental changes on a reification of the
design information (e.g., object models, scenarios and statecharts) of
the system to be adapted. The evolution takes place in two steps: first
a meta-object, called evolutionary meta-object, plans a
possible evolution against the detected event then another meta-object,
called consistency checker meta-object validates the
feasibility of the proposed plan before really evolving the system.
Meta-objects use the system design information to govern the evolution
of the base-level system. Moreover, we show our architecture at work on
a case study.
|
|
[86]
|
Walter Cazzola, Coplien James O., Ahmed Ghoneim, and Gunter Saake.
Framework Patterns for the Evolution of Nonstoppable Software
Systems.
In Kristian Elof Søresen and Pavel Hruby, editors,
Proceedings of the 1st Nordic Conference on Pattern Languages of Programs
(VikingPLoP'02), pages 266-283, Højstrupgrard, Helsingør, Denmark,
on 20th-22nd of September 2002.
Available at
http://www.disi.unige.it/person/CazzolaW/references.html.
[ bib ]
The fragment of pattern language proposed in this
paper, shows how to adapt a nonstoppable software
system to reflect changes in its running
environment. These framework patterns depend on
well-known techniques for programs to dynamically
analyze and modify their own structure, commonly
called computational reflection. Our patterns go
together with common reflective software
architectures.
|
|
[87]
|
M. Coppo and M. Dezani-Ciancaglini.
A fully abstract model for higher-order mobile ambients.
In VMCAI 2002, volume 2294 of Lecture Notes in Computer
Science, pages 255-271, 2002.
[ bib |
.pdf ]
Aim of this paper is to develop a filter model for a
calculus with mobility and higher-order value
passing. We will define it for an extension of the
Ambient Calculus in which processes can be passed as
values. This model turns out to be fully abstract
with respect to the notion of contextual equivalence
where the observables are ambients at top level.
|
|
[88]
|
M. Coppo, M. Dezani-Ciancaglini, E. Giovannetti, and I. Salvo.
M3: Mobility types for mobile processes in mobile ambients.
In CATS 2003, volume 78 of Electronic Notes in
Theoretical Computer Science, 2003.
[ bib |
.pdf ]
We present an ambient-like calculus in which the
open capability is dropped, and a new form of
``lightweight process mobility is introduced. The
calculus comes equipped with a type system which
allows the kind of values exchanged in
communications and the access and mobility
properties of processes to be controlled. A type
inference procedure determines the ``minimal
requirements to accept a system or a component as
well typed. This gives a kind of principal type. As
an expressiviness test, we show that some of the
most known calculi of concurrency and mobility can
be encoded in our calculus in a natural way.
|
|
[89]
|
F. Corradini, R. De Nicola, and A. Labella.
An equational axiomatization of bisimulation over regular
expressions.
Journal of Computational Logic, 12(2):301-320, 2002.
[ bib ]
|
|
[90]
|
F. Damiani.
Rank 2 intersection types for local definitions and conditional
expressions.
ACM Transactions on Programming Languages and Systems,
25(4):401-451, 2003.
[ bib |
.pdf ]
We introduce a rank 2 intersection type system with
new typing rules for local definitions
(LET-expressions and LETREC-expressions) and
conditional expressions (IF-expressions and
MATCH-expressions). This is a further step towards
the use of intersection types in ``real''
programming languages. The technique for typing
local definitions relies entirely on the principal
typing property (i.e. it does not depend on
particulars of rank 2 typing), so it can be applied
to any system with principal typings. The technique
for typing conditional expressions, which is based
on the idea of introducing metrics on types to
``limit the use'' of the intersection type
constructor in the types assigned to the branches of
the conditionals, is instead tailored to rank 2
intersection. However, the underlying idea might be
useful also for other type systems.
|
|
[91]
|
F. Damiani.
Rank 2 Intersection Types for Modules.
In PPDP'03, pages 67-78. ACM, 2003.
[ bib |
.html ]
We present a rank 2 intersection type system for a
language of modules built on a core ML-like
language. The principal typing property of the
rank 2 intersection type system for the core
language plays a crucial role in the design of the
type system for the module language. We first
considers a ``plain'' notion of module, where a
module is just a set of mutually recursive top-level
definitions, and illustrates the notions of:
module intrachecking (each module is typechecked in
isolation and its interface, that is the set of
typings of the defined identifiers, is inferred);
interface interchecking (when linking modules,
typechecking is done just by looking at the
interfaces); interface specialization
(interface intrachecking may require to specialize
the typing listed in the interfaces); principal
interfaces (the principal typing property for the
type system of modules); and separate
typechecking (looking at the code of the modules
does not provide more type information than looking
at their interfaces). Then we illustrate some
limitations of the ``plain'' framework and extend
the module language and the type system in order to
overcome these limitations. The decidability of the
system is shown by providing algorithms for the
fundamental operations involved in module
intrachecking and interface interchecking.
|
|
[92]
|
F. Damiani, M. Dezani-Ciancaglini, S. Drossopoulou, and P. Giannini.
Refined effects for re-classification: FickleIII.
Internal report, dec 2002.
[ bib |
.pdf ]
Re-classification changes at run-time the class
membership of an object while retaining its
identity. In our previous work on the language
Fickle (and its extension FickleI and FickleII) we
suggested language features for object
re-classification, which could extend an
imperative,typed, class-based, object-oriented
language. In this paper we present the language
FickleIII, which improves FicleII with a more
expressive type and effect system. FickleIII allows
to correctly type meaningful programs which FickleII
reject. This is done by taking into account the
initial and the final class of each
re-classification. The syntax of FickleIII and the
syntax of FickleII differ only in the effect
annotations occurring in methods' signatures (every
FickleII-style effect annotation can be coded into a
FickleIII-style effect annotation, but not vice
versa). The operational semantics (which ignores
effect annotations) is unchanged.
|
|
[93]
|
F. Damiani, S. Drossopoulou, and P. Giannini.
Refined effects for unanticipated object re-classification: Fickle3
(extended abstract).
In ICTCS'03, volume 2841 of Lecture Notes in Computer
Science, pages 97-110. Springer, 2003.
[ bib |
.html ]
In previous work with Dezani on the language Fickle
and its extension FickleII we introduced language
features for object re-classification for
imperative, typed, class-based, object-oriented
languages. In this paper we present the language
Fickle3, which on one side refines FickleII with
more expressive effect annotations, and on the other
eliminates the need to declare explicitly which are
the classes of the objects that may be
re-classified. Therefore, Ficle3 allows to correctly
type meaningful programs which FickleII
rejects. Moreover, re-classification may be decided
by the client of a class, allowing ``unanticipated
object re-classification''. As for FickleII, also
the type and effect system for Fickle3 guarantees
that, even though objects may be re-classified
across classes with different members, they will
never attempt to access non existing members. The
type and effect system of Fickle3 has some
significant differences from the one of FickleII. In
particular, besides the fact that intra-class type
checking has to track the more refined effects, when
a class is combined with other classes some
additional inter-class checking is introduced.
|
|
[94]
|
F. Damiani and P. Giannini.
Alias types for ``environment-aware'' computations.
In WOOD '03, volume 82 of Electronic Notes in Theoretical
Computer Science. Elsevier, 2003.
[ bib |
.ps ]
In previous work we introduced a calculus for
modelling ``environment-aware'' computations, that
is computations that adapt their behavior according
to the capabilities of the environment. The calculus
is an imperative, object-based language (with
extensible objects and primitives for discriminating
the presence or absence of attributes of objects)
equipped with a small-step operational semantics. In
this paper we define a type and effect system for
the calculus. The typing judgements specify, via
constraints, the shape of environments which
guarantees the correct execution of expressions and
the typing rules track the effect of expression
evaluation on the environment. The type and effect
system is sound w.r.t. the operational semantics of
the language.
|
|
[95]
|
Ferruccio Damiani, Mariangiola Dezani-Ciancaglini, and Paola Giannini.
Re-classification and multithreading: FickleMT.
In OOPS track at SAC'04. ACM, 2004.
In OOPS track. To appear.
[ bib |
.html ]
In this paper we consider re-classification in the
presence of multi-threading. To this aim we define a
multi-threaded extension of the language Fickle,
that we call FickleMT. We define an operational
semantics and a type and effect system for the
language. Each method signature carries the
information on the possible effects of the method
execution. The type and effect system statically
checks this information. The operational semantics
uses this information in order to delay the
execution of some threads when this could cause
``messageNotUnderstood errors. We prove that in the
execution of a well-typed expression such delays do
not produce deadlock.
|
|
[96]
|
R. De Nicola, G.-L. Ferrari, U. Montanari, R. Pugliese, and E. Tuosto.
A formal basis for reasoning on programmable qos.
In N. Dershowitz, editor, Proc. of the International Symposium
on Verification (Theory and Practice) - Celebrating Zohar Manna's 64-th
Birthday, number 2772 in Lectures Notes in Computer Science.
Springer-Verlag, 2003.
to appear.
[ bib ]
The explicit management of Quality of Service (QoS)
of network connectivity, such as, e.g., working
cost, transaction support, and security, is a key
requirement for the development of the novel wide
area network applications. In this paper, we
introduce a foundational model for specification of
QoS attributes at application level. The model
handles QoS attributes as semantic constraints
within a graphical calculus for mobility. In our
approach QoS attributes are related to the
programming abstractions and are exploited to
select, configure and dynamically modify the
underlying system oriented QoS mechanisms.
|
|
[97]
|
Rocco De Nicola and Michele Loreti.
A Modal Logic for Mobile Agents.
ACM Transactions on Computational Logic, 5(1), 2004.
[ bib |
.ps.gz ]
Klaim is an experimental programming language that
supports a programming paradigm where both processes
and data can be moved across different computing
environments. The language relies on the use of
explicit localities, and on allocation environments
that associate logical localities to physical
sites. This paper presents a temporal logic for
specifying properties of Klaim programs. The logic
is inspired by Hennessy-Milner Logic (HML) and the
mu-calculus, but has novel features that permit
dealing with state properties to describe the effect
of actions over the different sites. The logic is
equipped with a consistent and complete proof system
that enables one to prove properites of mobile
systems.
|
|
[98]
|
C. Domshlak, F. Rossi, K. B. Venable, and T. Walsh.
Reasoning about soft constraints and conditional preferences:
complexity results and approximation techniques.
In Proc. IJCAI 2003, 2003.
[ bib ]
Many real life optimization problems contain
both hard and soft constraints, as well as qualitative conditional
preferences. However, there is no single formalism to specify
all three kinds of information. We therefore propose a framework,
based on both CP-nets and soft constraints, that handles both hard and
soft constraints as well as conditional preferences efficiently and uniformly.
We study the complexity of testing the consistency of preference statements,
and show how soft constraints can faithfully approximate the semantics of
conditional preference statements whilst improving the computational
complexity.
|
|
[99]
|
S. Drossopoulou, F. Damiani, M. Dezani-Ciancaglini, and P. Giannini.
More dynamic object re-classification: FickleII.
ACM Transactions on Programming Languages and Systems,
24(2):153-191, mar 2002.
[ bib |
.pdf ]
Re-classification changes at run-time the class
membership of an object while retaining its
identity. We suggest language features for object
re-classification, which could extend an imperative,
typed, class-based, object-oriented language. We
present our proposal through the language Fickle
(Fickle is the successor of an earlier proposal,
Fickle-99; although both Fickle and Fickle-99
address the same requirement for object
re-classification, the approaches are very
different). The imperative features combined with
the requirement for a static and safe type system
provided the main challenges. We develop a type and
effect system for Fickle and prove its soundness
with respect to the operational semantics. In
particular, even though objects may be re-classified
across classes with different members, they will
never attempt to access non-existing members.
|
|
[100]
|
Sophia Drossopoulou, Giovanni Lagorio, and Susan Eisenbach.
Flexible models for dynamic linking.
In Programming Languages & Systems, 12th European Symp. Programming, volume 2618 of Lecture Notes in Computer Science, pages
38-53. Springer-Verlag, 2003.
[ bib |
.pdf ]
Dynamic linking supports flexible code deployment:
partially linked code links further code on the fly,
as needed; and thus, end-users receive updates
automatically. On the down side, each program run
may link different versions of the same code,
possibly causing subtle errors which mystify
end-users. Dynamic linking in Java and C# are
similar: The same linking phases are involved,
soundness is based on similar ideas, and executions
which do not throw linking errors give the same
result. They are, however, not identical: the
linking phases are combined differently, and take
place in different order. Thus, linking errors may
be detected at different times in Java and C#. We
develop a non-deterministic model, which includes
the behaviour of Java and C#. The non-determinism
allows us to describe the design space, to distill
the similarities between the two languages, and to
use one proof of soundness for both. We also prove
that all execution strategies are equivalent in the
sense that all terminating executions which do not
involve a link error, give the same result.
|
|
[101]
|
F. Barbanera F. Alessi and M. Dezani-Ciancaglini.
Tailoring filter models.
In Types 2003, Lecture Notes in Computer Science.
Springer-Verlag, 2004.
To appear in Types 2003, Lecture Notes in Computer Science series.
[ bib |
www ]
Conditions on type preorders are provided in order
to precisely characterize intersection type-induced
models for the Lambda-calculus and some of its
restrictions. Besides, two examples are given of
filter models in which not all the continuous
functions are representable.
|
|
[102]
|
S. Fagorzi, E. Zucca, and D. Ancona.
Modeling multiple class loaders by a calculus for dynamic linking.
In ACM Symposium on Applied Computing SAC 2004. ACM Press,
March 2004.
In OOPS track. To appear.
[ bib |
.pdf ]
In a recent paper we proposed a calculus for
modeling dynamic linking independently of the
details of a particular programming
environment. Here we use a particular instantiation
of this calculus to encode a toy language, called
MCS, which provides an abstract view of the
mechanism of dynamic class loading with multiple
loaders as in Java. The aim is twofold. On one hand,
we show an example of application of the calculus in
modeling existing loading and linking policies,
showing in particular that Java-like loading with
multiple loaders can be encoded without exploiting
the full expressive power of the calculus. On the
other hand, we provide a simple formal model which
allows a better understanding of Java-like loading
mechanisms and also shows an intermediate solution
between the rigid approach based only on the class
path and that which allows arbitrary user-defined
loaders, which can be intricate and error-prone.
|
|
[103]
|
G. Ferrari, S. Gnesi, U. Montanari, and M. Pistore.
A model checking verification environment for mobile processes.
ACM Transactions on Software Engineering and Methodologies
(TOSEM), To appear, 2004.
[ bib ]
This paper presents a semantic-based environment for reasoning
about the behaviour of mobile systems. The verification
environment, called HAL, exploits a novel automata-like model
which allows finite state verification of systems specified in the
pi-calculus. The HAL system is able to interface with several
efficient toolkits (e.g. model checkers) to determine whether or
not certain properties hold for a given specification. We report
experimental results on some illustrative case studies.
|
|
[104]
|
G. Ferrari, S. Gnesi, U. Montanari, R. Raggi, G. Trentanni, and E. Tuosto.
Verification on the web of mobile processes.
Tecnical Report, CNR-ISTI 2002-TR-19, 2002.
[ bib ]
Web services allow the components of applications to be highly decentralized,
dynamically reconfigurable. Moreover, Web services can interoperate easily inside
an heterogeneous network environment. The vast majority of current available
verification environments have been built by sticking to traditional
architectural styles. Hence, they are centralized and none of them deal with
interoperability and dynamic reconfigurability. In this paper we present a verification
toolkit whose design and implementation exploit the Web service architectural paradigm.
We describe the architectural design and the discuss in detail the current implementation efforts.
|
|
[105]
|
G. Ferrari, E. Moggi, and R. Pugliese.
Higher-order types and meta-programming for global computing.
Mathematical Structures in Computer Science, 2003.
to appear.
[ bib ]
This paper describes the design and the semantics of
MetaKlaim, an higher order distributed process
calculus equipped with staging mechanisms. MetaKlaim
integrates MetaML (an extension of SML for
multi-stage programming) and Klaim (a Kernel
Language for Agents Interaction and Mobility), to
permit interleaving of meta-programming activities
(like assembly and linking of code fragments),
dynamic checking of security policies at
administrative boundaries and ``traditional''
computational activities on a wide area network
(like remote communication and code
mobility). MetaKlaim exploits a powerful type system
(including polymorphic types á la system F) to
deal with highly parameterized mobile components and
to dynamically enforce security policies: types are
metadata which are extracted from code at run-time
and are used to express trustiness guarantees. The
dynamic type checking ensures that the trustiness
guarantees of wide are network applications are
maintained whenever computations interoperate with
potentially untrusted components.
|
|
[106]
|
G. Ferrari, E. Moggi, and R. Pugliese.
MetaKlaim: A type safe multi-stage language for global computing.
Mathematical Structures in Computer Science, 2004.
To appear.
[ bib |
.pdf ]
This paper describes the design and the semantics
of MetaKlaim, an higher order distributed process
calculus equipped with staging mechanisms. MetaKlaim
integrates MetaML (an extension of SML for
multi-stage programming) and Klaim (a Kernel
Language for Agents Interaction and Mobility), to
permit interleaving of meta-programming activities
(like assembly and linking of code fragments),
dynamic checking of security policies at
administrative boundaries and ``traditional''
computational activities on a wide area network
(like remote communication and code
mobility). MetaKlaim exploits a powerful type system
(including polymorphic types a la system F) to deal
with highly parameterized mobile components and to
dynamically enforce security policies: types are
metadata which are extracted from code at run-time
and are used to express trustiness guarantees. The
dynamic type checking ensures that the trustiness
guarantees of wide are network applications are
maintained whenever computations interoperate with
potentially untrusted components.
|
|
[107]
|
G. Ferrari, U. Montanari, R. Raggi, and E. Tuosto.
From co-algebraic specifications to implementation: The mihda
toolkit.
In First International Symposium on Formal Methods for
Components and Objects (FMCO), Springer Lecture Notes in Computer Science.
Springer, 2003.
[ bib ]
This paper describes the architecture of a toolkit, called Mihda,
providing facilities to minimise labelled transition systems for name passing calculi.
The structure of the toolkit is derived from the co-algebraic formulation of the partition-refinement minimisation algorithm for HD-automata. HD-automata have been specifically designed to allocate and garbage collect names and they provide faithful finite state representations of the behaviours of pi-calculus processes. The direct correspondence between the coalgebraic specification and the implementation structure facilitates the proof of correctness of the implementation. We evaluate the usefulness of Mihda in practise by performing finite state verification of pi-calculus specifications of network applications.
|
|
[108]
|
Gianluigi Ferrari, Eugenio Moggi, and Rosario Pugliese.
Guardians for ambient-based monitoring.
In Proc. Foundations of Wide Area Network Programming, volume
66(3) of Electronic Notes in Theoretical Computer Science. Elsevier,
2002.
[ bib ]
In the Mobile Ambients of Cardelli and Gordon an ambient is a unit
for mobility,
which may contain processes (data) and sub-ambients. Since the
seminal work of Cardelli and Gordon, several ambient-based calculi have been proposed
(Seal, Box-Pi, Safe Ambients, Secure Safe Ambients, Boxed Ambients), mainly for
supporting security. At the operational level these (box- and) ambient-based
calculi differ only in the capabilities of processes. We propose a way of extending
ambient-based calculi, which embodies two principles: an ambient is a unit for
monitoring and coordination, the name of an ambient determines its (monitoring
and coordination) policy. More specifically, to each ambient we attach a
guardian, which monitors the activity of sub-components (i.e. processes and
sub-ambients) and the interaction with the external environment. In our proposal,
guardians and processes play a dual role: guardians are centralized entities
monitoring and inhibiting actions, while processes are decentralized entities
performing actions. We exemplify the use of guardians for enforcing security properties.
|
|
[109]
|
Gianluigi Ferrari, Ugo Montanari, and Emilio Tuosto.
Graph-based models of internetworking systems.
In A. Haeberer, editor, Formal Methods at the Crossroads: from
Panaces to Foundational Support, Lecture Notes in Computer Science.
Springer, 2003.
[ bib ]
Graphical notations have been widely accepted as an expressive and
intuitive working tool for system specification and design. This paper outlines a
declarative approach based on (hyper-)graphs and graph synchronization to deal with
the modeling of Wide Area Network applications. This paper aims at contributing to
the understanding of crucial issues involved in the specification and design of
Wide Area Network systems, as a first step toward the development of software
engineering techniques and tools for designing and certificating internetworking systems.
|
|
[110]
|
M. S. Franzin, E. C. Freuder, F. Rossi, and R. Wallace.
Multi-agent meeting scheduling with preferences: efficiency, privacy
loss, and solution quality.
In Proc. AAAI 2002 workshop on Preference in AI and CP, 2002.
[ bib ]
In this paper, we study the relations among three aspects
in the context of a multi-agent meeting scheduling system: efficiency,
privacy loss, and solution quality.
We do this by first implementing a multi-agent system that incorporates
preferences, and then by running experiments to capture the
interesting and useful trade-offs among these three aspects.
|
|
[111]
|
M. S. Franzin, E. C. Freuder, F. Rossi, and R. Wallace.
Multi-agent meeting scheduling with preferences: efficiency, privacy
loss, and solution quality.
Computational Intelligence, 2004.
To appear.
[ bib ]
We consider multi-agent systems with preferences,
which are just standard multi-agent systems, except
that each agent can set some preferences over its local data.
This makes these systems more flexible and realistic, since
it is possible to represent possibilities, costs, probabilities,
preferences, and penalties. However, it also transforms the
search for a feasible solution into the search for an optimal,
or good enough, solution, since the use of preferences
naturally implies the adoption of an optimization criterion,
both for each agent and also for the system as a whole.
Thus solution quality becomes an important aspect of such systems.
Moreover, each agent may want to keep its information as private
as possible. Thus privacy loss is another important aspect
of such systems. Finally, an obvious crucial aspect is
efficiency, since we would like to find a good solution as
quickly as possible.
In this paper, we study the relations among these three aspects
in the context of a multi-agent meeting scheduling system.
We do this by first implementing a multi-agent system that incorporates
preferences, and then by running experiments to capture the
interesting and useful trade-offs among these three aspects.
|
|
[112]
|
E. C. Freuder, C. Likitvivatanavong, M. Moretti, F. Rossi, and R. J. Wallace.
Computing explanations and implications in preference-based
configurators.
In Recent Advances in Constraints. Springer-Verlag, LNAI 2627,
2003.
[ bib ]
We consider configuration problems with preferences
rather than just hard constraints, and we analyze and
discuss the features that such configurators should have.
In particular, these configurators should provide explanations
for the current state, implications of a future choice,
and also information about the quality of future solutions,
all with the aim of guiding the user in the process of
making the right choices to obtain a good solution.
We then describe our implemented system, which,
by taking the soft n-queens problem as an example,
shows that it is indeed possible, even in this very general
context of preference-based configurators, to automatically
compute all the information needed for the desired features.
This is done by keeping track of the inferences that are made during
the constraint propagation enforcing phases. However, the process
of recording the necessary information is more complex and
expensive than in the case of hard constraints, since in general
a sequence of previous choices has to be recorded for each
possible future choice, and not just one as in the case of
hard constraints.
|
|
[113]
|
P. Gardner, C. Laneve, and L. Wischik.
The fusion machine.
In In Proc. of CONCUR '02, Lecture Notes in Theoretical
Computer Science, pages 418 - 433. Springer Verlag, 2002.
[ bib ]
We present a new model for the distributed
implementation of pi-like calculi, which permits strong correctness
results that are simple to prove. We describe the distributed channel
machine - a distributed version of a machine proposed by
Cardelli. The distributed channel machine groups pi processes at
their channels (or locations), in contrast with the more common
approach of incorporating additional location information within
pi processes. We go on to describe the fusion machine. It
uses a form of concurrent constraints called fusions -
equations on channel names - to distribute fragments of these
processes between remote channels. This fragmentation avoids the
movement of large continuations between locations, and leads to a
more efficient implementation model.
|
|
[114]
|
P. Gardner, C. Laneve, and L. Wischik.
Linear Forwarders.
In Concur'03, volume 2761 of Lecture Notes in Computer
Science, 2003.
[ bib ]
A linear forwarder is a process which receives one message
on a channel and sends it on a different channel. Linear
forwarders constitute a basic and implementable atom of
input capability, by which arbitrary input capability can
be encoded. (Input capability is where a received name is used as
the subject of subsequent input). In earlier work, the Join
calculus eliminated all input capability with a view to making
itself implemental. The significance of the current work is that
this elimination was not necessary. Linear forwarders have
`clean'
behaviour in the presence of failure, they allow an elegant
encoding of distributed choice, and they yield full abstraction
with the pi calculus with respect to barbed congruence.
|
|
[115]
|
E. Giovannetti.
Ambient calculi with types: a tutorial.
In Global Computing - Programming Environments,
Languages, Security and Analysis of Systems, volume 2874 of
Lecture Notes in Computer Science. Springer-Verlag, 2003.
[ bib |
.pdf ]
A tutorial introduction to the key concepts of
ambient calculi and their type disciplines,
illustrated through a number of systems proposed in
the last few years, such as Mobile Ambients, Safe
Ambients, Boxed Ambients, and other related calculi
with types.
|
|
[116]
|
E. Giovannetti.
Type inference for Mobile Ambients in Prolog.
In CATS 2004, Electronic Notes in Theoretical Computer
Science, 2004.
[ bib |
.pdf ]
The type system for the ambient calculus
M3 is presented in a new form that
derives the type of a term with the minimal set of
mobility assumptions, and is therefore more amenable
than the original form to a translation into a type
inference algorithm. From the new formulation a
Prolog program is derived, which implements a type
inference algorithm for M3 analogous to
the one previously specified through formal
rules. The implementation exploits in the standard
way the peculiarities of the logic programming
paradigm, and is therefore, in a sense, more
abstract than the original algorithm's specification
itself.
|
|
[117]
|
D. Gorla and R. Pugliese.
Enforcing security policies via types.
In D. Hutter, G. Muller, W. Stephan, and M. Ullmann, editors,
Proc. of International Conference on Security in Pervasive Computing
(SPC'03), number 2802 in Lectures Notes in Computer Science, pages 88-103.
Springer-Verlag, 2003.
[ bib ]
Security is a key issue for distributed
systems/applications with code mobility, like, e.g.,
e-commerce and on-line bank transactions. In a
scenario with code mobility, traditional solutions
based on cryptography cannot deal with all security
issues and additional mechanisms are necessary. In
this paper, we present a flexible and expressive
type system for security for a calculus of
distributed and mobile processes. The type system
has been designed to supply real systems security
features, like the assignment of different
privileges to users over different
data/resources. Type soundness is guaranteed by
using a combination of static and dynamic checks,
thus enforcing specific security policies on the use
of resources. The usefulness of our approach is
shown by modeling the simplified behaviour of a bank
account management system.
|
|
[118]
|
D. Gorla and R. Pugliese.
Resource access and mobility control with dynamic privileges
acquisition.
In J.C.M. Baeten, J.K. Lenstra, J. Parrow, and G.J. Woeginger,
editors, Proc. of International Colloquium on Automata, Languages and
Programming (ICALP'03), number 2719 in Lectures Notes in Computer Science,
pages 119-132. Springer-Verlag, 2003.
[ bib ]
muKlaim is a process language that permits
programming distributed systems made up of several
mobile components interacting through multiple
distributed tuple spaces. We present the language
and a type system for controlling the activities,
e.g. access to resources and mobility, of the
processes in a net. By dealing with privileges
acquisition, the type system enables dynamic
variations of security policies. We exploit a
combination of static and dynamic type checking, and
of in-lined reference monitoring, to guarantee
absence of run-time errors due to lack of privileges
and state two type soundness results: one involves
whole nets, the other is relative to subnets of
larger nets.
|
|
[119]
|
D. Gorla and R. Pugliese.
Controlling data movement in global computing applications.
In Proc. of the 2004 ACM Symposium on Applied Computing
(SAC'04), Special Track on Programming Languages. ACM Press, 2004.
to appear.
[ bib ]
We present a programming notation aiming at
protecting the secrecy of both host and agent data
in global computing applications. The approach
exploits annotations with sets of node addresses,
called regions. A datum can be annotated with a
region that specifies the network nodes that are
allowed to interact with it. Network nodes come
equipped with two region annotations specifying the
nodes that can send data and spawn processes over
them. The language semantics guarantees that
computation proceeds according to these region
constraints. To minimize the overhead of runtime
checks, a static compilation phase is exploited. The
proposed approach is largely independent of a
specific programming language; however, to put it in
concrete form, here we focus on its integration
within the process language muKlaim. We prove that
in compiled muKlaim nets, data can be manipulated
only by authorized users. We also give a more local
formulation of this property, where only a subnet is
compiled. Finally, we use our theory to model the
secure behaviour of a UNIX-like multiuser system.
|
|
[120]
|
Daniele Gorla and Rosario Pugliese.
Enforcing security policies via types.
sbmitted, 2002.
[ bib |
.pdf ]
Security is a key issue for distributed
systems/applications with code mobility, like, e.g.,
e-commerce and on-line bank transactions. In a
scenario with code mobility, traditional solutions
based on cryptography cannot deal with all security
issues and additional mechanisms are necessary. In
this paper, we present a flexible and expressive
type system for security for a calculus of
distributed and mobile processes. By using a
combination of static and dynamic checks, type
safety and well-typedness preservation can be
guaranteed, thus enforcing specific security
policies on the use of resources. The usefulness of
our approach will be shown by modeling the
simplified behaviour of a bank account management
system.
|
|
[121]
|
Daniele Gorla and Rosario Pugliese.
Resource access and mobility control with dynamic privileges
acquisition.
sbmitted, 2002.
[ bib |
.pdf ]
microKLAIM is a process language that permits
programming distributed systems made up of several
components interacting through multiple distributed
tuple spaces. We present the language and a type
system for controlling the activities, e.g. access
to resources and mobility, of the processes in a
net. By dealing with privileges acquisition and
consumption, the type system enables dynamic
variations of security policies. We exploit a
combination of static and dynamic type checking, and
of in-lined reference monitoring, to guarantee the
absence of run-time errors due to lack of privileges
and show two type safety results: one involves whole
nets, the other is relative to subnets of larger
nets.
|
|
[122]
|
G. Lagorio.
Towards a Smart Compilation Manager for Java.
In Blundo and Laneve, editors, Proc. Italian Conference on
Theoretical Computer Science 2003, number 2841 in Lecture Notes in Computer
Science, pages 302-315. Springer-Verlag, October 2003.
[ bib |
.pdf ]
It is often infeasible to recompile all the sources
an application consists of each time a change is
made. Yet, a recompilation strategy which does not
guarantee the same outcome of an entire
recompilation is not useful: why wasting time in
debugging a program (a set of .class files in the
Java case) which might behave differently from the
program obtained recompiling all the sources from
scratch? We say that a compilation strategy is sound
if it recompiles, besides the changed sources, all
the unchanged sources whose new binary, produced by
the overall recompilation, would differ from the
existing one (if any) and all the sources for which
the recompilation would be undefined: indeed, when
the entire compilation fails, so should do the
partial recompilation. We say that a compilation
strategy is minimal if it never recompiles an
unchanged source whose new binary would be equal to
the existing one. In this paper we present a
compilation strategy for a substantial subset of
Java which is proved to be sound and minimal.
|
|
[123]
|
G. Lagorio.
Another Step Towards a Smart Compilation Manager for Java.
In ACM Symposium on Applied Computing SAC 2004. ACM Press,
March 2004.
In OOPS track. To appear.
[ bib |
.pdf ]
In a recent work we have proposed a compilation
strategy (that is, a way to decide which unchanged
sources have to be recompiled) for a substantial
subset of Java which has been shown to be sound and
minimal. That is, an unchanged source is recompiled
if and only if its recompilation produces a
different binary or an error. However, that model
does not handle two features of Java, namely,
compile-time constant fields (static final fields
initialized by a compile-time constant of a
primitive type or String) and unreachable code,
which turn out to be troublesome for having a sound
and minimal compilation strategy. To our best
knowledge these two features, probably because of
their low-level nature, have been omitted in all
models of Java separate compilation written so
far. Yet, a compilation strategy for full Java has
to deal with them. Thus, in this paper we analyze
the implications of handling compile-time constant
fields and unreachable code, and extend our previous
model in order to handle these two features as
well.
|
|
[124]
|
C. Laneve.
Inheritance in concurrent objects.
In H. Bowman and J. Derrick, editors, Formal Methods for
Distributed Processing, An Object Oriented Approach, chapter 15, pages
326-355. Cambridge University Press, 2001.
[ bib ]
Inheritance is a crucial concept
in object-oriented specification, design and
programming, potentially enabling code reuse.
This concept has been recently integrated with
concurrency, due to the development of concurrent
object-oriented programming.
This chapter reviews the inheritance principle
initially in the sequential setting and then
in the context of concurrent onbject calculi.
We discuss, subsume in a unifying model, and
systemize the proposals in the literature.
|
|
[125]
|
C. Laneve.
A type system for jvm threads.
Theoretical Computer Science, 290((1)):741 - 778, 2003.
[ bib ]
The current definition of the Java bytecode verifier,
as well as the proposals to formalize it, does not include any
check about the structured use of locks by
monitorenter and monitorexit instructions.
So code is run, even if critical sections are corrupted.
In this paper we isolate a sublanguage of the Java Virtual Machine with
thread creation and mutual exclusion. For this subset we
define a semantics and a formal verifier that enforces basic properties of
threads and lock and unlock operations.
The verifier integrates well with previous formalizations of the Java
bytecode verifier.
Our analysis of structured use of locks reveals the presence of bugs in the
current compilers from Sun, IBM and Microsoft.
|
|
[126]
|
C. Laneve and B. Victor.
Solos in Concert.
Mathematical Structures in Computer Science, 13(5), 2003.
[ bib ]
We present a calculus of mobile processes without prefix or summation,
called the solos calculus. Using two different encodings, we show
that the solos calculus can express both
action prefix and guarded summation. One encoding gives a strong
correspondence but uses a match operator; the other yields a slightly
weaker correspondence but uses no additional operators.
We also show that the expressive power of the solos calculus
is still retained by the sub-calculus where actions carry at most two names.
On the contrary, expressiveness is lost in the solos calculus without match
and with actions carrying at most one name.
|
|
[127]
|
L.Bettini, V.Bono, R.De Nicola, G.Ferrari, D.Gorla, M.Loreti, E.Moggi,
R.Pugliese, E.Tuosto, and B.Venneri.
The klaim project: Theory and practice.
In C. Priami, editor, Global Computing: Programming
Environments, Languages, Security and Analysis of Systems, number 2874 in
Lecture Notes in Computer Science. Springer-Verlag, 2003.
to appear.
[ bib ]
Klaim (Kernel Language for Agents Interaction and
Mobility) is an experimental language specifically
designed to program distributed systems consisting
of several mobile components that interact through
multiple distributed tuple spaces. Klaim primitives
allow programmers to distribute and retrieve data
and processes to and from the nodes of a
net. Moreover, localities are first-class citizens
that can be dynamically created and communicated
over the network. Components, both stationary and
mobile, can explicitly refer and control the spatial
structures of the network. This paper reports the
experiences in the design and development of
Klaim. Its main purpose is to outline the
theoretical foundations of the main features of
Klaim and its programming model. We also present a
modal logic that permits reasoning about behavioural
properties of systems and various type systems that
help in controlling agents movements and
actions. Extensions of the language in the direction
of object oriented programming are also discussed
together with the description of the implementation
efforts which have lead to the current prototypes.
|
|
[128]
|
F. Gadducci M. Boreale.
Denotational testing semantics in coinductive form.
In P. Vojtás B. Rovan, editor, Proc. of MFCS 2003, volume
2747 of Lecture Notes in Computer Science. Springer, 2003.
[ bib ]
Building on recent work by Rutten on coinduction and
formal power series, we define a denotational
semantics for the csp calculus and prove it
fully abstract for testing equivalence. The proposed
methodology allows for abstract definition of
operators in terms of behavioural differential
equations and for coinductive reasoning on them,
additionally dispensing with continuous
order-theoretic structures.
|
|
[129]
|
M.Buscemi M. Boreale.
Symbolic analysis of crypto-protocols based on modular
exponentiation.
In P. Vojtás B. Rovan, editor, Proc. of MFCS 2003, volume
2747 of Lecture Notes in Computer Science. Springer, 2003.
[ bib ]
Automatic methods developed so far for analysis of
security protocols only model a limited set of
cryptographic primitives (often, only encryption and
concatenation) and abstract from low-level features
of cryptographic algorithms. This paper is an
attempt towards closing this gap. We propose a
symbolic technique and a decision method for
analysis of protocols based on modular
exponentiation, such as Diffie-Hellman key
exchange. We introduce a protocol description
language along with its semantics. Then, we propose
a notion of symbolic execution and, based on it, a
verification method. We prove that the method is
sound and complete with respect to the language
semantics.
|
|
[130]
|
Ines Margaria and Maddalena Zacchi.
A filter model for safe ambients.
In Workshop COMETA, 2003.
[ bib |
.pdf ]
The definition of filter model is extended to a
variant of Ambient Calculus: Safe Ambient Calculus,
introduced for developing an algebraic theory for a
bisimulation-based behavioral equivalence. The types
are constructed by means of elementary and
higher-order actions, that define the moves
processes can do. Entailment rules for types allow
to translate the parallel composition of moves into
nondeterministic choice of sequences of interleaved
actions, providing a normal form for types assigned
to processes. In the filter model obtained via the
introduced type system, any process is interpreted
as the set of all its types. The type assignment
system results to be sound and complete with respect
to the given semantics. Moreover the partial order
relation induced by the filter model is compared
with observational equivalence: the model is proved
adequate, but it is shown, by means of a
counter-example, that completeness fails.
|
|
[131]
|
M.Gaspari and G. Zavattaro.
An actor algebra for specifying distributed systems: the hurried
philosophers case study.
In G. Rozenberg G. Agha, F. de Cindio, editor, Concurrent
Object-Oriented Programming and Petrin Nets, volume 2001 of Lecture
Notes in Computer Science, pages 428-444. Springer-Verlag, 2001.
[ bib ]
In this paper, we introduce an actor language
following a process algebra notation.
The idea is to define a formalism that enjoys a clean formal
definition allowing the reuse of standard results of the theory of
concurrency in a context where an high level
object oriented specification style is preserved.
To illustrate the expressive power of the language,
we provide a specification of the Hurried Philosophers case study.
|
|
[132]
|
Maria Grazia Buscemi Michele Boreale.
Experimenting with sta, a tool for automatic analysis of
cryptographic protocols.
In Proc. of ACM Symposium on Applied Computing (SAC'02). ACM
Press, 2002.
[ bib ]
We present STA (Symbolic Trace Analyzer), a
tool for the analysis of security protocols. STA
relies on symbolic techniques that avoid explicit
construction of the whole, possibly infinite,
state-space of protocols. This results in accurate
protocol modeling, increased efficiency and more
direct formalization, when compared to finite-state
techniques. We illustrate the use of STA by
analyzing two well-known protocols, asymmetric
Needham Schroeder and Kerberos. We discuss the
results of this analysis, and contrast them with
previous work based on finite-state model checking.
|
|
[133]
|
E. Moggi and S. Fagorzi.
A monadic multi-stage metalanguage.
submitted, 2002.
[ bib |
.pdf ]
We describe a metalanguage MMML, which makes
explicit the order of evaluation (in the spirit of
monadic metalanguages) and the staging of
computations (as in languages for multi-level
binding-time analysis). The main contribution of the
paper is an operational semantics which is
sufficiently detailed for analyzing subtle aspects
of multi-stage programming, but also intuitive to
serve as a reference semantics. For instance, the
separation of computational types from code types,
makes immediate the distinction between a
computation for generating code and the generated
code, and provides a basis for multi-lingual
extensions, where a variety of programming languages
(aka monads) coexist. The operational semantics
consists of two parts: local (semantic preserving)
simplification rules, and computation steps executed
in a deterministic order (because they may have
side-effects). The two parts can be changed
independently: the first by adding datatypes or
recursive definitions, the second by adding other
computational effects. We focus on the computational
aspects, thus we adopt a simple type system, that
can detect usual type errors, but not the unresolved
link errors. Because of its explicit annotations,
MMML is suitable as an intermediate language, but
(in comparison to MetaML) it is too verbose as a
programming language.
|
|
[134]
|
E. Moggi and S. Fagorzi.
A monadic multi-stage metalanguage.
In Proc. FoSSaCS '03, volume 2620 of Lecture Notes in
Computer Science. Springer-Verlag, 2003.
[ bib ]
We describe a metalanguage MMML, which makes explicit the order of
evaluation (in the spirit of monadic metalanguages) and the staging of
computations (as in languages for multi-level binding-time analysis).
The main contribution of the paper is an operational semantics which
is sufficiently detailed for analyzing subtle aspects of multi-stage
programming, but also intuitive enough to serve as a reference semantics.
For instance, the separation of computational types from code types,
makes clear the distinction between a computation for generating
code and the generated code, and provides a basis for
multi-lingual extensions, where a variety of programming
languages (aka monads) coexist.
The operational semantics consists of two parts: local (semantics
preserving) simplification rules, and computation steps executed in a
deterministic order (because they may have side-effects).
We focus on the computational aspects, thus we adopt a simple type
system, that can detect usual type errors, but not the
unresolved link errors.
Because of its explicit annotations, MMML is suitable as an
intermediate language.
|
|
[135]
|
E. Moggi and A. Sabry.
Monadic encapsulation of effects: a revised approach (extended
version).
Journal of Functional Programming, 11(6):591-627, November
2001.
[ bib |
.pdf ]
Launchbury and Peyton Jones came up with an
ingenious idea for embedding regions of imperative
programming in a pure functional language like
Haskell. The key idea was based on a simple
modification of Hindley-Milner's type system. Our
first contribution is to propose a more natural
encapsulation construct exploiting higher-order
kinds, which achieves the same encapsulation effect,
but avoids the adhoc type parameter of the original
proposal. The second contribution is a type safety
result for encapsulation of strict state using both
the original encapsulation construct and the newly
introduced one. We establish this result in a more
expressive context than the original proposal,
namely in the context of the higher-order
lambda-calculus. The third contribution is a type
safety result for encapsulation of lazy state in the
higher-order lambda-calculus. This result resolves
an outstanding open problem on which previous proof
attempts failed. In all cases, we formalize the
intended implementations as simple big-step
operational semantics on untyped terms, which
capture interesting implementation details not
captured by the reduction semantics proposed
previously.
|
|
[136]
|
E. Moggi and A. Sabry.
An abstract monadic semantics for value recursion.
In FICS'03, 2003.
[ bib ]
This paper proposes an operational semantics for
value recursion in the context of monadic
metalanguages. Our technique for combining value
recursion with computational effects works
uniformly for all monads. The operational
nature of our approach is related to the
implementation of recursion in Scheme and its
monadic version proposed by Friedman and Sabry, but
it defines a different semantics and does not rely
on assignments. When contrasted to the axiomatic
approach proposed by Erkök and Launchbury, our
semantics for the continuation monad invalidates one
of the axioms, adding to the evidence that this
axiom is problematic in the presence of
continuations.
|
|
[137]
|
R. De Nicola and A. Labella.
Nondeterministic regular expressions as solutions of equational
systems.
Theoretical Computer Science, 302(1-3):179-189, 2003.
[ bib ]
|
|
[138]
|
Leonardo Sabatino.
Progettazione e realizzazione di una infrastruttura per il supporto
alla mobilità.
Master's thesis, Tesi di Laurea in Scienze dell'Informazione,
Dipartimento di Sistemi e Informatica, Università di Firenze, 2002.
[ bib ]
|
|
[139]
|
Davide Sangiorgi, Andrea Valente, and Paola Giannini.
A distributed abstract machine for safe ambients (extended abstract.
Technical report, DI University of Torino, December 2002.
[ bib ]
An abstract machine for a distributed implementation
of an ambient calculusis presented. The abstract
machine is different from, and simpler than,previous
implementations of ambient-like calculi, mainly
because: the underlying calculus is typed Safe
Ambients rather than the untyped Ambient calculus;
the logical structure of an ambient system and its
physical distribution are separated. The proof of
correctness and a description of a distributed
implementation of the abstract machine in Java are
given.
|
|
[140]
|
S.Bistarelli, U. Montanari, and F. Rossi.
Soft concurrent constraint programming.
In Proc. European Symposium on Programming (ESOP) 2002, volume
2305 of Lecture Notes in Computer Science. Springer, 2002.
[ bib ]
Soft constraints extend classical constraints to represent
multiple consistency levels, and thus provide a way to express
preferences, fuzziness, and uncertainty. While there are many soft
constraint solving formalisms, even distributed ones, by now there
seems to be no concurrent programming framework where soft
constraints can be handled. In this paper we show how the
classical concurrent constraint (cc) programming framework can
work with soft constraints, and we also propose an extension of cc
languages which can use soft constraints to prune and direct the
search for a solution. We believe that this new programming
paradigm, called soft cc (scc), can be also very useful in many
web-related scenarios. In fact, the language level allows web
agents to express their interaction and negotiation protocols, and
also to post their requests in terms of preferences, and the
underlying soft constraint solver can find an agreement among the
agents even if their requests are incompatible.
|
|
[141]
|
E. Tuosto.
Non Functional Aspects of Wide area Network Programming.
PhD thesis, Dipartimento di Informatica, Univ. Pisa, 2003.
[ bib ]
Wide-Area Network (WAN) applications have become one of the most
popular applications in current distributed computing.
Internet and the World Wide Web are now the primary environment
for designing, developing and distributing applications.
This scenario imposes different programming metaphors with respect
to traditional applications.
Theoretical models for formally reasoning on WAN applications must
consider many crucial aspects and their mutual relationships, e.g.
mobility, network awareness, security, service level agreement, etc.
This dissertation attempts to formally define declarative approaches for
dealing with various facets of actual WAN programming and verification
issues.
We propose a declarative approach based on hypergraphs that provide foundational
framework for ``declaring'' components' behaviours of a distributed system.
It is exercised with two well-known models for distributed computations
as Ambient and Klaim
Moreover, we extend Klaim with constructs for specifying, at application level,
network connections and related Quality of Service (QoS) requirements.
It is also shown how a suitable translation of our Klaim extension into
hypergraphs can be exploited for detecting and reserving optimal routing
path with respect to the QoS constraints imposed by applications.
We also introduce a process calculus and a logic that specifies a formal framework
for declaring security protocols and properties.
By means of symbolic verification technique, the framework can be exploited as
a verification environment for model checking security protocols.
The declarative flavour of the analysis and the ability of dealing with
multi-session verification is the major advantage of the proposed approach.
Finally, we describe a verification environment based on a semantic minimization
algorithm for pi-calculus specifications presented in co-algebraic setting.
The final part of this dissertation introduces and discusses an implementation
of the algorithm together with other verification facilities of the framework.
A proofs that shows the correctness of the implementation with respect to the
co-algebraic specification is given.
|
 This file has been generated by
bibtex2html 1.65
|