Title: CS746 Software Architecture Organizational Meeting
1 CS746 Software Architecture Organizational
Meeting
- Instructor Prof. Richard C. Holt
- TA Jingwei Wu
2Overview
- Course Assignments and Project
- Introduction to JGrok Algebraic Calculator
- BFX-based Architecture Extraction Pipeline
- Volunteers to present papers next week
3Course 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 (23 persons per team)
4Conceptual 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
5Conceptual 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.
6Conceptual Architecture of Linux
7Concrete 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
8Concrete 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
9Concrete Architecture of Linux
10Concrete Architecture ofFile Subsystem in Linux
11Architecture 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
12Course Project
- Five Options
- Architecture Refactoring Future
- Architecture Refactoring Historical
- Architectural Repair
- New Tools
- New Landscapes
- Project due Tuesday, Dec 07 2004
13Introduction to JGrok
- A simple scripting language
- A relational algebraic calculator
- Powerful in manipulating binary relations
- Widely used in architecture transformation
- Online documentation
http//swag.uwaterloo.ca/j25wu/projects/grokdoc/i
ndex.html
http//swag.uwaterloo.ca/nsynytskyy/grokdoc/index
.html
14JGrok 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)
- dataid,name,salary _at_nameid,name
salaryid,salary - Relation selection, projection
- data1 Peter. 2 gt 50000
- names data1, 2
15JGrok Features Cont.
- Programming constructs
- if else
- for, while
- Arithmetic, comparison, logical operators
- , -, , /,
- lt, lt, , gt, gt, !
- !, ,
- Regular expression matching
- , !
- functions0 nsFrame.
16JGrok Scripts (1)
- jGrok
- gtgt cat Garfield, Fluffy
- gtgt mouse Mickey, Nancy
- gtgt cheese Roquefort, Swiss
- gtgt animals cat mouse
- gtgt food mouse cheese
- gtgt animalsWhichAreFood animals food
- gtgt animalsWhichAreNotFood animals food
- gtgt animalsWhichAreFood
- Mickey
- Nancy
- gtgt animals food
- Garfield
- Fluffy
- gtgt food
- 4
- gtgt mouse lt food
- True
- gtgt
gtgt chase cat X mouse gtgt chase Garfield
Mickey Garfield Nancy Fluffy Mickey Fluffy
Nancy gtgt gtgt eat chase mouse X cheese gtgt
eat Garfield Mickey Garfield Nancy Fluffy
Mickey Fluffy Nancy Mickey Roquefort Mickey
Swiss Nancy Roquefort Nancy Swiss
17JGrok Scripts (2)
- gtgt Mickey . eat
- Roquefort
- Swiss
- gtgt eat . Mickey
- Garfield
- Fluffy
- gtgt
- gtgt eater dom eat
- gtgt food rng eat
- gtgt chasedBy inv chase
- gtgt topOfFoodChain dom eat rng eat
- gtgt bottomOfFoodChain rng eat dom eat
- gtgt bothEatAndChase eat chase
- gtgt eatButNotChase eat chase
- gtgt chaseButNotEat chase eat
- gtgt secondOrderEat eat o eat
- gtgt anyOrderEat eat
Programming constructs if expression
statements else statements while
expression statements for variable in
expression statements
18Extraction Pipelines
19BFX-Based Pipeline
Source code
Step 1
Build
Hierarchical Decomposition
Object code
Step 2
BFX
Program facts
Step 3
Link
Step 4
Add contain
Step 5
System Models
LSEdit
20BFX-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
21BFX-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.
22BFX-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.
23BFX-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/n
sFrameSetFrame.o - Impose contain on raw data (file-level graph)
- jGrok QLDX/script/bfx/addcontain.ql
mozilla.contain mozilla.raw.ta mozilla.con.ta
24BFX-Based Pipeline Step 5
- Create landscape views
- Add schema
- schema mozilla.con.ta mozilla.ls.ta
- Edit views
- lsedit mozilla.ls.ta
25Volunteer Presenters
- Bowman Linux as Case Study Extracted
Architecture - Presenter Omar Zia
- Garlan and Shaw Introduction to Software
Architecture - Presenter Alan Grosskurth
-