Download Free Algebraic Specification Techniques And Tools For Software Development Book in PDF and EPUB Free Download. You can read online Algebraic Specification Techniques And Tools For Software Development and write the review.

The intention of this book is to show how algebraic specification methods can be used for software development to support reliability, modifiability and reusability. These methods are introduced by parameterized and module specifications through practical examples and case studies using algebraic specification languages and tools developed at TU Berlin.
This book provides foundations for software specification and formal software development from the perspective of work on algebraic specification, concentrating on developing basic concepts and studying their fundamental properties. These foundations are built on a solid mathematical basis, using elements of universal algebra, category theory and logic, and this mathematical toolbox provides a convenient language for precisely formulating the concepts involved in software specification and development. Once formally defined, these notions become subject to mathematical investigation, and this interplay between mathematics and software engineering yields results that are mathematically interesting, conceptually revealing, and practically useful. The theory presented by the authors has its origins in work on algebraic specifications that started in the early 1970s, and their treatment is comprehensive. This book contains five kinds of material: the requisite mathematical foundations; traditional algebraic specifications; elements of the theory of institutions; formal specification and development; and proof methods. While the book is self-contained, mathematical maturity and familiarity with the problems of software engineering is required; and in the examples that directly relate to programming, the authors assume acquaintance with the concepts of functional programming. The book will be of value to researchers and advanced graduate students in the areas of programming and theoretical computer science.
"I prefer to view formal methods as tools. the use of which might be helpful." E. W. Dijkstra Algebraic specifications are about to be accepted by industry. Many projects in which algebraic specifications have been used as a design tool have been carried out. What prevents algebraic specifications from breaking through is the absence of introductory descriptions and tools supporting the construction of algebraic specifications. On the one hand. interest from industry will stimulate people to make introductions and tools. whereas on the other hand the existence of introductions and tools will stimulate industry to use algebraic specifications. This book should be seen as a contribution towards creating this virtuous circle. The book will be of interest to software designers and programmers. It can also be used as material for an introductory course on algebraic specifications and software engineering at undergraduate or graduate level. Nowadays. there is general agreement that in large software projects appropriate specifications are a must in order to obtain quality software. Informal specifications alone are certainly not appropriate because they are incomplete. inconsistent. inaccurate and ambiguous and they rapidly become bulky and therefore useless. The only way to overcome this problem is to use formal specifications. An important remark here is that a specification formalism (language) alone is not sufficient. What is also needed is a design method to write specifications in that formalism.
The aim of this book is to present fundamentals of algebraic specifications with respect to the following three aspects: fundamentals in the sense of a carefully motivated introduction to algebraic specifications, which is easy to understand for computer scientists and mathematicians; fundamentals in the sense of mathematical theories which are the basis for precise definitions, constructions, results, and correctness proofs; and fundamentals in the sense of concepts, which are introduced on a conceptual level and formalized in mathematical terms. The book is equally suitableas a text book for graduate courses and as a reference for researchers and system developers.
Language prototyping provides a means to generate language implementations automatically from high-level language definitions. This volume presents an algebraic specification approach to language prototyping, and is centered around the ASF+SDF formalism and Meta-Environment. The volume is an integrated collection of articles covering a number of case studies, and includes several chapters proposing new techniques for deriving advanced language implementations. The accompanying software is freely available.
This book contains selected papers on the language, applications, and environments of CafeOBJ, which is a state-of -the-art algebraic specification language. The authors are speakers at a workshop held in 1998 to commemorate a large industrial/academic project dedicated to CafeOBJ. The project involved more than 40 people from more than 10 organisations, of which 6 are industrial. The workshop attracted about 30 talks and more than 70 attendees.The papers in the book however, are either heavily revised versions presented at the workshop, to reflect recent advancements or research; or completely new ones, written especially for this book. In this regard, the book is not a usual postpublication after a workshop. Also, although it is a compendium of papers that are related to CafeOBJ, the book is not a manual, reference, or tutorial of CafeOBJ. Probably the best description is that it is a collection of papers that investigate how to use, or to make it easy to use, CafeOBJ. Reflecting the diverse nature of the project and its participants (most of the authors are participants to the project), the papers, put together, offer a comprehensive picture from this methodological perspective.Some papers deal with various advanced aspects of the language, such as rewriting logic and behavioural logic. For rewriting logic, a couple of significant applications were reported. In particular, UML, now considered de facto standard language for modelling systems, is the subject of one paper. For behavioural logic, new methodological guidelines are presented. Some papers shed new light on a more traditional paradigm in the language; order-sorted equational specifications. One paper, in particular, deal with a way to associate CafeOBJ with object-oriented programming. The other papers deal with environments for writing and vertifying specifications written in CafeOBJ. Underlying those papers are two major considerations: user interfaces for manipulating specifications, and systematic supports for proofs. All the environments explained in the papers assume and support distributed computing, and de facto standard network technologies, such as WWW and http, are incorporated.
The intention of this book is to show how algebraic specification methods can be used for software development to support reliability, modifiability and reusability. These methods are introduced by parameterized and module specifications through practical examples and case studies using algebraic specification languages and tools developed at TU Berlin.
This is a report on the formal definition of the CafeOBJ algebraic specification language, which is a modern successor to the famous algebraic language OBJ. While the equational core of CafeOBJ is just a reshaping of OBJ, CafeOBJ significantly extends OBJ by incorporating several recent major developments in the area of algebraic specification, such as behavioural specification and rewriting logic. The definition of the language parallels its logical semantics based on the so-called institutions, which also provide a methodological framework for structuring the presentation of the basic constructs of the language and their semantics. This report presents all the basic constructs of the language together with their semantics and addresses both the programming in-the-small and in-the-large levels. However, it also discusses proof systems and technologies, as well as methodologies. Examples are provided throughout the report as intuitive support for the definitions of the constructs and for illustrating proof techniques and methodologies.
Building software often seems harder than it ought to be. It takes longer than expected, the software's functionality and performance are not as wonderful as hoped, and the software is not particularly malleable or easy to maintain. It does not have to be that way. This book is about programming, and the role that formal specifications can play in making programming easier and programs better. The intended audience is practicing programmers and students in undergraduate or basic graduate courses in software engineering or formal methods. To make the book accessible to such an audience, we have not presumed that the reader has formal training in mathematics or computer science. We have, however, presumed some programming experience. The roles of fonnal specifications Designing software is largely a matter of combining, inventing, and planning the implementation of abstractions. The goal of design is to describe a set of modules that interact with one another in simple, well defined ways. If this is achieved, people will be able to work independently on different modules, and yet the modules will fit together to accomplish the larger purpose. In addition, during program maintenance it will be possible to modify a module without affecting many others. Abstractions are intangible. But they must somehow be captured and communicated. That is what specifications are for. Specification gives us a way to say what an abstraction is, independent of any of its implementations.
This book constitutes the refereed proceedings of the 8th International Conference on Formal Engineering Methods, ICFEM 2006, held in Macao, China, in November 2006. The 38 revised full papers presented together with three keynote talks were carefully reviewed and selected from 108 submissions. The papers address all current issues in formal methods and their applications in software engineering.