30
Reuse-1 CSE298 CSE300 CSE300-02 Distributed Object Computing Professor: Dr. Steven A. Demurjian Topic: Object Oriented Reuse Members: Xiaopei Wang, Hai Lin, Steven Moore Coordinating with Jeff Ellis December 7, 2000 December 7, 2000

Reuse-1 CSE298 CSE300 CSE300-02 Distributed Object Computing Professor: Dr. Steven A. Demurjian Topic: Object Oriented Reuse Members: Xiaopei Wang, Hai

  • View
    236

  • Download
    0

Embed Size (px)

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-27

CSE298

CSE300 QA PluginsQA Plugins

QA plugin HierarchyQA plugin Hierarchy

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