Creating a Dependency Solution

One of our clients is involved in the UK Defence Industry and required an application to be developed which would maintain a record of the dependency between vital software and hardware in use within their organisation. The main aim of this project was to provide a means of identifying the wider ramifications of losing business-critical software or hardware services.

 

The outline requirements for the application were:

  • to provide a mechanism for creating dependencies between objects that provide a service
  • to provide a mechanism for identifying the loss of service for an object
  • to provide a mechanism for identifying the ramifications of the loss of this service for other objects through their dependencies (or associations)
  • to provide an intuitive interface for visualising the dependencies between objects and the effects of a loss of service for one or more of these objects

From a technology point-of-view, we were asked to design a simple and extensible application and provide a distributed architecture to enable easy deployment.

 

We created a solution called Dependency Manager using Microsoft .NET that provides a generic mechanism for defining object types and their properties and creating associations between instances of the defined object types. It can also run scenarios against the associations to observe the risk of changing or losing a service and represents these associations and the failure scenarios graphically in an easy-to-use, intuitive interface. A web service is used to connect the application to a central database that contains the underlying data.

 

The application has two internal levels of data. The first allows the user to define the types of item and the types of link between these items. The second allows the user to create actual instances of these types and links to represent the real world situation.

 

Types represent the types of item that are recorded in the database. These are user-defined and can have any number of attributes. Objects are the instances of these Types and represent the real world items whose dependencies are being recorded. Link types are the user-defined types of dependency between the items. Dependencies are the actual instances of the link types that exist.

 

The diagram below shows the dependencies between the real world items (Objects) with the items themselves being nodes and the dependencies represented as connections between the nodes. The example given in the diagram is of the dependencies between software typically used within an enterprise environment.

 

Dependancy Manager