Applied Software Architecture Author: Christine Hofmeister | Robert Nord | Dilip Soni. 95 downloads Views 3MB Size Report. This content was uploaded. Applied software architecture / Christine Hofmeister, Robert Nord, Dilip Soni. Author. Hofmeister, Christine. Other Authors. Nord, Robert. Soni, Dilip. Published. Applied Software Architecture. Christine Hofmeister,. Robert Nord, Dilip Soni. • Design and Use of Software Architectures: Adopting and.
|Language:||English, Indonesian, Portuguese|
|ePub File Size:||29.83 MB|
|PDF File Size:||12.34 MB|
|Distribution:||Free* [*Register to download]|
Request PDF on ResearchGate | On Jan 1, , Christine Hofmeister and others published Applied Software Architecture. Authors: Christine Hofmeister Downloads (12 Months): n/a Applied Software Architecture is the best book yet that gives guidance as to how to sort out and. Applied software architecture Average downloads per article, Dilip Soni, Christine Hofmeister, Effective software architecture design: from global.
The heart of the book is an introduction to the most relevant architectural views, grouped into three major families which we call viewtypes along with practical guidance about how to write them down. Examples are included for each. Once documentation has been created, it should be reviewed before turning it over to those stakeholders who depend on its quality. We give a practical method for reviewing architectural documentation.
The audience for this book includes the people involved in the production and consumption of architectural documentation, which is to say the community of software developers. We believe strongly in the importance of architecture in building successful systems. But no architecture can achieve this if it is not effectively communicated, and documentation is the key to successful communication.
We hope we have provided a useful handbook for practitioners in the field. However, it was also written keeping in mind those who digest and use that documentation. A software architect can provide this book as a companion to his or her documentation, pointing consumers to specific sections that explain documentation organizing principles, notations, concepts, or conventions.
We assume basic familiarity with the concepts of software architecture, but also provide pointers to sources of information to fill in the background. In many cases, we will sharpen and solidify basic concepts that you already may be familiar with: architectural views, architectural styles, and interfaces are all cases in point. Contents and Organization The book is organized into three parts. Part I: Setting the Stage.
This part lays the groundwork for the book. This chapter explains what software architecture is, what uses it has, and why it needs to be written down to realize its full potential. It also presents seven rules for achieving high-quality software documentation in general, and architecture documentation in particular.
This chapter establishes the overall organization and contents of a complete software architecture documentation package. Such a package consists of the documentation of views, and the documentation of information that applies across views.
Along the way it introduces basic concepts used in documentation, such as information chunking, refinement, context diagrams, and specifying interfaces. In the cross-view part of the package, a view catalog, capturing rationale, and mappings among views are described.
This chapter establishes the information needed to adequately specify an interface, and explores the issues associated with doing so. This part introduces the basic tools for software architecture documentation: the viewtypes.
A viewtype is a specification of the kind of information to be provided in a view. There are three basic viewtypes Modules, Component-and-Connectors, and Allocation. Within each viewtype reside a number of architectural styles, or specializations of the viewtype. A module is an implementation unit of software that provides a coherent unit of functionality.
Modules form the basis of many standard architectural views. This chapter defines modules, and outlines the information required for documenting views whose elements are modules. This chapter introduces the prevalent styles in the module viewtype: decomposition, uses, generalization the style that includes object-based inheritance , and layers.
Components and connectors are used to describe the run-time structure s of a software system, and they can exist in many forms: processes, objects, clients, servers, and data stores.
Custom textbooks and eBooks
Component-and-connector models include as elements the pathways of interaction, such as communication links and protocols, information flows, and access to shared storage. Often these interactions will be carried out using complex infrastructure, such as middleware frameworks, distributed communication channels, and process schedulers.
This chapter introduces components and connectors, and rules for documenting them. This chapter introduces the major styles of the component and connector viewtype, including datastream, call-return, client-server, shared data, and publish-subscribe.
For each, it describes how the style is a specialization of the generic elements and relations of the viewtype, what the style is useful for, and how it is documented. Software architects are often obliged to document nonarchitectural structures and show how their software designs are mapped to them: the computing environment in which their software will run, the organizational environment in which it will be developed, etc. This chapter introduces the allocation viewtype, which is used to express the allocation of software elements to non-software structures.
This chapter introduces the three major styles of the allocation viewtype: the deployment style, which allocates software to hardware processing and communication units; the implementation style, which allocations software units to a configuration structure; and the work assignment style, which allocates software units to development teams in an organizational structure.
This part concentrates on the complete package of architecture documentation that is incumbent on a good architect to produce. It completes the picture painted by the first two parts. This chapter discusses concepts that cut across viewtypes and that are more advanced in nature.
These concepts are: — expressing variability of the architecture within the documentation such as for product lines; — expressing the architecture of dynamic systems that change their basic structure while they are running.
This common practice has some advantages in particular cases but there are also common pitfalls that occur in combined views. This chapter covers the techniques and notations available for expressing the behavior of components and the emergent system as it runs.
This chapter provides guidance for the selection of views, given the intended usage of an architecture analysis, reconstruction, achieving common understanding, basis for deriving code, etc. This chapter presents the technique of active design reviews as the best-of-breed review method for documentation, and gives example review forms for the architectural views and styles we have presented earlier.
This chapter ties related work to the prescriptions given in this book. Stylistic conventions Our metaphor for this book is that of a highway that gets you where you want to go quickly and efficiently. We have used the main flow of the text as our highway: If all you care about is how to document software architecture and are not interested in any background, related concepts, history, or other diversions, then you should just stay on the highway. In this book we use sidebars -- visually distinguished diversions from the straight-line flow -- to provide alternative routes through the book.
Real highways have on-ramps that get you up to speed.
Some of these sidebar on-ramps are of a special variety that give extended background on relevant terminology. In this book, information signs include concise term definitions, such as this one: Copyright Addison Wesley, all rights reserved 9 Draft for review: Do not circulate without permission Documenting Software Architectures Clements, Bachmann, Bass, Garlan, Ivers, LIttle, Nord, Stafford Definition A view is a representation of a set of system elements and relationships among them.
They also include prescriptive advice or rules for architecture documentation, shown thus: Advice Every graphical presentation should include a key that explains the notation used. Information signs can also point you to a source of more information: For more information Section 7. Occasionally there are historical markers that provide historical context for the area. We give historical discussions in sidebars that look like this: istorical background The idea that architectures comprise multiple views dates to a paper by Parnas in There are also scenic overlooks where you can stop and ponder ideas.
In this book, we call these observations: Observation One of the most confusing sources of documentation comes when people try to mix too much information in a single presentation without clearly distinguishing and identifying the various aspects that are being conveyed.
It gives an overview of software architecture basics and a detailed guide to architecture design tasks, focusing on four fundamental views of architecture--conceptual, module, execution, and code.
Through four real-life case studies, this book reveals the insights and best practices of the most skilled software architects in designing software architecture. These case studies, written with the masters who created them, demonstrate how the book's concepts and techniques are embodied in state-of-the-art architecture design. Anyone involved in software architecture will find this book a valuable compendium of best practices and an insightful look at the critical role of architecture in software development.
From the Inside Flap: Software architecture is a recently emerged technical field, but it's not a new activity; there have always been good designers who create good software architectures. However, now the consensus is that what these designers do is qualitatively different from other software engineering activities, and we've begun figuring out how they do it and how we can teach others to do it.
Software architecture is not just a new label for an old activity; software architects today face new challenges. They are asked to produce increasingly complex software. Using the latest technologies, but these technologies are changing faster than ever. And they are asked to produce better quality software with a shorter time-to-market.
Instead of seeing the architecture as necessarily complicated by these staggering requirements, we need to realize that the architecture is our most powerful tool in meeting them. This book is a practical guide to designing, describing, and applying software architecture. The book began as a study of software architecture in industry, specifically at our company--Siemens.
The study told us how practitioners define software architecture, what problems they are trying to solve with it, and how and why they choose particular architectural solutions.
We examined how architects design systems so that today's technology can be replaced with tomorrow's. We saw how the experts abstracted the essential aspects of their real-time, safety-critical reliability and performance requirements so that they could make good architectural decisions consistently. We also saw how good architecture descriptions improved the development process, making it easier to develop high-quality software in a shorter time.
We saw how managers' understanding of the architecture was critical in organizing and scheduling the project. We saw how developers depended on the architecture to define interfaces and boundaries between their component and others, and to target maintenance activities.
This book also grew from our experience with software architecture as we applied the principles and techniques we saw the experts use. The description techniques helped uncover architectural problems in existing systems.
The design principles guided us in defining architectures for new systems and for proposing solutions to problems in existing systems.
Road Map Part I of this book provides important background information for understanding what we mean by software architecture, and how we structure the architecture design tasks.
The study told us how practitioners define software architecture, what problems they are trying to solve with it, and how and why they choose particular architectural solutions. We examined how architects design systems so that today's technology can be replaced with tomorrow's. We saw how the experts abstracted the essential aspects of their real-time, safety-critical reliability and performance requirements so that they could make good architectural decisions consistently.
We also saw how good architecture descriptions improved the development process, making it easier to develop high-quality software in a shorter time. We saw how managers' understanding of the architecture was critical in organizing and scheduling the project.
In this section:
We saw how developers depended on the architecture to define interfaces and boundaries between their component and others, and to target maintenance activities. This book also grew from our experience with software architecture as we applied the principles and techniques we saw the experts use.
The description techniques helped uncover architectural problems in existing systems. The design principles guided us in defining architectures for new systems and for proposing solutions to problems in existing systems. Road Map Part I of this book provides important background information for understanding what we mean by software architecture, and how we structure the architecture design tasks. In Part II we define the architecture design tasks, and use a running example to show how they are applied to the design of a software architecture.
The example system, IS, is an image acquisition and processing system. We don't provide its complete architecture design, but instead describe one of its subsystems in detail. The Additional Reading section at the end of each chapter in Parts I and II dives references to sources of more information on software architecture. Part III contains detailed descriptions of four industrial systems. These systems come from our original industrial study and they represent the state-of-the-art in software architecture.We saw how managers' understanding of the architecture was critical in organizing and scheduling the project.
Favorites: What were your favorite parts of the book and why? There is no shortage of heavily-marketed tool suites available for capturing design information, especially in the realm of object-oriented systems. But the whole wing is much more than the sum of its elements and structures -- it is in the whole that beauty and grace emerge.
Table 2. Along the way it introduces basic concepts used in documentation, such as information chunking, refinement, context diagrams, and specifying interfaces.
ISBN 13: 9780201325713
Software Architecture. The heart of the book is an introduction to the most relevant architectural views, grouped into three major families which we call viewtypes along with practical guidance about how to write them down. This is, of course, what we recommend for software architects and all others who want a thorough understanding of software architecture. Will fail.