A Methodology for the Specification of Java Components and Architectures (PhD Thesis)

  • Authors:
  • S. Cimato

  • Affiliations:
  • -

  • Venue:
  • A Methodology for the Specification of Java Components and Architectures (PhD Thesis)
  • Year:
  • 1999

Quantified Score

Hi-index 0.00

Visualization

Abstract

The design and the implementation of large software systems is an ever lasting challenge for software developers. Currently, the development of the World Wide Web and Internet, and the diffusion of personal computers and local area networks complicates more and more the scenario in which software engineers have to develop their applications. The dominant computing paradigm is rapidly shifting from monolithic applications running on an isolated computer towards distributed systems running on platforms heterogeneous both for hardware and software. An important idea to manage this increasing complexity is to recognize and describe the overall structure of a software system, in order to identify its fundamental components and to decompose the original problem in smaller subproblems more easily resolvable. Following this approach already experienced design solutions can be successfully reused, simplifying and making more effective the software development process. \emph{Design patterns}, \emph{software architecture}, and \emph{component based software development} are design techniques that enhance the re-usability of software by applying the practical approach of `divide and conquer'''' to software design and implementation. Formal notations should guide software builders in the development of complex applications, in order to make them able to reason on the properties on the design and to ensure a successful result of their work. In spite of a multi-faced growing community of computer users, Java is making software development scenario more uniform, due to its features of portability, flexibility, and security, which have determined its success. Java comes with a set of built-in features that meet the needs of designers involved in the construction of distributed systems. Furthermore, Java extensions like RMI (Remote Method Invocation), Java Beans and JavaSpaces, enrich the basic language framework with advanced facilities which have to be mastered in order to design effective distributed applications. However, all their fundamental features are exposed informally, with a number of examples and tutorials. In this work we address the formal specification of Java classes and provide a methodology to support the specification of Java components. We provide an interface specification language for the specification of modules written in Java, and explore the use of such a notation for the definition of components to be employed to design concrete applications. Furthermore we provide a reduction semantics for the object oriented kernel of Java, extending then the treatment to concurrency and distribution relying on the Chemical Abstract machine framework. The basic mechanisms of Java are investigated and formally defined, paving the way for the formal evaluation of Java programs. The semantics is then exploited to define a verification method for Java components, such that their properties can be formally proved.