31
Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

Embed Size (px)

Citation preview

Page 1: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

Mid of Semester Presentation

06-22-2004

Team Dumbledore:Heng ChenMyung-Joo KoNeel MullickPaulo Merson

Page 2: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 2

Agenda Team Dumbledore Process Progress Report Risks Demo

Page 3: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 3

Team Dumbledore Team:

Henry: Configuration & support; Integration Manager Neel: Architect, Requirements Manager, Development Manager Myung: Client Manager; QA Manager Paulo: Team lead; Process Manager All: Developers & Unit testers

Contractors Alex: developer (MSIT practicum)

Mentors Tony Ipek

Clients (also architects/developers of ArchE core) Mark Klein Len Bass Felix Bachmann

Page 4: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 4

Agenda Team Dumbledore Process Progress Report Risks Demo

Page 5: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 5

Process (1)ACDM

Functional rqmts/constraintsPaper prototypes

Discover quality attribs.Create utility tree 1

Prioritized utility treeInitial project plan Create notional

architecture 2Architecture viewsUpdated project plan

Review architectureAnalyze scenarios 3

Risks, tradeoffs

Ready to design& code?

Evaluate risks/tradeoffsCreate experiment plan 4

Experiment planUpdated project plan

Execute experimentsRevisit architecture 5

Refined architectureUpdated project plan

Create designWrite test code/write code/review code 6

Detailed designTest codeSource code

Deploy/integrateor iterate 7

Discuss UI functions w/clients 3’

UI detailedstories

Artifact

Activity

Decision

Next step

Produces

Legend:

Yes

No

Page 6: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 6

Process (2) – Iterative model

Estimate

QA

Deploy Code

Design review

Test classdevelopment

Design Experiments

&

Architecture

Page 7: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 7

Process (3) – Design Design artifacts

UML class diagrams UML sequence diagrams Excel sheets for transformation definitions

ArchE1 Reference design for initial classes Design review team walkthrough

ArchE2&3 Create design for all work assignments Individual reviews

Page 8: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 8

Process (4) - Details Estimate

Individual estimates for all phases Time and LOC

Automated tests (JUnit) For all non-UI functionalities For UI Plug-in Reflection website

Code Code conventions

Page 9: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 9

Process (5) – QA Code Review

ArchE1: Important classes reviewed Individual reviews Team walkthrough of review findings Pre & post review submission into repository

ArchE2&3: all classes to be reviewed System testing & bug tracking

ArchE1: Team members log bugs on Bugzilla

ArchE2&3: Clients use ArchE1 and give feedback and log bugs on

Bugzilla System tester role created

Page 10: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 10

Agenda Team Dumbledore Process Progress Report Risks Demo

Page 11: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 11

Progress report (1) High level functional requirements

CRUD scenarios CRUD functions CRUD responsibilities CRUD relationships Display model Export design

Work allocations in WBS ArchE1: 67 (DONE – 6/22/04) ArchE2: 87 (Due on 7/12/04)

Page 12: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 12

Progress report (2) Estimate

Estimates, Actuals & Projections

768576

736747

601637

0

500

1000

# Work assignments (ArchE1,2&3)

Ma

n H

ou

rs

Estimate (Hrs) Actual (Hrs) Projection(Hrs)

Estimate (Hrs) 768 576 736

Actual (Hrs) 747

Projection(Hrs) 747 601 637

82 66 70

Page 13: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 13

Progress – LOC

Logical KLOC Over Time

0

2

4

6

8

10

12

Week 1 Week 2 Week 3 Week 4 Week 5

Lo

gic

al K

LO

C

SEI.ArchE.UI

SEI.ArchE.Lib

Test classes

TOTAL

Logical LOC Week 1 Week 2 Week 3 Week 4 Week 5

SEI.ArchE.Lib 343 894 1647 1707 1808

SEI.ArchE.UI 1404 1689 2032 2945 6426

Test classes 0 0 0 1299 3141

TOTAL 1747 2583 3679 5951 11375

Page 14: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 14

Testing Automated tests (JUnit)

JUnit tests of 26 non-UI classes JUnit plug-in tests of all UI views

Performance tests Get data from Jess and refresh views Two architecture alternatives

Page 15: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 15

Alternative 1: Observer/Observable

Eclipse platform

ArchE core bridge

ArchE core façade

ArchE core

listenerregister to fact

changes

Jess rule engine (ArchE Core)

notifyfactchange

Fact base in memory

asse

rt/m

odify

/

retra

ct fa

ct

new/set

refresh views

UI views & controls

views and editors

user cmd notify data

change (to

refresh UI)

Ecl

ipse

UI e

ven

t m

anag

er

handle user cmd

Key:Action handler

UI screenevent manager(part of Eclipse platform)

Java method call event send

event receive

software component

External program

plugin.xml in SEI.ArchE.UI

Register action handlers that will listen to views

xml file

dialog boxes

CRUD element

Design export

Design tool

exported design

Supporting infrastructureFile I/O

Call to Jess AB is a sub-module of A

B

register views as

observer of facts

register to listen event

action handlers

CRUD scenario/

“ArchE think”

get

Page 16: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 16

Alternative 2: Refreshable UI

Eclipse platform

ArchE core bridge

UI views & controls

views and editors

user cmd

Ecl

ipse

UI e

ven

t m

anag

er

handle user cmd

Key:Action handler

UI screenevent manager(part of Eclipse platform)

Java method call event send

event receive

software component

External program

plugin.xml in SEI.ArchE.UI

Register action handlers that will listen to views

xml file

dialog boxes Design export Design

tool

exported design

Supporting infrastructureFile I/O

Call to Jess AB is a sub-module of A

Bregister to listen event

action handlers

read

fa

cts

Refreshable UI

refresh

ArchE core façade

ArchE core

listenerregister to fact

changes

Jess rule engine (ArchE Core)

notifyfactchange

Fact base in memory

asse

rt/m

odify

/

retra

ct fa

ct

new/set

refresh views

flag views

to refre

sh

CRUD element

get

CRUD scenario/

“ArchE think”

Page 17: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 17

Performance Tests

Operation Observer/Observable Refreshable UI

Load 500 responsibilities and refresh

25+ min 1219ms ± 31

Change one responsibility out of 500 and refresh

3295ms ± 70 1099ms ± 15

Issue found: Jess uses too much memory Could not test w/ 10000 elements

Page 18: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 18

Code Review 18 classes (1578 LOC) reviewed for ArchE1 Findings:

47 defects 149 improvements

Review rate: 351 LOC/hour Average defect/KLOC: 30 Review impact

Total of 50 classes changed (5349 LOC) Refactoring of view classes into 7 base classes

Page 19: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 19

Agenda Team Dumbledore Process Progress Report Risks Demo

Page 20: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 20

Top Risks Rank Risk Strategy

1 No precedents for estimation Estimate and track for ArchE1

2 Needed changes in ArchE Core not done on time may hinder testing

Have multiple WAUs to avoid idle time waiting for ArchE coreCommunicate issues to client ASAP

3 Inconsistencies between definition of facts in ArchE Core and ArchE UI data model

Have regular workshops with Felix

4 Performance of UI interaction with Core

Conduct performance tests

5 Learning curve of Eclipse plug-in development

Have Eclipse PDE training sessionStick to monkey see monkey do ruleEnforce knowledge reuse in the development plan

Page 21: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 21

Agenda Team Dumbledore Process Progress Report Risks Demo

Page 22: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 22

Questions to Mentors

Our estimates are still very high-level… We have different technical aspects:

Writing an Eclipse view Writing a transaction to access Jess Create a UML sequence diagram

Should all developers work a little with each one (maximizing learning) or not (maximizing productivity)

How to avoid problems when integrating changes other people made to the code base?

Page 23: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 23

Backup Slides

Page 24: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 24

The ArchE System (1)

Rational Rose or

AcmeStudio

Designer

Scenarios, functions, responsibilities, relationships, parameters

Reasoning framework configuration: scenario types, parameter types,relationship types

Facts to the fact base

Exported design

Jess rule engine (ArchE core)Facts from the

fact base

Externalentity Process

Data flow

Key:(This is a context diagram using Gane-Sarson notation; it’s not an architectural diagram; therefore “process” is as defined in [Gane], it’s not a component)

ArchE configurator

Display scenarios, functions, responsibilities, relationships, parameters and model ArchE UI

(Studio project)

Page 25: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 25

ArchitectureC&C

Eclipse platform

ArchE Core bridge

Design export

ArchE Core

(Jess Rule Engine)

Design tool

Exported design

RF configuration

Legend:Softwarecomponent on Eclipse Plugin Framework

External program

Supporting infrastructure

Call Return (Java call)

File I/O

Call Return (Jess API for Java)

X subscribes to Y’s event notification(s)

File XY YY notifies subscribers

Reasoning frameworks (RF) loader

User Interface views & controls

Read RF configuration

Assert / Read Facts

Export design to XML

Load RF

Export design

Import design

CR

UD

elem

ent

Read design elements

Subscribe

Notify

Read R

F

configuration

Ecl

ipse

pla

tfo

rm -

Ru

nti

me

even

t m

anag

er

Runtime event manager (Eclipse platform)

ArchE Configurator

RF rules (.clp) Persisted fact base (.dat)

Model solver tool

flag views to

refresh/refresh view

s

Page 26: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 26

ArchitectureModule Uses SEI.ArchE.UI

<<plugin>>

SEI.ArchE.Lib

<<plugin>>

actions

export

<<interface>>

ExportDesign

ExportToAcme

ExportToRose

corebridgevo

ui

rfconfig

ConfigReader

Jess Java APIExternal library

ArchEUIPlugin

<<interface>>

IRefreshableUI

Legend:standard UML notation

Page 27: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 27

ArchitectureImplementation Style (Eclipse Plug-ins)

org.eclipse.core.resources

org.eclipse.uiSEI.ArchE.Lib

SEI.RMA-RF

SEI.ArchE.UI SEI.ArchE.Configurator

actionSets

perspectives

popupMenusviews markers

newWizards

reasoningFramework

RF config (.xml)

RF rules (.clp)

SEI.Modif-RFRF config

(.xml)RF rules

(.clp)

Jess (.jar)

Main rules (.clp)

RMA model solver (.jar)

preferencePages

Default “.dat”

Modif model solver (.jar)

Key:

Eclipse plugin

Extension point

Uses File pa

File a is packaged in plugin p

Extension points are not depicted because this plugin is not being developed by Team Dumbledore

Page 28: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 28

UML Class Diagram: Value Objects(‘vo’ Package)

*id : Stringname: Stringversion : StringrespParamTypes : List of ParameterTypeVOparamTypes : List of ParameterTypeVOrelationshipTypes : List of RelationshipTypeVOscenarioTypes : List of ScenarioTypeVO

ReasoningFrameworkVOid : Stringname : Stringdescription : StringpartsMetadata : ScenarioPartMetadataVO[6]

ScenarioTypeVO

getStatus() : {notAnalyzed, notSatisfied, partiallySatisfied, fullySatisfied}

description : StringscenarioType : ScenarioTypeVOparts : ScenarioPartVO[6]analysisResults : set of AnalysisResultVO

ScenarioVO

description : Stringsource : {nil, ArchE, user}parameters : Set of ParameterVO

ResponsibilityVO

parameterType : ParameterTypeVOvalue : Stringsource : {nil, ArchE, user}ownerFactId : int

ParameterVO

type : RelationshipTypeVOsource : {nil, ArchE, user}parentFactId : intchildFactId : intparameters : List of ParameterVO

RelationshipVO

Model

*

* 1

*

*

*

*

*

1 1

1

id : Stringdescription : String

FunctionVO

*

1

*

1

1

id : Stringname : Stringdescription : Stringrecursive : boolallowedOperands : List of OperandsVOparamTypes : List of ParameterTypeVO

RelationshipTypeVO

*

*

*

* {constrained by}

1

*

id : Stringname : Stringdescription : StringdataType : {double, string, bool}defaultValue : String

ParameterTypeVO

Active RFs

0..*

0..*

partType : {stimulus, stimulus source, environment, artifact, response, response measure}defaultText : Stringtypes : List of PartOptionsVOdefaultType : PartOptionsVOunits : List of PartOptionsVOdefaultUnit : PartOptionsVOdefaultValue : String

ScenarioPartMetadataVO

6

partType : {stimulus, stimulus source, environment, artifact, response, response measure}text : StringtypeId : StringunitId : Stringvalue : String

ScenarioPartVO

0..6

Defines what parameters are required of responsibilities when that RF is active

*

1

source for scenario and function is implicitly the user

*

*

*

id : StringtextToUser : String

PartOptionsVOtypes

units

1

1

*

*

scenarioFactId : intresponsibilityFactId : intsource : {nil, ArchE, user}

ScenarioResponsibilityMapVO

functionFactId : intresponsibilityFactId : intsource : {nil, ArchE, user}

FunctionResponsibilityMapVO

Classes in yellow are part of the RF configuration (not facts)

name : StringactiveRFs : Hashtable (RFà bool)scenarios : Set of ScenarioVOfunctions : Set of FunctionVOscenarioResps : Set of ScenarioResponsibilityMapVOfunctionResps : Set of FunctionResponsibilityMapVOrelationships : Set of RelationshipVOresponsibilities : Set of ResponsibilityVO

ProjectVOlhs : {responsibility, scenario, function}rhs: {responsibility, scenario, function}bidirectional : bool

OperandsVO

1

*

paramTypes is used internally by SEI.ArchE.Configurator. SEI.ArchE.UI should use respParamTypes to obtain the param. types of responsibilities in that RF.

ParameterVO has ownerFactId and ResponsibilityVO has parameters. So, they both point to each other. This redundancy exists because when a parameter is asserted, the responsibility may not exist yet—issue related to the order of loading facts.

isSatisfied : boolownerFactId : intsource : {nil, ArchE, user}

AnalysisResultVO

10..*

Page 29: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 29

eventHappened()

assertFact (new Fact (“MAIN::Responsibilities”, slots, source slot))

flagViewsToRefresh()

parseFactAndUpdateVO(Fact, ASSERT)

executeCommand (assert Planner::T_MakeAnotherRound)

parseFactAndUpdateVO(Fact, Context, Assert/Modiy/Retract)

User

ResponsibilitiesView

ArchEFacadeResponsibilityInteractions

addResponsibility (description slot)

CoreListener

run()

VOUpdate

assertResponsibility (engineArchE, description slot)

Rete

eventHappened()

executeCommand(focus Planner)

eventHappened()

ResponsibilityVO

new

ArcheUIPlugin

Will create/modify/remove some VO affected by core rules

. . .

refreshViews()

ScenarioRespMap

View

refresh()

refresh()

Before returning, ArchEUIPlugin will also call refresh on FunctionRespMapView, omitted here for clarity.

. . . Other facts asserted, modified or retracted by core rules

UML Sequence Diagram: Add Responsibility

Page 30: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 30

Experiments Status Henry—RMA model solver

Client had a working version delivered to them Myung—export to Rational Rose

Code base in place Design to be reviewed and implemented in ArchE2

Neel—interaction with Jess using Java Architecture, designed & implemented in ArchE1

Paulo – Eclipse plug-in development Experiment metamorphosed into code for ArchE1

Page 31: Mid of Semester Presentation 06-22-2004 Team Dumbledore: Heng Chen Myung-Joo Ko Neel Mullick Paulo Merson

06/22/2004 31

Progress: Source Files

Number of Source Files Over Time

0

10

20

30

40

50

60

70

80

Week 1 Week 2 Week 3 Week 4 Week 5

Nu

mb

er

of

So

urc

e F

ile

s

SEI.ArchE.Lib

SEI.ArchE.UI

Test classes

TOTAL

Source files Week 1 Week 2 Week 3 Week 4 Week 5

SEI.ArchE.Lib 12 22 26 28 29

SEI.ArchE.UI 23 24 25 21 21

Test classes 0 0 0 9 18

TOTAL 35 46 51 58 68