Next: References
Up: Specifying component-based software architectures
Previous: 5 Larch/Java for Software
Several architectural description languages have been developed to provide software designers with notations and tools to specify and reason about architectural designs. Some frameworks give the designer an environment to build system according a specific architectural style [GAO94], where a style prescribes the type of components and connectors that can be used and the rules for their interconnections. Other general-purpose architectural languages support the description of the architecture of a system through behavioral specification. In [S+95], architectural descriptions can be compiled to obtain executable code or a rapid prototype for the simulation of system behavior can be constructed as in [L+95]. General specification notations have also been exploited in the study of software architectures such CSP [GAO94] and CHAM [IW95] to give behavioral specification for the system being developed.
Our approach aims to formalize the design of modules written in Java to ease the development and the reuse of previous experience for the concrete realization of specific instance of a system. The Larch notation provides a formal framework which guides the development of applications through the composition of preexisting components and in which it is possible to define and reason about properties of system being developed. We start from the definition of generic components which can be adapted and refined to satisfy the particular requirements encountered, exploiting the modularity supported by Larch notation. The behavior of such components can be described and analyzed individually in each LIL module while their interrelationships can be defined in the configuration module. In this way we have another level of formal design which allows an overall vision of the system as formed by interacting components and puts in evidence global constraints and behavioral properties.
We are evaluating the use of Larch/Java notation for the description of the architecture of concrete software systems through the completion of non toy-examples. The specification of the architecture of a Web based application to support financial transactions has been object of study in an undergraduate course on software engineering. Much work remains to be done to extend and integrate Larch/Java notations in order to obtain more complete specifications. First of all, we are studying a semantic model for Larch/Java specifications through the mapping of objects and states on solutions, molecules and chemical rules as provided by the Chemical Abstract Machine framework [BB92]. A simple parser of Larch/Java specification has been developed; we plan to extend this tool to make it possible to perform static semantic checks. Finally we aim to define an ontology for recurrent components and connectors in order to provide the designer with well specified and functioning modules to be easily combined together. Reference architectures as Java/Corba or Javabeans should in this way find out a formal framework guiding where the design of the architecture of the system being developed.
P. Ciancarini and S. Cimato