SlideShare uma empresa Scribd logo
1 de 94
Software Archeology
Mehdi Mirakhorli
Rochester Institute of Technology
mehdi@se.rit.edu
Winter 2015
Software Architecture Reconstruction:
Why? What? and How?
1
What do I do for the living?
2
Map of My Research
3
Software
Architecture
Requirements
Engineering
Cyber
security/Physical
Software
Architecture
Map of My Research
4
Software
Architecture
Software
Architecture
WORKING DEFINITIONS
5
6
Master
Slave
HB
Detailed Example: An architectural view
6
Apache Hadoop Architecture
6
Master
Slave
HB
Detailed Example: An architectural view
7
Apache Hadoop Architecture
Requirements# 1:
highly available system, where
hardware failure can be the norm
rather than the exception
6
Master
Slave
HB
Detailed Example: An architectural view
8
Apache Hadoop Architecture
Requirements# 1:
highly available system, where
hardware failure can be the norm
rather than the exception
6
Master
Slave
HB
Decision # 1:
Use Master-slave Architectural
Style where slave processes are
replicated
Detailed Example: An architectural view
9
Apache Hadoop Architecture
Requirements# 1:
highly available system, where
hardware failure can be the norm
rather than the exception
6
Master
Slave
HB
Decision # 1:
Use Master-slave Architectural
Style where slave processes are
replicated
Detailed Example: An architectural view
10
Decision # 2:
Checkpoint updated data, and
bundle replicas (send every 2
seconds) – in order to meet
performance goals.
Apache Hadoop Architecture
Requirements# 1:
highly available system, where
hardware failure can be the norm
rather than the exception
6
Master
Slave
HB
Decision # 1:
Use Master-slave Architectural
Style where slave processes are
replicated
Detailed Example: An architectural view
11
Decision # 2:
Checkpoint updated data, and
bundle replicas (send every 2
seconds) – in order to meet
performance goals.
Decision # 3:
Use heartbeat tactic to monitor
availability of task trackers and data
nodes. Heartbeat must beat every
.25 seconds to balance availability
and performance.
Apache Hadoop Architecture
Requirements# 1:
highly available system, where
hardware failure can be the norm
rather than the exception
6
Master
Slave
HB
Decision # 1:
Use Master-slave Architectural
Style where slave processes are
replicated
Detailed Example: An architectural view
12
Decision # 2:
Checkpoint updated data, and
bundle replicas (send every 2
seconds) – in order to meet
performance goals.
Decision # 3:
Use heartbeat tactic to monitor
availability of task trackers and data
nodes. Heartbeat must beat every
.25 seconds to balance availability
and performance.
Decision # 4:
Use proxy handles failure pattern to
shield clients from failures, and to
support fault tolerance (i.e. service
continues in the face of transient
failure.
Apache Hadoop Architecture
Requirements# 1:
highly available system, where
hardware failure can be the norm
rather than the exception
6
Master
Slave
HB
Decision # 1:
Use Master-slave Architectural
Style where slave processes are
replicated
Detailed Example: An architectural view
13
Decision # 2:
Checkpoint updated data, and
bundle replicas (send every 2
seconds) – in order to meet
performance goals.
Decision # 3:
Use heartbeat tactic to monitor
availability of task trackers and data
nodes. Heartbeat must beat every
.25 seconds to balance availability
and performance.
Decision # 4:
Use proxy handles failure pattern to
shield clients from failures, and to
support fault tolerance (i.e. service
continues in the face of transient
failure.
Apache Hadoop Architecture
Requirements# 1:
highly available system, where
hardware failure can be the norm
rather than the exception
Requirements# 2:
Provide secure services for the
client
6
Master
Slave
HB
Decision # 1:
Use Master-slave Architectural
Style where slave processes are
replicated
Detailed Example: An architectural view
14
Decision # 2:
Checkpoint updated data, and
bundle replicas (send every 2
seconds) – in order to meet
performance goals.
Decision # 3:
Use heartbeat tactic to monitor
availability of task trackers and data
nodes. Heartbeat must beat every
.25 seconds to balance availability
and performance.
Decision # 4:
Use proxy handles failure pattern to
shield clients from failures, and to
support fault tolerance (i.e. service
continues in the face of transient
failure.
Apache Hadoop Architecture
Requirements# 1:
highly available system, where
hardware failure can be the norm
rather than the exception
Requirements# 2:
Provide secure services for the
client
6
Master
Slave
HB
Decision # 1:
Use Master-slave Architectural
Style where slave processes are
replicated
Detailed Example: An architectural view
15
Decision # 2:
Checkpoint updated data, and
bundle replicas (send every 2
seconds) – in order to meet
performance goals.
Decision # 3:
Use heartbeat tactic to monitor
availability of task trackers and data
nodes. Heartbeat must beat every
.25 seconds to balance availability
and performance.
Decision # 4:
Use proxy handles failure pattern to
shield clients from failures, and to
support fault tolerance (i.e. service
continues in the face of transient
failure.
Apache Hadoop Architecture
Requirements# 1:
highly available system, where
hardware failure can be the norm
rather than the exception
Decision # 1:
Mutual Authentication with
Kerberos RPC (SASL/GSSAPI) on
RPC connections
Requirements# 2:
Provide secure services for the
client
6
Master
Slave
HB
Decision # 1:
Use Master-slave Architectural
Style where slave processes are
replicated
Detailed Example: An architectural view
16
Decision # 2:
Checkpoint updated data, and
bundle replicas (send every 2
seconds) – in order to meet
performance goals.
Decision # 3:
Use heartbeat tactic to monitor
availability of task trackers and data
nodes. Heartbeat must beat every
.25 seconds to balance availability
and performance.
Decision # 4:
Use proxy handles failure pattern to
shield clients from failures, and to
support fault tolerance (i.e. service
continues in the face of transient
failure.
Apache Hadoop Architecture
Requirements# 1:
highly available system, where
hardware failure can be the norm
rather than the exception
Decision # 1:
Mutual Authentication with
Kerberos RPC (SASL/GSSAPI) on
RPC connections
Decision # 2:
Maintain an Audit Trail
Requirements# 2:
Provide secure services for the
client
6
Master
Slave
HB
Decision # 1:
Use Master-slave Architectural
Style where slave processes are
replicated
Detailed Example: An architectural view
17
Decision # 2:
Checkpoint updated data, and
bundle replicas (send every 2
seconds) – in order to meet
performance goals.
Decision # 3:
Use heartbeat tactic to monitor
availability of task trackers and data
nodes. Heartbeat must beat every
.25 seconds to balance availability
and performance.
Decision # 4:
Use proxy handles failure pattern to
shield clients from failures, and to
support fault tolerance (i.e. service
continues in the face of transient
failure.
Apache Hadoop Architecture
Requirements# 1:
highly available system, where
hardware failure can be the norm
rather than the exception
Decision # 1:
Mutual Authentication with
Kerberos RPC (SASL/GSSAPI) on
RPC connections
Decision # 2:
Maintain an Audit Trail
Decision # 3:
Data Encryption on RPC
Data Encryption on Block data
transfer
Data Encryption on HTTP
Requirements# 2:
Provide secure services for the
client
6
Master
Slave
HB
Decision # 1:
Use Master-slave Architectural
Style where slave processes are
replicated
Detailed Example: An architectural view
18
Decision # 2:
Checkpoint updated data, and
bundle replicas (send every 2
seconds) – in order to meet
performance goals.
Decision # 3:
Use heartbeat tactic to monitor
availability of task trackers and data
nodes. Heartbeat must beat every
.25 seconds to balance availability
and performance.
Decision # 4:
Use proxy handles failure pattern to
shield clients from failures, and to
support fault tolerance (i.e. service
continues in the face of transient
failure.
Apache Hadoop Architecture
Requirements# 1:
highly available system, where
hardware failure can be the norm
rather than the exception
Decision # 1:
Mutual Authentication with
Kerberos RPC (SASL/GSSAPI) on
RPC connections
Decision # 2:
Maintain an Audit Trail
Decision # 3:
Data Encryption on RPC
Data Encryption on Block data
transfer
Data Encryption on HTTP
Decision # 4:
Secure DataNode: DataNodes must
authenticate themselves
Requirements# 2:
Provide secure services for the
client
6
Master
Slave
HB
Decision # 1:
Use Master-slave Architectural
Style where slave processes are
replicated
Detailed Example: An architectural view
19
Decision # 2:
Checkpoint updated data, and
bundle replicas (send every 2
seconds) – in order to meet
performance goals.
Decision # 3:
Use heartbeat tactic to monitor
availability of task trackers and data
nodes. Heartbeat must beat every
.25 seconds to balance availability
and performance.
Decision # 4:
Use proxy handles failure pattern to
shield clients from failures, and to
support fault tolerance (i.e. service
continues in the face of transient
failure.
Apache Hadoop Architecture
Requirements# 1:
highly available system, where
hardware failure can be the norm
rather than the exception
Decision # 1:
Mutual Authentication with
Kerberos RPC (SASL/GSSAPI) on
RPC connections
Decision # 2:
Maintain an Audit Trail
Decision # 3:
Data Encryption on RPC
Data Encryption on Block data
transfer
Data Encryption on HTTP
Decision # 4:
Secure DataNode: DataNodes must
authenticate themselves
Requirements# 2:
Provide secure services for the
client
More Decisions:
A non-trivial architecture is likely
to be composed of hundreds, if
not thousands of architectural
decisions.
6
Master
Slave
HB
Decision # 1:
Use Master-slave Architectural
Style where slave processes are
replicated
Detailed Example: An architectural view
20
Decision # 2:
Checkpoint updated data, and
bundle replicas (send every 2
seconds) – in order to meet
performance goals.
Decision # 3:
Use heartbeat tactic to monitor
availability of task trackers and data
nodes. Heartbeat must beat every
.25 seconds to balance availability
and performance.
Decision # 4:
Use proxy handles failure pattern to
shield clients from failures, and to
support fault tolerance (i.e. service
continues in the face of transient
failure.
Apache Hadoop Architecture
Requirements# 1:
highly available system, where
hardware failure can be the norm
rather than the exception
Decision # 1:
Mutual Authentication with
Kerberos RPC (SASL/GSSAPI) on
RPC connections
Decision # 2:
Maintain an Audit Trail
Decision # 3:
Data Encryption on RPC
Data Encryption on Block data
transfer
Data Encryption on HTTP
Decision # 4:
Secure DataNode: DataNodes must
authenticate themselves
Requirements# 2:
Provide secure services for the
client
More Decisions:
A non-trivial architecture is likely
to be composed of hundreds, if
not thousands of architectural
decisions.
Decision # 1: Separate each of
these domains and run them on
different threads..
More Decisions:
A non-trivial architecture is likely
to be composed of hundreds, if
not thousands of architectural
decisions.
Decision # 29:
Separate data busses should be
used for data or command
operations. Each buss should utilize
a different scheduling mechanisms.
Decision # 101:
Utilize heartbeat, voting and
simulation to detect faults. FDIR
module responsible for all these.
Decision # 1:
Keep primaries together, and
replicas together at all times to
meet redundancy goals.
Decision # 2:
Checkpoint updated data, and
bundle replicas (send every 2
seconds) – in order to meet
performance goals.Decision # 3:
Use heartbeat tactic to monitor
availability of track manager
primaries and secondaries.
Heartbeat must beat every .25
seconds to balance availability and
performance.
Decision # 3:
Use heartbeat tactic to monitor
availability of track manager
primaries and secondaries.
Heartbeat must beat every .25
seconds to balance availability and
performance.
Decision # 32:
System must use active redundancy
with graceful degradation to
achieve maximum availability.
More Decisions:
A non-trivial architecture is likely
to be composed of hundreds, if
not thousands of architectural
decisions.
More Decisions:
A non-trivial architecture is likely
to be composed of hundreds, if
not thousands of architectural
decisions.
Decision # 91:
Utilize heartbeat, voting and
simulation to detect faults. FDIR
module responsible for all these.
Decision # 1:
Use thread pooling to execute
recurrent mission operations.
Decision # 21:
Active redundancy is implemented
to achieve minimize mean time
between failures.
Decision # 19:
Separation of concerns: Each tasks
must run as a separate process on a
separate processor.
Decision # 66:
Check pointing is utilized to recover
non-mission critical operations.
Decision # 52:
Platform Diversity plus N-Version
programming must be used to
maximize the reliability.
Decision # 4:
Use proxy handles failure pattern to
shield clients from failures, and to
support fault tolerance (i.e. service
continues in the face of transient
failure.
Decision # 151:
Utilize heartbeat, voting and
simulation to detect faults. FDIR
module responsible for all these.
Decision # 81:
Voting mechanism is used to recover
from failure of any of the sensors.
Decision # 101:
Utilize heartbeat, voting and
simulation to detect faults. FDIR
module responsible for all these.
Decision # 113:
Semantic based scheduling and task
sequencer is used to provide real-
time performance.
More Decisions:
A non-trivial architecture is likely
to be composed of hundreds, if
not thousands of architectural
decisions.
Decision # 3:
Use heartbeat tactic to monitor
availability of track manager
primaries and secondaries.
Heartbeat must beat every .25
seconds to balance availability and
performance.
Decision # 121:
Keep primaries together, and
replicas together at all times to
meet redundancy goals.
Decision # 3:
Use heartbeat tactic to monitor
availability of track manager
primaries and secondaries.
Heartbeat must beat every .25
seconds to balance availability and
performance.
21
Handbooks of Software Architecture
Architectural StylesPatterns:
22
Architectural Tactics
23
WHY SOFTWARE ARCHITECTURE
RECOVERY?
24
I always get that question: “Is there anyone who does this?”
25
Why Software Architecture Recovery?
1- Software Comprehension
Department of Defense (DOD) spends
almost half of its post-deployment costs
(47%) reverse engineering its own code.
This process often involves identifying the
underlying design intent in order to
modify a legacy system, or understanding
the code and evaluating the impact of
introducing changes.
Staff turn over.
Buy a new software product, get insight
about internal qualities.
26
Why Software Architecture Recovery
2- Preserving Architectural Qualities
Why Software Architecture Recovery?
Intended Architecture
Implemented Architecture
26
Why Software Architecture Recovery
2- Preserving Architectural Qualities
Why Software Architecture Recovery?
Intended Architecture
Implemented Architecture
Requirements misunderstanding
Design Violation
Insensitivity to design
Lack of design knowledge
Inappropriate tools
Bad implementations
Changes
28
Why Software Architecture Recovery?
28
A big ball of mud: Apache Hadoop architecture
Why Software Architecture Recovery?
30
Why Software Architecture Recovery?
3- Renovating Architecture
e.g. From Legacy System to Cloud
based architecture.
A- Forward Architecting to design the ideal architecture.
B- Reverse architecting the legacy system to discover current
architecture.
C- Rebalancing, to create an architecture improvement plan.
https://www.youtube.com/watch?v=gp_D8r-2hwk
The Ariane 5 system reused design specifications and code from its highly successful
predecessor, the Ariane 4.
The Inertial Reference System, performed a data conversion of a 64-bit floating point
value related to the horizontal velocity and place the result into a 16-bit signed integer
variable.
Based on the operating characteristics of the Ariane 4, the design team felt it was
physically impossible to have a horizontal velocity large enough to cause an arithmetic
overflow of a 16-bit signed integer variable.
However, the reuse of this software in the Ariane 5 placed the code in a very different
operating context in which the specific design assumption relating to horizontal velocity
was no longer valid.
Primary process crashed, the system switched to the redundant backup process, the
backup crashed for the same reason.
The Inertial Reference System then generated diagnostic output which was incorrectly
interpreted as flight control data by other portions of the flight control system. This faulty
interpretation made the flight control system take actions that led to the self-destruction
of the rocket.
33
Reverse Engineering and Design Recovery : A taxonomy,
Elliot J. Chikofsky, James H. Cross II, IEEE Software,
January 1990
What to Recover?
34
Quality Function Deployment’s
House of Quality
Functionaliti
es
Relationships
Between
Qualities
and
Design Decisions
ImportanceRankingsQualities
Design
Decisions
Costs/Feasibility
Engineering Measures
Trade-offs
1
2
3
4
5
6
7
8
What to Recover?
How to Recover the Architecture?
 We need a chain of evidences to discover the decisions
and reconstruct the architecture
 It’s not about mining code, it’s about mining software
repositories, mining all assets.
35
….
Code
models
Bugs
Issues
Changes
Documents
Specifications
People
ChatsTraces
Web Sites
Emails
….
Code
Models
Bugs
Issues
Changes
Documents
Specifications
People
ChatsTraces
Web Sites
Emails
Partial Views
Pieces of knowledge
Decision View
Logical
View
Deployment
View
Physical
View
Process
View
Use case
View
How to Recover the Architecture?
36
How to Recover the Architecture?
RECOVERING TACTICAL
ARCHITECTURAL DECISIONS
38
How to Achieve this?
39
 Tactics are pervasive in fault-tolerant and/or high-
performance systems.
 Tactics seem to have an interesting relationship to change.
Use of Tactics in a Variety of Systems
40
Tactics tend to be found in safety-critical, and/or other kinds of
performance-centric systems.
Why It is so Difficult?
41
No single way to implement
an architectural tactic/decision.
Structural analysis fails.
❸ Observer Pattern
(Found in Amalgam)
❷ Decorator Pattern
(Found in Thera, JSRB, Rossume)
❶ Direct communication with
Configuration (Found in Hadoop,
Chat3, Smartfrog)
Mehdi Mirakhorli, Jane Cleland-Huang, "Tracing Architectural Concerns in High Assurance Systems (NIER Track)“,
33th International Conference on Software Engineering, ICSE 2011, Honolulu, Hawaii, USA, May 2011.
It’s Even Harder
42
A big ball of mud: Apache Hadoop architecture
It’s Even Harder
43
A Closer Look at Apache Hadoop - Pooling Tactic
Recovering Architectural Tactics
44
Mehdi Mirakhorli, Yonghee Shin, Jane Cleland-Huang and Murat Cinar, "A Tactic-Centric Approach for
Automating Traceability of Quality Concerns", IEEE International Conference on Software Engineering (ICSE)
2012, (14% acceptance).ACM SIGSOFT Distinguished Paper Award.
Tactic Detection Approach
45
Normalizes the frequency
with which term t occurs
in the training document
with respect to its length
Computes the percentage
of training documents of
type Q containing term t
Decreases
the weight
of terms
that are
project
specific.
Training
Classification
Computes the likelihood
that code snippet r traces
to Query q.
HADOOP Case Study
46
Approximately 1700 classes.
RECOVERING MODULE VIEW
47
Recover Implementation View
 Static dependency checkers
 Structure 101, Lattix, CppDepend, Ndepend
 jDepend, ClassCycle, Dependency Finder
 Understand C++, Bauhaus, SonarJ, Softwarenaut
 Reveal real structures via dependency analysis
48
Example: Hadoop Yarn View
49
Code City
50
51
 Details on the overall Class density
 Identification of God Classes
Code City
52
 Details on the overall Class density
 Identification of God Classes
Code City
 What is that green parking lot?
Code City
53
 What is that green parking lot?
Code City
54
55
 Identification of major Components
 Filtration based on the percentage of dependency
 Class hierarchy
Softwarenaut
Main components like Node-Manager and Resource-Manager do not have dependency on each other.
http://scg.unibe.ch/softwarenaut
56
Softwarenaut
Filter the dependencies by 40%
and try simplifying the
dependency graph.
57
Understand Tool
58
Understand Tool
59
Understand Tool
60
Structure 101
Unique feature
is different type
of clustering
61
Structure 101
10 packages
have been
clustered
together
because all of
them have
cyclical
dependency
with each
other.
62
Top Down/Conceptual/Reflection Model
 Start with Specifications / High level knowledge about architecture
 Formulate hypotheses and verify them against the source code
Gail C. Murphy, David Notkin, and Kevin Sullivan. 1997. Extending and Managing Software Reflexion Models.
Technical Report. University of British Columbia, Vancouver, BC, Canada, Canada.
63
Recovering Layers
RECOVERING FUNCTIONAL
ARCHITECTURE
64
Recover Functional Architecture
Functional architecture
is a conceptual view of the
architecture, depicting the
key areas of functionality in
the system and how they
interact with each other.
65
Recover Functional Architecture
Cluster features, tasks, change requests, bugs etc. submitted to JIRA issue
tracking system. 66
Recover Functional Architecture
Incremental
Diffusive ClusteringSubmitted
Issues
Feature
Naming
Code-Feature Correlation
Source Code
Features NamesFunctional Elements
67
Features
Recover Functional Architecture
translat, framework, correct, dutch, timesheet, spanish, Translate
statu, account, cancel, fin, reconcili, tran Accounting
payment, gatewai, deposit' Payment
invoic Invoice mgm
order, item, purchas, quot' Order
cart, shop' Shopping
modul, hr, leav' HR
ship, shipment, field, group' Shipment
email, contact, address, mech, notific' communication
inventori, facil, receiv, serial' Inventory mgm
birt, russian, persian, declar, effici' Language
card, credit, number' Credit Card Processing
task, project, mgr, projectmgr' Project mgm
effort, workeffort, note, work Workefort mgm
supplier, vendor' Supply mgm
68
Recover Functional Architecture
69
RECOVERING DESIGN PATTERNS
70
Discovery Micro Design
 Stage 1: Creating semi-formal definitions for each pattern of interest
and its variants based on common extensible feature types.
 Stage 2: Detecting patterns by identifying its features, with different
search technologies best fitting to the respective feature.
Slide used courtesy of Patrick Maeder
71
ONE BIG CHALLENGE
72
72
Architecture Decay
72
A big ball of mud: Apache Hadoop architecture
Architecture Decay
ONE SCENARIO:
PRESERVING THE ARCHITECTURE
75
Architecture Breaker
76Issues Reported: HADOOP-4584, HADOOP-178,…
NameNode.java
DataNode.java
a)HeartBeat
b)blockreports
c)blocktobe
deleted
…
Developer #1: DataNodes.java,
should send several messages to
the NameNode.java. Messages
such as block reports, heartbeat,
blocks to be deleted etc.
Dat
a
Dat
a
Dat
a
Architecture Breaker
76Issues Reported: HADOOP-4584, HADOOP-178,…
NameNode.java
DataNode.java
a)HeartBeat
b)blockreports
c)blocktobe
deleted
…
Developer #2: So many
messages, lets merge them by
piggy-backing
Dat
a
Dat
a
Dat
a
Architecture Breaker
76Issues Reported: HADOOP-4584, HADOOP-178,…
NameNode.java
DataNode.java
a,b,c,…
Piggy Backing
Heartbeat message on
block reports
Developer #2: So many
messages, lets merge them by
piggy-backing
Dat
a
Dat
a
Dat
a
Architecture Breaker
76Issues Reported: HADOOP-4584, HADOOP-178,…
NameNode.java
DataNode.java
a,b,c,…
Piggy Backing
Heartbeat message on
block reports
Developer #2: So many
messages, lets merge them by
piggy-backing
Design Decay &
Compromising Availability:
Block reports are usually
delayed, system detects the
DataNode failure and lunches
the recovery process while it is
alive.
Dat
a
Dat
a
Dat
a
Architecture Breaker
80Issues Reported: HADOOP-4584, HADOOP-178,…
NameNode.java
DataNode.java
…
a.b.c….
If (t==10 & BlockReady)
report(b);
else report(Empty);
Developer #3: every 10
seconds DataNode reports data
or send an empty message for
heartbeat
Dat
a
Dat
a
Dat
a
Architecture Breaker
81Issues Reported: HADOOP-4584, HADOOP-178,…
NameNode.java
DataNode.java
a.b.c….
If (t==2 & BlockReady)
report(b);
else report(Empty);
Developer #4: lets make it
every 2 seconds
Design Decay &
Performance Tradeoff:
Performance issues, tradeoff
between availability and
performance
Dat
a
Dat
a
Dat
a
Archie: A Smart IDE to Protect Architecture
The vision initially presented at:
Mehdi Mirakhorli, Cleland-Huang, "Using Tactic Traceability Information Models to Reduce the Risk of Architectural Degradation during
System Maintenance", ICSM 2011.
82
Detect and
monitor code
snippets that
implement key
architectural
decisions in the
source code.
Proactively keep
developers
informed of
underlying
architectural
decisions during
maintenance
activities.
Automatically
trace external
architecture
specification
documents to
the source code
or design
model.
Perform change
impact analysis
of architectural
concerns at both
the code and
design level.
83
Archie: A Smart IDE to Protect Architecture
Decision Detector: A rigorously
validated automated technique
based on a combination of
machine learning, structural
analysis, and pattern matching
techniques.
Why it works?: Trained by sample
source codes from hundreds of
open source projects.
84
Detect and
monitor code
snippets that
implement key
architectural
decisions in the
source code.
Archie: A Smart IDE to Protect Architecture
Code Snippets
public boolean isAuditUserIdentifyPresent(){
return(this.auditUserIdentify != null);
public BigDecimal getAuditSequenceNumber(){
return(this.auditSequenceNumber;
Code Snippets
public boolean isAuditUserIdentifyPresent(){
return(this.auditUserIdentify != null);
public BigDecimal getAuditSequenceNumber(){
return(this.auditSequenceNumber;
85
Detect and
monitor code
snippets that
implement key
architectural
decisions in the
source code.
Archie: A Smart IDE to Protect Architecture
86
Detect and
monitor code
snippets that
implement key
architectural
decisions in the
source code.
Archie: A Smart IDE to Protect Architecture
87
Proactively keep
developers
informed of
underlying
architectural
decisions during
maintenance
activities.
 IDEs and Compilers do well on Syntactical issues, a
little attention to Semantic but Design Rational is not
covered.
Archie: A Smart IDE to Protect Architecture
 Archie has features for communicating architectural
knowledge.
 Visualization module to depict the seams of a software
design, the driving requirements, business goals and
rationale behind the source code.
88
Archie: A Smart IDE to Protect Architecture
Proactively keep
developers
informed of
underlying
architectural
decisions during
maintenance
activities.
Perform change
impact analysis
of architectural
concerns at both
the code and
design level.
An asynchronous Event-Based monitoring and
notification infrastructure has been designed to
proactively inform developers of underlying
architectural decisions. An initial proof of
concept experiment has been conducted.
Archie: A Smart IDE to Protect Architecture
89
90
Archie: A Smart IDE to Protect Architecture
Perform change
impact analysis
of architectural
concerns at both
the code and
design level.
91
Archie: A Smart IDE to Protect Architecture
Perform change
impact analysis
of architectural
concerns at both
the code and
design level.
92
Archie: A Smart IDE to Protect Architecture
Design Warnings
Perform change
impact analysis
of architectural
concerns at both
the code and
design level.
WHAT ARE YOU PASSIONATE ABOUT?
93
Software Archeology
Mehdi Mirakhorli,
Rochester Institute of Technology
Winter 2015
Software Architecture Reconstruction:
Why? What? and How?
94

Mais conteúdo relacionado

Mais procurados

AKUDA Labs: Pulsar
AKUDA Labs: PulsarAKUDA Labs: Pulsar
AKUDA Labs: Pulsar
AKUDA Labs
 
Google file system
Google file systemGoogle file system
Google file system
Dhan V Sagar
 

Mais procurados (20)

Server Load Balancer Test Methodology
Server Load Balancer Test MethodologyServer Load Balancer Test Methodology
Server Load Balancer Test Methodology
 
Tuning TCP and NGINX on EC2
Tuning TCP and NGINX on EC2Tuning TCP and NGINX on EC2
Tuning TCP and NGINX on EC2
 
Securing Multi-copy Dynamic Data in Cloud using AES
Securing Multi-copy Dynamic Data in Cloud using AESSecuring Multi-copy Dynamic Data in Cloud using AES
Securing Multi-copy Dynamic Data in Cloud using AES
 
AKUDA Labs: Pulsar
AKUDA Labs: PulsarAKUDA Labs: Pulsar
AKUDA Labs: Pulsar
 
Google file system
Google file systemGoogle file system
Google file system
 
DNS-OARC 34: Measuring DNS Flag Day 2020
DNS-OARC 34: Measuring DNS Flag Day 2020DNS-OARC 34: Measuring DNS Flag Day 2020
DNS-OARC 34: Measuring DNS Flag Day 2020
 
IETF 100: A signalling mechanism for trusted keys in the DNS
IETF 100: A signalling mechanism for trusted keys in the DNSIETF 100: A signalling mechanism for trusted keys in the DNS
IETF 100: A signalling mechanism for trusted keys in the DNS
 
Openstack on Fedora, Fedora on Openstack: An Introduction to cloud IaaS
Openstack on Fedora, Fedora on Openstack: An Introduction to cloud IaaSOpenstack on Fedora, Fedora on Openstack: An Introduction to cloud IaaS
Openstack on Fedora, Fedora on Openstack: An Introduction to cloud IaaS
 
DNS-OARC-36: Measurement of DNSSEC Validation with RSA-4096
DNS-OARC-36: Measurement of DNSSEC Validation with RSA-4096DNS-OARC-36: Measurement of DNSSEC Validation with RSA-4096
DNS-OARC-36: Measurement of DNSSEC Validation with RSA-4096
 
FIWARE Data Management in High Availability
FIWARE Data Management in High AvailabilityFIWARE Data Management in High Availability
FIWARE Data Management in High Availability
 
Nagios
NagiosNagios
Nagios
 
DPDK Integration: A Product's Journey - Roger B. Melton
DPDK Integration: A Product's Journey - Roger B. MeltonDPDK Integration: A Product's Journey - Roger B. Melton
DPDK Integration: A Product's Journey - Roger B. Melton
 
A fun cup of joe with open liberty
A fun cup of joe with open libertyA fun cup of joe with open liberty
A fun cup of joe with open liberty
 
Netflix SRE perf meetup_slides
Netflix SRE perf meetup_slidesNetflix SRE perf meetup_slides
Netflix SRE perf meetup_slides
 
Typesafe spark- Zalando meetup
Typesafe spark- Zalando meetupTypesafe spark- Zalando meetup
Typesafe spark- Zalando meetup
 
Citrix TechEdge 2014 - Advanced Tools and Techniques for Troubleshooting NetS...
Citrix TechEdge 2014 - Advanced Tools and Techniques for Troubleshooting NetS...Citrix TechEdge 2014 - Advanced Tools and Techniques for Troubleshooting NetS...
Citrix TechEdge 2014 - Advanced Tools and Techniques for Troubleshooting NetS...
 
Cisco Router Throughput
Cisco Router ThroughputCisco Router Throughput
Cisco Router Throughput
 
Spy hard, challenges of 100G deep packet inspection on x86 platform
Spy hard, challenges of 100G deep packet inspection on x86 platformSpy hard, challenges of 100G deep packet inspection on x86 platform
Spy hard, challenges of 100G deep packet inspection on x86 platform
 
Hyperscan - Mohammad Abdul Awal
Hyperscan - Mohammad Abdul AwalHyperscan - Mohammad Abdul Awal
Hyperscan - Mohammad Abdul Awal
 
World of Tanks Experience of Using Kafka
World of Tanks Experience of Using KafkaWorld of Tanks Experience of Using Kafka
World of Tanks Experience of Using Kafka
 

Destaque

El joc com a procés de desenvolupament (part 1)
El joc com a procés de desenvolupament (part 1)El joc com a procés de desenvolupament (part 1)
El joc com a procés de desenvolupament (part 1)
Laura Garcinuño Velayos
 
Loan Disbusrsement
Loan DisbusrsementLoan Disbusrsement
Loan Disbusrsement
imashraf
 

Destaque (20)

Software Architecture: Trends
Software Architecture: TrendsSoftware Architecture: Trends
Software Architecture: Trends
 
Stakeholder Driven EA
Stakeholder Driven EAStakeholder Driven EA
Stakeholder Driven EA
 
Zarafa Server Mail Recovery
Zarafa Server Mail RecoveryZarafa Server Mail Recovery
Zarafa Server Mail Recovery
 
IA Een innovatieve toekomst in de bouw. Sessie 1 deel 1: Jan Desmyter Nieuwe ...
IA Een innovatieve toekomst in de bouw. Sessie 1 deel 1: Jan Desmyter Nieuwe ...IA Een innovatieve toekomst in de bouw. Sessie 1 deel 1: Jan Desmyter Nieuwe ...
IA Een innovatieve toekomst in de bouw. Sessie 1 deel 1: Jan Desmyter Nieuwe ...
 
Pixel Space
Pixel SpacePixel Space
Pixel Space
 
RAG Sun Storage Project 2015
RAG Sun Storage Project 2015RAG Sun Storage Project 2015
RAG Sun Storage Project 2015
 
Gasometers
GasometersGasometers
Gasometers
 
Software Architecture Patterns
Software Architecture PatternsSoftware Architecture Patterns
Software Architecture Patterns
 
El joc com a procés de desenvolupament (part 1)
El joc com a procés de desenvolupament (part 1)El joc com a procés de desenvolupament (part 1)
El joc com a procés de desenvolupament (part 1)
 
Loan Disbusrsement
Loan DisbusrsementLoan Disbusrsement
Loan Disbusrsement
 
Principles of software architecture design
Principles of software architecture designPrinciples of software architecture design
Principles of software architecture design
 
A Software Architect's View On Diagramming
A Software Architect's View On DiagrammingA Software Architect's View On Diagramming
A Software Architect's View On Diagramming
 
Archivos Y Carpetas
Archivos Y CarpetasArchivos Y Carpetas
Archivos Y Carpetas
 
Direcciones ip
Direcciones ipDirecciones ip
Direcciones ip
 
[2015/2016] RESEARCH in software engineering
[2015/2016] RESEARCH in software engineering[2015/2016] RESEARCH in software engineering
[2015/2016] RESEARCH in software engineering
 
Using Evolution Patterns to Evolve Software Architectures
Using Evolution Patterns to Evolve Software ArchitecturesUsing Evolution Patterns to Evolve Software Architectures
Using Evolution Patterns to Evolve Software Architectures
 
InduSoft Consulting Services Webinar
InduSoft Consulting Services WebinarInduSoft Consulting Services Webinar
InduSoft Consulting Services Webinar
 
Every business a software business
Every business a software businessEvery business a software business
Every business a software business
 
Future of Software Business
Future of Software BusinessFuture of Software Business
Future of Software Business
 
Stephen Allott Business of Software Conference Europe 2015 Scaling Software C...
Stephen Allott Business of Software Conference Europe 2015 Scaling Software C...Stephen Allott Business of Software Conference Europe 2015 Scaling Software C...
Stephen Allott Business of Software Conference Europe 2015 Scaling Software C...
 

Semelhante a Software Architecture Reconstruction: Why What and How

Ceph Day Beijing: Big Data Analytics on Ceph Object Store
Ceph Day Beijing: Big Data Analytics on Ceph Object Store Ceph Day Beijing: Big Data Analytics on Ceph Object Store
Ceph Day Beijing: Big Data Analytics on Ceph Object Store
Ceph Community
 
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
QAware GmbH
 
Task allocation on many core-multi processor distributed system
Task allocation on many core-multi processor distributed systemTask allocation on many core-multi processor distributed system
Task allocation on many core-multi processor distributed system
Deepak Shankar
 

Semelhante a Software Architecture Reconstruction: Why What and How (20)

Automating the Hunt for Non-Obvious Sources of Latency Spreads
Automating the Hunt for Non-Obvious Sources of Latency SpreadsAutomating the Hunt for Non-Obvious Sources of Latency Spreads
Automating the Hunt for Non-Obvious Sources of Latency Spreads
 
Stream Data Processing at Big Data Landscape by Oleksandr Fedirko
Stream Data Processing at Big Data Landscape by Oleksandr Fedirko Stream Data Processing at Big Data Landscape by Oleksandr Fedirko
Stream Data Processing at Big Data Landscape by Oleksandr Fedirko
 
Event Detection Pipelines with Apache Kafka
Event Detection Pipelines with Apache KafkaEvent Detection Pipelines with Apache Kafka
Event Detection Pipelines with Apache Kafka
 
Become a Performance Diagnostics Hero
Become a Performance Diagnostics HeroBecome a Performance Diagnostics Hero
Become a Performance Diagnostics Hero
 
C19013010 the tutorial to build shared ai services session 2
C19013010 the tutorial to build shared ai services session 2C19013010 the tutorial to build shared ai services session 2
C19013010 the tutorial to build shared ai services session 2
 
kumarResume
kumarResumekumarResume
kumarResume
 
2014 IEEE DOTNET DATA MINING PROJECT Trusteddb a-trusted-hardware-based-datab...
2014 IEEE DOTNET DATA MINING PROJECT Trusteddb a-trusted-hardware-based-datab...2014 IEEE DOTNET DATA MINING PROJECT Trusteddb a-trusted-hardware-based-datab...
2014 IEEE DOTNET DATA MINING PROJECT Trusteddb a-trusted-hardware-based-datab...
 
IEEE 2014 DOTNET DATA MINING PROJECTS Trusted db a-trusted-hardware-based-dat...
IEEE 2014 DOTNET DATA MINING PROJECTS Trusted db a-trusted-hardware-based-dat...IEEE 2014 DOTNET DATA MINING PROJECTS Trusted db a-trusted-hardware-based-dat...
IEEE 2014 DOTNET DATA MINING PROJECTS Trusted db a-trusted-hardware-based-dat...
 
Architecture Best Practices
Architecture Best PracticesArchitecture Best Practices
Architecture Best Practices
 
Move fast and make things with microservices
Move fast and make things with microservicesMove fast and make things with microservices
Move fast and make things with microservices
 
Ceph Day Beijing: Big Data Analytics on Ceph Object Store
Ceph Day Beijing: Big Data Analytics on Ceph Object Store Ceph Day Beijing: Big Data Analytics on Ceph Object Store
Ceph Day Beijing: Big Data Analytics on Ceph Object Store
 
Exploration of Radars and Software Defined Radios using VisualSim
Exploration of  Radars and Software Defined Radios using VisualSimExploration of  Radars and Software Defined Radios using VisualSim
Exploration of Radars and Software Defined Radios using VisualSim
 
Zero Downtime JEE Architectures
Zero Downtime JEE ArchitecturesZero Downtime JEE Architectures
Zero Downtime JEE Architectures
 
Fully-managed Cloud-native Databases: The path to indefinite scale @ CNN Mainz
Fully-managed Cloud-native Databases: The path to indefinite scale @ CNN MainzFully-managed Cloud-native Databases: The path to indefinite scale @ CNN Mainz
Fully-managed Cloud-native Databases: The path to indefinite scale @ CNN Mainz
 
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ... The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
 
Hhm 3474 mq messaging technologies and support for high availability and acti...
Hhm 3474 mq messaging technologies and support for high availability and acti...Hhm 3474 mq messaging technologies and support for high availability and acti...
Hhm 3474 mq messaging technologies and support for high availability and acti...
 
Task allocation on many core-multi processor distributed system
Task allocation on many core-multi processor distributed systemTask allocation on many core-multi processor distributed system
Task allocation on many core-multi processor distributed system
 
google file system
google file systemgoogle file system
google file system
 
Lalit
LalitLalit
Lalit
 

Último

introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 

Último (20)

VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 

Software Architecture Reconstruction: Why What and How

  • 1. Software Archeology Mehdi Mirakhorli Rochester Institute of Technology mehdi@se.rit.edu Winter 2015 Software Architecture Reconstruction: Why? What? and How? 1
  • 2. What do I do for the living? 2
  • 3. Map of My Research 3 Software Architecture Requirements Engineering Cyber security/Physical Software Architecture
  • 4. Map of My Research 4 Software Architecture Software Architecture
  • 6. 6 Master Slave HB Detailed Example: An architectural view 6 Apache Hadoop Architecture
  • 7. 6 Master Slave HB Detailed Example: An architectural view 7 Apache Hadoop Architecture Requirements# 1: highly available system, where hardware failure can be the norm rather than the exception
  • 8. 6 Master Slave HB Detailed Example: An architectural view 8 Apache Hadoop Architecture Requirements# 1: highly available system, where hardware failure can be the norm rather than the exception
  • 9. 6 Master Slave HB Decision # 1: Use Master-slave Architectural Style where slave processes are replicated Detailed Example: An architectural view 9 Apache Hadoop Architecture Requirements# 1: highly available system, where hardware failure can be the norm rather than the exception
  • 10. 6 Master Slave HB Decision # 1: Use Master-slave Architectural Style where slave processes are replicated Detailed Example: An architectural view 10 Decision # 2: Checkpoint updated data, and bundle replicas (send every 2 seconds) – in order to meet performance goals. Apache Hadoop Architecture Requirements# 1: highly available system, where hardware failure can be the norm rather than the exception
  • 11. 6 Master Slave HB Decision # 1: Use Master-slave Architectural Style where slave processes are replicated Detailed Example: An architectural view 11 Decision # 2: Checkpoint updated data, and bundle replicas (send every 2 seconds) – in order to meet performance goals. Decision # 3: Use heartbeat tactic to monitor availability of task trackers and data nodes. Heartbeat must beat every .25 seconds to balance availability and performance. Apache Hadoop Architecture Requirements# 1: highly available system, where hardware failure can be the norm rather than the exception
  • 12. 6 Master Slave HB Decision # 1: Use Master-slave Architectural Style where slave processes are replicated Detailed Example: An architectural view 12 Decision # 2: Checkpoint updated data, and bundle replicas (send every 2 seconds) – in order to meet performance goals. Decision # 3: Use heartbeat tactic to monitor availability of task trackers and data nodes. Heartbeat must beat every .25 seconds to balance availability and performance. Decision # 4: Use proxy handles failure pattern to shield clients from failures, and to support fault tolerance (i.e. service continues in the face of transient failure. Apache Hadoop Architecture Requirements# 1: highly available system, where hardware failure can be the norm rather than the exception
  • 13. 6 Master Slave HB Decision # 1: Use Master-slave Architectural Style where slave processes are replicated Detailed Example: An architectural view 13 Decision # 2: Checkpoint updated data, and bundle replicas (send every 2 seconds) – in order to meet performance goals. Decision # 3: Use heartbeat tactic to monitor availability of task trackers and data nodes. Heartbeat must beat every .25 seconds to balance availability and performance. Decision # 4: Use proxy handles failure pattern to shield clients from failures, and to support fault tolerance (i.e. service continues in the face of transient failure. Apache Hadoop Architecture Requirements# 1: highly available system, where hardware failure can be the norm rather than the exception Requirements# 2: Provide secure services for the client
  • 14. 6 Master Slave HB Decision # 1: Use Master-slave Architectural Style where slave processes are replicated Detailed Example: An architectural view 14 Decision # 2: Checkpoint updated data, and bundle replicas (send every 2 seconds) – in order to meet performance goals. Decision # 3: Use heartbeat tactic to monitor availability of task trackers and data nodes. Heartbeat must beat every .25 seconds to balance availability and performance. Decision # 4: Use proxy handles failure pattern to shield clients from failures, and to support fault tolerance (i.e. service continues in the face of transient failure. Apache Hadoop Architecture Requirements# 1: highly available system, where hardware failure can be the norm rather than the exception Requirements# 2: Provide secure services for the client
  • 15. 6 Master Slave HB Decision # 1: Use Master-slave Architectural Style where slave processes are replicated Detailed Example: An architectural view 15 Decision # 2: Checkpoint updated data, and bundle replicas (send every 2 seconds) – in order to meet performance goals. Decision # 3: Use heartbeat tactic to monitor availability of task trackers and data nodes. Heartbeat must beat every .25 seconds to balance availability and performance. Decision # 4: Use proxy handles failure pattern to shield clients from failures, and to support fault tolerance (i.e. service continues in the face of transient failure. Apache Hadoop Architecture Requirements# 1: highly available system, where hardware failure can be the norm rather than the exception Decision # 1: Mutual Authentication with Kerberos RPC (SASL/GSSAPI) on RPC connections Requirements# 2: Provide secure services for the client
  • 16. 6 Master Slave HB Decision # 1: Use Master-slave Architectural Style where slave processes are replicated Detailed Example: An architectural view 16 Decision # 2: Checkpoint updated data, and bundle replicas (send every 2 seconds) – in order to meet performance goals. Decision # 3: Use heartbeat tactic to monitor availability of task trackers and data nodes. Heartbeat must beat every .25 seconds to balance availability and performance. Decision # 4: Use proxy handles failure pattern to shield clients from failures, and to support fault tolerance (i.e. service continues in the face of transient failure. Apache Hadoop Architecture Requirements# 1: highly available system, where hardware failure can be the norm rather than the exception Decision # 1: Mutual Authentication with Kerberos RPC (SASL/GSSAPI) on RPC connections Decision # 2: Maintain an Audit Trail Requirements# 2: Provide secure services for the client
  • 17. 6 Master Slave HB Decision # 1: Use Master-slave Architectural Style where slave processes are replicated Detailed Example: An architectural view 17 Decision # 2: Checkpoint updated data, and bundle replicas (send every 2 seconds) – in order to meet performance goals. Decision # 3: Use heartbeat tactic to monitor availability of task trackers and data nodes. Heartbeat must beat every .25 seconds to balance availability and performance. Decision # 4: Use proxy handles failure pattern to shield clients from failures, and to support fault tolerance (i.e. service continues in the face of transient failure. Apache Hadoop Architecture Requirements# 1: highly available system, where hardware failure can be the norm rather than the exception Decision # 1: Mutual Authentication with Kerberos RPC (SASL/GSSAPI) on RPC connections Decision # 2: Maintain an Audit Trail Decision # 3: Data Encryption on RPC Data Encryption on Block data transfer Data Encryption on HTTP Requirements# 2: Provide secure services for the client
  • 18. 6 Master Slave HB Decision # 1: Use Master-slave Architectural Style where slave processes are replicated Detailed Example: An architectural view 18 Decision # 2: Checkpoint updated data, and bundle replicas (send every 2 seconds) – in order to meet performance goals. Decision # 3: Use heartbeat tactic to monitor availability of task trackers and data nodes. Heartbeat must beat every .25 seconds to balance availability and performance. Decision # 4: Use proxy handles failure pattern to shield clients from failures, and to support fault tolerance (i.e. service continues in the face of transient failure. Apache Hadoop Architecture Requirements# 1: highly available system, where hardware failure can be the norm rather than the exception Decision # 1: Mutual Authentication with Kerberos RPC (SASL/GSSAPI) on RPC connections Decision # 2: Maintain an Audit Trail Decision # 3: Data Encryption on RPC Data Encryption on Block data transfer Data Encryption on HTTP Decision # 4: Secure DataNode: DataNodes must authenticate themselves Requirements# 2: Provide secure services for the client
  • 19. 6 Master Slave HB Decision # 1: Use Master-slave Architectural Style where slave processes are replicated Detailed Example: An architectural view 19 Decision # 2: Checkpoint updated data, and bundle replicas (send every 2 seconds) – in order to meet performance goals. Decision # 3: Use heartbeat tactic to monitor availability of task trackers and data nodes. Heartbeat must beat every .25 seconds to balance availability and performance. Decision # 4: Use proxy handles failure pattern to shield clients from failures, and to support fault tolerance (i.e. service continues in the face of transient failure. Apache Hadoop Architecture Requirements# 1: highly available system, where hardware failure can be the norm rather than the exception Decision # 1: Mutual Authentication with Kerberos RPC (SASL/GSSAPI) on RPC connections Decision # 2: Maintain an Audit Trail Decision # 3: Data Encryption on RPC Data Encryption on Block data transfer Data Encryption on HTTP Decision # 4: Secure DataNode: DataNodes must authenticate themselves Requirements# 2: Provide secure services for the client More Decisions: A non-trivial architecture is likely to be composed of hundreds, if not thousands of architectural decisions.
  • 20. 6 Master Slave HB Decision # 1: Use Master-slave Architectural Style where slave processes are replicated Detailed Example: An architectural view 20 Decision # 2: Checkpoint updated data, and bundle replicas (send every 2 seconds) – in order to meet performance goals. Decision # 3: Use heartbeat tactic to monitor availability of task trackers and data nodes. Heartbeat must beat every .25 seconds to balance availability and performance. Decision # 4: Use proxy handles failure pattern to shield clients from failures, and to support fault tolerance (i.e. service continues in the face of transient failure. Apache Hadoop Architecture Requirements# 1: highly available system, where hardware failure can be the norm rather than the exception Decision # 1: Mutual Authentication with Kerberos RPC (SASL/GSSAPI) on RPC connections Decision # 2: Maintain an Audit Trail Decision # 3: Data Encryption on RPC Data Encryption on Block data transfer Data Encryption on HTTP Decision # 4: Secure DataNode: DataNodes must authenticate themselves Requirements# 2: Provide secure services for the client More Decisions: A non-trivial architecture is likely to be composed of hundreds, if not thousands of architectural decisions. Decision # 1: Separate each of these domains and run them on different threads.. More Decisions: A non-trivial architecture is likely to be composed of hundreds, if not thousands of architectural decisions. Decision # 29: Separate data busses should be used for data or command operations. Each buss should utilize a different scheduling mechanisms. Decision # 101: Utilize heartbeat, voting and simulation to detect faults. FDIR module responsible for all these. Decision # 1: Keep primaries together, and replicas together at all times to meet redundancy goals. Decision # 2: Checkpoint updated data, and bundle replicas (send every 2 seconds) – in order to meet performance goals.Decision # 3: Use heartbeat tactic to monitor availability of track manager primaries and secondaries. Heartbeat must beat every .25 seconds to balance availability and performance. Decision # 3: Use heartbeat tactic to monitor availability of track manager primaries and secondaries. Heartbeat must beat every .25 seconds to balance availability and performance. Decision # 32: System must use active redundancy with graceful degradation to achieve maximum availability. More Decisions: A non-trivial architecture is likely to be composed of hundreds, if not thousands of architectural decisions. More Decisions: A non-trivial architecture is likely to be composed of hundreds, if not thousands of architectural decisions. Decision # 91: Utilize heartbeat, voting and simulation to detect faults. FDIR module responsible for all these. Decision # 1: Use thread pooling to execute recurrent mission operations. Decision # 21: Active redundancy is implemented to achieve minimize mean time between failures. Decision # 19: Separation of concerns: Each tasks must run as a separate process on a separate processor. Decision # 66: Check pointing is utilized to recover non-mission critical operations. Decision # 52: Platform Diversity plus N-Version programming must be used to maximize the reliability. Decision # 4: Use proxy handles failure pattern to shield clients from failures, and to support fault tolerance (i.e. service continues in the face of transient failure. Decision # 151: Utilize heartbeat, voting and simulation to detect faults. FDIR module responsible for all these. Decision # 81: Voting mechanism is used to recover from failure of any of the sensors. Decision # 101: Utilize heartbeat, voting and simulation to detect faults. FDIR module responsible for all these. Decision # 113: Semantic based scheduling and task sequencer is used to provide real- time performance. More Decisions: A non-trivial architecture is likely to be composed of hundreds, if not thousands of architectural decisions. Decision # 3: Use heartbeat tactic to monitor availability of track manager primaries and secondaries. Heartbeat must beat every .25 seconds to balance availability and performance. Decision # 121: Keep primaries together, and replicas together at all times to meet redundancy goals. Decision # 3: Use heartbeat tactic to monitor availability of track manager primaries and secondaries. Heartbeat must beat every .25 seconds to balance availability and performance.
  • 21. 21 Handbooks of Software Architecture
  • 24. WHY SOFTWARE ARCHITECTURE RECOVERY? 24 I always get that question: “Is there anyone who does this?”
  • 25. 25 Why Software Architecture Recovery? 1- Software Comprehension Department of Defense (DOD) spends almost half of its post-deployment costs (47%) reverse engineering its own code. This process often involves identifying the underlying design intent in order to modify a legacy system, or understanding the code and evaluating the impact of introducing changes. Staff turn over. Buy a new software product, get insight about internal qualities.
  • 26. 26 Why Software Architecture Recovery 2- Preserving Architectural Qualities Why Software Architecture Recovery? Intended Architecture Implemented Architecture
  • 27. 26 Why Software Architecture Recovery 2- Preserving Architectural Qualities Why Software Architecture Recovery? Intended Architecture Implemented Architecture Requirements misunderstanding Design Violation Insensitivity to design Lack of design knowledge Inappropriate tools Bad implementations Changes
  • 29. 28 A big ball of mud: Apache Hadoop architecture Why Software Architecture Recovery?
  • 30. 30 Why Software Architecture Recovery? 3- Renovating Architecture e.g. From Legacy System to Cloud based architecture. A- Forward Architecting to design the ideal architecture. B- Reverse architecting the legacy system to discover current architecture. C- Rebalancing, to create an architecture improvement plan.
  • 32. The Ariane 5 system reused design specifications and code from its highly successful predecessor, the Ariane 4. The Inertial Reference System, performed a data conversion of a 64-bit floating point value related to the horizontal velocity and place the result into a 16-bit signed integer variable. Based on the operating characteristics of the Ariane 4, the design team felt it was physically impossible to have a horizontal velocity large enough to cause an arithmetic overflow of a 16-bit signed integer variable. However, the reuse of this software in the Ariane 5 placed the code in a very different operating context in which the specific design assumption relating to horizontal velocity was no longer valid. Primary process crashed, the system switched to the redundant backup process, the backup crashed for the same reason. The Inertial Reference System then generated diagnostic output which was incorrectly interpreted as flight control data by other portions of the flight control system. This faulty interpretation made the flight control system take actions that led to the self-destruction of the rocket.
  • 33. 33 Reverse Engineering and Design Recovery : A taxonomy, Elliot J. Chikofsky, James H. Cross II, IEEE Software, January 1990 What to Recover?
  • 34. 34 Quality Function Deployment’s House of Quality Functionaliti es Relationships Between Qualities and Design Decisions ImportanceRankingsQualities Design Decisions Costs/Feasibility Engineering Measures Trade-offs 1 2 3 4 5 6 7 8 What to Recover?
  • 35. How to Recover the Architecture?  We need a chain of evidences to discover the decisions and reconstruct the architecture  It’s not about mining code, it’s about mining software repositories, mining all assets. 35 …. Code models Bugs Issues Changes Documents Specifications People ChatsTraces Web Sites Emails
  • 36. …. Code Models Bugs Issues Changes Documents Specifications People ChatsTraces Web Sites Emails Partial Views Pieces of knowledge Decision View Logical View Deployment View Physical View Process View Use case View How to Recover the Architecture? 36
  • 37. How to Recover the Architecture?
  • 39. How to Achieve this? 39  Tactics are pervasive in fault-tolerant and/or high- performance systems.  Tactics seem to have an interesting relationship to change.
  • 40. Use of Tactics in a Variety of Systems 40 Tactics tend to be found in safety-critical, and/or other kinds of performance-centric systems.
  • 41. Why It is so Difficult? 41 No single way to implement an architectural tactic/decision. Structural analysis fails. ❸ Observer Pattern (Found in Amalgam) ❷ Decorator Pattern (Found in Thera, JSRB, Rossume) ❶ Direct communication with Configuration (Found in Hadoop, Chat3, Smartfrog) Mehdi Mirakhorli, Jane Cleland-Huang, "Tracing Architectural Concerns in High Assurance Systems (NIER Track)“, 33th International Conference on Software Engineering, ICSE 2011, Honolulu, Hawaii, USA, May 2011.
  • 42. It’s Even Harder 42 A big ball of mud: Apache Hadoop architecture
  • 43. It’s Even Harder 43 A Closer Look at Apache Hadoop - Pooling Tactic
  • 44. Recovering Architectural Tactics 44 Mehdi Mirakhorli, Yonghee Shin, Jane Cleland-Huang and Murat Cinar, "A Tactic-Centric Approach for Automating Traceability of Quality Concerns", IEEE International Conference on Software Engineering (ICSE) 2012, (14% acceptance).ACM SIGSOFT Distinguished Paper Award.
  • 45. Tactic Detection Approach 45 Normalizes the frequency with which term t occurs in the training document with respect to its length Computes the percentage of training documents of type Q containing term t Decreases the weight of terms that are project specific. Training Classification Computes the likelihood that code snippet r traces to Query q.
  • 48. Recover Implementation View  Static dependency checkers  Structure 101, Lattix, CppDepend, Ndepend  jDepend, ClassCycle, Dependency Finder  Understand C++, Bauhaus, SonarJ, Softwarenaut  Reveal real structures via dependency analysis 48
  • 51. 51  Details on the overall Class density  Identification of God Classes Code City
  • 52. 52  Details on the overall Class density  Identification of God Classes Code City  What is that green parking lot?
  • 53. Code City 53  What is that green parking lot?
  • 55. 55  Identification of major Components  Filtration based on the percentage of dependency  Class hierarchy Softwarenaut Main components like Node-Manager and Resource-Manager do not have dependency on each other. http://scg.unibe.ch/softwarenaut
  • 56. 56 Softwarenaut Filter the dependencies by 40% and try simplifying the dependency graph.
  • 60. 60 Structure 101 Unique feature is different type of clustering
  • 61. 61 Structure 101 10 packages have been clustered together because all of them have cyclical dependency with each other.
  • 62. 62 Top Down/Conceptual/Reflection Model  Start with Specifications / High level knowledge about architecture  Formulate hypotheses and verify them against the source code Gail C. Murphy, David Notkin, and Kevin Sullivan. 1997. Extending and Managing Software Reflexion Models. Technical Report. University of British Columbia, Vancouver, BC, Canada, Canada.
  • 65. Recover Functional Architecture Functional architecture is a conceptual view of the architecture, depicting the key areas of functionality in the system and how they interact with each other. 65
  • 66. Recover Functional Architecture Cluster features, tasks, change requests, bugs etc. submitted to JIRA issue tracking system. 66
  • 67. Recover Functional Architecture Incremental Diffusive ClusteringSubmitted Issues Feature Naming Code-Feature Correlation Source Code Features NamesFunctional Elements 67 Features
  • 68. Recover Functional Architecture translat, framework, correct, dutch, timesheet, spanish, Translate statu, account, cancel, fin, reconcili, tran Accounting payment, gatewai, deposit' Payment invoic Invoice mgm order, item, purchas, quot' Order cart, shop' Shopping modul, hr, leav' HR ship, shipment, field, group' Shipment email, contact, address, mech, notific' communication inventori, facil, receiv, serial' Inventory mgm birt, russian, persian, declar, effici' Language card, credit, number' Credit Card Processing task, project, mgr, projectmgr' Project mgm effort, workeffort, note, work Workefort mgm supplier, vendor' Supply mgm 68
  • 71. Discovery Micro Design  Stage 1: Creating semi-formal definitions for each pattern of interest and its variants based on common extensible feature types.  Stage 2: Detecting patterns by identifying its features, with different search technologies best fitting to the respective feature. Slide used courtesy of Patrick Maeder 71
  • 74. 72 A big ball of mud: Apache Hadoop architecture Architecture Decay
  • 75. ONE SCENARIO: PRESERVING THE ARCHITECTURE 75
  • 76. Architecture Breaker 76Issues Reported: HADOOP-4584, HADOOP-178,… NameNode.java DataNode.java a)HeartBeat b)blockreports c)blocktobe deleted … Developer #1: DataNodes.java, should send several messages to the NameNode.java. Messages such as block reports, heartbeat, blocks to be deleted etc. Dat a Dat a Dat a
  • 77. Architecture Breaker 76Issues Reported: HADOOP-4584, HADOOP-178,… NameNode.java DataNode.java a)HeartBeat b)blockreports c)blocktobe deleted … Developer #2: So many messages, lets merge them by piggy-backing Dat a Dat a Dat a
  • 78. Architecture Breaker 76Issues Reported: HADOOP-4584, HADOOP-178,… NameNode.java DataNode.java a,b,c,… Piggy Backing Heartbeat message on block reports Developer #2: So many messages, lets merge them by piggy-backing Dat a Dat a Dat a
  • 79. Architecture Breaker 76Issues Reported: HADOOP-4584, HADOOP-178,… NameNode.java DataNode.java a,b,c,… Piggy Backing Heartbeat message on block reports Developer #2: So many messages, lets merge them by piggy-backing Design Decay & Compromising Availability: Block reports are usually delayed, system detects the DataNode failure and lunches the recovery process while it is alive. Dat a Dat a Dat a
  • 80. Architecture Breaker 80Issues Reported: HADOOP-4584, HADOOP-178,… NameNode.java DataNode.java … a.b.c…. If (t==10 & BlockReady) report(b); else report(Empty); Developer #3: every 10 seconds DataNode reports data or send an empty message for heartbeat Dat a Dat a Dat a
  • 81. Architecture Breaker 81Issues Reported: HADOOP-4584, HADOOP-178,… NameNode.java DataNode.java a.b.c…. If (t==2 & BlockReady) report(b); else report(Empty); Developer #4: lets make it every 2 seconds Design Decay & Performance Tradeoff: Performance issues, tradeoff between availability and performance Dat a Dat a Dat a
  • 82. Archie: A Smart IDE to Protect Architecture The vision initially presented at: Mehdi Mirakhorli, Cleland-Huang, "Using Tactic Traceability Information Models to Reduce the Risk of Architectural Degradation during System Maintenance", ICSM 2011. 82
  • 83. Detect and monitor code snippets that implement key architectural decisions in the source code. Proactively keep developers informed of underlying architectural decisions during maintenance activities. Automatically trace external architecture specification documents to the source code or design model. Perform change impact analysis of architectural concerns at both the code and design level. 83 Archie: A Smart IDE to Protect Architecture
  • 84. Decision Detector: A rigorously validated automated technique based on a combination of machine learning, structural analysis, and pattern matching techniques. Why it works?: Trained by sample source codes from hundreds of open source projects. 84 Detect and monitor code snippets that implement key architectural decisions in the source code. Archie: A Smart IDE to Protect Architecture Code Snippets public boolean isAuditUserIdentifyPresent(){ return(this.auditUserIdentify != null); public BigDecimal getAuditSequenceNumber(){ return(this.auditSequenceNumber; Code Snippets public boolean isAuditUserIdentifyPresent(){ return(this.auditUserIdentify != null); public BigDecimal getAuditSequenceNumber(){ return(this.auditSequenceNumber;
  • 85. 85 Detect and monitor code snippets that implement key architectural decisions in the source code. Archie: A Smart IDE to Protect Architecture
  • 86. 86 Detect and monitor code snippets that implement key architectural decisions in the source code. Archie: A Smart IDE to Protect Architecture
  • 87. 87 Proactively keep developers informed of underlying architectural decisions during maintenance activities.  IDEs and Compilers do well on Syntactical issues, a little attention to Semantic but Design Rational is not covered. Archie: A Smart IDE to Protect Architecture  Archie has features for communicating architectural knowledge.  Visualization module to depict the seams of a software design, the driving requirements, business goals and rationale behind the source code.
  • 88. 88 Archie: A Smart IDE to Protect Architecture Proactively keep developers informed of underlying architectural decisions during maintenance activities.
  • 89. Perform change impact analysis of architectural concerns at both the code and design level. An asynchronous Event-Based monitoring and notification infrastructure has been designed to proactively inform developers of underlying architectural decisions. An initial proof of concept experiment has been conducted. Archie: A Smart IDE to Protect Architecture 89
  • 90. 90 Archie: A Smart IDE to Protect Architecture Perform change impact analysis of architectural concerns at both the code and design level.
  • 91. 91 Archie: A Smart IDE to Protect Architecture Perform change impact analysis of architectural concerns at both the code and design level.
  • 92. 92 Archie: A Smart IDE to Protect Architecture Design Warnings Perform change impact analysis of architectural concerns at both the code and design level.
  • 93. WHAT ARE YOU PASSIONATE ABOUT? 93
  • 94. Software Archeology Mehdi Mirakhorli, Rochester Institute of Technology Winter 2015 Software Architecture Reconstruction: Why? What? and How? 94

Notas do Editor

  1. Start with previous high-level knowledge about the application domain Formulate hypotheses and verify them against the source code
  2. Start with previous high-level knowledge about the application domain Formulate hypotheses and verify them against the source code