Software Architecture

Today, best practices in PDM/PLM system architecture are more or less determined by availability of technology, economical considerations and common sense. The Web Application Server architecture combined with Service-oriented connectivity is the logical choice for most PDM/PLM system solutions. Therefore, software architecture is the main differentiator for innovative PDM/PLM platform and solution concepts.

Traditional Approach

The software architecture of traditional PDM/PLM solutions is significantly influenced by established system architecture patterns. The layers of the successful three tier system architecture are directly visible in most software architectures:

  • Database schema
  • Application logic
  • Presentation logic

Software components of each layer depend heavily on corresponding components of the layer below. This leads to application silos that make it difficult and expensive to extend and adapt the PDM/PLM solution to new requirements.


Separation of Logical and Physical Design

The ice.NET Platform explicitly separates the logical from the physical design. The software architecture is represented by three conceptional layers that do not correspond with the three system architecture layers:

  • Platform
  • Components
  • Application

This principle is displayed in the following diagram:


According to the definition of platform, the platform layer consists of the common abstractions and the implementation of generic aspects, such as the ice.NET Business Objects Framework.

The component layer represents reusable and interoperable software parts that implement the platform base abstractions. There can be identified four kinds of components:

  • Model packages
  • Business objects
  • Generic services
  • Technology bindings

Applications and tools are implemented on top of the ice.NET platform by combining appropriate components and then adding application specific functionality on the application layer. It is an important objective of ice.NET to keep the effort spent on the implementation of the application layer as small as possible. Most functionality should be found or implemented within the component layer.

Definition: Platform

A platform is a design and implementation basis as well as an integration environment for components that implement common base abstractions.

Normally a platform consists of:

  • an architecture that specifies the base abstractions and the component interfaces
  • a base implementation that provides the generic parts of the software systems to be implemented on top of the platform
  • a process model that describes how to utilize the platform for the implementation of software systems