Download presentation
Presentation is loading. Please wait.
Published bySybil May Modified over 9 years ago
1
CS746 Software Architecture Organizational Meeting Instructor: Prof. Richard C. Holt TA: Jingwei Wu
2
09/14/20042 Overview Course Assignments and Project Introduction to JGrok Algebraic Calculator BFX-based Architecture Extraction Pipeline Volunteers to present papers next week
3
09/14/20043 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)
4
09/14/20044 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
5
09/14/20045 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.
6
09/14/20046 Conceptual Architecture of Linux
7
09/14/20047 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
8
09/14/20048 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
9
09/14/20049 Concrete Architecture of Linux
10
09/14/200410 Concrete Architecture of File Subsystem in Linux
11
09/14/200411 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
12
09/14/200412 Course Project Five Options –Architecture Refactoring – Future –Architecture Refactoring – Historical –Architectural Repair –New Tools –New Landscapes Project due: Tuesday, Dec 07 2004
13
09/14/200413 Introduction 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/index.html http://swag.uwaterloo.ca/~nsynytskyy/grokdoc/index.html
14
09/14/200414 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];
15
09/14/200415 JGrok Features Cont. Programming constructs –if else –for, while Arithmetic, comparison, logical operators –+, -, *, /, % – =, >, != –!, &&, || Regular expression matching –=~, !~ functions[&0 =~ “nsFrame.*”]
16
09/14/200416 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 >> animalsWhichAreFood Mickey Nancy >> animals – food Garfield Fluffy >> #food 4 >> mouse <= food True >> >> 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
17
09/14/200417 JGrok Scripts (2) >> {“Mickey”}. eat Roquefort Swiss >> eat. {“Mickey”} Garfield Fluffy >> >> 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 }
18
09/14/200418 BFX-Based Pipeline Extraction Pipelines Source codePrep. codeObject codeExecutable Und C/C++ Wrapper CPPX GCC Transformer CPPLD LDX Transformer Island Extractors Transformer Source Models System Models Transformer LDM Landscape Viewer Aerie BFX Transformer
19
09/14/200419 BFX-Based Pipeline Source code System Models Build BFX Link Object code Program facts Hierarchical Decomposition LSEdit Step 1 Step 2 Step 4 Step 3 Step 5 Add contain
20
09/14/200420 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
21
09/14/200421 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”.
22
09/14/200422 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”.
23
09/14/200423 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
24
09/14/200424 BFX-Based Pipeline: Step 5 Create landscape views –Add schema $ schema mozilla.con.ta mozilla.ls.ta –Edit views $ lsedit mozilla.ls.ta
25
09/14/200425 Volunteer Presenters Bowman: Linux as Case Study: Extracted Architecture Presenter: Omar Zia Garlan and Shaw: Introduction to Software Architecture Presenter: Alan Grosskurth
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.