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