1 / 25

CS746 Software Architecture Organizational Meeting

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.

muniya
Télécharger la présentation

CS746 Software Architecture Organizational Meeting

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CS746 Software Architecture Organizational Meeting Instructor: Prof. Richard C. Holt TA: Jingwei Wu

  2. Overview • Course Assignments and Project • Introduction to JGrok Algebraic Calculator • BFX-based Architecture Extraction Pipeline • Volunteers to present papers next week

  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)

  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

  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.

  6. Conceptual Architecture of Linux

  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

  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

  9. Concrete Architecture of Linux

  10. Concrete Architecture ofFile Subsystem in Linux

  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

  12. Course Project • Five Options • Architecture Refactoring – Future • Architecture Refactoring – Historical • Architectural Repair • New Tools • New Landscapes • Project due: Tuesday, Dec 07 2004

  13. 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. 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. JGrok Features Cont. • Programming constructs • if else • for, while • Arithmetic, comparison, logical operators • +, -, *, /, % • <, <=, ==, >=, >, != • !, &&, || • Regular expression matching • =~, !~ functions[&0 =~ “nsFrame.*”]

  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 >> 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. 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. Source code Prep. code Object code Executable CPP GCC LD Und C/C++ Island Extractors CPPX BFX LDX Wrapper Transformer Transformer Transformer Transformer Transformer Source Models BFX-Based Pipeline LDM Landscape Viewer System Models Aerie Extraction Pipelines

  19. BFX-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

  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

  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”.

  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”.

  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

  24. BFX-Based Pipeline: Step 5 • Create landscape views • Add schema $ schema mozilla.con.ta mozilla.ls.ta • Edit views $ lsedit mozilla.ls.ta

  25. Volunteer Presenters • Bowman: Linux as Case Study: Extracted Architecture Presenter: Omar Zia • Garlan and Shaw: Introduction to Software Architecture Presenter: Alan Grosskurth

More Related