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

CS746 Software Architecture Organizational Meeting

  • 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

Page 1: CS746 Software Architecture  Organizational Meeting

CS746 Software Architecture Organizational Meeting

Instructor: Prof. Richard C. Holt

TA: Jingwei Wu

Page 2: CS746 Software Architecture  Organizational Meeting

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

Page 3: CS746 Software Architecture  Organizational Meeting

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)

Page 4: CS746 Software Architecture  Organizational Meeting

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

Page 5: CS746 Software Architecture  Organizational Meeting

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.

Page 6: CS746 Software Architecture  Organizational Meeting

09/14/2004 6

Conceptual Architecture of Linux

Page 7: CS746 Software Architecture  Organizational Meeting

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

Page 8: CS746 Software Architecture  Organizational Meeting

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

Page 9: CS746 Software Architecture  Organizational Meeting

09/14/2004 9

Concrete Architecture of Linux

Page 10: CS746 Software Architecture  Organizational Meeting

09/14/2004 10

Concrete Architecture ofFile Subsystem in Linux

Page 11: CS746 Software Architecture  Organizational Meeting

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

Page 12: CS746 Software Architecture  Organizational Meeting

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

Page 13: CS746 Software Architecture  Organizational Meeting

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

Page 14: CS746 Software Architecture  Organizational Meeting

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];

Page 15: CS746 Software Architecture  Organizational Meeting

09/14/2004 15

JGrok Features Cont.

• Programming constructs– if else

– for, while

• Arithmetic, comparison, logical operators– +, -, *, /, %

– <, <=, ==, >=, >, !=

– !, &&, ||

• Regular expression matching– =~, !~

functions[&0 =~ “nsFrame.*”]

Page 16: CS746 Software Architecture  Organizational Meeting

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

Page 17: CS746 Software Architecture  Organizational Meeting

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

}

Page 18: CS746 Software Architecture  Organizational Meeting

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

Page 19: CS746 Software Architecture  Organizational Meeting

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

Page 20: CS746 Software Architecture  Organizational Meeting

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

Page 21: CS746 Software Architecture  Organizational Meeting

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

Page 22: CS746 Software Architecture  Organizational Meeting

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

Page 23: CS746 Software Architecture  Organizational Meeting

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

Page 24: CS746 Software Architecture  Organizational Meeting

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

Page 25: CS746 Software Architecture  Organizational Meeting

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