View
218
Download
2
Embed Size (px)
Citation preview
Extracting ObjectsExtracting ObjectsFrom From
Legacy Imperative CodeLegacy Imperative Code
Ricky E. “Ranger” SwardRicky E. “Ranger” SwardDept of Computer ScienceDept of Computer Science
USAF AcademyUSAF [email protected]@usafa.edu
OverviewOverview
• Background• Taxonomy of Imperative Subprograms• Parameter-Based Object Identification (PBOI)• Examples• Questions
BackgroundBackground
• Re-Engineering• Previous Work• Functional Equivalence
Re-EngineeringRe-Engineering
Req
Design
Implementation Implementation
Design
Req
Re-specify
Re-Design
Re-Code
Reverse
Engineerin
g Forward Engineering
Re-Engineering = Reverse + Forward
Previous WorkPrevious Work
• Liu and Wilde [1] methodologies– Global-Based Object Identification (GBOI)
• objects grouped based on global variables
– Type-Based Object Identification (TBOI)• objects grouped based on data types
• Lividas and Johnson [2] methodology– Receiver-Based Object Identification (RBOI)
• objects grouped based on output data types
Functional EquivalenceFunctional Equivalence
• Prove mathematically that the extracted Object-Oriented Design is functionally equivalent to the Structured Design
F( SD ) = OOD where
SD = Tpsmain
( SD ) and
M SD and CatM( M ) and
OOD = ( , M)
TaxonomyTaxonomy
• Category 0 – produce no data and call no other subprograms.• Category 1 – produce no data items but call other subprograms.• Category 2 – produce a single data item and call no subprograms.• Category 3 – produce a single data item and call other subprograms.• Category 4 – produce multiple data items and call no subprograms.• Category 5 – produce multiple data items and call other subprograms.
| Ppro | = 0 | Ppro | = 1 | Ppro | > 1
| Csub | = 0 0 2 4
| Csub | > 0 1 3 5
Parameter-Based Object Parameter-Based Object Identification (PBOI)Identification (PBOI)
• Overall rationale for PBOI– Object attributes occur as parameters passed
between subprograms.
• Objects are extracted from parameters
• Behavior built around the objects
• Functionally equivalent transformations
Category 4 SubprogramsCategory 4 Subprograms
• Category 4 subprograms produce multiple data items• Use program slicing
– extracts independent code that produces single data items– Cat 4 subprograms sliced into Cat 2 subprograms– identify based on how data is used, not organized
Program SlicingProgram Slicing
Category 4A
BC
E
D
foo
Category 2A
B
D
foo-D
Category 2A
CE
foo-E
Category 5 SubprogramsCategory 5 Subprograms
• Category 5 subprograms produce multiple data items and call other subprograms
• Also use program slicing– Cat 5 subprograms sliced into Cat 2 or Cat 3 subprograms
Slicing Category 5 SubprogramsSlicing Category 5 Subprograms
Category 5D
EF
C
B
bar
Category 2E
F
B
bar-B
Category 3D
E C
bar-C
Category 2 SubprogramsCategory 2 Subprograms
• Category 2 subprograms produce one data item and call no subprograms
• Implement derived attributes of objects, ala Rumbaugh [3]
• Transform each formal parameter into an attribute of a class
• Transform subprogram into method of the class
Category 2 ExampleCategory 2 Example
CAPTURE
BEAMRA
ANGFAC
REAL
Class-2
AttributesBEAMRAANGFAC
MethodsCAPTURE( C-2 : Class-2 ) : REAL
Category 0 SubprogramsCategory 0 Subprograms
• Category 0 subprograms produce no data and call no other subprograms
• They are treated as special cases of Category 2 subprograms
Category 3 SubprogramsCategory 3 Subprograms
• Category 3 subprograms produce a single data item and call other subprograms
• Transform called subprograms first
• Build class for subprogram with all parameters as attributes
• Filter attributes to refine object design
Category 3 FilteringCategory 3 Filtering• PBOI Case 1 – Attribute of both C1 and C2
BOUNCEANGFAC
PROJRAREAL
CAPTUREBEAMRA
ANGFAC
Class-4
Attributes: ANGFAC, PROJRA
Methods: BOUNCE( C-4 : Class-4 ) : REAL
Class-2
Attributes: BEAMRA, ANGFAC
Methods: CAPTURE( C-2 : Class-2 ) : REAL
REAL
Class-4
Attributes: PROJRA
Methods: BOUNCE( C-4 : Class-4,
C-5 : Class-2 ) : REAL
Category 3 FilteringCategory 3 Filtering• PBOI Case 2 – Attribute of C1, not C2
BOUNCEANGFAC
PROJRAREAL
CAPTUREBEAMRA
ANGFAC
Class-4
Attributes: ANGFAC, PROJRA
Methods: BOUNCE( C-4 : Class-4 ) : REAL
Class-2
Attributes: BEAMRA
Methods: CAPTURE( C-2 : Class-2,
ANGFAC ) : REAL
REAL
Class-4
Attributes: PROJRA
Methods: BOUNCE( C-4 : Class-4,
C-5 : Class-2,ANGFAC ) : REAL
Category 3 FilteringCategory 3 Filtering• PBOI Case 3 – Attribute of C2, not C1
BOUNCEANGFAC
PROJRAREAL
CAPTUREBEAMRA
ANGFAC
Class-2
Attributes: BEAMRA, ANGFAC
Methods: CAPTURE( C-2 : Class-2 ) : REAL
REAL
Class-4
Attributes: PROJRA
Methods: BOUNCE( C-4 : Class-4,
C-5 : Class-2 ) : REAL
Class-2
Attributes: ANGFAC
Methods: CAPTURE( C-2 : Class-2,
BEAMRA ) : REAL
Category 3 FilteringCategory 3 Filtering• PBOI Case 4 – Not attribute of C1 nor C2
BOUNCEANGFAC
PROJRAREAL
CAPTUREBEAMRA
ANGFAC
REAL
Class-4
Attributes: PROJRA
Methods: BOUNCE( C-4 : Class-4,
C-5 : Class-2 ) : REAL
Class-2
Attributes: ANGFAC
Methods: CAPTURE( C-2 : Class-2,
BEAMRA ) : REAL
Category 1 SubprogramsCategory 1 Subprograms
• Category 1 subprograms produce no data and call other subprograms
• All but Main program are transformed using Category 3 transformations
• Main program is treated differently
Main ProgramMain Program
• Main program is unique
• Provides opportunity to remove duplicates and merge overlapping classes
• In main program, objects that share attributes are parts of the same object
• Any/all global variables have already been transformed into parameters
Removing Duplicate Object Removing Duplicate Object InstancesInstances
Instance of Class 2
C-5
Instance of Class 2
C-6Instance of Class 2
C-7
Overlapping ClassesOverlapping ClassesClass-2
Attributes: BEAMRA, ANGFAC
Methods: CAPTURE( C-2 : Class-2 ) : REAL
Class-10
Attributes: BEAMRA, RHOSTD, ANGFAC
MethodsCAPTURE( C-2 : Class-10 ) : REALRHO( C-4 : Class-10 ) : REAL
Class-3
Attributes: RHOSTD, ANGFAC
Methods: RHO( C-3 : Class-3 ) : REAL
Student Scheduler ExampleStudent Scheduler Example
• Look at PBOI in terms of the S5 Student Scheduler...
Category 2 ExampleCategory 2 Example
Deschedule_Student
Period in
Scheduled in out
Class_1
type Class_1 is tagged recordPeriod : Integer;Name : String_Ten;Scheduled : Integer_Array;Length : Integer;
end record;
procedure Deschedule_Student ( C_1 : in out Class_1 ) isbegin
...End := C_1.Period + C_1.Length;...
end Deschedule_Student;
Length in
Name in
Category 3 FilteringCategory 3 Filtering• PBOI Case 1 – Attribute of both Class_1 and Class_2
Deschedule_Student
Period in
Scheduled in out
Length in
Name in
Deschedule_Student
Check_Minimum_Enrollment
Name in
Min_Enroll in
Scheduled in out
Length in
Enroll in
Category 3 FilteringCategory 3 Filtering• PBOI Case 1 – Attribute of both Class_1 and Class_2
Class_2
Attributes: Name, Scheduled,Length, Min_Enroll, Enroll
Check_Minimum_Enrollment ( C_2 : in out Class_2 );
Class_1
Attributes: Period, Name, Scheduled,Length
procedure Deschedule_Student ( C_1 : in out Class_1 );
Class_2
Attributes: Min_Enroll, Enroll
Check_Minimum_Enrollment ( C_2 : in out Class_2; C_3 : in out Class_1’Class );
Category 3 FilteringCategory 3 Filtering• PBOI Case 2 – Attribute of Class_2, not Class_1
Deschedule_Student
Period in
Scheduled in out
Length in
Name in
Deschedule_Student
Check_Minimum_Enrollment
Name in
Min_Enroll in
Scheduled in out
Length in
Enroll in
Category 3 FilteringCategory 3 Filtering• PBOI Case 2 – Attribute of Class_2, but not Class_1
Class_2
Attributes: Name, Scheduled,Length, Min_Enroll, Enroll
Check_Minimum_Enrollment ( C_2 : in out Class_2 );
Class_1
Attributes: Period, Name, Scheduled,
procedure Deschedule_Student ( C_1 : in out Class_1; Length : in Integer );
Class_2
Attributes: Min_Enroll, Enroll
Check_Minimum_Enrollment ( C_2 : in out Class_2; C_3 : in out Class_1’Class; Length : in Integer );
Category 3 FilteringCategory 3 Filtering• PBOI Case 3 – Attribute of Class_1, but not Class_2
Deschedule_Student
Period in
Scheduled in out
Length in
Name in
Deschedule_Student
Check_Minimum_Enrollment
Name in
Min_Enroll in
Scheduled in out
Length in
Enroll in
Category 3 FilteringCategory 3 Filtering• PBOI Case 3 – Attribute of Class_1, but not Class_2
Class_1
Attributes: Period, Name, Scheduled,Length
procedure Deschedule_Student ( C_1 : in out Class_1 );
Class_2
Attributes: Min_Enroll, Enroll
Check_Minimum_Enrollment ( C_2 : in out Class_2; C_3 : in out Class_1’Class );
Class_1
Attributes: Name, Scheduled,Length
procedure Deschedule_Student ( C_1 : in out Class_1; Period : in Integer );
Category 3 FilteringCategory 3 Filtering• PBOI Case 4 – Not Attribute of Class_1 or Class_2
Deschedule_Student
Period in
Scheduled in out
Length in
Name in
Deschedule_Student
Check_Minimum_Enrollment
Name in
Min_Enroll in
Scheduled in out
Length in
Enroll in
Category 3 FilteringCategory 3 Filtering• PBOI Case 4 – Not Attribute of Class_1 or Class_2
Class_2
Attributes: Min_Enroll, Enroll
Check_Minimum_Enrollment ( C_2 : in out Class_2; C_3 : in out Class_1’Class );
Class_1
Attributes: Name, Scheduled,Length
procedure Deschedule_Student ( C_1 : in out Class_1; Period : in Integer );
Removing Duplicate Object Removing Duplicate Object InstancesInstances
Instance of Class_2
C_5
Instance of Class_2
C_6Instance of Class_2
C_7
Overlapping ClassesOverlapping ClassesClass_1
Attributes: Name, Scheduled,Length
procedure Deschedule_Student ( C_1 : in out Class_1; Period : in Integer );
Class_5
Attributes: Name, SSAN
procedure Assign_Student ( C_8 : in out Class_5 );
Class_12
Attributes: Name, Scheduled,Length, SSAN
procedure Deschedule_Student ( C_1 : in out Class_1; Period : in Integer );
procedure Assign_Student ( C_8 : in out Class_5 );
ConclusionsConclusions
• PBOI is an improvement over GBOI, TBOI, and RBOI
• Maintains functional equivalence
• Prototype implemented
• Objects not mean to correlate to semantic objects from domain
• Computationally intensive
ReferencesReferences
• [1] S.S. Liu and N. Wilde, Identifying objects in a conventional procedural language: An example of data design recovery. In Proceedings of the Conference on Software Maintenance, pages 266-271, IEEE, Nov 1990.
• [2] P.E. Lividas and T. Johnson, A new approach to finding objects in programs. Technical Report SERC-TC-63-F, University of Florida, Jun 1993.
• [3] J. Rumbaugh and M. Blaha, Object-Oriented Modeling and Design, Prentice-Hall, New Jersey, c1991.