Concept & Roadmap

The nWire Concept

Modern applications can be broken down into a multitude of small building blocks, interconnected in various ways. nWire focuses on these components and associations.

Components, Associations

Components, Associations

A component can be any type of significant item. For example: a class, a method (in Java, C++, JavaScript, PHP or any other language), an HTML page, a Spring framework bean, etc. It can be a piece of code, an XML element, or in some cases, it can be implicit.

An association is a connection between two elements. For example: a class which extends another class, a method invoking a method, an anchor on an HTML page which forwards to another page or a Spring framework bean using another bean. Associations can be implicit, too, such as the naming conventions used in Ruby on Rails.

One central repository

One central repository

nWire brings a fresh approach - one central repository holding all the components and associations regardless of their type. There are many tools out there for code and configuration analysis. However, none of these tools stores all the information in one unified manner. Therefore enabling you to view the full picture of your system.

Tools

Tools

In addition to the repository there are currently 2 tools: the navigator and the visualizer. Both tools tap into the repository, presenting the information in a user-friendly manner. Although the repository is unified, the view can be customized for each type of association and component. For example: method invocations will be shown with line numbers while class extensions, which are unique, will not show any.

Meta-data driven

Meta-data driven

Meta-data is the data describing the data (see this great article on the subject). It's like the relation between a class and an an instance, an object. In nWire, for example, a component is considered data and the component type is meta-data. nWire contains a powerful meta-data engine, which employs configuration to control the analysis and presentation or components and associations. This makes it very easy to add more types of components and associations, including new application frameworks and new programming languages. In the current version, the meta-data is not user configurable. This may change in future versions.

The Future of nWire

We have great plans for nWire. We prefer taking the agile approach: ship the product with a sound infrastructure and a basic feature set and add more features in short iterations according to user feedback. Here are some of the features you can expect from future releases of nWire.

More programming languages and application frameworks

More programming languages and application frameworks

The ability to analyze Spring configuration files is planned for the final release of nWire. Expect more frameworks in the future like JEE. We will also support more languages including JavaScript, PHP, Ruby on Rails and other. nWire will be the first tool to combine the knowledge from all frameworks and languages, making it the perfect tool for compound applications.

Custom application frameworks

Custom application frameworks

Many organizations build their own custom application frameworks. The goal is to provide a tool that can be configured to analyze and display the information from such frameworks, alongside the standard information. This will be achieved, in most cases, using plain configuration, without a single line of code.

More tools

More tools

The tools provided today are just the tip of the iceberg. We have many great ideas for improvements and additional tools, like advanced filters, custom views, validations and more visualization forms. There is a lot you can do once you have all the application components and associations in one repository.