Title: The%20Role%20of%20Architecture
1 - The Role of Architecture
- in Understanding Software
Rick KazmanHausi MüllerJeromy Carrière
2 - Software Architecture
- What is it and How to Represent It
Rick Kazman kazman_at_sei.cmu.edu www.sei.cmu.edu/sta
ff/rkazman
3A Software Architecture (?)
4What is Wrong with this Diagram?
- Many things are left unspecified
- What kind of components?
- What kind of connectors?
- What do the boxes and arrows mean?
- What is the significance of the layout?
- Why is control process on a higher level?
- ? Box and arrow drawings alone are not
architectures rather, they are a starting point.
5Whats Wrong with the Diagram?
- Which structure? Software is composed of many
structures. - modules
- tasks
- functions
- hardware
- classes
- Thus, when seeing boxes and lines, we must ask
- What do the boxes represent?
- What do the arrows mean?
6What is Software Architecture?
- The software architecture of a program or
computing system is the structure or structures
of the system, which comprise software
components, the externally visible properties of
those components, and the relationships among
them.
7Implications of this Definition
- Architecture is an abstraction of systems.
- Architecture defines components and how they
interact. - Architecture suppresses purely local information
private component details are not architectural. - Systems have many structures (views).
- No single view can be the architecture.
- The set of candidate views is not fixed or
prescribed whatever is useful for analysis or
communication.
8More Implications
- Every system has an architecture.
- Every system is composed of components and
relationships among them. - In the simplest case, a system is composed of a
single component, related only to itself. - Having an architecture is different from having
an architecture that is known. Issues - precise specification of the architecture
- architecture recovery and conformance
- rationale for the architecture
9Why Is Architecture Important?
- Architecture is important for (at least) three
reasons. - It provides a vehicle for communication among
stakeholders. - It is the manifestation of the earliest
designdecisions about a system. - It is a transferable, reusable abstraction of
asystem.
10Communication Vehicle
- Architecture provides a common frame of reference
in which competing interests may be exposed and
negotiated. - negotiating requirements with users
- keeping the customer informed of progress and
cost - implementing management decisions and allocations
11Result of Early Design Decisions -1
- An architecture constrains an implementation.
- implementations must conform to architecture
- (global) resource allocation decisions constrain
implementations of individual components - system tradeoffs are manifested in the
architecture
12Result of Early Design Decisions -2
- The architecture dictates organizational
structure for development/maintenance efforts,
e.g. - division into teams
- units for budgeting, planning
- basis of work breakdown structure
- organization for documentation
- organization for CM libraries
- basis of integration, test plans, testing
- basis of maintenance
- ? Once committed to, an architecture is extremely
hard to change!
13Result of Early Design Decisions-3.
- Architecture permits/precludes the achievement of
a systems desired quality attributes
(modifiability, performance, security, etc.). - The architecture influences qualities, but does
not guarantee them. - An architecture helps with evolutionary
prototyping. - Architecture serves as a skeletal framework into
which components can be plugged. - By segregating functionality into appropriate
components, experimentation is easier.
14Reusable Model
- An architecture forms a reusable model. It
- provides a vocabulary of design
- enables template-based component development
- enables product lines
- enables systems to be built from externally
developed components - separates functionality from packaging and
interconnection mechanisms
15Architectural Structures - 1
- In a house, there are plans for rooms, electrical
wiring, plumbing, ventilation, . . . - Each of these constitutes a view of the house.
These views are - used by different people
- used to achieve different qualities in the house
- used as a description and prescription
- So it is with software architecture.
16Architectural Structures - 2.
? Similar to Kruchtens 41 View Model
17Functional View
- Components
- functions, key system abstractions, domain
elements - Connectors
- dependencies, data flow
- Users
- domain engineers, product-line designers, end
users - Reasoning
- functionality, modifiability, product
lines/reusability, tool support, work allocation
18Functional View Example
19Code View
- Components
- classes, objects, procedures, functions
- subsystems, layers, modules
- Connectors
- calls, invokes
- is-a-sub-module-of
- Users
- programmers, designers, reusers
- Reasoning
- modifiability/maintainability, portability,
subsetability
20Code View Example
WindowKit
CreateScrollBar()
CreateWindow()
OpenLookWindowKit
return
CreateScrollBar()
new OpenLookWindow
CreateWindow()
return
new MotifWindow
21Development View
- Components
- files, directories
- Connectors
- contains
- Users
- managers, programmers, configuration managers
- Reasoning
- modifiability/maintainability
- testing
- configuration management/version control
22Development View Example
23Concurrency View
- Components
- processes, threads
- Connectors
- synchronization, data flow, events
- Users
- performance engineers, integrators, testers
- Reasoning
- performance, availability
24Concurrency View Example
25Physical View
- Components
- CPUs, sensors, storage
- Connectors
- networks, communication devices
- Users
- hardware engineers, system engineers
- Reasoning
- system delivery and installation, performance,
availability, scalability, security
26Physical View Example
27Scenarios
- What are scenarios?
- use cases sequences of responsibilities
- change cases changes to the system
- Why use scenarios?
- to understand and validate the design
- to communicate the design
- to tie the views together
- to animate the design
- to understand the limits of the design
28What Are Views Used For?
- Each view provides an engineering handle on
certain quality attributes. - Views are an engineering tool to help achieve
desired system qualities. - In some systems, distinct views collapse into
one. (E.g., the concurrency and physical views
may be the same for small systems.)
29What Are Views Used For?
- Documentation vehicle for
- current development and future development
- managers and customers
- Thus, views must be annotated to support
analysis. - Scenarios aid in annotating views with design
rationale.
30Hierarchical Views
- Every view is potentially hierarchical, e.g.
- functional functions contain sub-functions
- development directories contain files
- code modules contain sub-modules systems
contain sub-systems - concurrency processes contain threads
- physical clusters contain computers contain
processors - Because views are complex and hierarchical, they
need to be navigable.
31View Navigability - 1
- A skilled software engineer with some domain
knowledge should be able to read the
documentation and navigate through it. - There should be an obvious starting point,
portraying the system as a collection of
interconnected subsystems. - Subsystems should be named, with their
responsibilities, functionality, and
interconnections identified.
32View Navigability - 2.
- Pointers should direct the reader to more
detailed documentation of sub-structures. - Tool support can and should aid in navigation.
- At every stage, the nature of the connections
among the parts should be clearly identified.
33Architectural Representation Summary
- Architectural views are related to each other in
complicated ways. - Lesson Choose the views that are useful to the
system being built and to the achievement of
qualities that are important to you. - The architectural views should be hierarchical
(where needed) and navigable. - The views should contain enough annotated
information to support desired analyses.
34Part IISoftware ArchitecturePatterns and
AntiPatterns
35Outline
- Architecture Patterns
- Motivation
- Software patterns
- Pattern formats
- Shaws architecture patterns
- Qualities of a pattern
- Architecture AntiPatterns
36Motivation
- Vehicle for reasoning about design or
architecture at a higher level of abstraction - gain design confidence
- Mining design patterns in legacy systems
- identify product lines
- Software architecture
- dissemination of good design, design reuse
- Engineering Handbooks
- contain a wealth of experience
37Software Patterns
- Programming patterns or idioms Coplien95
- Programming language specific
- Design patterns GoF95
- Class and object level
- Creational, structural, behavioral
- Architectural patterns Shaw95
- Subsystem level
- Pattern languages Coplien95, Vlissides96
- All levels
- Reflective patterns Buschmann95
- Metaprogramming
38Software Patterns ...
- Analysis patterns Fowler97
- AntiPatterns Brown98
- Frameworks
- STL (C Template Library)
- Algorithms and data structures
- Conceptual patterns
- Generative patterns
- Organizational patterns
39Pattern Definitions
- A pattern is a named nugget of insight that
conveys the essence of a proven solution to a
recurring problem within a certain context amidst
competing concerns - A pattern is the abstraction from a concrete form
which keeps recurring in specific non-arbitrary
contexts.
40Pattern Definitions ...
- Description of communicating objects and classes
that are customized to solve a general design in
a particular context GoF95. - Design patterns capture the static and dynamic
structures of solutions that occur repeatedly
when producing applications in a particular
context Coplien95.
41Historical Perspective
- 1979
- Alexanders Timeless Way of Building
- 1987
- OOPSLA workshop by Beck Ward
- 1994
- First PLoP (Pattern Languages on Programming)
conference - 1995
- GoF (Gamma, Helm, Johnson, Vlissides)
- Design Patterns Elements of Reusable
Object-Oriented Software
42A Good Pattern
- It solves a problem
- Patterns capture solutions, not just abstract
principles or strategies - It is a proven concept
- Patterns capture solutions with a track record,
not theories or speculation - The solution isnt obvious
- The best patterns generate a solution indirectly
normal for many design problems
43A Good Pattern ...
- It describes a relationship
- Patterns describe more than black boxes system
structures and mechanisms - The pattern has a significant human component
- The best patterns explicitly appeal to aesthetics
and utility
44Pattern Formats
- Alexandrian form (canonical form)
- GoF format GoF95
- Shaws format Shaw94
- Essential components of a pattern format
- Name, problem, context, forces
- Solution, examples, context,
- Rationale, related patterns, known uses
45Canonical Pattern Format ...
- Name
- meaningful phrase
- Problem
- a statement of the problem which describes its
intent the goals and objectives it wants to
reach within the given context and forces
46Canonical Pattern Format ...
- Context
- preconditions under which the problem and its
solutions seem to occur - the patterns applicability
- may change over time
- Forces
- relevant forces and constraints and their
interactions and conflicts - motivational scenario for the pattern
47Canonical Pattern Format ...
- Solution
- Static and dynamic relationships describing how
to realize the pattern - instructions on how to construct the work
products - pictures, diagrams, prose which highlight the
patterns structure, participants, and
collaborations
48Canonical Pattern Format ...
- Examples
- one or more sample applications to illustrate
- a specific context
- how the pattern is applied
- Resulting context
- the state or configuration after the pattern has
been applied - consequences (good and bad) of applying the
pattern
49Canonical Pattern Format ...
- Rationale
- justification of the steps or rules in the
pattern - how and why it resolves the forces to achieve the
desired goals, principles, and philosophies - how are the forces orchestrated to achieve
harmony - how does the pattern actually work
50Canonical Pattern Format ...
- Related patterns
- the static and dynamic relationships between this
pattern and other patterns - Known uses
- to demonstrate that this is a proven solution to
a recurring problem
51Shaws Architecture Pattern Format
- Problem
- What in the application requirements leads the
designers to select this pattern? - Context
- What aspects of the setting constrain the
designer in the use of this pattern? - Solution
- The system model captured by the pattern,
together with the components, connectors, and
control structure that make up the pattern.
52Shaws Format ...
- Diagram
- A figure showing a typical pattern, annotated to
show the components and connectors - Significant variants
- For some patterns, major variants of the basic
pattern are noted. - Examples
- References to examples or more extensive
overviews of systems that apply this pattern.
53Shaws Architecture Patterns
- Pipeline
- Defined series of independent computations
- Mapping data streams into data streams
- Data abstraction
- Protection of related bodies of information
- Localized state maintenance (info hiding)
- Communicating processes
- Collection of distinct, independent processes
- Message passing
- Simple messages, broadcast
54Shaws Architecture Patterns ...
- Implicit invocation
- Loosely coupled collection of components
- Independent reactive processes
- Without knowing the recipients (registered procs)
- Repository
- Maintaining a complex body of information
- Centralized data, richly structured
- Blackboard
- Interpreter
- Extensibility, end-user programming, portability
- Virtual machine (e.g., Java)
55Shaws Architecture Patterns ...
- Main program and subroutines
- Hierarchy of procedure definitions
- Forward call tree
- Modularity
- Layered architecture
- Distinct layers of services
- Hierarchy of transparent or opaque layers
56Qualities of a Pattern
- Encapsulation and abstraction
- encapsulates a well-defined and its solution in a
particular domain - provides crisp, clear boundaries to crystallize
the problem and solution spaces - serves as an abstraction which embodies domain
knowledge and experience - may occur at different levels of abstraction
57Qualities of a Pattern ...
- Openness and variability
- is open for extension and parameterization by
other patterns - is able to solve larger problems in concert with
other patterns - can be realized by a variety of implementations
(variants)
58Qualities of a Pattern ...
- Generativity and composability
- applying a pattern once provides a context for
further applications - patterns are easier to apply in another context
than C code - can evolve into Golden Hammer AntiPattern
59Qualities of a Pattern ...
- Equilibrium
- realizes a balance among its forces and
constraints - realizes an invariant, heuristics, or a policy
which minimize conflict within the solution space - an invariant characterizes the problem solving
philosophy
60Outline
- Patterns
- AntiPatterns
- Motivation
- Pattern and AntiPattern relation
- AntiPattern and program comprehension
- AntiPattern format
- Selected software Architecture AntiPatterns
- Summary
61Reference
- Brown, Malveau, McCormick III, MowbrayAntiPattern
s Refactoring Software, Architectures, and
Projects in CrisisJohn Wiley Sons, 1998
62Origins of AntiPatterns
- The majority of published works in software
sciences have focused on positive and
constructive solutions - AntiPatterns are derived by looking at the
negative solutions - Def. An AntiPattern describes a commonly
occurring solution to a problem that generates
decidedly negative consequences.
63Origins of AntiPatterns
- A manager or developer
- does not know any better
- does not have sufficient knowledge or experience
solving a particular problem - applied a perfectly good design pattern in the
wrong context
64Essence of an AntiPattern
- Two solutions instead of a problem and a solution
- Problematic solution which generates negative
consequences - Refactored solution, a method to resolve and
reengineer the AntiPattern - A pattern in an inappropriate context
65Pattern AntiPattern Relation
- Design patterns often evolve into an AntiPattern
- Procedural programming was a great design pattern
in the 60s and 70s - Today it is an AntiPattern
- Object-oriented programming is today a practiced
pattern ...
66Pattern AntiPattern Relation
AP99
Context change over time
67AntiPatterns Comprehension
- AntiPatterns are particularly prevalent during
long-term software maintenance and evolution - A software reengineer needs to assess the
presence or absence of AntiPatterns in a legacy
system to be able to implement the best
reengineering strategy
68AntiPatterns and Reengineering ...
- Premise
- Recognition of AntiPatterns will make you a
better software engineer - Refactoring AntiPatterns present in a legacy
systems project will result in a better, more
successful, less risky software reengineering
project
69State of Affairs
- Five out of six software projects are considered
unsuccessful - One third of all software projects are canceled
- For delivered systems the actual budget and time
is double than expected - Silver bullets ...
70Old Silver Bullets
- Structured programming
- Top-down design
- Open systems
- Client/server architectures
- Quality code generation from models
- Object orientation
- GUI builders
- Frameworks
71New Silver Bullets
- Component technologies
- Distributed objects
- Business objects
- Patterns
- Software reuse
- Scripting languages
- Software agents
- Network-centric computing
- Web interface
72AntiPattern Structure
- Description of the general form
- Symptoms on how to recognize the general form
- Causes that led to the general form
- Consequences of the general form
- Refactored solution on how to change the
AntiPattern into a healthier situation
73AntiPatterns
- A method for efficiently mapping a general,
problematic situation to a specific class of
solutions - Provide real-world experience in recognizing
recurring problems in the software industry and
provide a detailed remedy for the most common
predicaments - Provide a common vocabularyfor identifying
problems anddiscussing solutions
74AntiPattern Categories
- Development AntiPatterns
- Situations encountered by programmers
- Architectural AntiPatterns
- Common problems in system structure
- Managerial AntiPatterns
- Affect people in all software roles
- AntiPatterns apply to software construction as
well as software evolution
75AntiPattern Format
- Root causes
- provide fundamental context for the AntiPattern
- Primal forces
- are the key motivators for decision making
- Software design-level model
- define architectural scales each pattern has a
most applicable scale
76Root Causes
- Haste
- hasty decisions compromise quality
- code that appears to work is acceptable
- testing is ignored
- Apathy
- lack of partitioning
- ignoring the separation of concerns (e.g., stable
vs. replaceable design)
77Root Causes ...
- Narrow-mindedness
- refusal of known or accepted solutions
- reluctance to use metadata
- Sloth
- poor decision based on an easy answer
- frequent interface changes
- lack of configuration control
- reliance on generating stubs and skeletons
78Root Causes ...
- Avarice
- architectural avaricemodeling of excessive
details - excessive complexity due to insufficient
abstraction - overly complex systems are difficult to develop,
integrate, test, maintain, extend
79Root Causes ...
- Ignorance
- failing to seek understanding
- antonym of analysis paralysis
- focussing on code interfaces rather than system
interfaces - no layering
- no wrapping to isolate details
80Root Causes ...
- Pride
- not-invented-here syndrome
- unnecessary invention of new designs
- reinventing the wheel
- rewrite from scratch
- ignoring requirements
- ignoring COTS, freeware, existing legacy system
81Forces
- Forces or concerns that exist within a
decision-making process - Forces that are addressed lead to benefits
- Forces that remain unresolved lead to
consequences - For any given software problem there are a number
of forces that can influence a given solution
82Forces ...
- Vertical forces
- Domain specific
- Unique to a particular situation
- Ignored in AntiPatterns
- Horizontal forces
- Applicable across multiple domains
- Influence design and reengineering choice across
several software modules and components - Choices made elsewhere may impact local choices
83Primal Forces ...
- Horizontal forces are called primal forces
- Present in nearly all design or reengineering
situations - Keep architecture and development on track or
synchronized - A fundamental value system for software architects
84Primal Forces ...
- Management of functionality
- Meeting the requirements
- Management of performance
- Meeting required speed and operation
- Management of complexity
- Defining abstractions
- Management of change
- Controlling the evolution of the software
85Primal Forces ...
- Management of IT resources
- People and IT artifacts
- Management of technology
- Controlling technology evolution
86Architecture AntiPatterns
- The Blob
- Cut-and-Paste Programming
- Stovepipe Enterprise
- Design By Committee
- Swiss Army Knife
- Reinvent the Wheel
87The Blob
- Problem
- Procedural style design leads to one object with
a lions share of the responsibilities - Most other objects only hold data
- This is the class that is really the heart of our
architecture - One class monopolizes the processing and the
others encapsulate data
88The Blob ...
- Causes
- Lack of an object-oriented architecture
- Lack of architecture enforcement
- Procedural design expert are chief architects
- Wrapping a legacy system resultsin a Blob
acceptable
89The Blob ...
- Solution
- Distribute responsibilities more uniformly
- Isolate the effect of changes
- Identify or categorize attributes and operations
- Find natural homes for the identified classes
- Remove outliers
90Cut-and-Paste Programming
- Problem
- Software clones
- Hey, I thought you fixed that bug already, so
why is it doing this again? - Wow, you guys work fast. Over 400KLOC in three
weeks is amazing! - Degenerate form of reuse
- Very common in COBOL
91Cut-and-Paste Programming ...
- Solution
- Clone detection
- Parameterize types
- Introduce an additional level of indirection
- Exploit polymorphism
- Dynamic schemas
92Stovepipe Enterprise
- Problem
- Stovepipe System is characterized by a software
structure that inhibits change - Must be constantly repaired
- Brittle, monolithic system architectures (usually
undocumented) - Inability of systems to interoperate
93Stovepipe Enterprise ...
- Solution
- Coordination of technologies at several levels
- Identify common standards and migration direction
with a standard reference model - Usage conventions across systems
- Detailed interoperability conventions across
systems - Product lines (SEI)
94Design by Committee
- Problem
- Gold Plating, Standards Disease, Make Everybody
Happy, Political Party - Project team are egalitarian everyone has equal
say decisions are democratic - The majority rule leads to diffusion of
abstraction and excess complexity - A camel is a horse designed by a committee.
95Design by Committee ...
- Symptoms
- Design documentation is voluminous
- The requirements do not converge and are unstable
- Design meetings are slow, concentrate on details,
and avoid big picture discussions - Decisions are only made in meetings
- No prioritization of design features
96Design by Committee ...
- Causes
- No designated project architect
- Ineffective meeting facilitation
- The suggestions of all committee members are
incorporated to keep everybody happy - No separation of concerns
97Design by Committee ...
- Refactored solution
- Reform the meeting process
- Why are we here?
- What outcomes do we want?
- Assign explicit roles
- Owner, facilitator, architect, developer, tester,
domain expert - My specialty is being right when other people
are being wrong. George Bernard Shaw
98Design by Committee ...
- Employ Spitwads meeting process
- Ask questionHow can we improve performance?
- Write down answer silently
- Toss spitwads à la Michael Jordan
- Redistribute, read, and record spitwads
- Reach common understanding
- Eliminate duplicates
- Prioritize by voting
- Discuss highest priority selections
99Design by Committee
- SQL example
- SQL89115 pages
- SQL92580 pages
- SQL3still not complete may never be fully
implemented a dumping ground for advanced
database features - Better solutions
- Open Database Connectivity (ODBC)
- Java Database Connectivity (JDBC)
100Reinvent the Wheel
- Problem
- Our problem is unique
- Developers have minimal knowledge of each others
code - Building systems from the ground up even though
related legacy systems exist - The existence of legacy systems is the norm
rather than the exception - Lack of program families or product lines
101Reinvent the Wheel ...
- Symptoms
- Closed system architecturesno provision of
reuse, interoperability, or change management - Replication of COTS components
- Inability to deliver desired features on time and
within budget - Corporate knowledge is not leveraged
102Reinvent the Wheel ...
- Causes
- No communication and technology transfer among
software development projects - Corporate knowledge is not leverage
- No explicit architecture process
- Lack of enterprise management
103Swiss Army Knife or Kitchen Sink
- Problem
- Excessively complex class interface
- Designer attempts to provide for all possible
uses of the class - Complicated interface
- Many overloaded names
- Excessive regression test suites
- Several Swiss Army Knifes in a single design
104Swiss Army Knife ...
- Refactored solution
- Provide guidelines for using complicated
standards or interfaces - Provide a template for exception handling
- Contract interfaces
105Summary
- During program comprehension and evolution one
should be particularly aware of the potential
presence of AntiPatterns - Awareness of AntiPatterns is critical for
reengineering projects - Consider AntiPatterns next time you sign on to a
new project - Invest in reading the AntiPatterns book
106Part IIISoftware Architecture Reconstruction
107Outline
- Introduction and Philosophy
- Motivation
- Software Architecture Reconstruction Tools
- Extraction and Storage
- Manipulation
- Presentation
- Reconstruction Methodologies
- Examples
108Another Definition of Architecture
- A set of design decisions
- Typically documented as a set of views
- Realized in an implementation via mappings
- Mappings are almost invariably informal(i.e. not
explicitly recorded in any implementation
artifact) - The implementation is the consequence of the
application of the mappings
109Example Layers
- Question What is a layer?
- Answers
- At worst a delusion.
- At best a convention.
- Nothing that exists in what we actually build
(e.g. no layer construct in a programming
language). - Nothing that is enforceable.
110And Yet . . .
- Architectures use these abstractions regularly.
- Architects think and plan and analyze in terms of
these abstractions. - So,
- we should support these abstractions and connect
them to what we do build.
111So What Is Architecture Reconstruction?
- A process in which cultural hypotheses are
generated and tested ? anthropological - These hypotheses are ideally the inverse of the
mappings developed during design - The reconstructor must add information during the
reconstruction process - This depends on the reconstructors available
information and bias
112Outline
- Introduction and Philosophy
- Motivation
- Software Architecture Reconstruction Tools
- Extraction and Storage
- Manipulation
- Presentation
- Reconstruction Methodologies
- Examples
113But Why Reconstruct?
- We frequently need to reason architecturally
about existing systems. - We need to be able to
- analyze architectures
- (re)document architectures
- identify architectural dependencies
114Architectural Conformance - I
- Question If my architecture was designed with a
particular property in mind, does the property
hold for my target system? - (Probable) Answer Who knows?
115Architectural Conformance - II
- The architecture of the implemented system must
conform to the architectural design. - Otherwise, architectural drift and erosion are
inevitable. - But conformance (by hand) is a dreary task.
116Outline
- Introduction and Philosophy
- Motivation
- Software Architecture Reconstruction Tools
- Extraction and Storage
- Manipulation
- Presentation
- Reconstruction Methodologies
- Examples
117Tools for Software Architecture Reconstruction
- Groups working on tools/toolsets
- University of Victoria (Hausi Müller)
- Software Engineering Institute
- MITRE (Penny Chase)
- University of Waterloo (CSER project)
- Philips (René Krikhaar)
118Tools for Software Architecture Reconstruction
Extraction
Repository
119Dali A Software Architecture Reconstruction
Workbench (SEI)
120Software Bookshelf/PBS (Holt et al)
Extraction
Parsing
.
.
.
Fact Files
Layout
121Outline
- Introduction and Philosophy
- Motivation
- Software Architecture Reconstruction Tools
- Extraction and Storage
- Manipulation
- Presentation
- Reconstruction Methodologies
- Examples
122Extracting Information
- Most approaches are opportunistic. In common use
are - parsers (SNiFF, cfx, CIA, rigiparse, EDG)
- CBMS systems (Reasoning SDK)
- lexical analyzers (LSME)
- profilers (gprof)
- code instrumentation
- ad hoc (grep, perl)
123Extracting Information - 2
- Source code analysis is insufficient
- late binding
- system topology information
- This information is available only in artifacts
other than source models.
124Repositories
- Use of attributed relational models (E/R/A) is
almost universal - simple
- flexible
- sufficiently expressive
- well supported by existing tools
125Example Repository Contents (Dali)
- Some relations relevant to software architecture
- function calls function
- file contains function
- class has_subclass class
- class has_friend class
- process communicates_with process
- process writes file
- . . .
126A Repository Schema (Bowman)
SourceArtifact
TypeElement
Data Element
Functional Element
Module
Entity Classes
Relation Classes
typeRef
declaredIn
TypeElement
SourceArtifact
Module
functionRef
typeRef
typeRef
FunctionalElement
DataElement
declaredIn
dataRef
127A Repository Schema (Bowman)
128A Schema for Procedural Languages (Bowman)
129Dalis Repository
- Dali uses an SQL database with a philosophy of
openness and lightweight tool integration via
text formats (RSF - Rigi Standard Format). - The database and tools are ignorant of each
other. - The tools extract, modify, manipulate, and store
architectural artifacts in the database. - Integration is controlled via Rigis RCL and
scripts.
130PBS Repository
- PBS uses a file-based approach to storing
facts - TA (Tuple-Attribute) format - based on RSF
- This approach improves exchangeability but
potentially involves more run-time overhead. - Integration is accomplished via scripts.
131Philips Repository
- Based on the concepts of
- InfoPacks information extracted from a system
- ArchiSpects representation of an architectural
structure or analysis - Both include a description of the steps to
construct the model. - Integration is achieved via a variety of
scriptsand tools.
132Information Interchange
- Its important to be able to exchange facts and
models. - We need two things to do this properly
- an agreed-upon syntax, including a schema
- an agreed-upon semantic model for describing the
facts and their manipulations
133Outline
- Introduction and Philosophy
- Motivation
- Software Architecture Reconstruction Tools
- Extraction and Storage
- Manipulation
- Presentation
- Reconstruction Methodologies
- Examples
134Manipulation - Motivation
- Architectural elements are not explicitly
represented in source code. - user interface, repository, cache, etc. are
usually tangled collections of objects - architectural constructs are realized by many
mechanisms in an implementation - Therefore, we need to reconstruct architectural
elements.
135Manipulation in Dali View Fusion
- Motivation
- Extractors will frequently produce incomplete and
partially overlapping data - A complete view of a system requires views to be
fused - different views provide complementary information
- one view can improve another
136Manipulation in Dali Aggregation
- Primary mechanism for manipulation is the
application of patterns for aggregation,
constructed using SQL. - Examples
- aggregate local variables with functions
- aggregate members with classes
- compose architecture-level elements
137Manipulation in PBS
- Manipulation of facts in PBS is performed using
Grok - Grok is a relational calculator based on Tarski
relational algebra (with extensions) - abstraction is the key transformation of the
model - input for abstraction comes from containment
hierarchies specified by the reconstructor
138Manipulation in Philips Toolset
- Manipulation of models is performed via the
Relational Partition Algebra (RPA) - RPA is also based on Tarski algebra
- Computation is carried out using a variety of
implementations of RPA - ArchiSpects specify the creation of abstracted
views
139Outline
- Introduction and Philosophy
- Motivation
- Software Architecture Reconstruction Tools
- Extraction and Storage
- Manipulation
- Presentation
- Reconstruction Methodologies
- Examples
140Presentation
- The end goal of architecture reconstruction is
generation of architectural views that - improve understanding of the system
- provide (improved) documentation
- improve maintainability
- facilitate analysis
141Presentation in Dali
- Presentation in Dali is done using Rigi
- Rigi provides useful graph editing functionality
- layout
- direct manipulation
- hierarchical navigation
- extensibility
- Examples coming up...
142Presentation in Bookshelf/PBS
- The software landscape presentation approach
- hierarchical
- PBS is Web-based (Java)
- incorporates architectural visualizations within
a framework of documentation
143PBS Example
144Outline
- Introduction and Philosophy
- Motivation
- Software Architecture Reconstruction Tools
- Extraction and Storage
- Manipulation
- Presentation
- Reconstruction Methodologies
- Examples
145Reconstruction Methodologies
- A predictable, repeatable method is important for
management of reconstruction activities - Because the process is primarily one of
hypothesis formulation and test, we need
structured methods for information collection - Methods are universally semiautomatic (shouldnt
be a surprise!)
146A Reconstruction Method Sketch (SEI)
Developinformationmodel
Populateinformationmodel
Developarchitecturalrules
Applyarchitecturalrules
Extractinformation
Identifyarchitecturalcomponents
Developrepresenta-tion template
Mapmodels totemplate
Evaluate
147The Hybrid Approach (Tzerpos Holt)
- Hybrid Combine extracted information with
information collected from developers. - Iterative steps at multiple levels of
granularity - Choose domain model
- Extract facts from source code
- Cluster into subsystems
- Refine clustering using live information
- Refine layout using live information
148The Architecture Reconstruction Method (Guo)
- Pattern- and style-oriented approach to
reconstruction - Four primary phases
- Developing a concrete pattern recognition plan
- Extracting a source model
- Detecting and evaluating pattern instances
- Reconstructing and analyzing the architecture
149Outline
- Introduction and Philosophy
- Motivation
- Software Architecture Reconstruction Tools
- Extraction and Storage
- Manipulation
- Presentation
- Reconstruction Methodologies
- Examples
150Example VANISH (using Dali)
As-designed Architecture
151Extract Information
White noise a typical extracted model.
152Apply Generic Patterns
Aggregate functions and local variables classes
and members classes and files.
153Apply Application-Specific Patterns
- Identify the layers
- from the Arch model.
154The Final Product
As designed
As implemented
155Analysis - 1
- Architectural conformance via RMTool (Murphy)
156Analysis - 2
- If we believe in pattern-based simplicity . . .
- . . . we should be able to measure this in an
architecture. - IAPR is an analysis tool to do this.
- Approach pattern matching as sub-graph
isomorphism a search task (NP-hard).
157Coloring an Architecture (Kazman Burth)