Coder Social home page Coder Social logo

intelliware / dependency Goto Github PK

View Code? Open in Web Editor NEW
0.0 8.0 0.0 42 KB

A simple Java library that analyzes dependencies between things and determines a directed graph and layerization of dependencies

License: Other

Java 100.00%
digraphs digraph dependencies graph-theory package-dependency

dependency's Introduction

Intelliware Logo

Description

This software component is a small Java module used to analyze a set of dependencies between things and determine "layers" of the dependency. Basically, the dependency tree can be imagined as a directed graph.

Layers work like this:

  1. Items that depend on no other things can be imagined as layer 0.
  2. Items that depend on only items from layer 0 make up layer 1.
  3. Items that depend on things from layer 1 (plus, possibly, items from layer 0) make up layer 2.
  4. And so forth...

In an ideal world, layers a non-cyclic, but many networks of dependencies fail to be non-cyclic. This code can still layerize cyclic graphs using a mathematical algorithm called the Greedy Cycle-Removal Algorithm.

This code has been open-sourced since 2008, but hasn't really been in a place that's easy to find.

What Was This Code used for?

Originally, this code was written to help analyze Java package dependencies. It was inspired by Edwin Hautus' paper on static package analysis (and the PASTA tool). I was a big fan of PASTA's approach to package visualization, but felt that the tool was limited in the way it handled subpackages. This dependency code was written as a first piece of an alternative package dependency analysis tool.

Subsequently, this code was used in other domains, including the processing of HL7 assets (including, for example, analyzing dependencies between HL7 MIF files and graphing the relationships between different HL7 message parts).

dependency's People

Contributors

bcholmes avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  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.