Component Connectivity

Large software systems have complex relationships between their components. A large system may have tens of thousands of such components spread across millions of lines of code. Components are system elements such as:

  • databases (sequential, hierarchical, or relational)
  • programs (as source files and as executables)
  • screens (as abstract input/out devices)
  • devices (as specific input/output points)
  • jobs (or other kinds of high level scripting)

Databases store information. Programs read and write database tables and read and write to screens. Job control streams invoke programs. Linkers combine compiler outputs to produce programs. It is useful to understand how software components relate to one another. Such understanding is critical to any analysis of the system as a whole, and for planning system modifications.

Captured Relations Between Components and Their Sub-entities

The ComponentConnectivity tool scans the source code for a system, determines the relationships between the components and captures those relationships in a repository. It makes this set of relationships easy for a programmer to directly inspect and navigate by providing a set indexed and cross-linked HMTL documents, one per component, that capture the relationships it has with other components. These relationships include:

  • includes
  • reads
  • writes
  • updates
  • calls

It is also often useful to have some understanding of the internal structure of the component, mostly as a contains relationship between entities that comprise the component. The entities that comprise a component are specific to the component type:

  • for programs: functions and data.
  • for databases: abstract sets of tables.
  • for jobs: individual job steps

In addition, it is helpful to record the relations (as above) between the contained entities in a component, and between entities in different components.

Semantic Designs provides component scanners for a variety of languages and databases. These scanners extract the entities that comprise components and their relationships. The Component Connectivity tool assembles the scanner-collected component-specific facts into the overall report.

See a Component Connectivity example.

Available Component Scanners

Component Scanners are presently available for:

  • IBM Enterprise COBOL. Captures:
    • CopyLibs
    • Data Declarations
    • Subroutines/Sections/Paragraphs and calling relations
    • Calls to external entities
    • I/O operations to databases and files
    • Accesses to SQL tables and columns
    • I/O operations on screens
  • IBM OS JCL. Captures
    • Job Steps
    • Procs
    • EXECs and data stream bindings
  • IBM HLASM. Captures
    • Data Declarations
    • Calls to external entities
    • I/O operations to databases and files
    • Accesses to SQL tables and columns
    • I/O operations on screens
  • Java. Captures
    • Package, Class, Method and Data Declarations
    • Calls to external entities
    • I/O operations to databases and files
    • Accesses to SQL tables and columns via ODBC

Other component scanners can be customized for your languages or databases. SD has found it particularly useful to build custom scanners for application-specific databases, which can considerably improve the detail and the accuracy of the scanners.

The Component Connectivity tool has special support for Hogan® Systems core banking software.

The component scanners are available with a standalone repository or with the Computer Associates Repository.

Contact Semantic Designs for further details.


For more information: [email protected]    Follow us at Twitter: @SemanticDesigns

Component Connectivity