Post on 30-Dec-2015
description
REUSE--1
A Framework, Methodology and Tool A Framework, Methodology and Tool for Reusable Software Componentsfor Reusable Software Components
Prof. Steven A. DemurjianComputer Science & Engineering Department
The University of Connecticut191 Auditorium Road, Box U-155
Storrs, CT 06269-3155
steve@engr.uconn.eduhttp://www.engr.uconn.edu/
~steve(860) 486 - 4818
REUSE--2
MotivationMotivation
Reuse Afterthought in OO Design/DevelopmentReuse Afterthought in OO Design/Development Majority of Reuse Focuses on “Small” Majority of Reuse Focuses on “Small”
ComponentsComponents String Functions, Utility Routines, GUI, etc. Easy to Understand - Easy to Reuse Minimal Savings
Three Classes of Software Three Classes of Software Domain-Independent (20%) : Libraries,
Utilities, etc. Most Likely to Be Reused Domain-Specific (65%) : Dedicated Software
Reused in Other Programs of Same Domain Application-Specific (15%): Uniqueness
Unlikely to Be Reused
REUSE--3
MotivationMotivation
Popular OO Design Methodologies Omit and Popular OO Design Methodologies Omit and Ignore Reuse GuidelinesIgnore Reuse Guidelines OMT and UML Design Patterns
Current Research Concentrates on Current Research Concentrates on ConsumerConsumer (Reuser) and Not (Reuser) and Not ProducerProducer (Creator) (Creator) Measure Savings from Reuse Calculate Return on Investment
Two-Fold GoalTwo-Fold Goal Elevate Reuse to Equal Partner Starting with
Design Focus on Domain-and-Organization Specific
Reuse
REUSE--4
MotivationMotivationWhy Software Reuse?Why Software Reuse?
Increase Software Productivity Increase Software Productivity Shorten Software Development Time Shorten Software Development Time Improve Software System Interoperability Improve Software System Interoperability Develop Software With Fewer People Develop Software With Fewer People Move Personnel More Easily From Project to Move Personnel More Easily From Project to
Project Project Reduce Software Development and Maintenance Reduce Software Development and Maintenance
Costs Costs Produce More Standardized Software Produce More Standardized Software Produce Better Quality Software Produce Better Quality Software Provide a Powerful Competitive AdvantageProvide a Powerful Competitive Advantage
REUSE--5
Overview of PresentationOverview of Presentation
Cultural and Social Reuse IssuesCultural and Social Reuse Issues Component-Based Design - History & PerspectiveComponent-Based Design - History & Perspective Reuse Framework, Methodology, and ToolReuse Framework, Methodology, and Tool
Subjective Identification of Components General vs. Specific Classes Related Hierarchies to Quantify Components
Objective Measure of Dependencies Classifying Dependencies Measuring Reuse Potential
Reuse Guidelines Methodological Basis for Increasing Reuse Iterative Improvement in Reusability
Evaluation and Analysis: DRE Tool/Examples Conclusions and Future ResearchConclusions and Future Research
REUSE--6
Cultural and Social Reuse IssuesCultural and Social Reuse IssuesManagement SupportManagement Support
Motorola Study: A New Reuse Program there must Motorola Study: A New Reuse Program there must have Strong/Unequivocal Management Supporthave Strong/Unequivocal Management Support
Raytheon Report: Support from Upper Raytheon Report: Support from Upper Management Most Important for Successful ReuseManagement Most Important for Successful Reuse
Why? IncreasedWhy? Increased Cost Associated with Constructing Reusable
Components Communication, Coordination Education, Training
Motorola and Raytheon Facilitate by IncentivesMotorola and Raytheon Facilitate by Incentives Both Producer and Consumer Benefits Awards Provided for Demonstrated Efforts
REUSE--7
Recall the Different AbstractionsRecall the Different Abstractions
Classes and HierarchiesClasses and Hierarchies Building Blocks of
Application Independent Classes
of All Types Generalization and
Specialization InterfacesInterfaces
“Specification” of Behavior
Never Instantiated
PackagesPackages Organize Classes and/or
Hierarchies into Named Conceptual Units
ComponentsComponents Application-Oriented Logical and Physical
Associations of Interfaces, Classes, Packages
Purpose: Represent a “Meaningful” Chunk of Functionality
This is a Design Time Component (e.g., a Non-Instantiated Bean)!
REUSE--8
Components vs. ObjectsComponents vs. Objects
ComponentsComponents
Business Oriented Coarse Grained Standards Based Multiple Interfaces Provide Services Fully Encapsulated Understood by
Everyone
ObjectsObjects Technology-Oriented Fine Grained Language Based Single Interface Provide Operations Use Inheritance Understood by
Developers
REUSE--9
Reusable Components Reusable Components Types & BenefitsTypes & Benefits
Application Template Application Template Data Model Data Model Data Structure Data Structure System Architecture System Architecture Process Model Process Model Process Definition Process Definition Prototype Prototype Plan Skeleton Plan Skeleton User Interface User Interface
Skeleton/GUISkeleton/GUI Process SkeletonProcess Skeleton Utility ComponentsUtility Components
Organizational Organizational PerspectivePerspective Shorten Development
Time Reduce Costs Increase
Competitiveness Personnel PerspectivePersonnel Perspective
Increase Productivity Customer Perspective Customer Perspective
Achieve Greater User Satisfaction Through the Production of More Flexible Products
REUSE--10
Component-Based Development ProcessComponent-Based Development Process
TOP-DOWN:To determine what is needed to satisfy this need.
BOTTOM-UP:To determine what is available to satisfy this need.
OTHERS:Consider the similarity among concurrent projects.
FUTURE:Consider the possibility of reusing in future projects.
REUSE--11
Supplier /Consumer ModelSupplier /Consumer Model
SUPPLY Build New Wrap Existing Buy
CONSUME Assemble Applications
MANAGE Publish Subscribe Catalog Browse
REUSE--12
Component-Based Tools/Web Sites of NoteComponent-Based Tools/Web Sites of Note
Software Software Composition Composition WorkbenchWorkbench
JavaBeansJavaBeans Visual CaféVisual Café Visual J++Visual J++ Sun’s ForteSun’s Forte Enabler, SoftlabEnabler, Softlab Microsoft Microsoft
RepositoryRepository UREP, UnisysUREP, Unisys Select Software Select Software
Tools, SelectTools, Select
Reusable Software Research Group, Reusable Software Research Group, West Virginia University West Virginia University http://www.csee.wvu.edu/~resolve/scw/
rsrg-brochure-nov-98.html Reusable Software Research Group, Reusable Software Research Group,
Ohio State UniversityOhio State University http://www.cis.ohio-state.edu/rsrg/
index.html Select Software ToolsSelect Software Tools
http://www.selectst.com/ Software Reuse Executive Primer, Software Reuse Executive Primer,
DODDOD http://dii-sw.ncr.disa.mil/ReuseIC/pol-
hist/primer/ Model-Driven Software Reuse, Model-Driven Software Reuse,
Extended Intelligence Inc.Extended Intelligence Inc.
REUSE--13
A Framework, Methodology, and Tool for A Framework, Methodology, and Tool for Reusable Software ComponentsReusable Software Components
Reuse as Equal Partner Starting with DesignReuse as Equal Partner Starting with Design Iterative Reusability Evaluations at Early and
All Stages of Design and Development Production of Large Reusable Components
Capabilities of Evaluation TechniquesCapabilities of Evaluation Techniques Identify the Reusable Portions of Design Estimate/Measure Reusability Automatically Provide Guidelines on Improving Reusability Usable for
Newly Created Designs Evaluation of Legacy Code for Reuse Potential
Integrated in UML Design Environment (Together CC) and Independent Tool
REUSE--14
A Framework, Methodology, and Tool for A Framework, Methodology, and Tool for Reusable Software ComponentsReusable Software Components
1. Define Components, Their 1. Define Components, Their Interactions, and Analyze Interactions, and Analyze Their ReusabilityTheir Reusability
2. Store an Iteration of Design2. Store an Iteration of Design3. Implement an Iteration3. Implement an Iteration4. Store and Document 4. Store and Document
Iteration of ImplemenIteration of Implemen..5. Reevaluate an Existing 5. Reevaluate an Existing
Design forDesign for Correcting Errors New Reuse Potential
6. Reuse Existing Design with 6. Reuse Existing Design with a New Implementationa New Implementation
Store &DocumentDesigns
ReusabilityEvaluation
Implementthe System
Re(Design)a System
Store &DocumentImplemens.
11
55
44
66 33
22
REUSE--15
Subjective IdentificationSubjective Identification ofof ComponentComponentss
Reuse Historically Occurs at Class LevelReuse Historically Occurs at Class Level Class as “Atomic” Component only Scratches Class as “Atomic” Component only Scratches
Surface in Reuse Potential for OOSurface in Reuse Potential for OO But, Classes InteractBut, Classes Interact
If Reuse One, Often Need Others Thus, Reuse Set of Classes
Expand Reuse from Class to Component LevelExpand Reuse from Class to Component Level Establish Framework for Promoting Design ReuseEstablish Framework for Promoting Design Reuse
Characterize General vs. Specific Classes Quantify Related Components Illustrate via HTSS and Financial Frame
Applications Goal: Increase Reuse Potential by Understanding Goal: Increase Reuse Potential by Understanding
Classes, Components, and their Role within Appl.Classes, Components, and their Role within Appl.
REUSE--16
General/Specific ClassGeneral/Specific Class CharacterizationCharacterization
Subjective Characterization by Software DesignerSubjective Characterization by Software Designer Best Estimate on Potential Utility of ClassBest Estimate on Potential Utility of Class General Class (G)General Class (G)
Those Application Classes that Facilitate Domain-and-Organization Specific Reuse
Specific Class (S)Specific Class (S) Those Application Classes that are Limited to
use in a Single Application PurposesPurposes
Determine Classes with Highest Reuse Potential for Organization’s Future Systems
Dependencies from General to Specific are both Non-Reusable and Hinder Reuse
REUSE--17
General/Specific ClassGeneral/Specific Class CharacterizationCharacterization
General Class (G)General Class (G) Expected to be Reused in Future Applications Abstract Classes/Root Classes/Non-Leaf
Classes in Inheritance Hierarchies Domain Independent/Domain Specific What are Some Examples?
Specific Class (S)Specific Class (S) Only Applicable in Current Applications Unlikely to be Reused in Future Applications Classes that Retrieve from Company Database Application Specific What are Some Examples?
REUSE--18
High-Tech Supermarket System (HTSS)High-Tech Supermarket System (HTSS)
Automate the Functions and ActionsAutomate the Functions and Actions Cashiers and Inventory Updates User Friendly Grocery Item Locator Fast-Track Deli Orderer Inventory Control
User System Interfaces User System Interfaces Cash Register/UPC Scanner GUI for Inventory Control Shopper Interfaces Locator and Orderer Deli Interface for Deli Workers
We’ll Introduce and Utilize Throughout Lecture
REUSE--19
The HTSS Software ArchitectureThe HTSS Software Architecture
ICICICIC
CRCRCRCR
CRCR
CRCR
ILILILIL
ILIL
SDOSDO
SDOSDO EDOEDO
EDOEDO
OrderOrder
PaymentPayment
ItemItemItemDBItemDBLocalLocalServerServer
Non-LocalClient Int.
InventoryInventoryControlControl
ItemDBItemDBGlobalGlobalServerServer
OrderDBOrderDB
SupplierDBSupplierDB
CreditCardDBCreditCardDB
ATM-BanKDBATM-BanKDB
IL: Item IL: Item LocatorLocator
CR: Cash RegisterCR: Cash RegisterIC: Invent. ControlIC: Invent. Control
DO: Deli Orderer forDO: Deli Orderer for Shopper/EmployeeShopper/Employee
REUSE--20
A General Class in HTSSA General Class in HTSS
Why is Why is ItemItem General? General? What is Applicability of What is Applicability of ItemItem??
class Item { private: // Private Data int UPC; char* Name; int InStock, OnShelf, ROLimit; float RetailCost; public: // Public Methods Item(int code, char* str, int st1, int st2, int st3, float cost); void CreateNewItem(); int GetUPC(); char* GetName(); int GetQuantity(); int CheckReorderStatus(); void PrintItem(); void UpdatePrice(float new_value); };
REUSE--21
Another General Class in HTSSAnother General Class in HTSS
Collection Classes of General Classes are General Collection Classes of General Classes are General
class ItemDB {private: int Num_Items; int Curr_Item; Item* AllItems[Max_Items];
int FindFirstItem(); int FindNextItem(); int FindItemUPC(int code); int FindItemName(char* name); public: ItemDB(); // Constructor void InsertNewItem(Item* new_one); void DeleteExistingItem(int code); void FindDisplayItemUPC(int code); void FindDisplayItemName(char* name); void PrintAllItems(); };
REUSE--22
Yet Another General Class in HTSSYet Another General Class in HTSS
GUI-Based Class for Supporting Inventory GUI-Based Class for Supporting Inventory Control Actions Can be Domain IndependentControl Actions Can be Domain Independent
class InvControlGUI { private: int Curr_Option; // Current menu option public: InvControl(); // Constructor void PrintMenuSetOption(); void ActivateController(); void EnterNewItem(); void RemoveExistingItem(); void FindItem(); void InvSearchQuantity(); void InvSearchReorder(); void GenerateAnOrder();};
REUSE--23
Specific Classes in HTSSSpecific Classes in HTSS
General Classes are Refined to Represent General Classes are Refined to Represent Particular Items, Yielding Specific ClassesParticular Items, Yielding Specific Classes
...
Item
DairyItemProduceItem DeliItem
DeliOrdererGUI
OrdererGUI
REUSE--24
Levels of General ClassesLevels of General Classes
Not All General Classes Created EquallyNot All General Classes Created Equally Level of Generality Based on Role in ApplicationLevel of Generality Based on Role in Application
PurposesPurposes Accommodate Large Systems with Multiple,
Different Reusable Components Reusable Components can Overlap, but Still be
Distinct Reusable Units
S,...,G,G,G 2100G
2G0G 0G
1G
2G SS
SS1G
views as General if i j views as Specific if i < j
iG jG
jGiG
REUSE--25
...
Can we Identify Different Levels Can we Identify Different Levels of General Classes?of General Classes?
DairyItem DeliItem
Item
ProduceItem
NonPerishItem PerishItem
)(G0
)(G1 )(G1
)(G2)(G2
BigYProdItem DoleProdItem BigYDairyItem HoodDairyItem
Where can ItemWhere can Itembe Reused?be Reused? Where can Where can
NonPerishItem NonPerishItem and PerishItemand PerishItembe Reused?be Reused?
Where can ProduceItem and Where can ProduceItem and DairyItem be Reused?DairyItem be Reused?
Are DoleProdItem and HoodDairyItem Specific?Are DoleProdItem and HoodDairyItem Specific?
REUSE--26
General/Specific Paradigm in HTSSGeneral/Specific Paradigm in HTSS
Abstraction from Abstraction from HTSSHTSS to to Domain IndependentDomain Independent Inventory Control ApplicationInventory Control Application
Separation of Supermarket Domain SpecificsSeparation of Supermarket Domain Specifics Leverage Commonalties for Leverage Commonalties for
Focused, Independent Design/Development Future Products
RelevanceRelevance Domain-and-Organization-Specific Reuse Expand to 24 hour Mom & Pop Stores Expand to Other Retail Markets
E.g., Auto parts, Clothing, Toy, etc.
REUSE--27
Reusability in HTSS DomainReusability in HTSS Domain
Where do Changes for Other Domains Occur?Where do Changes for Other Domains Occur?
Specific Applications for Big Y or Shaw’s or Stop/Shop (S)
Root classes for Items, ItemDB, etc., which are Most General.
Inventory Control/Other Components.
Classes Specific to Grocery Store Domain.
)(G0
)(G1
)(G2
REUSE--28
Reusability in HTSS DomainReusability in HTSS Domain
Specific Applications for Big Y or Shaw’s or Stop/Shop (S)
Root classes for Items, ItemDB, etc., which are Most General.
Inventory ControlOther Components.
Classes Specific to Grocery Store Domain.
)(G0
)(G1
)(G2
Inventory Control Tool for Ordering Items from Suppliers
Cost Accounting Tool for Tracking Net and Gross Profit
REUSE--29
Reusability in HTSS DomainReusability in HTSS Domain
Specific Applications for Big Y or Shaw’s or Stop/Shop (S)
Root classes for Items, ItemDB, etc., which are Most General.
Inventory Control/Other Components.
Classes Specific to Grocery Store Domain.)(G0
)(G1)(G2
Classes forLargeSupermarket
Classes forSpecialtySupermarket
Classes for24 HourConvenience
REUSE--30
Related Classes and HierarchiesRelated Classes and Hierarchies
Class X is Related to Class YClass X is Related to Class Y if they are Related if they are Related and Concept and are and Concept and are Expected to be ReusedExpected to be Reused TogetherTogether in Future Systems in Future Systems
Class X Related to Class Y is Class X Related to Class Y is Subjectively Subjectively AssignedAssigned by Software Engineer (Producer) by Software Engineer (Producer)
When Class X is Related to Class YWhen Class X is Related to Class Y X and All of X’s Descendants are Related to
Y and All of Y’s Ancestors Thus, to Reuse X or X’s Descendants, you
Must Reuse B and All of B’s Ancestors Class X Related to Y if Y at Same or Higher
Level! Related Classes Promote Reuse, Since They are Related Classes Promote Reuse, Since They are
Expected to be Reused TogetherExpected to be Reused Together
REUSE--31
Related Hierarchies/Reusable Related Hierarchies/Reusable ComponentsComponents
Two Sub-Hierarchies are Related if to Reuse One, Two Sub-Hierarchies are Related if to Reuse One, you Must Reuse the Otheryou Must Reuse the Other
Purpose: Purpose: Identify Reusable Dependencies Among Identify Reusable Dependencies Among Related ClassesRelated Classes
Reusable Component: Reusable Component: A Set of Related Classes that A Set of Related Classes that are Expected to be Reused as a Groupare Expected to be Reused as a Group
0G
0G 0G
SS0G
0G
SS0G
SS
A Sub-Hierarchies BA Sub-Hierarchies B
RR
REUSE--32
Related Characterization in Related Characterization in Levels of Components - HTSSLevels of Components - HTSS
Item
NonPerishItem PerishItem
)(G0
)(G1 )(G1Environ )(G1RR
DairyItemProduceItem DeliItem SubZero RTemp
Does Does RR from Environ to PerishItem Make Sense? from Environ to PerishItem Make Sense? Should Should RR be from PerishItem to Environ? be from PerishItem to Environ?
REUSE--33
What are Dependencies Among Classes?What are Dependencies Among Classes?
Object Inclusion: Object Inclusion: Class Contains a Instance of Class Contains a Instance of Another ObjectAnother Object
Attribute Definition: Attribute Definition: Class Contains Attribute that Class Contains Attribute that is the Type of Another Objectis the Type of Another Object
Method Invocation: Method Invocation: Class Invokes a Method Class Invokes a Method Defined on Another ObjectDefined on Another Object
GoalsGoals Classify and Understand Dependencies Assess “Good” vs. “Bad” Dependencies Change “Bad” to “Good” by
Changing Class from S to G or G to S Moving Code and/or Method Calls Splitting a Class into Two Classes Merging Two Classes
REUSE--34
Reusing Sub-Hierarchies in Reusing Sub-Hierarchies in Different Components - HTSSDifferent Components - HTSS
Will be reused with Componentsfor another domain,e.g., Toy Store
Will be reused with Componentsfor different Super-market Companies
Item
...DairyItemProduceItem DeliItem
NonPerishItem PerishItem
REUSE--35
Transitivity in Inheritance and Transitivity in Inheritance and Related RelationshipsRelated Relationships
Base CaseBase Case: Related Characterization is : Related Characterization is TransitiveTransitive, , but not but not CommutativeCommutative
AA BB CCR R
Case 1Case 1: A is : A is notnot related to X related to X Dependencies from A to X Dependencies from A to X are are notnot Desirable Desirable
Recall: We Reuse X and AllRecall: We Reuse X and All of Its Ancestors, But Not of Its Ancestors, But Not B’s Ancestors to Reuse AB’s Ancestors to Reuse A
AA
BB
CC
XX
R
REUSE--36
Transitivity in Inheritance and Transitivity in Inheritance and Related RelationshipsRelated Relationships
BB
AA
CC
XX
R
Case 2Case 2: X is Related to A : X is Related to A Dependencies from X to Dependencies from X to Both A and B are Both A and B are DesirableDesirable
When Reuse X, Since X When Reuse X, Since X Related to B, we Reuse B and Related to B, we Reuse B and All of Its Ancestors (A)All of Its Ancestors (A)
Thus, Dependencies Between Thus, Dependencies Between X and A are Okay!X and A are Okay!
REUSE--37
Evaluative Metrics and MethodologyEvaluative Metrics and MethodologyObjective Measures of DependenciesObjective Measures of Dependencies
Object-Oriented Design: Object-Oriented Design: Collection of General and Specific Classes, with Related Characterizations
Recall Dependencies Among ClassesRecall Dependencies Among Classes Object Inclusion: Another Instance within Class Attribute Defn.: Attribute Type of Class Method Invocation: Defined on Another Class
Quantify Dependencies for ReuseQuantify Dependencies for Reuse Good: Promotes Reuse - Leave Alone Bad: Hinders Reuse - Try to Change Okay: No Impact on Reuse
GoalsGoals Classify and Understand Dependencies Measure Reuse Potential
REUSE--38
Dependencies Among Related ClassesDependencies Among Related Classes
Remember, G/S are Subjectively Assigned by Remember, G/S are Subjectively Assigned by Software DesignerSoftware Designer
The Two G classes are Related The Two G classes are Related Related Classes are Intended to be Reused Related Classes are Intended to be Reused
TogetherTogetherGood (1)
G
S
G
SOkay (5)
Okay (7)
Bad (3)
REUSE--39
Sample Dependencies in HTSSSample Dependencies in HTSS
InvCont
DeliIC
Item
DeliItem
Good (1)
Okay (5)
Okay (7)
Bad (3)
InvCont and Item are Related InvCont and Item are Related ClassesClasses
InvCont to Item Dependencies InvCont to Item Dependencies are Good: Reused Togetherare Good: Reused Together
Dependency from InvCont to Dependency from InvCont to DeliItem is ProblemDeliItem is Problem Don’t Want to Reuse
InvCont with DeliItem ManagerGUI with InvCont
Includes Useless DeliItem Dependencies from DeliIC to Dependencies from DeliIC to
Item and/or DeliItemItem and/or DeliItem Don’t Impact Reuse Can Reuse Item and
DeliItem w/o DeliIC
REUSE--40
Dependencies Among Non-Related Dependencies Among Non-Related ClassesClasses
Remember, G/S are Subjectively Assigned by Remember, G/S are Subjectively Assigned by Software DesignerSoftware Designer
The Two G Classes are Not RelatedThe Two G Classes are Not Related Non-Related Classes are Non-Related Classes are NOT NOT Intended to be Intended to be
Reused TogetherReused Together
Okay (6)
Okay (8)
G
S
G
S
Bad (2)
Bad (4)
REUSE--41
Sample Dependencies in HTSSSample Dependencies in HTSS
InvCont
DeliIC
Person
Shopper
Bad(2)
Okay (6)
Okay (8)
Bad (4)
InvCont and Person are Classes InvCont and Person are Classes that are Not Relatedthat are Not Related
InvCont to Person or Shopper InvCont to Person or Shopper Dependencies are BadDependencies are Bad Don’t Want to Reuse
Person/Shopper with InvCont
Must Reuse - Problem! Dependencies from DeliIC to Dependencies from DeliIC to
Person and/or ShopperPerson and/or Shopper Don’t Impact Reuse Can Reuse Person and
Shopper w/o DeliIC However, Poor Design if
DeliIC Needs Person or Shopper!
REUSE--42
Summarizing Couplings ofSummarizing Couplings ofRelated ClassesRelated Classes
Type 1: Good for ReuseType 1: Good for Reuse Two General Classes are Reused Together
Type 3: Bad for ReuseType 3: Bad for Reuse General to Specific To Reuse, Specific Must be Included Added Functionality with No Purpose Change to Type 1 or 5/7
Types 5/7: Okay for ReuseTypes 5/7: Okay for Reuse No Impact Specific Classes Not Reused in New
Application May Improve Reuse if Changed to Type 1
REUSE--43
Summarizing Couplings ofSummarizing Couplings ofNon-Related ClassesNon-Related Classes
Type 2: Bad for Reuse - Two General Classes Type 2: Bad for Reuse - Two General Classes Not Expected to be Reused Together since Not
Related Change to Type 6/8
Type 4: Bad for ReuseType 4: Bad for Reuse General to Specific To Reuse, Specific Must be Included Added Functionality with No Purpose Change to Type 6/8
Types 6/8: Okay for ReuseTypes 6/8: Okay for Reuse No Impact Specific Classes Not Reused in New
Application
REUSE--44
Sample Actions to Improve ReusabilitySample Actions to Improve Reusability
Coupling Among Related Among Unrelated
G G Type (1)Good for Reuse
Type (2)Bad for ReuseMove Src./Dst. to Specific
G S Type (3)Bad for ReuseMove Dst. to General
Type (4)Bad for ReuseMove Src. To Specific
S G Type (5)Can Improve if MoveSrc. to General
Type (6)No Impact on Reuse
S S Type (7) - Can Improveif Move Src./Dst. to Gen.
Type (8)No Impact on Reuse
REUSE--45
Reuse GuidelinesReuse Guidelines
Methodological Basis for Increasing ReuseMethodological Basis for Increasing Reuse Designer Supplies General/Specific/Related for
the Classes/Hierarchies in Application Reuse Analysis Tool Calculates Couplings and
Identifies Types of Reuse (Good, Bad, Okay) Ideal Result: Maximize Reuse via CouplingsIdeal Result: Maximize Reuse via Couplings
Type 1: G to G for Related Classes Type 8: S to S for Non-Related Classes
Extended Guidelines: Menu of ChoicesExtended Guidelines: Menu of Choices Different Ways to Move Couplings Considers Impact of Movement on Design
Goal: Iterative Improvement in ReusabilityGoal: Iterative Improvement in Reusability
REUSE--46
Core Guidelines to Move Couplings to Core Guidelines to Move Couplings to Increase Reuse PotentialIncrease Reuse Potential
G
S
G
S
Type 2
Type 8
G
S
G
S
Type 4
Type 8
G
S
G
S
Type 5
Type 1 G
S
G
SType 7
Type 1
Type 1G
S
G
S
Type 3
G
S
G
SType 7
REUSE--47
Extended Guidelines for Extended Guidelines for Improving ReusabilityImproving Reusability
Core Guidelines Emphasize Local BehaviorCore Guidelines Emphasize Local Behavior To Remove “Bad” or Improve “Okay” Coupling, To Remove “Bad” or Improve “Okay” Coupling,
Move Cause of the Coupling (e.g., Method Call)Move Cause of the Coupling (e.g., Method Call) Moving a General Method to Specific Class Moving a Specific Method to General Class
Moving Method Up/Down a Hierarchy, Which Moving Method Up/Down a Hierarchy, Which Alters the Coupling, Alters the Coupling, Can Impact ElsewhereCan Impact Elsewhere
Expand the Analyses to Other Couplings of the Expand the Analyses to Other Couplings of the Source and Destination of the Bad Coupling Source and Destination of the Bad Coupling Couplings to Source when Moving Down Couplings to Destination when Moving Up
Extended Guidelines: Menu of ChoicesExtended Guidelines: Menu of Choices
REUSE--48
Extended Guidelines to Improve ReuseExtended Guidelines to Improve ReuseIdentifying the ProblemIdentifying the Problem
S
G
S m()
G G
Type 7
G
S
G
S
Type 3
Type 7
Recall
G
S
G
S
m()G Type 3
Suppose
What has Occurred?
REUSE--49
Extended Guidelines to Improve ReuseExtended Guidelines to Improve ReuseIdentifying the ProblemIdentifying the Problem
S
G
S m()
G G
Type 5
Suppose
What has Occurred?
G
S
G
S
m()G
Type 1
G
S
G
S
Type 5
Type 1
Recall
REUSE--50
Extended Guidelines for Extended Guidelines for Type 3Type 3 Couplings Couplings
Move Coupling Dst. to General ClassMove Coupling Dst. to General Classor Change Dst. To a General Classor Change Dst. To a General Class Type 3 to Type 1 May Introduce Couplings from G
Dst. to Specific Classes Move Coupling Src. to Specific ClassMove Coupling Src. to Specific Class
or Change Src. To a Specific Classor Change Src. To a Specific Class Type 3 to Type 7 May Introduce Couplings from
General Classes to Specific Src. Change to Non-Related/Follow Change to Non-Related/Follow Type 4Type 4 Detailed Evaluation of ImplementationDetailed Evaluation of Implementation Key ConcernsKey Concerns
Local Changes with Global Impact “Wrong” Choice Degrades Reuse
G
S
G
S
Type 3
Among Related
REUSE--51
Removing Removing Type 3Type 3 Couplings in HTSS Couplings in HTSSWhich Changes Make Sense?Which Changes Make Sense?
InvCont
DeliIC
Item
DeliItem
Type 3
Change InvCont to S or DeliItem to GChange InvCont to S or DeliItem to G Neither Makes Sense Against Design Intent!
Move Coupling Dst. to General ClassMove Coupling Dst. to General Class Find Problem Method Call,
Attribute Access, Object Inclusion Move from DeliItem and Item Type 3 to Type 1
Move Coupling Src. to Specific ClassMove Coupling Src. to Specific Class Find Problem Method Call,
Attribute Access, Object Inclusion Move from InvCont and DeliIC Type 3 to Type 7
Detailed Evaluation of ImplementationDetailed Evaluation of Implementation Note: Maintain Application SemanticsNote: Maintain Application Semantics
Type 1
Type 7
REUSE--52
Extended Guidelines for Extended Guidelines for Type 2Type 2 Couplings Couplings
Move Coupling Src. to Specific ClassMove Coupling Src. to Specific Classor Change Src. To a Specific Classor Change Src. To a Specific Class Type 2 to Type 6 May Introduce Couplings from
General Classes to Specific Src. Move Src. and Dst. to Specific ClassesMove Src. and Dst. to Specific Classes
Type 2 to Type 8 May Introduce Couplings from G
Src. to Specific Dst. Move Coupling Dst. to Specific ClassMove Coupling Dst. to Specific Class
or Change Dst. To a Specific Classor Change Dst. To a Specific Class Follow Type 4 Guidelines
Change to Related/Change to Related/Type 1Type 1/Design /Design Impact Must be Evaluated!Impact Must be Evaluated!
Detailed Evaluation of ImplementationDetailed Evaluation of Implementation
G
S
G
S
Type 2
Non-Related
REUSE--53
Extended Guidelines for Extended Guidelines for Type 4Type 4 Couplings Couplings
Move Coupling Dst. to General ClassMove Coupling Dst. to General Classor Change Dst. To a General Classor Change Dst. To a General Class Type 4 to Type 2 - No Help
Move Coupling Src. to Specific ClassMove Coupling Src. to Specific Classor Change Src. To a Specific Classor Change Src. To a Specific Class Type 4 to Type 8 May Introduce Couplings from
General Classes to Specific Src. Change to Related/Follow Change to Related/Follow Type 3Type 3 Detailed Evaluation of ImplementationDetailed Evaluation of Implementation
G
S
G
S
Type 4
Non-Related
REUSE--54
Summary on Extended GuidelinesSummary on Extended Guidelines
Total Alternatives for Removing “Bad” Couplings:Total Alternatives for Removing “Bad” Couplings: Type 2, 3, 4: Seven Possibilities Each: 21 Total Type 5, 7: 3 Total
Changing from G to S or Movement of Coupling Changing from G to S or Movement of Coupling Potential to Impact: Potential to Impact: Couplings to Source Couplings from Destination
Result: Movement May Result: Movement May DecreaseDecrease Reuse Potential! Reuse Potential! Two-Fold Solution:Two-Fold Solution:
Design Support for OO Reuse Metrics and Evaluation within UML, Design Patterns, etc.
Analytical Tool for Evaluating Reuse Potential of C++, Ada95, or Java Applications/Libraries
REUSE--55
Utilizing Reuse MethodologyUtilizing Reuse MethodologyEvaluate Evolving Design/ImplementationEvaluate Evolving Design/Implementation Constructing New ApplicationsConstructing New Applications
Software Design Proceeds in Stages Today’s Norm: Incremental Development and
Rapid Prototyping General/Specific Classes/Related ComponentsGeneral/Specific Classes/Related Components
Assigned Initially as Classes are Generated Refined Throughout Increments/Versions G to S, S to G, etc. Related Components as Design Begins to
Mature with Additional Details Use Methodology to Find/Correct “Problems”
Video Rental System Test-Bed Video Rental System Test-Bed
REUSE--56
Utilizing Reuse MethodologyUtilizing Reuse Methodology Investigate Reusability of Legacy Code Investigate Reusability of Legacy Code
Reusability of Legacy CodeReusability of Legacy Code Examine Legacy Code in Detail Talk/Contact Domain Experts with Corporate
Knowledge of Code General/Specific Classes/Related ComponentsGeneral/Specific Classes/Related Components
Take “Educated Guess” for G/S Classes and Related Components
Run DRE and Find/Correct Problems Re-evaluate Legacy Code with Different
“Educated Guesses” Compare/Contrast Results to Identify the “Best”
way to Characterize Classes/Components FinancialFrame as a Test-BedFinancialFrame as a Test-Bed
REUSE--57
The Video Rental System (VRS)The Video Rental System (VRS)
VRS is for On-Line (Browser) Rental TapesVRS is for On-Line (Browser) Rental Tapes Maintains Customer and Video Databases Tracks Borrowing/Returning of Tapes Logs Rented Tapes CGI, C++, Netscape/Explorer From Video Rental to Auto Parts Undergraduate Project: Spring 1997 - VRS-1 Repeated as Grad Project: Fall 1998 - VRS-2
Goals:Goals: Demonstrate General/Specific/Related Ideas Incorporate/Reuse Design in Future System Study Effectiveness Approach in Identifying
and Removing Non-Reusable Dependencies
REUSE--58
General and Specific Classes in VRS-1General and Specific Classes in VRS-1
VideoStoreInterface (S)
StoreInterface (G)
VideoCustomer (S)
Customer (G)
VideoCustomerInterface (S)
CustomerInterface (G)
VideoTape (S)
Item (G)
VideoTapeDB (S)
ItemDB (G)
RentedTapeDB (S)RentedTape (S)
CustomerDB (G)
HistoryList (G)
Transaction (G)
REUSE--59
DRE and VRS-1DRE and VRS-1Tracking Incremental VersionsTracking Incremental Versions
Type Metr I II III IV V VI VII
Good CC1 8 54 79 109 166 167 193
Bad CC2 0 0 0 0 0 0 0
Bad CC3 6 0 0 0 4 4 0
Bad CC4 0 0 1 1 0 0 0
Impr CC5 0 19 28 39 94 92 75
Impr CC6 0 6 6 18 28 30 25
Okay CC7 0 0 0 0 0 5 0
Okay CC8 0 0 11 11 21 22 26
LOC 410 1386 2088 2695 3784 3824 3867
REUSE--60
Final General/Specific Classes in VRS-2Final General/Specific Classes in VRS-2and Some Related Characterizationsand Some Related Characterizations
VideoStoreInterface (S)
StoreInterface (G)
Customer (G)
CustomerInterface (G)
Video (S)
Item (G)
VideoItemList (S)
ItemList (G) ReportGenerator (S)
Transaction (G)
VideoTransaction (S)
CustomerList (G)
VideoCustList (S)
REUSE--61
DRE and VRS-2DRE and VRS-2Tracking Incremental VersionsTracking Incremental Versions
Type Metr I II III IV
Good CC1 17 28 26 26
Bad CC2 0 0 0 0
Bad CC3 0 0 1 0
Bad CC4 0 0 0 0
Impr CC5 0 0 2 2
Impr CC6 0 0 3 4
Okay CC7 0 4 3 3
Okay CC8 0 0 0 0
G/SLOCCls.
175/1
325/1
307/6
307/6
REUSE--62
One Type 3 Coupling: G to S DependencyOne Type 3 Coupling: G to S Dependency
Transaction (G)
write_to_checkoutfile()write_to_checkoutfile()
VideoTransaction (S)
Customer (G)
take_item( )
...tr->calculate_currentdate()tr->calculate_duedate()tr->write_to_historyfile()tr->write_to_checkoutfile()...
calculate_currentdate()calculate_duedate()write_to_historyfile()
• What is the Problem?What is the Problem?• How is it Resolved?How is it Resolved?
REUSE--63
Resolving Type 3 G to S DependencyResolving Type 3 G to S Dependency
Customer (G)
take_item( )
Transaction (G)
write_to_checkoutfile()write_to_checkoutfile()
VideoTransaction (S)
calculate_currentdate()calculate_duedate()write_to_historyfile()
...tr->calculate_currentdate()tr->calculate_duedate()tr->write_to_historyfile()take_item_specific()...
take_item_specific()take_item_specific()
VideoCustomer(S)
((VideoTransaction *) tr) -> write_to_checkoutfile()
REUSE--64
Design Reusability Evaluation (DRE) Design Reusability Evaluation (DRE) ToolTool
What is DRE?What is DRE? Java-Based Tool for Analyzing Reusability Takes C++, Ada95, and Java Code as Input Works with General/Specific/Related as
Subjectively Defined by Software Designer Analyzes Couplings to Identify, for Each Type
(1 to 8), the Number of Couplings Allows Designer to Investigate Cause of and
Correct “Bad” or Improve “Okay” Couplings DRE can be Utilized in Different WaysDRE can be Utilized in Different Ways
Evaluate Evolving Design/Implementation Investigate the Reusability of Legacy Code
Examples of Video Rental System/FinancialFrameExamples of Video Rental System/FinancialFrame
REUSE--65
DRE ProcessDRE Process
DRE Process: User RoleDRE Process: User Role Step 1: User Selects
DRE Mode Currently Available
in Java and C++ Mode
Ada95 Version May Exist
Step 2: User Selects Directory of Code
DRE Process: Tool RoleDRE Process: Tool Role Step 3: Tool Parses
through Source Code in Selected Directory
Step 4: Tool Returns Class Names and Class Pairs to User Interface
REUSE--66
DRE ProcessDRE Process
DRE Process: User RoleDRE Process: User Role Step 5: User Selects
General Classes
Step 6: User Selects Related Classes
7: User Requests Calculation of Coupling Counts
DRE Process: Tool RoleDRE Process: Tool Role Step 8: Tool Makes
Calculation Based on User’s Input
Step 9: Tool Returns Coupling Counts to User Can Present
Calculations Only Can Present
Calculations, Possible Errors, Improvement Ideas
REUSE--67
DRE ProcessDRE Process
DRE Process: User RoleDRE Process: User Role Step 10: User May Select Simulation of
Changes
DRE Process: Tool RoleDRE Process: Tool Role Step 11: Tool Outlines Possible Improvements
DRE Process: User RoleDRE Process: User Role Step 12: User Chooses Improvements
DRE Process: Tool RoleDRE Process: Tool Role Step 13: Tool Recalculates Coupling Values
REUSE--68
Prototyping Progress in DRE and TCC Prototyping Progress in DRE and TCC (SD & JE)(SD & JE)
Summary of Prototyping MilestonesSummary of Prototyping Milestones Results and Status of CSE367 ProjectResults and Status of CSE367 Project
Work by H. Lin on DRE Work by X. Wang on TCC
DRE StatusDRE Status GUI Finalized Simulator Completed Parser Integrated Help Subsystem Completed
Togethersoft Control Center Status Togethersoft Control Center Status Developed Extensive Set of Plug-ins UML Design Level Reusability Definition
REUSE--69
Main Application Window Main Application Window
REUSE--70
Main Window – Setting GeneralityMain Window – Setting Generality
REUSE--71
Main Window – Setting RelationsMain Window – Setting Relations
REUSE--72
Main Window – Choosing Simulation Main Window – Choosing Simulation OptionsOptions
REUSE--73
Help SubsystemHelp Subsystem
HTML-based Documents Describe Tool & TheoryHTML-based Documents Describe Tool & Theory
REUSE--74
Reuse in Togethersoft Control CenterReuse in Togethersoft Control Center
Integrates Visual Modeling via IDEIntegrates Visual Modeling via IDE Implements UML/Supports Java and C++ Source Code Editing Model/Code Synchronization Open API and Plugin Support (Written in Java)
Single Integrated Design/Development Single Integrated Design/Development Environment with Reusability AssessmentEnvironment with Reusability Assessment
Leverage TCC to Support Reusability at Design Leverage TCC to Support Reusability at Design LevelLevel Incorporate G/S and Related at UML Level Users can Execute Plug Ins for Each Actual Properties for UML Classes Modified
REUSE--75
Reusability in Together CCReusability in Together CC
REUSE--76
Reusability in Together CCReusability in Together CC
REUSE--77
Reusability in Together CCReusability in Together CC
REUSE--78
Reusability in Together CCReusability in Together CC
REUSE--79
ConclusionsConclusions
Comprehensive Reusability Model and EvaluationComprehensive Reusability Model and Evaluation General/Specific/Related Characterizations Capture/Analyze Reusability of OO Software Achieve Highest Gain Through Early
Identification and Reusability Evaluations! Methodology and Empirical VerificationMethodology and Empirical Verification
Guidelines to Encourage Reuse Applicable to Reuse of Designs and Code DRE Tool for C++, Ada95, Java Strong Demonstration of
Domain-and-Organization-Specific Reuse
REUSE--80
Reusable Component Framework(Demurjian) Reusable Component Framework(Demurjian) Status and ObjectivesStatus and Objectives
Work Currently Funded by Electric Boat, Inc. (T. Rando, Work Currently Funded by Electric Boat, Inc. (T. Rando, T. Daggett, and M. Price) and Jointly Conducted with T. Daggett, and M. Price) and Jointly Conducted with USNA (Dr. D. Needham)USNA (Dr. D. Needham)
Planned Research Over Next 12 Months Planned Research Over Next 12 Months Complete Prototypes (DRE /TCC) Genetic Algorithm for Refactoring/Assessment Formal Reuse Model XML/Reuse
Research - Through 2004Research - Through 2004 Focus on Comprehensive Reuse Framework Guided Reusability Assessment/GA Analysis Component Repository with Search Capabilities Leverage Domain/Organization Specificity UML, XML, and Java Components
See:See: http://www.engr.uconn.edu/~steve/DRE/dre.html
REUSE--81
The FinancialFrame ApplicationThe FinancialFrame Application
REUSE--82
The FinancialFrame ApplicationThe FinancialFrame Application
A Commercial C++ Framework Containing 441 A Commercial C++ Framework Containing 441 Classes, Proprietary of FinancialCompClasses, Proprietary of FinancialComp
Designed for Reuse in Various Financial Apps.Designed for Reuse in Various Financial Apps. Provides Basic Functionalities of Financial SystemProvides Basic Functionalities of Financial System FinancialFrame’s Challenge - Manage ChangesFinancialFrame’s Challenge - Manage Changes
Framework Constantly Evolving New Functions and Modify Existing Functions
Conceptual Relevance:Conceptual Relevance: Provide Realistic Context for Our Approach Domain-and-Organization-Specific Reuse
REUSE--83
The FinancialFrame ApplicationThe FinancialFrame Application
Our Purpose: Work with Existing CodeOur Purpose: Work with Existing Code Establish General and Specific Classes Characterize Related Components Evaluate the Goodness of G/S Characterization
and Identify Potential Problem Areas General Components that are Specific Specific Components that are General
Problematic Relevance:Problematic Relevance: Demonstrate Ability of Approach to Localize
Effect of Changes Describe Ways to Increase FinancialFrame’s
Reuse Potential
REUSE--84
General and Specific Classes in General and Specific Classes in FinancialFrameFinancialFrame
FinancialCompTrader )(G2
FinancialCompAccount )(G2
FinancialCompDesk )(G2
)(G0Main
FinancialCompMain OtherMain
SpecificFCMain (S) SpecificOtherMain (S)
)(G2 )(G2 ...
)(G0YieldModel
DiscountIndexBond )(G1 )(G1 Bill )(G1
)(G0CashFlowAnalyzer
...
REUSE--85
Related Characterizations in Related Characterizations in Levels of Components - FinancialFrameLevels of Components - FinancialFrame
Classes/Sub-Hierarchies can be Related if and only Classes/Sub-Hierarchies can be Related if and only if Classes (or Sub-Hierarchy Roots) are General if Classes (or Sub-Hierarchy Roots) are General and at the Same or Higher Leveland at the Same or Higher Level
Specific applications at FinancialComp (S)
Root classes of strategies andother most General classes (Main)
Bond or other strategy Components
Classes specific to FinancialComp
)(G0
)(G1
)(G2
REUSE--86
Related Characterization in Related Characterization in Levels of Components - FinancialFrameLevels of Components - FinancialFrame
...
)(G0YieldModel
DiscountIndexBond )(G1 )(G1Bill )(G1
Bond )(G1
R
Bond is Related to IndexBondBond is Related to IndexBond When Bond is Reused, so Must IndexBond and When Bond is Reused, so Must IndexBond and
YieldModel YieldModel Hence, IndexBond and its Ancestor (YieldModel) Hence, IndexBond and its Ancestor (YieldModel)
are Reused!are Reused!
REUSE--87
Reusing Sub-Hierarchies in Reusing Sub-Hierarchies in Different Components - FinancialFrameDifferent Components - FinancialFrame
Dependencies Among General Related ClassesDependencies Among General Related Classes Not a Hindrance to Reuse Represents Valuable Design Knowledge
)(G0Main
FinancialCompMainOtherMain
SpecificFCMain (S)SpecificOtherMain (S)
)(G2)(G2
Will be reused with Componentsutilizing another company’s databases
Will be reused with Componentsutilizing FinancialComp’s database
REUSE--88
An Example of Case 1 in FinancialFrameAn Example of Case 1 in FinancialFrame
FinancialCompMain FinancialCompMain RR FinancialCompTrader FinancialCompTraderThus, Dependencies Between are DesirableThus, Dependencies Between are Desirable
Main is Main is not Rnot R to FinancialCompTrader to FinancialCompTraderThus, Dependencies Between Hinder ReuseThus, Dependencies Between Hinder Reuse
For For “Blue” “Blue” Component, we Don’t Want to Have to Component, we Don’t Want to Have to Reuse FinancialCompTrader with Main!Reuse FinancialCompTrader with Main!
)(G0Main
FinancialCompMainOtherMain )(G2)(G2
FinancialCompTrader )(G2
R
REUSE--89
An Example of Case 2 in FinancialFrameAn Example of Case 2 in FinancialFrame
...
)(G0YieldModel
DiscountIndexBond )(G1 )(G1Bill )(G1
Bond )(G1
R
Class Bond Class Bond RR to both IndexBond and YieldModel to both IndexBond and YieldModel Thus, Dependencies from Bond to IndexBond and Thus, Dependencies from Bond to IndexBond and
YieldModel are Desirable and Reusable!YieldModel are Desirable and Reusable! When Bond is Reused, So is IndexBond and When Bond is Reused, So is IndexBond and
YieldModel!YieldModel!
REUSE--90
The FinancialFrame ApplicationThe FinancialFrame ApplicationInitial Assumptions on G/S and RelatedInitial Assumptions on G/S and Related
...
)(G0YieldModel
DiscountIndexBond )(G1 )(G1Bill )(G1
Bond )(G0
FinancialFrame Composed of Multiple Algorithm FinancialFrame Composed of Multiple Algorithm FamilitesFamilites
All Root Classes are G(0) with Subclasses G(1)All Root Classes are G(0) with Subclasses G(1) All Other Classes are G(0)All Other Classes are G(0) Use Actual Couplings in Code to Define Related Use Actual Couplings in Code to Define Related
CharacterizationCharacterization
REUSE--91
Evaluation of FinancialFrameEvaluation of FinancialFramePossible ScenariosPossible Scenarios
Dependencies from to ClassesDependencies from to Classes Occurring from a General Class (Bond) to
Classes Specific to a Component (IndexBond) Such Couplings Require a Specific Class that is
Not Needed to be Reused with the General Root Reported as Undesirable Couplings (Type 3/4)
0G 1G
...
)(G0YieldModel
DiscountIndexBond )(G1 )(G1Bill )(G1
Bond )(G0
REUSE--92
Revising FinancialFrame ApplicationRevising FinancialFrame Application
...
)(G0YieldModel
DiscountIndexBond )(G1 )(G1Bill )(G1
Bond )(G1 R
Bond is Changed from to Bond is Changed from to A Component Consisting of Bond, IndexBond, A Component Consisting of Bond, IndexBond,
and YieldModel is Definedand YieldModel is Defined When Bond Reused, So Must IndexBond and When Bond Reused, So Must IndexBond and
YieldModel - Other Classes Not NeededYieldModel - Other Classes Not Needed However, YieldModel can Be Reused in IsolationHowever, YieldModel can Be Reused in Isolation Thus, Modifications to Component Only Affect Thus, Modifications to Component Only Affect
Reusers of ComponentReusers of Component
0G 1G
REUSE--93
Evaluation of FinancialFrameEvaluation of FinancialFramePossible ScenariosPossible Scenarios
Dependencies from to Classes Dependencies from to Classes Occurring from a Specific Class to Other
Classes Specific & Unrelated to a Component Bond Related to Class Outside Component Such Couplings Require a Specific Class in
One Component to be Reused in Another Component, Where it is Not Needed
Reported as Undesirable Couplings (Type 2)
1G 1G
...
)(G0YieldModel
DiscountIndexBond )(G1 )(G1Bill )(G1
Bond )(G1 R
1G
REUSE--94
Reusability of FinancialFrame Reusability of FinancialFrame ComponentsComponents
Undesirable Couplings Identified via Either Undesirable Couplings Identified via Either Scenario can be Removed to Increase ReuseScenario can be Removed to Increase Reuse
Results of Such Actions w.r.t. FinancialFrameResults of Such Actions w.r.t. FinancialFrame Classes can be Reused with Classes When a Class is Modified, Only Users of
Particular Component(s) are NotifiedBad Coupling No Longer Present!Bad Coupling No Longer Present!
Each Component Can be Reused “As is” Classes Outside of Component No Longer
Needed Cannot Illustrate Due to Proprietary SoftwareCannot Illustrate Due to Proprietary Software Similar Changes to VRS-2 OccurSimilar Changes to VRS-2 Occur
1G1G
0G