Categories for Software Engineering (PDF)
This book provides a gentle, software engineering oriented introduction to category theory. Assuming only a minimum of mathematical preparation, this book explores the use of categorical constructions from the point of view of the methods and techniques...
- Lastschrift, Kreditkarte, Paypal, Rechnung
- Kostenloser tolino webreader
This book provides a gentle, software engineering oriented introduction to category theory. Assuming only a minimum of mathematical preparation, this book explores the use of categorical constructions from the point of view of the methods and techniques that have been proposed for the engineering of complex software systems: object-oriented development, software architectures, logical and algebraic specification techniques, models of concurrency, inter alia. After two parts in which basic and more advanced categorical concepts and techniques are introduced, the book illustrates their application to the semantics of CommUnity - a language for the architectural design of interactive systems.
"For computer scientists, this unique book presents Category Theory in a manner tailored to their interests and with examples to which they can relate." Ira Forman, IBM
"This book applies little-known yet quite powerful formal tools from category theory to software structures: designs, architectures, patterns, and styles. Rather than focus on issues at the level of computational models and semantics, it instead applies these tools to some of the problems facing the sophisticated software architect. The terminology and mind set (Parts 1 and 2), while different from many common approaches, can provide startlingly concise expression of key properties of software systems (Part 3), and give rigorous meaning to entire families of box-and-line architecture drawings. It is applicable to the formal specification, decomposition, and composition of service-oriented architectures." Desmond D'Souza, Kinetium
9.1 Motivation
Although components have always been considered to be the fundamental building blocks of software systems, it is in the way that the components of a system interact that the emergence of global properties of the system resides. With no interaction there is no emergence of new behaviour and, therefore, no value to the system as a whole that is not already provided through its components in isolation.
We can safely say that most of the complexity of system construction lies in the definition of the interconnections that should regulate how components interact. Designing small, encapsulated components that, through the computations that they perform locally, provide services with certain functionalities is something that can be mastered, without much difficulty, with existing methods and development techniques.
Knowing how to interconnect components so that, from the interactions, the global properties that are required of the system can emerge is a totally different matter. Most of the time, it is an error-prone process. What in the literature is known as the "feature interaction problem" [111] is just a symptom of this difficulty: the emergence of "strange", "unexpected" or "undesired" behaviour from feature composition is intrinsic to the use of methods for putting together systems from individual features as basic units of functionality. While we compose features having in mind the emergence of certain properties that constitute requirements on the behaviour of the system, it is difficult to predict which other forms of behaviour will also emerge, namely ones that are not of interest and whose "negation" is normally omitted from the requirements specification because one never thought of them being possible.
Situations like feature interaction are not problems that need to be solved. They are phenomena that are intrinsic to the way we build systems and that "just" need to be
Change becomes a first-class design goal and requires business and technology architecture whose components can be added, modified, replaced and reconfigured". All this means that the "complexity" of software has definitely shifted from construction to evolution, and that methods and technologies are required that address this new level of complexity and adaptability.
Software architecture [50, 88] is a "recent" topic in software engineering aimed at addressing the gross decomposition and organisation of systems in which, through so-called connectors, component interactions are recognised as being first-class design entities [98]. According to [2], a connector (type) can be defined by a set of roles and a glue specification. For instance, a typical client-server architecture can be captured by a connector type with two roles - client and server - that describe the expected behaviour of clients and servers, and a glue that describes how the activities of the roles are coordinated (e.g. asynchronous communication between the client and the server).
The roles of a connector type can be instantiated with specific components of the system under construction, which leads to an overall system structure consisting of components and connector instances establishing the interactions between the components. The similarities between architectural constructions as informally described above and parameterised programming [56] are rather striking and have been developed in [59] in the context of the emerging interest in software architecture. The view of architecture that is captured by the principles and formalisms of parameterised programming is reminiscent of module interconnection languages and interface definition languages [55].
Professor at the University of Leicester; Visiting Scientist at Imperial College, King's College London, SRI International and the University of Pisa; Chairman of the IFIP WG1.3 - Foundations of System Specification; Chairman of the Steering Committee of the European Joint Conferences on Theory and Practice of Software; Winner of an IBM Award in 1996 for his work on Emergence in Complex Software Systems
- Autor: Jose Luiz Fiadeiro
- 2005, 2005, 250 Seiten, Englisch
- Verlag: Springer-Verlag GmbH
- ISBN-10: 354026891X
- ISBN-13: 9783540268918
- Erscheinungsdatum: 09.08.2005
Abhängig von Bildschirmgröße und eingestellter Schriftgröße kann die Seitenzahl auf Ihrem Lesegerät variieren.
- Dateiformat: PDF
- Größe: 12 MB
- Ohne Kopierschutz
- Vorlesefunktion
Schreiben Sie einen Kommentar zu "Categories for Software Engineering".
Kommentar verfassen