Giter Site home page Giter Site logo

martijnrutte / mapa Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cschneid-the-elder/mapa

0.0 0.0 0.0 347.44 MB

mainframe application portfolio analysis, antlr4 grammars and java for static analysis of cobol+cics+db2, jcl

License: MIT License

Shell 0.33% Java 50.50% Awk 0.86% ANTLR 45.93% Makefile 2.37%

mapa's Introduction

Mainframe Application Portfolio Analysis

The intent is to create at least part of what I would have wanted when I was being paid to be a mainframe application development tools person.

I was often asked application impact analysis questions, what runs, how often, which program calls which other programs, et. al.

In the cobol directory you will find a COBOL "call tree" tool, extracting CALLs, EXEC CICS LINKs, EXEC CICS XCTLs, EXEC SQL CALLs, program inputs and outputs and so forth to help give an idea of the "shape" of an application portfolio via static code analysis.

In the jcl directory you will find something analagous for JCL.

In both cases, the intent is to produce a flat file which can be loaded into a DBMS and used as part of a configuration management system. Supplement with a dump of your CICS definitions and selected entries from your DB2 catalog (triggers, mostly) and you can build yourself a nice map of your portfolio.

There certainly exist commercial products that do this, but they're pricey. Maybe what I can do for free is good enough. If it's not then you've got yourself a justification for one of those commercial products.

Static Code Analysis

Static code analysis looks at the source code. The process has no knowledge of what happens as the code executes. For purposes of application portfolio analysis, this results in some representation of what could happen, not what does happen. Consider...

if a = b then call subroutine x

...static analysis has no way of knowing if a is never equal to b due to some business rule and thus subroutine x is never called.

Runtime Behavior Analysis

Runtime behavior analysis looks at what actually happens as code executes, often through some form of instrumentation. For purposes of application portfolio analysis, this results in some representation of what does happen, not what could happen, in that run. Consider...

if a = b then call subroutine x

...runtime behavior analysis only knows that a was never equal to b in any of the runs analyzed and thus subroutine x was never called. No assertion can be made that subroutine x will never be called.

Both Have Their Uses

A combination of both static code analysis and runtime behavior analysis is necessary in order to understand an application portfolio. Simply noting that a given program is never executed is not prima facie evidence that it is obsolete. Maybe that program is only executed when an error condition occurs; exception processing should, after all, be exceptional.

Building

Each subdirectory under this one has a Makefile, intended to be used with GNU make. The source code consists of ANTLR4 grammars (the *.g4 files) and, in the case of the COBOL and JCL grammars, additional Java code. There are some instructions at the top of the cobol/Makefile for building from scratch, i.e. from a freshly cloned git repository.

mapa's People

Contributors

cschneid-the-elder avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.