pdf viewer in c# code project : How to copy and paste an image from a pdf application control cloud windows web page html class software-architecture-practice120-part1350

[ Team LiB ]
Chapter 9. Documenting Software Architectures
with Felix Bachmann, David Garlan, James Ivers, Reed Little, Robert Nord, and Judith Stafford
Note:
Felix, James, Reed, and Robert are members of the SEI technical staff; David is an associate
professor at Carnegie Mellon University's School of Computer Science; and Judith is an assistant
professor at Tufts University's Department of Computer Science.
Books are the bees which carry the quickening pollen from one to another mind.
—James Russell Lowell
As we have seen over and over, the software architecture for a system plays a central role in system
development and in the organization that produces it. The architecture serves as the blueprint for both the
system and the project developing it. It defines the work assignments that must be carried out by design
and implementation teams and it is the primary carrier of system qualities such as performance,
modifiability, and security—none of which can be achieved without a unifying architectural vision.
Architecture is an artifact for early analysis to make sure that the design approach will yield an acceptable
system. Moreover, architecture holds the key to post-deployment system understanding, maintenance,
and mining efforts. In short, architecture is the conceptual glue that holds every phase of the project
together for all of its many stakeholders.
Documenting the architecture is the crowning step to crafting it. Even a perfect architecture is useless if
no one understands it or (perhaps worse) if key stakeholders misunderstand it. If you go to the trouble of
creating a strong architecture, you 
must
describe it in sufficent detail, without ambiguity, and organized in
such a way that others can quickly find needed information. Otherwise, your effort will have been wasted
because the architecture will be unusable.
This chapter will help you decide what information about an architecture is important to capture, and it will
discuss guidelines for capturing it. It will also discuss notations that are available, including UML.
[ Team LiB ]
This PDF file was converted by Atop CHM to PDF Converter free version!  http://www.chmconverter.com/chm-to-pdf/
Addison Wesley : Software Architecture in Practice, Second Edition
200 / 463
How to copy and paste an image from a pdf - copy, paste, cut PDF images in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Detailed tutorial for copying, pasting, and cutting image in PDF page using C# class code
paste image into preview pdf; how to copy a picture from a pdf to a word document
How to copy and paste an image from a pdf - VB.NET PDF copy, paste image library: copy, paste, cut PDF images in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
VB.NET Tutorial for How to Cut or Copy an Image from One Page and Paste to Another
how to cut image from pdf file; copy picture from pdf to powerpoint
[ Team LiB ]
9.1 Uses of Architectural Documentation
The architecture for a system depends on the requirements levied on it, so too does the documentation
for an architecture depend on the requirements levied on it—that is, how we expect it will be used.
Documentation is decidedly 
not
a case of "one size fits all." It should be sufficiently abstract to be quickly
understood by new employees but sufficiently detailed to serve as a blueprint for analysis. The
architectural documentation for, say, security analysis may well be different from the architectural
documentation we would hand to an implementor. And both of these will be different from what we put in a
new hire's familiarization reading list.
Architecture documentation is both prescriptive and descriptive. That is, for some audiences it prescribes
what should be true by placing constraints on decisions to be made. For other audiences it describes
what is true by recounting decisions already made about a system's design.
All of this tells us that different stakeholders for the documentation have different needs—different kinds
of information, different levels of information, and different treatments of information. We should not
expect to produce one architectural document and have every consumer read it in the same way. Rather,
we should produce documentation that helps a stakeholder quickly find the information that stakeholder is
interested in, with a minimum of information that is irrelevant (to that stakeholder) standing in the way.
This might mean producing different documents for different stakeholders. More likely, it means producing
a single documentation suite with a roadmap that will help different stakeholders navigate through it.
One of the most fundamental rules for technical documentation in general, and software architecture
documentation in particular, is to write from the point of view of the reader. Documentation that was easy
to write but is not easy to read will not be used, and "easy to read" is in the eye of the beholder—or in this
case, the stakeholder.
Understanding who the stakeholders are and how they will want to use the documentation will help us
organize it and make it accessible to and usable for them. Back in Chapter 2
, we said that a primary
purpose of architecture was to serve as a communication vehicle among stakeholders. Documentation
facilitates that communication. Some examples of architectural stakeholders and the information they
might expect to find in the documentation are given in Table 9.1
.
In addition, each stakeholders come in two varieties: seasoned and new. A new stakeholder will want
information similar in content to what his seasoned counterpart wants, but in smaller and more
introductory doses. Architecture documentation is a key means for educating people who need an
overview: new developers, funding sponsors, visitors to the project, and so forth.
Perhaps one of the most avid consumers of architectural documentation is none other than the architect
at some time in the project's future—either the same person or a replacement but in either case someone
guaranteed to have an enor mous stake in it. New architects are interested in learning how their
predecessors tackled the difficult issues of the system and why particular decisions were made.
Documentation as an Introduction to Software
Architecture
I had just finished my presentation on the Attribute Driven Design (ADD) method (see Chapter
7
). The customer, a group within a business unit of a large manufacturing company, had seen
most of our wares: ATAM (Chapter 11
), reconstruction (Chapter 10
), and our overall product
line pitch (Chapter 14
). I sat back, satisfied, and waited expectantly.
The customer had a problem however. They wanted to do architecture-based development,
but they had a small development group and it would take several years to internalize all that
we had shown them. In the meantime, they had products to make and contracts to meet. They
just did not have the resources to do all of what they had seen. We needed something to let
This PDF file was converted by Atop CHM to PDF Converter free version!  http://www.chmconverter.com/chm-to-pdf/
Addison Wesley : Software Architecture in Practice, Second Edition
201 / 463
C# PDF Image Extract Library: Select, copy, paste PDF images in C#
How to C#: Extract Image from PDF Document. List<PDFImage> allImages = PDFImageHandler. ExtractImages(page); C#: Select An Image from PDF Page by Position.
copy image from pdf preview; pasting image into pdf
VB.NET PDF Image Extract Library: Select, copy, paste PDF images
VB.NET PDF - Extract Image from PDF Document in VB.NET. Support PDF VB.NET : Select An Image from PDF Page by Position. Sample for
copy and paste images from pdf; copy image from pdf to word
them get started on the architecture path without having to understand everything involved.
The discussion turned to documentation and the book we were writing on documenting
software architecture. The customer was interested in documentation as a means of
maintaining corporate knowledge about their products. We ended this meeting agreeing to do
an exercise in architectural reconstruction and to document the results according to the
principles described in this chapter.
I had always thought of documentation as the tail end of the design and development process.
It is necessary for all of the reasons that architecture is necessary (communication, analysis,
and education), but it is a derivative, not a driver.
The customer had a different perspective. They viewed documenting the software architecture
as an ideal training vehicle for their developers. They had to do documentation in any case, so
giving them a template for what to document was squarely in the corporate culture. In the
process of filling in the templates, they would have to document different views (part of the
engagement was for us to define the views useful to them), they would need to argue about
how the artifact they were designing satisfied different quality goals, and, in general, they
could learn about architectural concepts in the process of documentation.
This use of documentation as a training vehicle was a new one to me, but it has a great deal
of power. For someone enmeshed in the details of the bits, thinking about architecture and
architectural issues is a big jump. Understanding the mindset involved in software architecture
through documentation seems to be a very good educational tool without a great deal of
overhead for the consumer.
— LJB
Even if the future architect is the same person, that architect will use the documentation as a repository of
thought, as a storehouse of detailed design decisions too numerous and intertwined to be reproducible
from memory alone.
Table 9.1. Stakeholders and the Communication Needs Served by Architecture
Stakeholder Use
Architect and
requirements
engineers
who
represent
customer(s)
To negotiate and make tradeoffs among competing requirements
Architect and
designers of
constituent
parts
To resolve resource contention and establish performance and other kinds of runtime
resource consumption budgets
Implementors To provide inviolable constraints (plus exploitable freedoms) on downstream development
activities
Testers and
integrators
To specify the correct black-box behavior of the pieces that must fit together
Maintainers To reveal areas a prospective change will affect
Designers of
other
systems with
which this
one must
interoperate
To define the set of operations provided and required, and the protocols for their
operation
Quality
To provide the model that drives analytical tools such as rate-monotonic real-time
This PDF file was converted by Atop CHM to PDF Converter free version!  http://www.chmconverter.com/chm-to-pdf/
Addison Wesley : Software Architecture in Practice, Second Edition
202 / 463
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
C#.NET PDF Library - Copy and Paste PDF Pages in C#.NET. Easy to C#.NET Sample Code: Copy and Paste PDF Pages Using C#.NET. C# programming
pdf cut and paste image; copy and paste image into pdf
VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in vb.
VB.NET DLLs: Extract, Copy and Paste PDF Page. Dim page As PDFPage = doc.GetPage(3) ' Select image by the point (50F, 100F).
how to copy pdf image to powerpoint; paste jpg into pdf preview
attribute
specialists
schedulability analysis, simulations and simulation generators, theorem provers, verifiers,
etc. These tools require information about resource consumption, scheduling policies,
dependencies, and so forth. Architecture documentation must contain the information
necessary to evaluate a variety of quality attributes such as security, performance,
usability, availability, and modifiability. Analyses for each attributes have their own
information needs.
Managers
To create development teams corresponding to work assignments identified, to plan and
allocate project resources, and to track progress by the various teams
Product line
managers
To determine whether a potential new member of a product family is in or out of scope,
and if out by how much
Quality
assurance
team
To provide a basis for conformance checking, for assurance that implementations have
been faithful to the architectural prescriptions
Source:
Adapted from [Clements 03
]
[ Team LiB ]
This PDF file was converted by Atop CHM to PDF Converter free version!  http://www.chmconverter.com/chm-to-pdf/
Addison Wesley : Software Architecture in Practice, Second Edition
203 / 463
C# PDF insert image Library: insert images into PDF in C#.net, ASP
C#.NET PDF SDK - Add Image to PDF Page in C#.NET. How to Insert & Add Image, Picture or Logo on PDF Page Using C#.NET. Add Image to PDF Page Using C#.NET.
extract images from pdf files without using copy and paste; copy image from pdf to powerpoint
VB.NET PDF insert image library: insert images into PDF in vb.net
VB.NET PDF - Add Image to PDF Page in VB.NET. Insert Image to PDF Page Using VB. Add necessary references: RasterEdge.Imaging.Basic.dll.
how to cut pdf image; copy and paste image from pdf
[ Team LiB ]
9.2 Views
Perhaps the most important concept associated with software architecture documentation is the 
view
.
Recall from Chapter 2
that we defined a software architecture for a system as "the structure or structures
of the system, which comprise elements, the externally visible properties of those elements, and the
relationships among them." And we said that a view is a representation of a coherent set of architectural
elements, as written by and read by system stakeholders. A structure is the set of elements itself, as they
exist in software or hardware.
Also in Chapter 2
we discussed a software architecture as a complex entity that cannot be described in a
simple one-dimensional fashion. The analogy with building architecture, if not taken too far, proves
illuminating. There is no single rendition of a building architecture but many: the room layouts, the
elevation drawings, the electrical diagrams, the plumbing diagrams, the ventilation diagrams, the traffic
patterns, the sunlight and passive solar views, the security system plans, and many others. Which of
these views 
is
the architecture? None of them. Which views 
convey
the architecture? All of them.
The concept of a view, which you can think of as capturing a structure, provides us with the basic
principle of documenting software architecture:
Documenting an architecture is a matter of documenting the relevant views and then adding
documentation that applies to more than one view.
This principle is useful because it breaks the problem of architecture documentation into more tractable
parts, which provide the structure for the remainder of this chapter:
Choosing the relevant views
Documenting a view
Documenting information that applies to more than one view
[ Team LiB ]
This PDF file was converted by Atop CHM to PDF Converter free version!  http://www.chmconverter.com/chm-to-pdf/
Addison Wesley : Software Architecture in Practice, Second Edition
204 / 463
C# Create PDF from images Library to convert Jpeg, png images to
Best and professional C# image to PDF converter SDK for Visual Studio .NET. C#.NET Example: Convert One Image to PDF in Visual C# .NET Class.
how to copy pictures from pdf to powerpoint; copying image from pdf to word
C# PDF Library SDK to view, edit, convert, process PDF file for C#
load PDF from other file formats; merge, append, and split PDF files; insert, delete, move, rotate, copy and paste PDF file page. C#.NET: Process PDF Image.
how to copy pictures from pdf to word; paste jpeg into pdf
[ Team LiB ]
9.3 Choosing the Relevant Views
Recall that we introduced a set of structures and views in Chapter 2
. What are the relevant views? This is
where knowing your stakeholders and the uses they plan to make of the documentation will help you
construct the documentation package they need. The many purposes that architecture can serve—as a
mission statement for implementors, as the starting point for system understanding and asset recovery, as
the blueprint for project planning, and so forth—are each represented by a stakeholder wanting and
expecting to use the documentation to serve that purpose. Similarly, the quality attributes of most concern
to you and the other stakeholders in the system's development will affect the choice of what views to
document. For instance, a 
layered view
will tell you about your system's portability. A 
deployment view
will let you reason about your system's performance and reliability. And so it goes. These quality attributes
are "spoken for" in the documentation by analysts (perhaps even the architect) who need to examine the
architecture to make sure the quality attributes are provided.
In short, different views support different goals and uses. This is fundamentally why we do not advocate a
particular view or a collection of views. The views you should document depend on the uses you expect
to make of the documentation. Different views will highlight different system elements and/or
relationships.
Table 9.2
shows a representative population of stakeholders and the kind of views they tend to find
useful. You should use it to help you think about who your stakeholders are and what views might serve
them well. Which views are available from which to choose? Chapter 2
listed a set of views, some of
which are reflected in Table 9.2
Chapter 2
divided views into these three groups: module, component-
and-connector (C&C), and allocation. This three-way categorization reflects the fact that architects need
to think about their software in at least three ways at once:
1. How it is structured as a set of implementation units
2. How it is structured as a set of elements that have runtime behavior and interactions
3. How it relates to non-software structures in its environment
Table 9.2. Stakeholders and the Architecture Documentation They Might Find Most Useful
Module Views
C&C
Views
Allocation
Views
Stakeholder
Decomposition Uses Class Layer Various Deployment Implementation
Project Manager
s
s
s
d
Member of
Development Team
d
d
d
d
d
s
s
Testers and
Integrators
d
d
s
s
s
Maintainers
d
d
d
d
d
s
s
Product Line
Application Builder
d
s
o
s
s
s
Customer
s
o
End User
s
s
Analyst
d
d
s
d
s
d
Infrastructure Support s
s
s
s
d
New Stakeholder
x
x
x
x
x
x
x
Current and Future
Architect
d
d
d
d
d
d
s
This PDF file was converted by Atop CHM to PDF Converter free version!  http://www.chmconverter.com/chm-to-pdf/
Addison Wesley : Software Architecture in Practice, Second Edition
205 / 463
Key:
d = detailed information, s = some details, o = overview information, x = anything
Source:
Adapted from [Clements 03
].
Other views are available. A view simply represents a set of system elements and relationships among
them, so whatever elements and relationships you deem useful to a segment of the stakeholder
community constitute a valid view. Here is a simple three-step procedure for choosing the views for your
project.
1. 
Produce a candidate view list.
Begin by building a stakeholder/view table, like Table 9.2
, for your
project. Your stakeholder list is likely to be different from the one in the table, but be as
comprehensive as you can. For the columns, enumerate the views that apply to your system. Some
views (such as decomposition or uses) apply to every system, while others (the layered view, most
component-and-connector views such as client-server or shared data) only apply to systems
designed that way. Once you have the rows and columns defined, fill in each cell to describe how
much information the stakeholder requires from the view: none, overview only, moderate detail, or
high detail.
2. 
Combine views.
The candidate view list from step 1 is likely to yield an impractically large number of
views. To reduce the list to a manageable size, first look for views in the table that require only
overview depth or that serve very few stakeholders. See if the stakeholders could be equally well
served by another view having a stronger constituency. Next, look for views that are good
candidates to be combined—that is, a view that gives information from two or more views at once.
For small and medium projects, the implementation view is often easily overlaid with the module
decomposition view. The module decomposition view also pairs well with uses or layered views.
Finally, the deployment view usually combines well with whatever component-and-connector view
shows the components that are allocated to hardware elements—the process view, for example.
3. 
Prioritize.
After step 2 you should have an appropriate set of views to serve your stakeholder
community. At this point you need to decide what to do first. How you decide depends on the details
specific to your project, but remember that you don't have to complete one view before starting
another. People can make progress with overview-level information, so a breadth-first approach is
often the best. Also, some stakeholders' interests supersede others. A project manager or the
management of a company with which yours is partnering demands attention and information early
and often.
[ Team LiB ]
This PDF file was converted by Atop CHM to PDF Converter free version!  http://www.chmconverter.com/chm-to-pdf/
Addison Wesley : Software Architecture in Practice, Second Edition
206 / 463
[ Team LiB ]
9.4 Documenting a View
There is no industry-standard template for documenting a view, but the seven-part standard organization
that we suggest in this section has worked well in practice. First of all, whatever sections you choose to
include, make sure to 
have
a standard organization. Allocating specific information to specific sections will
help the documentation writer attack the task and recognize completion, and it will help the documentation
reader quickly find information of interest at the moment and skip everything else.
1. 
Primary presentation
shows the elements and the relationships among them that populate the view.
The primary presentation should contain the information you wish to convey about the system (in the
vocabulary of that view) first. It should certainly include the primary elements and relations of the
view, but under some circumstances it might not include all of them. For example, you may wish to
show the elements and relations that come into play during normal operation, but relegate error
handling or exceptional processing to the supporting documentation.
The primary presentation is usually graphical. In fact, most graphical notations make their
contributions in the form of the primary presentation and little else. If the primary presentation is
graphical, it must be accompanied by a key that explains, or that points to an explanation of, the
notation or symbology used.
Sometimes the primary presentation can be tabular; tables are often a superb way to convey a large
amount of information compactly. An example of a textual primary presentation is the A-7E module
decomposition view illustrated in Chapter 3
. A textual presentation still carries the obligation to
present a terse summary of the most important information in the view. In Section 9.6
we will discuss
using UML for the primary presentation.
2. 
Element catalog
details at least those elements and relations depicted in the primary presentation,
and perhaps others. Producing the primary presentation is often what architects concentrate on, but
without backup information that explains the picture, it is of little value.
[1]
For instance, if a diagram
shows elements A, B, and C, there had better be documentation that explains in sufficient detail what
A, B, and C are, and their purposes or the roles they play, rendered in the vocabulary of the view.
For example, a module decomposition view has elements that are modules, relations that are a form
of "is part of," and properties that define the responsibilities of each module. A process view has
elements that are processes, relations that define synchronization or other process-related
interaction, and properties that include timing parameters.
[1]
To emphasize that it is but a sketch of the complete picture, we call a primary
presentation by itself an architectural 
cartoon
.
In addition, if there are elements or relations relevant to the view that were omitted from the primary
presentation, the catalog is where those are introduced and explained.
The behavior and interfaces of elements are two other aspects of an element catalog; these will be
discussed shortly.
3. 
Context diagram
shows how the system depicted in the view relates to its environment in the
vocabulary of the view. For example, in a component-and-connector view you show which
component and connectors interact with external components and connectors, via which interfaces
and protocols.
4. 
Variability guide
shows how to exercise any variation points that are a part of the architecture shown
in this view. In some architectures, decisions are left unbound until a later stage of the development
process, and yet the architecture must still be documented. An example of variability is found in
software product lines where the product line architecture is suitable for multiple particular systems
(discussed in Chapter 14
). A variability guide should include documentation about each point of
variation in the architecture, including
This PDF file was converted by Atop CHM to PDF Converter free version!  http://www.chmconverter.com/chm-to-pdf/
Addison Wesley : Software Architecture in Practice, Second Edition
207 / 463
- the options among which a choice is to be made. In a module view, the options are the various
versions or parameterizations of modules. In a component-and-connector view, they might
include constraints on replication, scheduling, or choice of protocol. In an allocation view, they
might include the conditions under which a software element would be allocated to a particular
processor.
- the binding time of the option. Some choices are made at design time, some at build time, and
others at runtime.
5. 
Architecture background
explains why the design reflected in the view came to be. The goal of this
section is to explain to someone why the design is as it is and to provide a convincing argument that
it is sound. An architecture background includes
- rationale, explaining why the decisions reflected in the view were made and why alternatives
were rejected.
- analysis results, which justify the design or explain what would have to change in the face of a
modification.
- assumptions reflected in the design.
6. 
Glossary of terms
used in the views, with a brief description of each.
7. 
Other information
. The precise contents of this section will vary according to the standard practices
of your organization. They might include management information such as authorship, configuration
control data, and change histories. Or the architect might record references to specific sections of a
requirements document to establish traceability. Strictly speaking, information such as this is not
architectural. Nevertheless, it is convenient to record it alongside the architecture, and this section is
provided for that purpose. In any case, the first part of this section must detail its specific contents.
Figure 9.1
summarizes the parts of the documentation just described.
Figure 9.1. The seven parts of a documented view
This PDF file was converted by Atop CHM to PDF Converter free version!  http://www.chmconverter.com/chm-to-pdf/
Addison Wesley : Software Architecture in Practice, Second Edition
208 / 463
DOCUMENTING BEHAVIOR
Views present structural information about the system. However, structural information is not sufficient to
allow reasoning about some system properties. Reasoning about deadlock, for example, depends on
understanding the sequence of interactions among the elements, and structural information alone does
not present this sequencing information. Behavior descriptions add information that reveals the ordering
of interactions among the elements, opportunities for concurrency, and time dependencies of interactions
(at a specific time or after a period of time).
Behavior can be documented either about an element or about an ensemble of elements working in
concert. Exactly what to model will depend on the type of system being designed. For example, if it is a
real-time embedded system, you will need to say a lot about timing properties and the time of events. In a
banking system, the sequence of events (e.g., atomic transactions and rollback procedures) is more
important than the actual time of events being considered. Different modeling techniques and notations
are used depending on the type of analysis to be performed. In UML, sequence diagrams and statecharts
are examples of behavioral descriptions. These notations are widely used.
Statecharts are a formalism developed in the 1980s for describing reactive systems. They add a number
of useful extensions to traditional state diagrams such as nesting of state and "and" states, which provide
the expressive power to model abstraction and concurrency. Statecharts allow reasoning about the
totality of the system. All of the states are assumed to be represented and the analysis techniques are
general with respect to the system. That is, it is possible to answer a question such as Will the response
time to this stimulus always be less than 0.5 seconds?
A sequence diagram documents a sequence of stimuli exchanges. It presents a collaboration in terms of
component instances and their interactions and shows the interaction arranged in time sequence. The
vertical dimension represents time and the horizontal dimension represents different components.
Sequence diagrams allow reasoning based on a particular usage scenario. They show how the system
reacts to a particular stimulus and represent a choice of paths through the system. They make it possible
to answer a question such as What parallel activities occur when the system is responding to these
specific stimuli under these specific conditions?
This PDF file was converted by Atop CHM to PDF Converter free version!  http://www.chmconverter.com/chm-to-pdf/
Addison Wesley : Software Architecture in Practice, Second Edition
209 / 463
Documents you may be interested
Documents you may be interested