Upload
muniya
View
48
Download
0
Embed Size (px)
DESCRIPTION
CS746 Software Architecture Organizational Meeting. Instructor: Prof. Richard C. Holt TA: Jingwei Wu. Overview. Course Assignments and Project Introduction to JGrok Algebraic Calculator BFX-based Architecture Extraction Pipeline Volunteers to present papers next week. Course Assignments. - PowerPoint PPT Presentation
Citation preview
CS746 Software Architecture Organizational Meeting
Instructor: Prof. Richard C. Holt
TA: Jingwei Wu
09/14/2004 2
Overview
• Course Assignments and Project• Introduction to JGrok Algebraic Calculator• BFX-based Architecture Extraction Pipeline• Volunteers to present papers next week
09/14/2004 3
Course Assignments
• Case software system: Mozilla• Three course assignments
– Conceptual architecture (Documented)
– Concrete architecture (Implemented)
– Architecture refactoring• Historical (Evolutionary evidence)
• Future (Forward engineering)
• Each assignment takes two weeks• Team work (2~3 persons per team)
09/14/2004 4
Conceptual Architecture
• Read a wide variety of software documents– Release notes– Developer docs– Technical article– Research papers– Source code comments– Previous course reports on Mozilla
• Warning: The architecture of Mozilla has been fundamentally altered. You cannot simply “reuse” previous course material.
• The goal is to understand the software domain
09/14/2004 5
Conceptual Architecture Cont.
• Submit a technical report on the conceptual architecture of Mozilla.– Describe major components– Describe component interactions– Clarify architectural style and principles– Concentrate on goals and requirements
• Concurrency, evolvability, performance, etc.
• Submission date: Tuesday, Sept. 28, 2004.
09/14/2004 6
Conceptual Architecture of Linux
09/14/2004 7
Concrete Architecture
• Extraction– Mozilla implemented in C/C++– We use BFX, a binary file extractor
• Abstraction– Construct containment hierarchy– Larger subsystems contain smaller subsystems
• View/Edit– We use LSEdit, a landscape view editor
09/14/2004 8
Concrete Architecture Cont.
• Submit a technical report on the concrete architecture of Mozilla.– Organization similar to Assignment I
– Describe the architecture at the highest level of abstraction
– Describe at least one of the top-level subsystems
– Explain why the conceptual and the concrete disagree
• Submission date: Tuesday, Oct. 19, 2004
09/14/2004 9
Concrete Architecture of Linux
09/14/2004 10
Concrete Architecture ofFile Subsystem in Linux
09/14/2004 11
Architecture Refactoring
• Two options for this assignment– Historical architecture refactorings
• Document architectural changes in the past• Understand how the architecture evolved over time• Extract several versions (at least THREE)
– Future architecture refactorings• Describe a desirable feature• Identify an architectural problem• Refactor the current architecture• Focus on the most recent version
• Report Submission date: Tuesday, Nov. 09, 2004
09/14/2004 12
Course Project
• Five Options– Architecture Refactoring – Future– Architecture Refactoring – Historical– Architectural Repair– New Tools– New Landscapes
• Project due: Tuesday, Dec 07 2004
09/14/2004 13
Introduction to JGrok
• A simple scripting language
• A relational algebraic calculator– Powerful in manipulating binary relations– Widely used in architecture transformation
• Online documentationhttp://swag.uwaterloo.ca/~j25wu/projects/grokdoc/index.html
http://swag.uwaterloo.ca/~nsynytskyy/grokdoc/index.html
09/14/2004 14
JGrok Features
• Set operations– Union (+), intersection (^), subtraction (-), cross-product (X)
• Binary relation operations– Union (+), intersection (^), subtraction (-), composition (o, *),
cat-composition (**), projection (.), domain (dom), range (rng), identity (id), inverse (inv), entity (ent), transitive closure (+), and reflective transitive closure (*)
• Graph pattern matching (like Prolog) data[id,name,salary] = { @name[id,name]; salary[id,salary]; }
• Relation selection, projection data[&1 =~ “Peter.*” && &2 > 50000] names = data[&1, &2];
09/14/2004 15
JGrok Features Cont.
• Programming constructs– if else
– for, while
• Arithmetic, comparison, logical operators– +, -, *, /, %
– <, <=, ==, >=, >, !=
– !, &&, ||
• Regular expression matching– =~, !~
functions[&0 =~ “nsFrame.*”]
09/14/2004 16
JGrok Scripts (1)$ jGrok>> cat = {“Garfield”, “Fluffy”}>> mouse = {“Mickey”, “Nancy”}>> cheese = {“Roquefort”, “Swiss”}>> animals = cat + mouse>> food = mouse + cheese>> animalsWhichAreFood = animals ^ food>> animalsWhichAreNotFood = animals – food>> animalsWhichAreFoodMickeyNancy>> animals – foodGarfieldFluffy>> #food4>> mouse <= foodTrue>>
>> chase = cat X mouse
>> chase
Garfield Mickey
Garfield Nancy
Fluffy Mickey
Fluffy Nancy
>>
>> eat = chase + mouse X cheese
>> eat
Garfield Mickey
Garfield Nancy
Fluffy Mickey
Fluffy Nancy
Mickey Roquefort
Mickey Swiss
Nancy Roquefort
Nancy Swiss
09/14/2004 17
JGrok Scripts (2)
>> {“Mickey”} . eatRoquefortSwiss>> eat . {“Mickey”}GarfieldFluffy>>>> eater = dom eat>> food = rng eat>> chasedBy = inv chase>> topOfFoodChain = dom eat – rng eat>> bottomOfFoodChain = rng eat – dom eat>> bothEatAndChase = eat ^ chase>> eatButNotChase = eat – chase>> chaseButNotEat = chase – eat>> secondOrderEat = eat o eat>> anyOrderEat = eat +
Programming constructs
if expression {statements
} else {statements
}
while expression {statements
}
for variable in expression {statements
}
09/14/2004 18
BFX-Based Pipeline
Extraction Pipelines
Source code Prep. code Object code Executable
Und C/C++
Wrapper
CPPX
GCC
Transformer
CPP LD
LDX
Transformer
IslandExtractors
Transformer
Source Models
System Models
Transformer
LDM
LandscapeViewer
Aerie
BFX
Transformer
09/14/2004 19
BFX-Based Pipeline
Source code
System Models
Build
BFX
Link
Object code
Program facts
HierarchicalDecomposition
LSEdit
Step 1
Step 2
Step 4
Step 3
Step 5
Addcontain
09/14/2004 20
BFX-Based Pipeline: Step 1
• Build the system– Download Mozilla (http://www.mozilla.org/)
• Download Mozilla 1.7.2
• Download the latest development version via CVS
– Build Mozilla• Use default build scripts (make utilities)
$ cd mozilla
$ gmake –f client.mk build
09/14/2004 21
BFX-Based Pipeline: Step 2
• Extract facts using BFX
$ cd ..
$ bfx `find mozilla -name “*.o”` -o mozilla.bfx.ta
Extract facts from each object module and write
all facts to an output file called “mozilla.bfx.ta”.
09/14/2004 22
BFX-Based Pipeline: Step 3
• Link extracted facts (resolve references to external definitions)
$ jGrok $QLDX/script/bfx/rawlink.ql mozilla.bfx.ta mozilla.raw.ta
Extract facts from each object module and write
all facts to an output file called “mozilla.raw.ta”.
09/14/2004 23
BFX-Based Pipeline: Step 4
• Create a hierarchical subsystem decomposition– Create a contain file called “mozilla.contain” in RSF
contain mozilla editor.ss
contain mozilla layout.ss
contain layout.ss html.ss
contain html.ss mozilla/layout/html/document/src/nsFrameSetFrame.o
– Impose contain on raw data (file-level graph)
$ jGrok $QLDX/script/bfx/addcontain.ql mozilla.contain mozilla.raw.ta mozilla.con.ta
09/14/2004 24
BFX-Based Pipeline: Step 5
• Create landscape views– Add schema
$ schema mozilla.con.ta mozilla.ls.ta
– Edit views
$ lsedit mozilla.ls.ta
09/14/2004 25
Volunteer Presenters
• Bowman: Linux as Case Study: Extracted Architecture
Presenter: Omar Zia
• Garlan and Shaw: Introduction to Software Architecture
Presenter: Alan Grosskurth