Upload
marion-carter
View
215
Download
0
Tags:
Embed Size (px)
Citation preview
Mid of Semester Presentation
06-22-2004
Team Dumbledore:Heng ChenMyung-Joo KoNeel MullickPaulo Merson
06/22/2004 2
Agenda Team Dumbledore Process Progress Report Risks Demo
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
06/22/2004 4
Agenda Team Dumbledore Process Progress Report Risks Demo
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
06/22/2004 6
Process (2) – Iterative model
Estimate
QA
Deploy Code
Design review
Test classdevelopment
Design Experiments
&
Architecture
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
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
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
06/22/2004 10
Agenda Team Dumbledore Process Progress Report Risks Demo
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)
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
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
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
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
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”
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
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
06/22/2004 19
Agenda Team Dumbledore Process Progress Report Risks Demo
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
06/22/2004 21
Agenda Team Dumbledore Process Progress Report Risks Demo
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?
06/22/2004 23
Backup Slides
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)
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
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
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
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..*
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
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
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