Software Architecture 1 -  - E-Book

Software Architecture 1 E-Book

0,0
139,99 €

oder
-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

Over the past 20 years, software architectures have significantly contributed to the development of complex and distributed systems. Nowadays, it is recognized that one of the critical problems in the design and development of any complex software system is its architecture, i.e. the organization of its architectural elements. Software Architecture presents the software architecture paradigms based on objects, components, services and models, as well as the various architectural techniques and methods, the analysis of architectural qualities, models of representation of architectural templates and styles, their formalization, validation and testing and finally the engineering approach in which these consistent and autonomous elements can be tackled.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 367

Veröffentlichungsjahr: 2014

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Table of Contents

Preface

Chapter 1 Object-Oriented, Component-Based, Agent-Oriented and Service-Oriented Paradigms in Software Architectures

1.1. Introduction

1.2. History

1.3. Software architecture

1.4. The two dimensions of the conceptual framework for comparison: quantitative and qualitative

1.5. Approaches for integrating development paradigms

1.6. Summary and discussion

1.7. Conclusion

1.8. Bibliography

Chapter 2 Reference Architectures

2.1. Introduction

2.2. Definition of reference architecture

2.3. A model for reference architectures

2.4. Reference architecture engineering

2.5. Uses of reference architectures

2.6. Examples of reference architectures

2.7. Future perspectives of reference architectures

2.8. Final remarks

2.9. Bibliography

Chapter 3 Multihierarchy/Multiview Software Architectures

3.1. Introduction

3.2. Existing viewpoint approaches

3.3. Views in software architecture

3.4. Definitions and basic concepts of multihierarchy/multiview software architectures

3.5. MoVAL: architecture based on models, views and levels of abstraction

3.6. Conclusion

3.7. Bibliography

Chapter 4 Software Architecture and Tools: Distributed and Coordinated Dynamic Reconfiguration Management

4.1. Introduction

4.2. Context

4.3. Dynamic reconfiguration management mechanisms of distributed applications

4.4. Specialization of reconfiguration infrastructures

4.5. Summary of the limitations and challenges of dynamic reconfiguration of distributed systems

4.6. An approach for the implementation of reconfiguration management mechanisms

4.7. Architectural model for distributed dynamic reconfiguration management

4.8. Conclusion

4.9. Bibliography

Chapter 5 Software Architecture for Product Lines

5.1. Introduction to software product lines

5.2. The music store example

5.3. Domain engineering

5.4. Product engineering

5.5. The reference architecture design process

5.6. Further reading

5.7. Conclusion

5.8. Bibliography

Chapter 6 Software Architecture: Service Adaptation Techniques in the Context of Web Services Composition

6.1. Introduction

6.2. Web service composition and verification

6.3. Web service incompatibility and adaptation

6.4. Adaptation approaches

6.5. Conclusion

6.6. Bibliography

List of Authors

Index

 

 

First published 2014 in Great Britain and the United States by ISTE Ltd and John Wiley & Sons, Inc.

Apart from any fair dealing for the purposes of research or private study, or criticism or review, as permitted under the Copyright, Designs and Patents Act 1988, this publication may only be reproduced, stored or transmitted, in any form or by any means, with the prior permission in writing of the publishers, or in the case of reprographic reproduction in accordance with the terms and licenses issued by the CLA. Enquiries concerning reproduction outside these terms should be sent to the publishers at the undermentioned address:

ISTE Ltd27-37 St George’s RoadLondon SW19 4EUUK

www.iste.co.uk

John Wiley & Sons, Inc.111 River StreetHoboken, NJ 07030USA

www.wiley.com

© ISTE Ltd 2014The rights of Mourad Chabane Oussalah to be identified as the author of this work have been asserted by them /her/him in accordance with the Copyright, Designs and Patents Act 1988.

Library of Congress Control Number: 2014934511

British Library Cataloguing-in-Publication DataA CIP record for this book is available from the British LibraryISBN 978-1-84821-600-6

Preface

Over the past two decades, several languages have been proposed to describe software architectures to promote the development of architecture-focused applications. In general, these languages provide formal or semi-formal notations for describing and analyzing software systems. They are usually accompanied by tools designed to analyze, simulate and, sometimes, generate the code for modeled systems. Software architectures have made a real contribution in the development of complex distributed systems. Their main characteristics lie, on the one hand, in their power to manage levels of abstractions and levels of expression in a system and, on the other hand, in their ability to take into account the modeling of the structure and behavior of a system. It is widely accepted today that one of the critical issues in the design and development of any complex software system is its architecture, i.e. the organization of architectural elements that constitute it. Good architecture can facilitate the production of a system’s critical properties (reliability, portability, interoperability, etc.). Conversely, bad architectures can have disastrous consequences on the system. Moreover, good architectures can serve as the system’s “conscience” during its development. In fact, a good architecture guides the evolution process of a system, for instance by indicating which aspects of the system can be modified without compromising its integrity.

Nowadays, new engineering applications, particularly those dedicated to the design and development of object-oriented, component-based, service-oriented, agent-oriented and model-based distributed information systems, have highlighted the evolving nature of manipulated architectural elements and structures associated with them. The sustainability, adaptability and scalability of such systems has become a very important economic issue. In fact, as these systems often require several years (human resources / months) of development and updating, it becomes imperative for these systems to allow for a consequent life and especially to respond to the changing requirements of software architecture manufacturers, builders of applications and end users. In this context, the academic and industrial communities proposed the design and development of new open software architectures (i.e. those that are able to communicate and interface with other architectures), which can be adaptable (i.e. they can be designed according to the operating conditions and different application domains) and scalable (i.e. they will be capable of being completed/modified to take account of services not anticipated in their initial design).

In fact, the software architecture provides a good response to the inherent requirements of complex systems such as:

– the requirement to use and reuse these systems in different environments and contexts. It is thus necessary to be able to remodel (adapting, evolving and re-engineering) so that they can meet, on the one hand, the requirements of their specific usage (e.g. distributed infrastructure, limited resources and different points of view on the composition of different functions) and, on the other hand, new technological requirements (component, service, architectural views, etc.);
– the requirement to reduce development and maintenance costs of these systems by designing them for reuse and composition of reusable architectural elements (objects, components, services and agents). These architectural elements can be identified and extracted from existing systems to be reused in future developments;
– the requirement to update these systems quickly and with minimal cost. In this case, it is necessary to automate the transformation process (structural and behavioral) and promote the reuse of these activities (reuse the evolution process);

– the requirement to control their complexity (understanding and developing these systems, etc.) while handling them with a high level of abstraction.

Nowadays, in light of this, a number of proposals have emerged on component-based and service-based architectures (SOA), agent-oriented architectures and model-based architectures. In any case, the challenges include the improvement of quality and productivity, and the industrialization of software production.

Also, with such a large number of proposals and solutions, it was necessary to review the research and applications concerning architectures in software engineering.

Therefore, we propose a book entitled Software Architectures, which deals with object-oriented, component-based, service-oriented, agent-oriented and model-based software architecture paradigms, with different techniques and architectural methods for analyzing architectural features, models of representation of patterns and styles, their formalization, validation and, finally, the engineering approach in which these coherent and autonomous elements can be managed.

This book is primarily intended for project managers, project owners, architects, designers, developers and users of software architectures, engineering university and school teachers, engineers, Master’s degree and doctoral students and, finally, engineering students.

Mourad Chabane OUSSALAHMarch 2014

Chapter 1

Object-Oriented, Component-Based, Agent-Oriented and Service-Oriented Paradigms in Software Architectures

Recent years have seen object-oriented, component-based, agent-oriented and service-oriented paradigms coexist and develop in parallel. This has led to the emergence of similar or specialist concepts that are often juxtaposed with misinterpretations of vocabulary. These misinterpretations are exacerbated by the existence of hybrid approaches that borrow elements from the four paradigms. Moreover, modern applications that combine these paradigms emphasize this ambient intertwining and the overall understanding becomes more difficult.

The purpose of this chapter is to clarify the boundaries between the paradigms by proposing a conceptual comparative framework based on two quantitative and qualitative approaches. The principle is to concentrate on differentiation of the conceptual aspects that are directly related to the paradigms, as opposed to an approach that compares the different technologies for implementing these paradigms. The aim is to offer architects a better understanding of the implications and consequences of choosing one or the other of these paradigms.

1.1. Introduction

According to Wikipedia, “A programming paradigm is a fundamental style of computer programming that deals with how solutions to problems must be formulated in a programming language”. This chapter focuses on four key paradigms in the field of software development, namely object-oriented software engineering (OOSE), component-based software engineering (CBSE), agent-oriented software engineering (AOSE) and service-oriented software engineering (SOSE). These paradigms will be studied and analyzed in light of real-world construction approaches of distributed applications.

A software development paradigm specifies how an information technology (IT) solution to a problem must be formulated in accordance with clearly defined concepts and mechanisms. It determines the order in which to deal with the problem and provides the means to develop this order, to follow its principles and to implement it in practical terms. Thus, a software development paradigm has its own particular style of developing IT solutions, in terms of analysis, design and development.

By nature, a paradigm is independent of function-specific issues; however, it can encourage certain types of application in order to support specific qualities. However, these qualities are usually associated with specific repercussions. When a paradigm is well suited to an implementation issue, it reduces the need for a costly integration process and isolated solution tests by using a common conceptual framework.

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!