SlideShare a Scribd company logo
1 of 26
Download to read offline
Precise Detection of Un-Initialized Variables
    In Large, Real-life Cobol Programs
    In Presence Of Unrealizable Paths

                              Adnan Contractor
                                  Ravindra Naik
                                   Rahul Jiresal
                                             1
Agenda

Motivation
Un-Initialized Variables
Results
Unrealizable Paths
Solution
Heuristics




                           2
Typical Maintenance Scenario

   Failure                                              Change
                                                        Request
• Re-produce                    Code Changes
• Analysis                                                     • Understand
                                   • Testing                   • Impact
                                                                 Analysis
                                   • Production

Conjecture

              Analysis
                                                                    Changes
                                                                    Delivered

      Code
     Change
                                                  Failures &
                                                   Efforts
                    Automated
                      Tools



                                                                                3
Case Study


            Background                                    Concerns

• Core banking product                       • Repeated failure of transactions
• Stable back-office COBOL                   • Not so-easily-reproducible failures
  applications                               • Longer turn-around time
• Over 1 million transactions daily

 Examples…
   Transaction for                                      Recurring Deposit account
   change of base           A Forex transaction           closure fails whenever
     branch fails          failing only after 6PM     triggered at the same time at
      randomly                                             two different branches


      Not yet                     5 days                     8 months
       fixed                      1 day                       10 days

                                                                                     4
Case Study
           Branch A            Request for RD
                                acct closure


                               Check Balance


                               Notify balance
                                to customer

Customer              Banker              Request for RD
                                           acct closure
           Branch B

                                          Check Balance

                                           Notify balance
                                            to customer

                               Fire Close acct
                                  command
Customer              Banker
                                          Fire Close acct   5
                                             command
Un-Initialized Variables

double calculatePoints
                                     1
(char cardType, double amt)

                                     2
1 float rate;
  double points;
                                         4
2 if (cardType == ‘G’)
                                 3
3      rate = 0.005;
4 elseif (cardType == ‘S’)                   5

5      rate = 0.001;
                                     6
6 points = amt * rate;
7 return points;
                                     7
                                                 6
Results

                           Un-Initialized
           Program
                        Variables Instances
           AB0000         1317        6090
           CR0000         1173        4313
           CR0025          336         871
           CR7070          74          253
           AB0024          59          120

          Context-insensitive Analysis Results




                                                 7
Results

                     Un-Initialized Variables
7000
6000
5000
4000
3000                                                Context-insensitive
2000
                                                    Context-sensitive
1000
  0
       AB0000   CR0000   CR0025   CR7070   AB0024

                         Program

                                                                    8
Context-Insensitive Analysis

          Paragraph            • Paragraph - A set of statements
 1. A.                         represented by a label. Can be executed
 2. MOVE 0 TO VA               as a unit.
 3. PERFORM P.
 4.
 5. B.
 6. MOVE 1 TO VB               • Perform - Using PERFORM statement
 7. MOVE 1 TO VA     Perform   one can execute a paragraph.
 8. PERFORM P
 9. MOVE VB TO MV.
10.
11. P.
12. MOVE 5 TO VF.




                                                                         9
Context-Insensitive Analysis


 1. A.
                                        E
 2. MOVE 0 TO VA
                           E
 3. PERFORM P.
                                   E
 4.                                     6
 5. B.                     2
 6. MOVE 1 TO VB
                      VA           12   7
 7. MOVE 1 TO VA
 8. PERFORM P              3                VA,
                                            VB
 9. MOVE VB TO MV.
                                        8
10.                                X
11. P.
12. MOVE 5 TO VF.          X            9



                                        X

                                                  10
Context-Insensitive Analysis


 1. A.
                                   VA   E
 2. MOVE 0 TO VA
                           E
 3. PERFORM P.
                                   E
 4.                                     6
 5. B.                     2
 6. MOVE 1 TO VB
                      VA           12   7
 7. MOVE 1 TO VA
 8. PERFORM P              3                VA,
                                            VB
 9. MOVE VB TO MV.
                                        8
10.                                X
11. P.
12. MOVE 5 TO VF.          X            9



                                        X

                                                  11
Context-Insensitive Analysis


 1. A.
                                   VA    E
 2. MOVE 0 TO VA
                           E
 3. PERFORM P.
                                   E
 4.                                      6
 5. B.                     2
 6. MOVE 1 TO VB
                      VA           12    7
 7. MOVE 1 TO VA
 8. PERFORM P              3                 VA,
                                             VB
 9. MOVE VB TO MV.
                                         8
10.                                X
11. P.
12. MOVE 5 TO VF.          X             9
                                   VA,
                                   VF

                                         X

                                                   12
Context-Insensitive Analysis


 1. A.
                                   VA    E
 2. MOVE 0 TO VA
                           E
 3. PERFORM P.
                                   E
 4.                                      6
 5. B.                     2
 6. MOVE 1 TO VB
                      VA           12    7
 7. MOVE 1 TO VA
 8. PERFORM P              3                 VA,
                                             VB
 9. MOVE VB TO MV.   VA,                 8
10.                  VF            X         VA,
11. P.                                       VF
12. MOVE 5 TO VF.          X             9
                                   VA,
                                   VF

                                         X

                                                   13
Context-Insensitive Analysis


1. A.
                                   VA    E
2. MOVE 0 TO VA
                            E
3. PERFORM P.
                                   E
4.                                       6
5. B.                       2
6. MOVE 1 TO VB
                      VA           12    7
7. MOVE 1 TO VA
8. PERFORM P                3                VA,
                                             VB
9.   MOVE VB TO MV.   VA,                8
10.                   VF           X         VA,
11. P.                                       VF
12. MOVE 5 TO VF.           X            9
                                   VA,
                                   VF

                                         X

                                                   14
Unrealizable Paths



                          E
        E
                     E
                          6
        2
                     12
                          7
        3

                          8
                     X

        X                 9



                          X
                              15
Design Challenges

Perform Chain
Paragraph level information
Paragraph range level information
Data flow equations:
    NBottom = [ Ntop – KillSump ] ∪ GenSump
    GenSump = Defined (p)
    KillSump = Ø




                                              16
Context-Insensitive Analysis


 1. A.
                                        E
 2. MOVE 0 TO VA
                           E
 3. PERFORM P.
                                   E
 4.                                     6
 5. B.                     2
 6. MOVE 1 TO VB
                      VA           12   7
 7. MOVE 1 TO VA
 8. PERFORM P              3                VA,
                                            VB
 9. MOVE VB TO MV.
                                        8
10.                                X
11. P.
12. MOVE 5 TO VF.          X            9



                                        X

                                                  17
Context-Insensitive Analysis


 1. A.
                                        E
 2. MOVE 0 TO VA
                           E
 3. PERFORM P.
                                   E
 4.                                     6
 5. B.                     2
 6. MOVE 1 TO VB
                      VA           12   7
 7. MOVE 1 TO VA
 8. PERFORM P              3                VA,
                                            VB
 9. MOVE VB TO MV.
                                        8
10.                                X
11. P.
12. MOVE 5 TO VF.          X            9



                                        X

                                                  18
Context-Insensitive Analysis


 1. A.
                                        E
 2. MOVE 0 TO VA
                           E
 3. PERFORM P.
                                   E
 4.                                     6
 5. B.                     2
 6. MOVE 1 TO VB
                      VA           12   7
 7. MOVE 1 TO VA
 8. PERFORM P              3                VA,
                                            VB
 9. MOVE VB TO MV.
                                        8
10.                                X
11. P.
12. MOVE 5 TO VF.          X            9
                                   VF

                                        X

                                                  19
Context-Insensitive Analysis


 1. A.
                                        E
 2. MOVE 0 TO VA
                           E
 3. PERFORM P.
                                   E
 4.                                     6
 5. B.                     2
 6. MOVE 1 TO VB
                      VA           12   7
 7. MOVE 1 TO VA
 8. PERFORM P              3                VA,
                                            VB
 9. MOVE VB TO MV.   VA,                8
10.                  VF            X
                                             VA,
11. P.
12. MOVE 5 TO VF.          X            9   VB
                                   VF        ,VF


                                        X

                                                   20
Results

                         Un-Initialized
          Program
                     Variables Instances
          AB0000        737         2945
          CR0000        838         3001
          CR0025        187          437
          CR7070         30          60
          AB0024         48          103

          Context-sensitive Analysis Results



                                               21
Heuristics

Bad Code Smells Removal
Utility-Parameter based Prioritization
Fan-in based Prioritization




                                         22
Heuristics Results


3500

3000

2500
                                           Context Sensitive
2000                                       Analysis
                                           Code Smell Removal
1500

1000                                       Utility Parameter
                                           removal
500

  0
       AB0000   CR0000   CR0025   CR7070


                                                                23
Future Work

Heuristics
– Error-path pruning
– Output-variable based
Dynamic Analysis
Un-Initialized path detection




                                24
Key Learning

Precise detection of un-initialized variables
Heuristics
Realizable data-flow analysis across Paragraphs for COBOL
Technique can be extended to other analyses – defect
detection, program understanding, code architecture discovery




                                                                25
Thank You


            26

More Related Content

Viewers also liked

Traceability - Structural Conformance Checking with Design Tests: An Evaluati...
Traceability - Structural Conformance Checking with Design Tests: An Evaluati...Traceability - Structural Conformance Checking with Design Tests: An Evaluati...
Traceability - Structural Conformance Checking with Design Tests: An Evaluati...ICSM 2011
 
Richard Kemmerer Keynote icsm11
Richard Kemmerer Keynote icsm11Richard Kemmerer Keynote icsm11
Richard Kemmerer Keynote icsm11ICSM 2011
 
Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...
Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...
Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...ICSM 2011
 
Reliability and Quality - Predicting post-release defects using pre-release f...
Reliability and Quality - Predicting post-release defects using pre-release f...Reliability and Quality - Predicting post-release defects using pre-release f...
Reliability and Quality - Predicting post-release defects using pre-release f...ICSM 2011
 
Impact analysis - A Seismology-inspired Approach to Study Change Propagation
Impact analysis - A Seismology-inspired Approach to Study Change PropagationImpact analysis - A Seismology-inspired Approach to Study Change Propagation
Impact analysis - A Seismology-inspired Approach to Study Change PropagationICSM 2011
 
ERA - Clustering and Recommending Collections of Code Relevant to Task
ERA - Clustering and Recommending Collections of Code Relevant to TaskERA - Clustering and Recommending Collections of Code Relevant to Task
ERA - Clustering and Recommending Collections of Code Relevant to TaskICSM 2011
 
ICSM'01 Most Influential Paper - Rainer Koschke
ICSM'01 Most Influential Paper - Rainer KoschkeICSM'01 Most Influential Paper - Rainer Koschke
ICSM'01 Most Influential Paper - Rainer KoschkeICSM 2011
 
Lionel Briand ICSM 2011 Keynote
Lionel Briand ICSM 2011 KeynoteLionel Briand ICSM 2011 Keynote
Lionel Briand ICSM 2011 KeynoteICSM 2011
 
ERA - A Comparison of Stemmers on Source Code Identifiers for Software Search
ERA - A Comparison of Stemmers on Source Code Identifiers for Software SearchERA - A Comparison of Stemmers on Source Code Identifiers for Software Search
ERA - A Comparison of Stemmers on Source Code Identifiers for Software SearchICSM 2011
 
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...ICSM 2011
 
Industry - Estimating software maintenance effort from use cases an indu...
Industry - Estimating software maintenance effort from use cases an      indu...Industry - Estimating software maintenance effort from use cases an      indu...
Industry - Estimating software maintenance effort from use cases an indu...ICSM 2011
 
Metrics - Using Source Code Metrics to Predict Change-Prone Java Interfaces
Metrics - Using Source Code Metrics to Predict Change-Prone Java InterfacesMetrics - Using Source Code Metrics to Predict Change-Prone Java Interfaces
Metrics - Using Source Code Metrics to Predict Change-Prone Java InterfacesICSM 2011
 
ERA - Measuring Maintainability of Spreadsheets in the Wild
ERA - Measuring Maintainability of Spreadsheets in the Wild ERA - Measuring Maintainability of Spreadsheets in the Wild
ERA - Measuring Maintainability of Spreadsheets in the Wild ICSM 2011
 
Postdoc Symposium - Abram Hindle
Postdoc Symposium - Abram HindlePostdoc Symposium - Abram Hindle
Postdoc Symposium - Abram HindleICSM 2011
 
Dynamic Analysis - SCOTCH: Improving Test-to-Code Traceability using Slicing ...
Dynamic Analysis - SCOTCH: Improving Test-to-Code Traceability using Slicing ...Dynamic Analysis - SCOTCH: Improving Test-to-Code Traceability using Slicing ...
Dynamic Analysis - SCOTCH: Improving Test-to-Code Traceability using Slicing ...ICSM 2011
 
Impact Analysis - ImpactScale: Quantifying Change Impact to Predict Faults in...
Impact Analysis - ImpactScale: Quantifying Change Impact to Predict Faults in...Impact Analysis - ImpactScale: Quantifying Change Impact to Predict Faults in...
Impact Analysis - ImpactScale: Quantifying Change Impact to Predict Faults in...ICSM 2011
 
Components - Crossing the Boundaries while Analyzing Heterogeneous Component-...
Components - Crossing the Boundaries while Analyzing Heterogeneous Component-...Components - Crossing the Boundaries while Analyzing Heterogeneous Component-...
Components - Crossing the Boundaries while Analyzing Heterogeneous Component-...ICSM 2011
 
Metrics - You can't control the unfamiliar
Metrics - You can't control the unfamiliarMetrics - You can't control the unfamiliar
Metrics - You can't control the unfamiliarICSM 2011
 
Tutorial 2 - Practical Combinatorial (t-way) Methods for Detecting Complex Fa...
Tutorial 2 - Practical Combinatorial (t-way) Methods for Detecting Complex Fa...Tutorial 2 - Practical Combinatorial (t-way) Methods for Detecting Complex Fa...
Tutorial 2 - Practical Combinatorial (t-way) Methods for Detecting Complex Fa...ICSM 2011
 
Industry - The Evolution of Information Systems. A Case Study on Document Man...
Industry - The Evolution of Information Systems. A Case Study on Document Man...Industry - The Evolution of Information Systems. A Case Study on Document Man...
Industry - The Evolution of Information Systems. A Case Study on Document Man...ICSM 2011
 

Viewers also liked (20)

Traceability - Structural Conformance Checking with Design Tests: An Evaluati...
Traceability - Structural Conformance Checking with Design Tests: An Evaluati...Traceability - Structural Conformance Checking with Design Tests: An Evaluati...
Traceability - Structural Conformance Checking with Design Tests: An Evaluati...
 
Richard Kemmerer Keynote icsm11
Richard Kemmerer Keynote icsm11Richard Kemmerer Keynote icsm11
Richard Kemmerer Keynote icsm11
 
Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...
Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...
Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...
 
Reliability and Quality - Predicting post-release defects using pre-release f...
Reliability and Quality - Predicting post-release defects using pre-release f...Reliability and Quality - Predicting post-release defects using pre-release f...
Reliability and Quality - Predicting post-release defects using pre-release f...
 
Impact analysis - A Seismology-inspired Approach to Study Change Propagation
Impact analysis - A Seismology-inspired Approach to Study Change PropagationImpact analysis - A Seismology-inspired Approach to Study Change Propagation
Impact analysis - A Seismology-inspired Approach to Study Change Propagation
 
ERA - Clustering and Recommending Collections of Code Relevant to Task
ERA - Clustering and Recommending Collections of Code Relevant to TaskERA - Clustering and Recommending Collections of Code Relevant to Task
ERA - Clustering and Recommending Collections of Code Relevant to Task
 
ICSM'01 Most Influential Paper - Rainer Koschke
ICSM'01 Most Influential Paper - Rainer KoschkeICSM'01 Most Influential Paper - Rainer Koschke
ICSM'01 Most Influential Paper - Rainer Koschke
 
Lionel Briand ICSM 2011 Keynote
Lionel Briand ICSM 2011 KeynoteLionel Briand ICSM 2011 Keynote
Lionel Briand ICSM 2011 Keynote
 
ERA - A Comparison of Stemmers on Source Code Identifiers for Software Search
ERA - A Comparison of Stemmers on Source Code Identifiers for Software SearchERA - A Comparison of Stemmers on Source Code Identifiers for Software Search
ERA - A Comparison of Stemmers on Source Code Identifiers for Software Search
 
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
 
Industry - Estimating software maintenance effort from use cases an indu...
Industry - Estimating software maintenance effort from use cases an      indu...Industry - Estimating software maintenance effort from use cases an      indu...
Industry - Estimating software maintenance effort from use cases an indu...
 
Metrics - Using Source Code Metrics to Predict Change-Prone Java Interfaces
Metrics - Using Source Code Metrics to Predict Change-Prone Java InterfacesMetrics - Using Source Code Metrics to Predict Change-Prone Java Interfaces
Metrics - Using Source Code Metrics to Predict Change-Prone Java Interfaces
 
ERA - Measuring Maintainability of Spreadsheets in the Wild
ERA - Measuring Maintainability of Spreadsheets in the Wild ERA - Measuring Maintainability of Spreadsheets in the Wild
ERA - Measuring Maintainability of Spreadsheets in the Wild
 
Postdoc Symposium - Abram Hindle
Postdoc Symposium - Abram HindlePostdoc Symposium - Abram Hindle
Postdoc Symposium - Abram Hindle
 
Dynamic Analysis - SCOTCH: Improving Test-to-Code Traceability using Slicing ...
Dynamic Analysis - SCOTCH: Improving Test-to-Code Traceability using Slicing ...Dynamic Analysis - SCOTCH: Improving Test-to-Code Traceability using Slicing ...
Dynamic Analysis - SCOTCH: Improving Test-to-Code Traceability using Slicing ...
 
Impact Analysis - ImpactScale: Quantifying Change Impact to Predict Faults in...
Impact Analysis - ImpactScale: Quantifying Change Impact to Predict Faults in...Impact Analysis - ImpactScale: Quantifying Change Impact to Predict Faults in...
Impact Analysis - ImpactScale: Quantifying Change Impact to Predict Faults in...
 
Components - Crossing the Boundaries while Analyzing Heterogeneous Component-...
Components - Crossing the Boundaries while Analyzing Heterogeneous Component-...Components - Crossing the Boundaries while Analyzing Heterogeneous Component-...
Components - Crossing the Boundaries while Analyzing Heterogeneous Component-...
 
Metrics - You can't control the unfamiliar
Metrics - You can't control the unfamiliarMetrics - You can't control the unfamiliar
Metrics - You can't control the unfamiliar
 
Tutorial 2 - Practical Combinatorial (t-way) Methods for Detecting Complex Fa...
Tutorial 2 - Practical Combinatorial (t-way) Methods for Detecting Complex Fa...Tutorial 2 - Practical Combinatorial (t-way) Methods for Detecting Complex Fa...
Tutorial 2 - Practical Combinatorial (t-way) Methods for Detecting Complex Fa...
 
Industry - The Evolution of Information Systems. A Case Study on Document Man...
Industry - The Evolution of Information Systems. A Case Study on Document Man...Industry - The Evolution of Information Systems. A Case Study on Document Man...
Industry - The Evolution of Information Systems. A Case Study on Document Man...
 

Similar to Industry - Precise Detection of Un-Initialized Variables in Large, Real-life COBOL Programs in Presence of Un-realizable Paths

Developing and Visualizing Live Model Queries
Developing and Visualizing Live Model QueriesDeveloping and Visualizing Live Model Queries
Developing and Visualizing Live Model QueriesZoltán Ujhelyi
 
Nanometer Testing: Challenges and Solutions
Nanometer Testing: Challenges and SolutionsNanometer Testing: Challenges and Solutions
Nanometer Testing: Challenges and SolutionsDVClub
 
Behavioral Constraints for Services
Behavioral Constraints for ServicesBehavioral Constraints for Services
Behavioral Constraints for ServicesUniversität Rostock
 
How to live with agile - Aware in BugDay Bangkok 2012
How to live with agile - Aware in BugDay Bangkok 2012How to live with agile - Aware in BugDay Bangkok 2012
How to live with agile - Aware in BugDay Bangkok 2012Prathan Dansakulcharoenkit
 
Business considerations for node.js applications
Business considerations for node.js applicationsBusiness considerations for node.js applications
Business considerations for node.js applicationsAspenware
 
A Second Look at Unit Testing by Roy Osherove
A Second Look at Unit Testing by Roy OsheroveA Second Look at Unit Testing by Roy Osherove
A Second Look at Unit Testing by Roy OsheroveRoy Osherove
 
Deependra pal, amul ppt , factor analysis
Deependra pal, amul ppt , factor analysis Deependra pal, amul ppt , factor analysis
Deependra pal, amul ppt , factor analysis Deependra Pal
 
Numerical assignment
Numerical assignmentNumerical assignment
Numerical assignmentAnupam Kumar
 
Pmi project cost managment
Pmi project cost managmentPmi project cost managment
Pmi project cost managmentAhmed Zein
 
Easing Reconciling Oracle Inventory and General Ledger with Simplified Proced...
Easing Reconciling Oracle Inventory and General Ledger with Simplified Proced...Easing Reconciling Oracle Inventory and General Ledger with Simplified Proced...
Easing Reconciling Oracle Inventory and General Ledger with Simplified Proced...KPIT
 
[Ashish tewari] modern_control_design_with_matlab_(book_fi.org)
[Ashish tewari] modern_control_design_with_matlab_(book_fi.org)[Ashish tewari] modern_control_design_with_matlab_(book_fi.org)
[Ashish tewari] modern_control_design_with_matlab_(book_fi.org)☁ Sourabh Kumar
 
Path Spss Amos (1)
Path Spss Amos (1)Path Spss Amos (1)
Path Spss Amos (1)OUM SAOKOSAL
 
Bank Fee Audit Services Power Point.2012
Bank Fee Audit Services Power Point.2012Bank Fee Audit Services Power Point.2012
Bank Fee Audit Services Power Point.2012Chiladan
 

Similar to Industry - Precise Detection of Un-Initialized Variables in Large, Real-life COBOL Programs in Presence of Un-realizable Paths (20)

Developing and Visualizing Live Model Queries
Developing and Visualizing Live Model QueriesDeveloping and Visualizing Live Model Queries
Developing and Visualizing Live Model Queries
 
How to Introduce Continuous Delivery
How to Introduce Continuous DeliveryHow to Introduce Continuous Delivery
How to Introduce Continuous Delivery
 
Nanometer Testing: Challenges and Solutions
Nanometer Testing: Challenges and SolutionsNanometer Testing: Challenges and Solutions
Nanometer Testing: Challenges and Solutions
 
Abraham q3 2008
Abraham q3 2008Abraham q3 2008
Abraham q3 2008
 
Behavioral Constraints for Services
Behavioral Constraints for ServicesBehavioral Constraints for Services
Behavioral Constraints for Services
 
How to live with agile - Aware in BugDay Bangkok 2012
How to live with agile - Aware in BugDay Bangkok 2012How to live with agile - Aware in BugDay Bangkok 2012
How to live with agile - Aware in BugDay Bangkok 2012
 
Business considerations for node.js applications
Business considerations for node.js applicationsBusiness considerations for node.js applications
Business considerations for node.js applications
 
Agile metrics and quality
Agile metrics and qualityAgile metrics and quality
Agile metrics and quality
 
A Second Look at Unit Testing by Roy Osherove
A Second Look at Unit Testing by Roy OsheroveA Second Look at Unit Testing by Roy Osherove
A Second Look at Unit Testing by Roy Osherove
 
Deependra pal, amul ppt , factor analysis
Deependra pal, amul ppt , factor analysis Deependra pal, amul ppt , factor analysis
Deependra pal, amul ppt , factor analysis
 
CA&M AP at MIT 06152012
CA&M AP at MIT 06152012CA&M AP at MIT 06152012
CA&M AP at MIT 06152012
 
Numerical assignment
Numerical assignmentNumerical assignment
Numerical assignment
 
MOINC Agent
MOINC AgentMOINC Agent
MOINC Agent
 
Pmi project cost managment
Pmi project cost managmentPmi project cost managment
Pmi project cost managment
 
Zab dsn-2011
Zab dsn-2011Zab dsn-2011
Zab dsn-2011
 
Easing Reconciling Oracle Inventory and General Ledger with Simplified Proced...
Easing Reconciling Oracle Inventory and General Ledger with Simplified Proced...Easing Reconciling Oracle Inventory and General Ledger with Simplified Proced...
Easing Reconciling Oracle Inventory and General Ledger with Simplified Proced...
 
FASTEST: Test Case Generation from Z Specifications
FASTEST: Test Case Generation from Z SpecificationsFASTEST: Test Case Generation from Z Specifications
FASTEST: Test Case Generation from Z Specifications
 
[Ashish tewari] modern_control_design_with_matlab_(book_fi.org)
[Ashish tewari] modern_control_design_with_matlab_(book_fi.org)[Ashish tewari] modern_control_design_with_matlab_(book_fi.org)
[Ashish tewari] modern_control_design_with_matlab_(book_fi.org)
 
Path Spss Amos (1)
Path Spss Amos (1)Path Spss Amos (1)
Path Spss Amos (1)
 
Bank Fee Audit Services Power Point.2012
Bank Fee Audit Services Power Point.2012Bank Fee Audit Services Power Point.2012
Bank Fee Audit Services Power Point.2012
 

Recently uploaded

Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 

Recently uploaded (20)

DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 

Industry - Precise Detection of Un-Initialized Variables in Large, Real-life COBOL Programs in Presence of Un-realizable Paths

  • 1. Precise Detection of Un-Initialized Variables In Large, Real-life Cobol Programs In Presence Of Unrealizable Paths Adnan Contractor Ravindra Naik Rahul Jiresal 1
  • 3. Typical Maintenance Scenario Failure Change Request • Re-produce Code Changes • Analysis • Understand • Testing • Impact Analysis • Production Conjecture Analysis Changes Delivered Code Change Failures & Efforts Automated Tools 3
  • 4. Case Study Background Concerns • Core banking product • Repeated failure of transactions • Stable back-office COBOL • Not so-easily-reproducible failures applications • Longer turn-around time • Over 1 million transactions daily Examples… Transaction for Recurring Deposit account change of base A Forex transaction closure fails whenever branch fails failing only after 6PM triggered at the same time at randomly two different branches Not yet 5 days 8 months fixed 1 day 10 days 4
  • 5. Case Study Branch A Request for RD acct closure Check Balance Notify balance to customer Customer Banker Request for RD acct closure Branch B Check Balance Notify balance to customer Fire Close acct command Customer Banker Fire Close acct 5 command
  • 6. Un-Initialized Variables double calculatePoints 1 (char cardType, double amt) 2 1 float rate; double points; 4 2 if (cardType == ‘G’) 3 3 rate = 0.005; 4 elseif (cardType == ‘S’) 5 5 rate = 0.001; 6 6 points = amt * rate; 7 return points; 7 6
  • 7. Results Un-Initialized Program Variables Instances AB0000 1317 6090 CR0000 1173 4313 CR0025 336 871 CR7070 74 253 AB0024 59 120 Context-insensitive Analysis Results 7
  • 8. Results Un-Initialized Variables 7000 6000 5000 4000 3000 Context-insensitive 2000 Context-sensitive 1000 0 AB0000 CR0000 CR0025 CR7070 AB0024 Program 8
  • 9. Context-Insensitive Analysis Paragraph • Paragraph - A set of statements 1. A. represented by a label. Can be executed 2. MOVE 0 TO VA as a unit. 3. PERFORM P. 4. 5. B. 6. MOVE 1 TO VB • Perform - Using PERFORM statement 7. MOVE 1 TO VA Perform one can execute a paragraph. 8. PERFORM P 9. MOVE VB TO MV. 10. 11. P. 12. MOVE 5 TO VF. 9
  • 10. Context-Insensitive Analysis 1. A. E 2. MOVE 0 TO VA E 3. PERFORM P. E 4. 6 5. B. 2 6. MOVE 1 TO VB VA 12 7 7. MOVE 1 TO VA 8. PERFORM P 3 VA, VB 9. MOVE VB TO MV. 8 10. X 11. P. 12. MOVE 5 TO VF. X 9 X 10
  • 11. Context-Insensitive Analysis 1. A. VA E 2. MOVE 0 TO VA E 3. PERFORM P. E 4. 6 5. B. 2 6. MOVE 1 TO VB VA 12 7 7. MOVE 1 TO VA 8. PERFORM P 3 VA, VB 9. MOVE VB TO MV. 8 10. X 11. P. 12. MOVE 5 TO VF. X 9 X 11
  • 12. Context-Insensitive Analysis 1. A. VA E 2. MOVE 0 TO VA E 3. PERFORM P. E 4. 6 5. B. 2 6. MOVE 1 TO VB VA 12 7 7. MOVE 1 TO VA 8. PERFORM P 3 VA, VB 9. MOVE VB TO MV. 8 10. X 11. P. 12. MOVE 5 TO VF. X 9 VA, VF X 12
  • 13. Context-Insensitive Analysis 1. A. VA E 2. MOVE 0 TO VA E 3. PERFORM P. E 4. 6 5. B. 2 6. MOVE 1 TO VB VA 12 7 7. MOVE 1 TO VA 8. PERFORM P 3 VA, VB 9. MOVE VB TO MV. VA, 8 10. VF X VA, 11. P. VF 12. MOVE 5 TO VF. X 9 VA, VF X 13
  • 14. Context-Insensitive Analysis 1. A. VA E 2. MOVE 0 TO VA E 3. PERFORM P. E 4. 6 5. B. 2 6. MOVE 1 TO VB VA 12 7 7. MOVE 1 TO VA 8. PERFORM P 3 VA, VB 9. MOVE VB TO MV. VA, 8 10. VF X VA, 11. P. VF 12. MOVE 5 TO VF. X 9 VA, VF X 14
  • 15. Unrealizable Paths E E E 6 2 12 7 3 8 X X 9 X 15
  • 16. Design Challenges Perform Chain Paragraph level information Paragraph range level information Data flow equations: NBottom = [ Ntop – KillSump ] ∪ GenSump GenSump = Defined (p) KillSump = Ø 16
  • 17. Context-Insensitive Analysis 1. A. E 2. MOVE 0 TO VA E 3. PERFORM P. E 4. 6 5. B. 2 6. MOVE 1 TO VB VA 12 7 7. MOVE 1 TO VA 8. PERFORM P 3 VA, VB 9. MOVE VB TO MV. 8 10. X 11. P. 12. MOVE 5 TO VF. X 9 X 17
  • 18. Context-Insensitive Analysis 1. A. E 2. MOVE 0 TO VA E 3. PERFORM P. E 4. 6 5. B. 2 6. MOVE 1 TO VB VA 12 7 7. MOVE 1 TO VA 8. PERFORM P 3 VA, VB 9. MOVE VB TO MV. 8 10. X 11. P. 12. MOVE 5 TO VF. X 9 X 18
  • 19. Context-Insensitive Analysis 1. A. E 2. MOVE 0 TO VA E 3. PERFORM P. E 4. 6 5. B. 2 6. MOVE 1 TO VB VA 12 7 7. MOVE 1 TO VA 8. PERFORM P 3 VA, VB 9. MOVE VB TO MV. 8 10. X 11. P. 12. MOVE 5 TO VF. X 9 VF X 19
  • 20. Context-Insensitive Analysis 1. A. E 2. MOVE 0 TO VA E 3. PERFORM P. E 4. 6 5. B. 2 6. MOVE 1 TO VB VA 12 7 7. MOVE 1 TO VA 8. PERFORM P 3 VA, VB 9. MOVE VB TO MV. VA, 8 10. VF X VA, 11. P. 12. MOVE 5 TO VF. X 9 VB VF ,VF X 20
  • 21. Results Un-Initialized Program Variables Instances AB0000 737 2945 CR0000 838 3001 CR0025 187 437 CR7070 30 60 AB0024 48 103 Context-sensitive Analysis Results 21
  • 22. Heuristics Bad Code Smells Removal Utility-Parameter based Prioritization Fan-in based Prioritization 22
  • 23. Heuristics Results 3500 3000 2500 Context Sensitive 2000 Analysis Code Smell Removal 1500 1000 Utility Parameter removal 500 0 AB0000 CR0000 CR0025 CR7070 23
  • 24. Future Work Heuristics – Error-path pruning – Output-variable based Dynamic Analysis Un-Initialized path detection 24
  • 25. Key Learning Precise detection of un-initialized variables Heuristics Realizable data-flow analysis across Paragraphs for COBOL Technique can be extended to other analyses – defect detection, program understanding, code architecture discovery 25
  • 26. Thank You 26