For many years, box and line diagrams have decorated the textthat describes system implementations. These diagrams can beevocative, sometimes inspirational, occasionally informative, butare rarely precise and never complete. Recent years have broughtappreci-ation for the importance of a deliberate structural design,or architecture, for a system. Now, in Documenting SoftwareArchitectures, we have guidance for capturing that knowledge, bothto aid design andperhaps more significantlyto inform subsequentmaintainers, who hold over half the total cost of a systemssoftware in their hands. Half of this cost goes into figuring outhow the system is organized and where to make the change. Adocumented architecture is the essential roadmap for the system,leading the maintainer through the implementation jungle.
Multiple software architecture views are essential because ofthe diverse set of stakeholders (users, acquirers, developers,testers, maintainers, inter-operators, and others) needing tounderstand and use the architecture from their viewpoint. Achievingconsistency among such views is one of the most challenging anddifficult problems in the software architecture field. This book isa tremendously valuable first step in defining analyzable softwarearchitec-ture views and frameworks for integrating them.
documenting software architecture views and beyond pdf download
Download Zip: https://cinurl.com/2vF5Go
We found this book highly valuable for our work with ourbusiness units and would recom-mend it to anyone who wants tounderstand the needs for and improve their skills in describ-ingsoftware architectures for complex systems.
Since our projects involve numerous stakeholders, documentingthe architecture from var-ious views is of particular importance.For this task, this book provides pragmatic and well-structuredguidance and will be an important reference for industrialpractice.
Software architecture is an abstract representation of the mostessential design decisions. It is expressed using concepts that arenot directly visible in software implementation. How to identifythese decisions? How to represent them? How to find the conceptsthat make complex software understandable? This excellent book iswritten by a group of expert archi-tects sharing their experienceand understanding of useful architectural concepts, essentialdesign decisions, and practical ways to represent architecturalviews of complex software.
I particularly appreciate the major theme of the book: that asoftware architecture consists of a variety of differentstructures, each defined by a set of elements and a relationshipamong those elements. I further appreciate the authors pointing outwhy the diagrams that seem so beloved by todays software designersare often deceptive and of little value. (I fre-quently say that insoftware engineering every diagram takes a thousand words toexplain it.) It was also refreshing to see an explanation of whylevels of abstraction, a favorite term of many software designers,is an empty phrase. These are just a few of the elements that mademe impatient to see this book published.
A speaker at a recent software architecture conference, comingto a complex but ultimately inadequate boxes-and-lines-everywhereviewgraph of her systems architecture and deciding that trying toexplain it in front of a crowd would not be a good idea
Prologue: Software Architectures and Documentation 1The prologueestablishes the necessary concepts and vocabulary for the remainderof the book. It discusses how software architecture docu-mentationis used and why it is important. It defines the concepts thatprovide the foundation of the books approach to documentation. Italso contains seven basic rules for sound documentation.
Part I A Collection of Software Architecture Styles 49Part Iintroduces the basic tools for software architecture documentation:archi-tecture styles. A style is a specialization of element andrelationship types, together with constraints on how they may beused. By identifying element and relationship types, stylesidentify the architecture structures that architects design toachieve the systems quality and behavioral goals. There are threefundamental kinds of structures: module structures,component-and-connector structures, and allocation structures.Within each category reside a number of architecture styles. Theintroduction to Part I includes a brief catalog of the styles thatare described in Chapters 15.
Chapter 1 Module Views 55A module is an implementation unit ofsoftware that provides a coherent unit of functionality. Modulesform the basis of many standard architec-ture views. This chapterdefines modules and outlines the information required fordocumenting module views.
Chapter 3 Component-and-Connector Views123Component-and-connector views represent units of execution plusthe pathways and protocols of their interaction. This chapterdefines com-ponents and connectors and describes the rules fordocumenting them.
Chapter 6 Beyond the Basics 217This chapter introducesdocumentation approaches to handle some spe-cial architectureissues and situations, such as breaking a view into chunks,documenting context and variation points, and combining views.
Chapter 7 Documenting Software Interfaces 261The interfaces ofthe elements are critical parts of any architecture, anddocumenting them is an important responsibility for the architect.This chapter tells you how to specify an interface.
Chapter 9 Choosing the Views 315This chapter provides guidancefor selecting views, given the intended use of an architecture:analysis, reconstruction, achieving common under-standing, thebasis for deriving code, and so on.
The cover shows a birds wing, a motif chosen because it has muchin common with software architecture. Rather than appeal to theoverused analogy of house architectures, we find physiologicalsystems to be a richer metaphor for software and systemarchitectures. Among such systems, a birds wing is one of the mostcompelling examples.
Structure, substructure, replication with variation, dynamicbehavior, critical quality attributes, and emergent properties ofthe entire system: All these aspects are important to capture whendocumenting a software architecture. We havent learned how todocument beauty and grace yet, but for that we substi-tute thedocumentation of what the designer had in mind. For software, wecan do this. For the wing of a bird, we can only admire theresult.
The theory and the practice of the architecture ofsoftware-intensive systems are in a very vibrant phase. The earlywork of Mary Shaw and David Garlan in particular gave rise tosoftware architecture as an identifiable domain of study, and inthe years since, weve seen the emergence ofarchitecture-as-an-artifact as a mainstream concern for thedevelopment and evo-lution of systems. This has manifest itself innotations such as the Unified Modeling Language (which wasexplicitly influ-enced by Philippe Kruchtens 4+1 model view ofsoftware archi-tecture) as well as a panoply of architecturalframeworks, such as The Open Group Architecture Framework and theDepart-ment of Defense Architecture Framework. Add to thesemeth-ods such as IBMs Unified Process and, at another extreme, theFederal Segment Architecture Methodology, and it is clear thatarchitecture-as-an-artifact has found an important role in thereasoning about and governing of software-intensive systems.
an intimate dance that occurs between the processes ofarchi-tecting and of implementation. And, to understand and rea-sonabout the architecture of a software-intensive system, one has toconsider multiple views from the perspectives of specific concernsfrom multiple classes of stakeholders.
The most commonly used notation and tool for describing asystems architecture is a boxes-and-lines sketch created on awhiteboard. Such documentation is both expeditious and use-ful, butit is neither enduring nor rigorous nor complete. In this book theauthors offer the definitive reference on the doc-umenting of thearchitecture of software-intensive systems, in ways that areenduring and rigorous and complete. And useful, by the way!
I remember reading the first edition of this book, and e-mailingmy compliments to the authors for producing such a comprehensivereference. Well, theyve outdone themselves. This new edition isbrighter, shinier, more complete, more pragmatic, more focused thanthe previous one, and I wouldnt have thought it possible to improveon the original. As the field of software architecture has grownover these past decades, there is much more to be said, much morethat we know, and much more that we can reflect upon of whatsworked and what hasntand the authors here do all that, andmore.
Ten years ago, I was brought in to lead the architecture team ofa new and rather ambitious command-and-control system. After somerocky beginnings, the architectural design work started to proceedfull speed, and the architects were finally forging ahead,inventing and resolving and designing and try-ing, almost in aeuphoric state. We had many brainstorming sessions, fillingwhiteboards with design fragments and note-books with scribblings;various prototypes validated or invali-dated our reasoning. As thedevelopment team grew in size, the architects had to explain theprinciples of the nascent architecture to a wider and wideraudience, consisting of not only new developers but also manyparties external to the development group. Some were intrigued bythis new concept of a software architecture. Some wanted to knowhow this architecture would impact them: for planning, fororganizing the teams and the contractors, for delivery of thesystem, for acquisition of some of the system parts. Some partieswanted to influence the design of this architecture. Furtherremoved from development, customers and prospects wanted a peek,too. So the architects had to spend hours and days describing thearchitecture in various forms and levels and tones to variedaudiences, so that each party could better understand it.
The key problem we faced at the time was: What do we doc-umentfor a software architecture? How do we document it? What outline dowe use? What notation? How much or how lit-tle? There were fewexemplars of architectural description for systems as ambitious asours. Driven by necessity, we improvised. We made some mistakes andcorrected some. We discovered rapidly that architecture is not flatbut rather a multidimen-sional reality, with several intertwinedfacets, and some facets or viewsof interest to only a few parties.We found out that many readers would not even open a document thatweighed more than a pound, and we would have a difficult timeupdat-ing it anyhow. We realized that without capturing the reasonsfor our choices, we were doomed to reconstruct them again andagain, every time a new stakeholder with a sharp mind came around.We picked a visual notation, not too vague and fuzzy but not tooesoteric and convoluted, either, in order to not discourage mostparties. 2ff7e9595c
Comments