Skip to Main Navigation Skip to Content

Automate to Rapidly Prioritize and Quantify Cyber Risk

15. Platform Package

Overview

Platform package defines a set of meta-model element whose purpose is to represent the runtime operating environments of existing software systems. Application code is not self-contained as it is determined not only by the selected programming languages, but also by the selected Runtime platform. Platform elements determine the execution context for the application. Platform package defines meta-model elements that represent common Runtime platform concerns:

  • Runtime platform consists of many diverse elements (platform parts).
  • Platform provides resources to deployment components.
  • Platform provides services that are related to resources.
  • Application code invokes services to manage the life-cycle of a resource.
  • Control flow between application components is often determined by the platform.
  • Platform provides error handling across application components.
  • Platform provides integration of application components.

Examples of Platform Parts include UNIX OS File System, UNIX OS process management system, Windows 2000, OS/390, Java (J2SE), Perl language Runtime support, IBM CICS TS, IBM MQSeries, Jakarta Struts, BEA Tuxedo, CORBA, HTTP, TCP/IP, Eclipse, EJB, JMS, Database middleware, Servlets.

Organization of the Platform Package

The Platform package consists of the following 10 class diagrams:

  • PlatformModel
  • PlatformInheritances
  • PlatformResources
  • PlatformRelations
  • PlatformActions
  • ProvisioningRelations
  • Deployment
  • RuntimeResources
  • RuntimeActions
  • ExtendedPlatformElements

The Platform package depends on the following packages:

  • Core
  • kdm
  • Code
  • Action

PlatformModel Class Diagram

The PlatformModel class diagram The PlatformModel follows the uniform pattern for extending KDM Framework followed by each KDM model. The classes and associations of the PlatformModel diagram are shown in See – PlatformModel Class Diagram..

– PlatformModel Class Diagram

PlatformModel Class

Platform model defines one of the architectural views in support of the principle of separation of concerns in KDM models. PlatformModel provides a container for platform elements.

Superclass

KDMModel

Associations

platformElement:PlatformElement[0..*] owned platform elements

Constraints

Semantics

PlatformModel is a logical container for platform elements. It is the implementer’s responsibility to arrange platform elements into one or more platform models.

AbstractPlatformElement Class (abstract)

The AbstractPlatformElement is an abstract meta-model element which represents entities of the operating environments of software systems.

Superclass

KDMEntity

Associations

platformRelation:PlatformRelation[0..*] platform relationship which originate from the platform element
abstraction:ActionElement[0..*]

owned “abstraction” actions

implementation:AbstractCodeElement[0..*] grouped association to the AbstractCodeElement element that are represented by the current PlatformElement from some CodeModel
source:SourceRef[0..*] traceability links owned by the given platform element

Constraints

implementation AbstractCodeElement should be owned by some CodeModel

implementation AbstractCodeElement should be subclasses of ComputationalObject or ActionElement

abstraction ActionElement should be owned by the same PlatformModel

Semantics

An instance of an AbstractPlatformElement represents either an instance of some runtime resource or some API call that manages some runtime resource. The implementation association links AbstractPlatformElement to the corresponding elements of some CodeModel. “Abstraction” action elements can be used to specify precise semantics of the PlatformElement.

AbstractPlatformRelationship Class (abstract)

The AbstractPlatformRelationship is an abstract meta-model element which represents associations between platform entities.

Superclass

KDMRelationship

Constraints

Semantics

An instance of an AbstractPlatformRelationship represents structural association between two runtime resources.

PlatformInheritances Class Diagram

The PlatformInheritances class diagram represents inheritances of the meta-modeling elements of the Platform package. The classes and associations of the PlatformInheritances diagram are shown in See – PlatformInheritances Class Diagram..

– PlatformInheritances Class Diagram

PlatformResources Class Diagram

The PlatformResources class diagram defines the meta-model elements to represent platform resources. The classes and associations of the PlatformResources diagram are shown in See – PlatformResources Class Diagram..

– PlatformResources Class Diagram

ResourceType Class

The ResourceType is a meta-model element that represents a platform resource. The purpose of a platform is to simplify application development by closing the gap between the application domain and the facilities that are available to application programmers. The latter are referred to as platform resources. Examples of resource types include UNIX File, UNIX IO Stream, UNIX socket, UNIX Process, UNIX thread, AWT widget, CICS File, CICS transaction, UNIX semaphore, UNIX shared memory segment, OS/390 VSAM file, JDBC connection, HTTP session, HTTP request, UNIX memory block, CICS commarea, COBOL file.

KDM introduces Platform Resource as an explicit abstraction in order to separate the explicit parts that are written by application programmers from parts that are provided by the platform. The underlying implementation details may be quite complex, for example, marshaled call includes client stubs, skeletons, platform-managers. The type of the Platform Resource denotes the semantics of the resource.

Platform resources can be further subdivided into smaller groups of services (resource types). Platform resources are usually grouped into platform stacks. Platform resource is an element of the overall platform used by a particular system. Complete Platform is the entire collection of platform resources used by the segments of the system. Platform resource may be associated with logical packages for a particular programming language.

Superclass

AbstractPlatformElement

Associations

platformElement:AbstractPlatformElement[0..*] The set of platform elements which are owned by the given ResourceType.

Constraints

Semantics

ResourceType may represent an individual runtime resource instance or a container for several such instances.

It is the implementer’s responsibility to identify runtime resources used by the existing software system according to the semantics of the platform used by the existing system, resource configuration files and other appropriate sources of information.

Specific subclasses of ResourceType define specific categories of resources available to implementers. Other types of resources can be represented by an generic instance of ResourceType meta-model element with a stereotype.

NamingResource Class

NamingResource represents platform resources that provide registration and lookup services (e.g., registry). In the meta-model NamingResource is a subclass of ResourceType.

Superclass

ResourceType

Semantics

MarshalledResource Class

MarshalledResource represents platform resources that provide intercomponent communication via remote synchronous calls. For example, RPC, CORBA method call, Java remote method invocation. In the meta-model MarshalledResource is a subclass of ResourceType.

Superclass

ResourceType

Semantics

MessagingResource Class

MessagingResource represents platform resources that provide intercomponent communication via asynchronous messages (e.g., IBM MQSeries messages).

Superclass

ResourceType

Semantics

FileResource Class

FileResource represents platform resources that provide any non-database related storage. In the meta-model the FileResource class is a subclass of ResourceType. It also implements the DataInterface so that this class can be the endpoint of Data relations.

Superclass

ResourceType

Semantics

ExecutionResource Class

ExecutionResource represents dynamic Runtime elements (e.g., process or thread).

Superclass

ResourceType

Semantics

LockResource Class

LockResource represents a synchronization resource common to multithreaded runtime environments.

Superclass

ResourceType

Semantics

StreamResource Class

StreamResource represents a simple input/output resource, for example UNIX-like stream.

Superclass

ResourceType

Semantics

DataManager Class

DataManager represents a database management system. DataManager is associated with particular data elements that represent the data description of the data managed by the data manager.

Superclass

ResourceType

Semantics

PlatformEvent class

The PlatformEvent class is a meta-model element representing various events and callbacks associated with runtime platforms. This class follows the KDM event pattern, common to Resource Layer packages.

Superclass

ResourceType

Attributes

kind:String represents the nature of the action performed by this Event

Semantics

PlatformAction class

PlatformAction class follow the pattern of a “resource action” class, specific to the Platform package. The nature of the action represented by a particular element is designated by its “kind” attribute. Descriptions of the common platform action kind are provided in Appendix 2. Resource Layer actions.

Superclass

AbstractPlatformElement

Attributes

kind:String represents the nature of the action performed by this element

Associations

platformElement:PlatformEvent[0..*] The set of platform events which are owned by the given PlatformAction.

ExternalActor Class

ExternalActor is a meta-model element that represents entities outside of the boundary of the software system being modeled. For example, external actor can be a user of the system. External actors interact with the software system.

In the meta-model ExternalActor is a PlatformElement. Semantics of ExternalActors is outside of the scope of KDM.

Superclass

PlatformAction

Constraints

Semantics

PlatformRelations Class Diagram

The PlatformRelations class diagram defines associations between ResourceTypes.

The classes and associations of the PlatformRelations diagram are shown in See – PlatformRelations Class Diagram..

– PlatformRelations Class Diagram

BindsTo Class

BindsTo defines a semantic association between two ResourceTypes.

Superclass

PlatformRelationship

Associations

from:ResourceType[1] The ResourceType which is the source of the relationship (the from-endpoint).
to:ResourceType[1] The ResourceType which is the target of the relationship (the to-endpoint).

Constraints

Semantics

ProvisioningRelations Class Diagram

The ProvisioningRelations class diagram defines meta-model elements that represent the physical elements of the Runtime platform that provide certain services and manage resources.

The classes and associations of the ProvisioningRelations diagram are shown in See – ProvisioningRelations Class Diagram..

– ProvisioningRelations Class Diagram

Requires Class

Requires defines semantic relationship between a DeployedComponent and a AbstractPlatformElement.

Superclass

PlatformRelationship

Associations

from:DeployedComponent[1] The DeployedComponent which is the source of the relationship (the from-endpoint).
to:AbstractPlatformElement[1]\ The AbstractPlatformElement which is the target of the relationship (the to-endpoint).

Constraints

Semantics

PlatformActions Class Diagram

The PlatformActions class diagram defines meta-model elements that represent specific actions which are the endpoints of certain Platform relationships. The elements of this diagram extend ActionElement from the KDM Action package.

The classes and associations of the PlatformActions diagram are shown in See – PlatformActions Class Diagram..

– PlatformActions Class Diagram

ManagesResource class

ManagesResource class follows the pattern of a “resource action relationship”. It represents various types of accesses to platform resources that are not related to the flow of data to and from the resource. ManagesResource relationship is similar to Addresses relationship from Action Package. The nature of the operation on the resource is represented by the “kind” attribute of the PlatformAction that owns this relationship through the “abstracted” action container property.

Superclass

Action::AbstractActionRelationship

Associations:

from:ActionElement[1] “abstracted” action owned by some resource
to:ResourceType[1] the resource being accessed

Constraints:

This relationship should not be used in Code models

ReadsResource class

ReadsResource class follows the pattern of a “resource action relationship”. It represents various types of accesses to platform resources where there is a flow of data from the resource. ReadsResource relationship is similar to Reads relationship from Action Package. The nature of the operation on the resource is represented by the “kind” attribute of the PlatformAction that owns this relationship through the “abstracted” action container property.

Superclass

Action::AbstractActionRelationship

Associations:

from:ActionElement[1] “abstracted” action owned by some resource
to:ResourceType[1] the resource being accessed

Constraints:

This relationship should not be used in Code models

WritesResource class

WritesResource class follows the pattern of a “resource action relationship”. It represents various types of accesses to platform resources where there is a flow of data to the resource. WritesResource relationship is similar to Writes relationship from Action Package. The nature of the operation on the resource is represented by the “kind” attribute of the PlatformAction that owns this relationship through the “abstracted” action container property.

Superclass

Action::AbstractActionRelationship

Associations:

from:ActionElement[1] “abstracted” action owned by some resource
to:ResourceType[1] the resource being accessed

Constraints:

This relationship should not be used in Code models

DefinedBy class

DefinedBy is a meta-model element that represents association between a platform resource and the logical package that describes the interface to this resource. The CodeItem at the to-endpoint of this KDM relationship is usually an interface or a package.

Superclass

Action::AbstractActionRelationship

Associations

from:ActionElement[1] “abstracted” action owned by some resource
to:CodeItem[1] the CodeItem describing the resource

Constraints

This relationship can not be used in the Code Model

Semantics:

DefinedBy is an optional relationship. It is the implementer’s responsibility to correctly associate the platform resource with the corresponding logical definition of this resource (usually a Signature, an Interface, or a Package). The logical description of the package usually refers to some external implementation, as platform resources are usually described by some third-party packages, provided as part of the runtime platform of the application. Individual API calls corresponding to the given resource, should have the CompliesTo relations to the individual API descriptions the definition represented by the CodeItem at the to-endpoint of the DefinedBy relationship.

Deployment Class Diagram

The Deployment class diagram defines meta-model elements that represent deployment elements and their relations. In particular, the elements of the Deployment diagram address physical structures and how logical components are mapped to these physical structures.

The classes and associations of the Deployment diagram are shown in See – Deployment Class Diagram..

– Deployment Class Diagram

DeployedComponent Class

The DeployedComponent represents a unit of deployment as defined by a particular platform. Major platform parts provide a packaging mechanism of deploying application functionality. Deployment component is a replaceable unit of an application. For example, DLL, shared library, COM, Eclipse plugin, Executable, Jar file, War file for Tomcat, SQL Stored procedure, CORBA module, EJB, JavaBean, Jakarta Struts Action, Jakarta Struts Form.

Superclass

AbstractPlatformElement

Associations

groupedCode:Module[0..*] The code components which are deployed to the target DeployedComponent (KDM grouping association)

Constraints

Semantics

DeployedSoftwareSystem Class

The DeployedSoftwareSystem is a meta-model element that represents an instance of a software system at deployment or at the initialization time. DeployedSoftwareSystem is a physical instance of some logical SoftwareSystem. DeployedSoftwareSystem is associated with a set of DeployedComponents, which correspond to the set of logical components of the logical SoftwareSystem. The logical view of KDM model describes one or more SoftwareSystems. Each SoftwareSystem involves one or more Components. Some components can be involved in more than one SoftwareSystem (allowing description of the so-called Software Product Lines). Each Component involves one or more model Modules. Again, each Module can be involved in more than one Component. Component is a unit of deployment. Each logical component can be deployed multiple times, each time represented by a unique DeploymentComponent element. DeployedSoftwareSystem is a counterpart of the corresponding logical SoftwareSystem.

Superclass

AbstractPlatformElement

Associations

groupedComponent:DeployedComponent[0..*] The set of physical DeployedComponents that make up the target system. The physical components correspond to the logical components of the system.

Constraints

Semantics

Machine Class

The Machine is a meta-model element that represents the hardware node which hosts deployed components.

Superclass

AbstractPlatformElement

Associations

deployedComponent:DeployedComponent[0..*] the set of DeployedComponent elements deployed to this node
deployedResource:DeployedResource[0..*] the set of DeployedResource elements deployed to this node

Constraints

Semantics

DeployedResource Class

The DeployedResource is a meta-model element that represents a set of platform resource instances as they are deployed in a particular deployment configuration. DeployedResource is associated with a set of ResourceType elements. DeployedResource provides a unique physical context for a logical resource, as each logical resource can be associated with multiple DeployedResource.

Superclass

AbstractPlatformElement

Associations

platformElement:ResourceType[0..*] The set of ResourceTypes which are deployed into the target DeployedResource.

Constraints

Semantics

RuntimeResources Class Diagram

The RuntimeResources class diagram defines meta-model elements that represent dynamic structures (instances of some logical entities and their relationships) that emerge at the so-called “run time” of the software system. For example, dynamic entities include processes and threads. Instances of processes and threads can be created dynamically and in many cases relations between the dynamically created instances of processes and threads are an essential part of the knowledge of existing systems. Another example of dynamic structures involves deployed components that are loaded dynamically.

The classes and associations of the RuntimeResources diagram are shown in See – RuntimeResources Class Diagram..

– RuntimeResources Class Diagram

RuntimeResource (generic)

The RuntimeResource is a generic meta-model element that represents an entity that has its own execution thread (for example, process or thread). RuntimeResource is subclassed by Process and Thread. In the meta-model RuntimeResource is used as the endpoint of certain relationships.

Superclass

ResourceType

Semantics

Process Class

The Process is a meta-model element that represents instances of processes.

Superclass

RuntimeResource

Constraints

Semantics

Thread Class

The Thread is a meta-model element that represents instances of the so-called threads (light-weight processes).

Superclass

RuntimeResource

Constraints

Semantics

RuntimeActions Class Diagram

The RuntimeActions class diagram defines meta-model elements that represent specific Runtime actions as the endpoints of certain Runtime relationships. The elements of this diagram extend ActionElement from the KDM Action package.

The classes and associations that make up the RuntimeActions diagram are shown in See – RuntimeActions Class Diagram..

– RuntimeActions Class Diagram

Loads Class

The Loads class is a meta-model element that represents “dynamic loading relationship” between a LoadingService action endpoint and the DeployedComponent.

In the meta-model Loads is a subclass of a generic element RuntimeRelation.

Superclass

AbstractPlatformRelationship

Associations

from:ActionElement[1] “abstracted” action element owned by some resource
to:DeploymentComponent[1] The component which is being loaded.

Constraints

Semantics

Spawns Class

The Spawns class is a meta-model element that represents “dynamic process creation” or “dynamic thread creation” relationship between a SpawningService action endpoint and the RunnableInterface (Process or Thread).

Superclass

AbstractPlatformRelationship

Associations

from:ActionElement[1] “abstracted” action element owned by some resource
to:RuntimeResource[1] The runtime resource element (Process or Thread) which is being spawned.

Constraints

Semantics

ExtenededPlatformElements Class Diagram

The ExtendedPlatformElements class diagram defines two “wildcard” generic elements for the code model as determined by the KDM model pattern: a generic platform entity and a generic platform relationship.

The classes and associations of the ExtendedPlatformElements diagram are shown in See – ExtendedPlatformElements Class Diagram..

– ExtendedPlatformElements Class Diagram

PlatformElement Class (generic)

The PlatformElement class is a generic meta-model element that can be used to define new “virtual” meta-model elements through the KDM light-weight extension mechanism.

Superclass

AbstractPlatformElement

Constraints

PlatformElement should have at least one stereotype

Semantics

A platform entity with under specified semantics. It is a concrete class that can be used as the base element of a new “virtual” meta-model entity types of the platform model. This is one of the KDM extension points which can integrate additional language-specific, application-specific or implementer-specific pieces of knowledge into the standard KDM representation.

PlatformRelationship Class (generic)

The PlatformRelationship class is a generic meta-model element that can be used to define new “virtual” meta-model elements through the KDM light-weight extension mechanism.

Superclass

AbstractPlatformRelationship

Associations

from:AbstractPlatformElement[1] The platform element endpoint
to:KDMEntity[1] the target of the relationship

Constraints

PlatformRelationship should have at least one stereotype

Semantics

A platform relationship with under specified semantics. It is a concrete class that can be used as the base element of a new “virtual” meta-model relationship types of the platform model. This is one of the KDM extension points which can integrate additional language-specific, application-specific or implementer-specific pieces of knowledge into the standard KDM representation.