Enhancing Code Architecture with Scanyp

Scanyp delivers a robust suite of features aimed at understanding and refining your code's existing architecture. This encompasses tools such as the dependency graph, dependency matrix, code map, and a myriad of design and architectural metrics.

Navigating with the Dependency Graph

This graph provides a comprehensive view of interdependencies among your project's code elements.

Identify third-party projects in use.

Examine dependencies at various levels, from namespaces and classes to their inherent dependency cycles.

Select a code component to delve into its immediate dependencies, or delve into its offspring and their associated dependencies.

For an in-depth exploration of the dependency graph capabilities, [click here](graph link).

Understanding the Dependency Matrix

The Dependency Structure Matrix (DSM) presents a concise representation, enabling users to seamlessly navigate through component dependencies.

You might wonder why we offer both the graph and DSM for the same data. It's due to a balancing act:

  • Graphs are visually intuitive but can become overwhelming as the number of nodes and connections increase. Even a mere few dozen boxes might complicate the graph.
  • On the flip side, DSM might seem less straightforward but excels in representing vast and intricate graphs. It's commonly said that DSM outperforms graphs in scalability.

Many find that once they grasp the DSM's principles, they lean towards it over graphs for visualizing dependencies. This preference emerges from the DSM's capability to reveal structural patterns instantly.

Delving into Architectural and Design Metrics

Scanyp also furnishes an array of insightful metrics to evaluate your project's design and architectural landscape:

  • Abstractness: Measures the degree of abstraction in the architecture.
  • Instability: Assesses how susceptible the architecture is to changes.
  • Distance from Main Sequence: Indicates how well balanced an application is between abstractness and stability.
  • Efferent Coupling: Shows the number of classes outside a component that depends on classes within the component.
  • Afferent Coupling: Displays the number of classes within a component that are dependent on classes outside of it.
  • Cohesion: Measures how closely the responsibilities of a class/module are related.