View
236
Download
0
Category
Tags:
Preview:
Citation preview
Reuse-1
CSE298
CSE300
CSE300-02 Distributed Object Computing Professor: Dr. Steven A. Demurjian
Topic: Object Oriented ReuseMembers: Xiaopei Wang, Hai Lin, Steven Moore
Coordinating with Jeff Ellis
December 7, 2000December 7, 2000
Reuse-2
CSE298
CSE300 Object Oriented Reuse
ObjectiveObjective
Redesign GUI of DRE(Redesign GUI of DRE(Design Reusability Evaluations) tool tool A more user-friendly interface Parser independent OO modeling
Apply Togethersoft Control Center for Reusability Apply Togethersoft Control Center for Reusability analysisanalysis How can TCC be enhanced to support
reusability calculations Implement these enhancements
Reuse-3
CSE298
CSE300 Interface DesignInterface Design
GUI subsystem layout protocol GUI subsystem layout protocol
Reuse-4
CSE298
CSE300 Interface DesignInterface Design
Use single frameUse single frame Process one project each session Bad design can make the interface messy and
not familiar to programmers
Use JSplitPane to separate function block of the Use JSplitPane to separate function block of the frameframe Left pane: entity manager
Display entities Display selected entity properties
Right pane: result and simulator operation
Reuse-5
CSE298
CSE300 Interface DesignInterface Design
Using JMenu to process available operationsUsing JMenu to process available operations
Using JToolbar as a shortcut of menu operationUsing JToolbar as a shortcut of menu operation User can process an operation by directly
clicking on the corresponding button
Reuse-6
CSE298
CSE300 Interface DesignInterface Design
Use JTree to present entities and their relationship Use JTree to present entities and their relationship package/class/variable/method/inner-classpackage/class/variable/method/inner-class Similar structure Intuitive and vivid presentation Easy to use interface
Us JTable to present entity propertiesUs JTable to present entity properties
Reuse-7
CSE298
CSE300 Interface DesignInterface Design
Use JTabbedPane to display the metrics calculation Use JTabbedPane to display the metrics calculation result and provide the ability for future simulation result and provide the ability for future simulation workwork
Reuse-8
CSE298
CSE300 Interface DesignInterface Design
A HTML-based online help system lets user A HTML-based online help system lets user understand OO-Reuse basics, DRE metrics and understand OO-Reuse basics, DRE metrics and how to use the toolhow to use the tool
Reuse-9
CSE298
CSE300 OO ModelingOO Modeling
Why parser independent ?Why parser independent ? Work with JAVA/C++ and other similar OO
language parser Split working flow OO approach
ImplementationImplementation Language neutral data structure Put GUI and parser in different package Introduce data manager package to handle all
data processing and transferring job
Reuse-10
CSE298
CSE300 OO ModelingOO Modeling
Four major components in the systemFour major components in the system
<<subsystem>>
GUI
<<subsystem>>
Data Manager
<<subsystem>>
Parser
<<subsystem>>
Metrics Calculator
Reuse-11
CSE298
CSE300 Data AbstractionData Abstraction
The NodeData class encapsulates the properties and methods needed to present a tree node, the id field point to the real data(an entity object) we want to present.
Reuse-12
CSE298
CSE300 Data AbstractionData Abstraction
Class “Entity” is the data structure, used to present a Class “Entity” is the data structure, used to present a particular node (package/class/variable/method/innerclass)particular node (package/class/variable/method/innerclass)
Class “Property” is used to show the properties of current Class “Property” is used to show the properties of current selected nodeselected node
Reuse-13
CSE298
CSE300
User
Data Manager
DataManager
ParserGUI
DreFrame
renew GUI
getData(file[])
renew data
Parse files
select files from file dialog
Add button/menu
Add ClassesAdd Classes
The GUI will give parser the list of files that user chose. The GUI will give parser the list of files that user chose. Then GUI calls getData() methods of Data Manager to Then GUI calls getData() methods of Data Manager to refresh the tree view of classesrefresh the tree view of classes
Reuse-14
CSE298
CSE300 Show PropertyShow Property
When user clicks a particular node in the tree view When user clicks a particular node in the tree view of classes, the property of that node will be shown of classes, the property of that node will be shown in the property panein the property pane
Data ManagerGUI
User
setProperty(property)
getProperty(id)
Select a node
Reuse-15
CSE298
CSE300
User
Data Manager
DataManager
GUI
DreFrame
Refresh property table
setGeneral(classes id)
Get selected classes id
Select classes in the tree
Set General button/menu
get first renewed class
Set GeneralSet General
GUI takes care which classes are subject to change their GUI takes care which classes are subject to change their generality property, then call data manager’s method generality property, then call data manager’s method setGeneral(), given Ids. Finally, GUI refreshes the property setGeneral(), given Ids. Finally, GUI refreshes the property pane for the first renewed class in the listpane for the first renewed class in the list
Reuse-16
CSE298
CSE300
User
GUI
DreFrame
Data Manager
DataManager
get related classes id
Refresh property table
setRelated(id Vector)
Select Destination class
Select multiple classes
Set Related Button/Menu
get first renewed class
Set RelatedSet Related
After user chooses a list of classes, user can mark them to After user chooses a list of classes, user can mark them to be related to another class. And then user choose the be related to another class. And then user choose the destination class, all the classes in the list will be related to destination class, all the classes in the list will be related to the destination classthe destination class
Reuse-17
CSE298
CSE300 ConclusionConclusion
A whole new look of DRE toolA whole new look of DRE tool This DRE tool has a more intuitive interface of the This DRE tool has a more intuitive interface of the
Java program and it’s easier to operate than the old Java program and it’s easier to operate than the old oneone
OO modeling makes the design clear, and can be OO modeling makes the design clear, and can be extendedextended
GUI components are independent from parser, GUI components are independent from parser, which improves the reusabilitywhich improves the reusability
Reuse-18
CSE298
CSE300Future Work - XML approach in data Future Work - XML approach in data
managermanager Functionality, like Save and Load, will be Functionality, like Save and Load, will be
provided, using XML.provided, using XML. XML is naturally suitable for storage of tree XML is naturally suitable for storage of tree
structure.structure.
Reuse-19
CSE298
CSE300 Future Work - Online Help SystemFuture Work - Online Help System
Online help system will offer more documentationOnline help system will offer more documentation
Reuse-20
CSE298
CSE300 Future Work - OthersFuture Work - Others
DRE ToolDRE Tool Testing and bug fixing
Intensive testing and bug fixing is needed and essential Simulator design
Right now, the system hasn’t implemented simulator yet. In the future, user ought to be able to click on a coupling to navigate to the code and make changes. Then user runs the simulator to see how the changes affect evaluation
C++ parserC++ is another major programming language. Our system will evolve to support C++ source codes. Improvement will be done mostly in parser side and data manager
Reuse-21
CSE298
CSE300 Future Work (Cont’d)Future Work (Cont’d)
DRE ToolDRE Tool Documentation
More documentation, such as API documentation and more background information ought to be added to online help system
Inherently relatedIf class A is related to class B, then all A's decedents are related to all B's ancestors. We will add parent and descendent field in class property, to support this feature
Reuse-22
CSE298
CSE300 Togethersoft Control CenterTogethersoft Control Center
Control Center integrates visual modeling with an Control Center integrates visual modeling with an integrated development environmentintegrated development environment Implements UML Source code editing Model/code synchronization Has an Open API Has plugin support Written in Java Supports C++/Java
Reuse-23
CSE298
CSE300 Reuse Coupling CountsReuse Coupling Counts
User classifies class as general(G) or specific(S)User classifies class as general(G) or specific(S) User classifies class hierarchies as being related to User classifies class hierarchies as being related to
each other(R) or unrelated(U)each other(R) or unrelated(U) Count number of couplings of each type
Good for reuseGood for reuse Classes that are general and related
Bad for reuse:Bad for reuse: Classes that are unrelated, and where one is
general and the other is specific Not bad or goodNot bad or good
both classes are specific
Reuse-24
CSE298
CSE300 MotivationMotivation
Desirable to have one development environment to Desirable to have one development environment to include reusabilityinclude reusability Quicker design time if reduce number of tools
required. Easier to develop than stand alone applicationEasier to develop than stand alone application
Can leverage API classes that TCC provides for parsing/processing
Reuse-25
CSE298
CSE300 ObjectivesObjectives
Leverage present TCC capabilities to support the Leverage present TCC capabilities to support the reusability calculations.reusability calculations. Perform calculations with minimal user
interaction Have calculations stay with project Display results in standardized fashion Give user quick feedback from changes
Reuse-26
CSE298
CSE300 QA pluginsQA plugins
QA plugins provide built processing and parsing of QA plugins provide built processing and parsing of the source codethe source code Audit plugins
Source code syntax checking Displays qualitative results in a report pane
Metrics plugins Source code counting operations Displays quantitative results in a report pane
Reuse-28
CSE298
CSE300 QA Metrics pluginQA Metrics plugin
To implement requires overriding TCC’s To implement requires overriding TCC’s MetricsPluginImpl class.MetricsPluginImpl class. Plugins are loaded when TCC is first started When user starts plugin operation some
methods automatically invoked prepare() method executed once when execution
started. run() method executed for each class and package in
project
Reuse-29
CSE298
CSE300 DesignDesign
Develop 10 plugin modulesDevelop 10 plugin modules 1 module to specify classifications
specific/general 1 module to specify relationships
related/unrelated 8 coupling count modules
output modules
Reuse-30
CSE298
CSE300 Conclusion Future WorkConclusion Future Work
ConclusionConclusion TCC plugins are a good way to implement
reusability calculations. Future workFuture work
Additional work required to include true dependencies in coupling count modules
Can audit plugins be applied to help simplify parsing
Can TCC be applied to reusability simulation
Recommended