extracting objects from legacy imperative code ricky e. “ranger” sward dept of computer science...
Post on 21-Dec-2015
218 views
TRANSCRIPT
![Page 1: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/1.jpg)
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
![Page 2: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/2.jpg)
OverviewOverview
• Background• Taxonomy of Imperative Subprograms• Parameter-Based Object Identification (PBOI)• Examples• Questions
![Page 3: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/3.jpg)
BackgroundBackground
• Re-Engineering• Previous Work• Functional Equivalence
![Page 4: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/4.jpg)
Re-EngineeringRe-Engineering
Req
Design
Implementation Implementation
Design
Req
Re-specify
Re-Design
Re-Code
Reverse
Engineerin
g Forward Engineering
Re-Engineering = Reverse + Forward
![Page 5: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/5.jpg)
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
![Page 6: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/6.jpg)
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)
![Page 7: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/7.jpg)
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
![Page 8: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/8.jpg)
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
![Page 9: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/9.jpg)
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
![Page 10: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/10.jpg)
Program SlicingProgram Slicing
Category 4A
BC
E
D
foo
Category 2A
B
D
foo-D
Category 2A
CE
foo-E
![Page 11: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/11.jpg)
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
![Page 12: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/12.jpg)
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
![Page 13: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/13.jpg)
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
![Page 14: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/14.jpg)
Category 2 ExampleCategory 2 Example
CAPTURE
BEAMRA
ANGFAC
REAL
Class-2
AttributesBEAMRAANGFAC
MethodsCAPTURE( C-2 : Class-2 ) : REAL
![Page 15: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/15.jpg)
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
![Page 16: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/16.jpg)
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
![Page 17: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/17.jpg)
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
![Page 18: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/18.jpg)
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
![Page 19: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/19.jpg)
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
![Page 20: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/20.jpg)
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
![Page 21: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/21.jpg)
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
![Page 22: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/22.jpg)
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
![Page 23: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/23.jpg)
Removing Duplicate Object Removing Duplicate Object InstancesInstances
Instance of Class 2
C-5
Instance of Class 2
C-6Instance of Class 2
C-7
![Page 24: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/24.jpg)
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
![Page 25: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/25.jpg)
Student Scheduler ExampleStudent Scheduler Example
• Look at PBOI in terms of the S5 Student Scheduler...
![Page 26: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/26.jpg)
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
![Page 27: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/27.jpg)
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
![Page 28: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/28.jpg)
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 );
![Page 29: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/29.jpg)
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
![Page 30: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/30.jpg)
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 );
![Page 31: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/31.jpg)
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
![Page 32: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/32.jpg)
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 );
![Page 33: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/33.jpg)
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
![Page 34: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/34.jpg)
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 );
![Page 35: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/35.jpg)
Removing Duplicate Object Removing Duplicate Object InstancesInstances
Instance of Class_2
C_5
Instance of Class_2
C_6Instance of Class_2
C_7
![Page 36: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/36.jpg)
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 );
![Page 37: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/37.jpg)
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
![Page 38: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu](https://reader036.vdocument.in/reader036/viewer/2022062516/56649d575503460f94a35d6c/html5/thumbnails/38.jpg)
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.