// ===================================================================
// Title:       Application MOF Specification 2.7, 
//              Software Features and Elements in support of Deployment
// Filename:    Application27_DeploymentModel.mof
// Version:     2.7.0
// Status:      Final
// Date:        31 March 2003
// CVS:         $Revision: 1.2 $           
// ===================================================================
// Copyright 1998-2003 Distributed Management Task Force, Inc. (DMTF).
// All rights reserved.  
// DMTF is a not-for-profit association of industry members dedicated 
// to promoting enterprise and systems management and interoperability. 
// DMTF specifications and documents may be reproduced for uses
// consistent with this purpose by members and non-members, 
// provided that correct attribution is given. 
// As DMTF specifications may be revised from time to time, 
// the particular version and release date should always be noted.
//
// Implementation of certain elements of this standard or proposed 
// standard may be subject to third party patent rights, including 
// provisional patent rights (herein "patent rights"). DMTF makes 
// no representations to users of the standard as to the existence 
// of such rights, and is not responsible to recognize, disclose, or
// identify any or all such third party patent right, owners or 
// claimants, nor for any incomplete or inaccurate identification or 
// disclosure of such rights, owners or claimants. DMTF shall have no 
// liability to any party, in any manner or circumstance, under any 
// legal theory whatsoever, for failure to recognize, disclose, or 
// identify any such third party patent rights, or for such party's
// reliance on the standard or incorporation thereof in its product, 
// protocols or testing procedures. DMTF shall have no liability to 
// any party implementing such standard, whether such implementation 
// is foreseeable or not, nor to any patent owner or claimant, and shall 
// have no liability or responsibility for costs or losses incurred if 
// a standard is withdrawn or modified after publication, and shall be
// indemnified and held harmless by any party implementing the 
// standard from any and all claims of infringement by a patent owner 
// for such implementations.
//
// For information about patents held by third-parties which have 
// notified the DMTF that, in their opinion, such patent may relate to 
// or impact implementations of DMTF standards, visit 
// http://www.dmtf.org/about/policies/disclosures.php.
// ===================================================================
// Description: These object classes define the DMTF Application Model
//              and include classes to represent software features,  
//              and deployable/installable elements. 
//
//              The object classes below are listed in an order that
//              avoids forward references. Required objects, defined 
//              by other working groups, are omitted.
// ==================================================================
//    06/07/99  Added FRUIncludesSoftwareFeature association (CR277b)
//              Removed min(1) from SoftwareFeatureSoftwareElements (CR395)
//              Added more processor types (CR318c)
//              Added video processor to Arch Type (CR377)
//              Added Sparc processor to Arch Type (CR297)
//              Added additional OS type (CR363)
//              Added VSE and TPF OS types (CR409)
//
//    01/10/00  Add keys to refs of FRUIncludesSoftwareFeature (CR453)
//              Add Itanium processor to Arch Type (CR449)
//
//    01/17/00  Updated Mappingstrings qualifiers (CR431)
//
//    03/07/00  Change Intel Processor types for legal reasons (CR438) 
//
//    06/08/00  Added SoftwareElementService/SAPImplementation
//              associations (CR482a)
//
//    11/29/00 - Version 2.5
//             - CR533b Add Windows(R) Me to *.TargetOperatingSystem*
//             - CR540c Add SoftwareFeatureComponent Association
//             - CR542 Add "Not Applicable" to the *TargetOperatingSystem
//                     property
//
//    03/09/2002 CIM 2.6 Final release
//             - CR658 Add Key Qualifier to association references 
//                      in Appl and SysDev MOFs. This changed
//                      CIM_ProductSoftwareFeatures,
//                      CIM_InstalledSoftwareElement,
//                      CIM_InstalledProductImage
//             - CR746 Add Version qualifier (Version 2.6.0) to
//                     all classes and associations.
//             - CR823 Cleanup all Descriptions and other textual issues
//             - CR828 Fix inconsistencies between Device, Appl and 
//                     System Models wrt processor and OS type enums
//
//    06/06/2002 CIM 2.7 Preliminary Release
//             - CR 618 - Add Pentium 4 Processor
//             - CR 686 - Add Xeon Processor
//             - CR 770 - Add WinXP to OSTypes
//             - CR 772 - Add new AMD Processor types
//             - CR 839 - Add other Processor Types
//             - Define Application MOF structure
//
//    09/22/2002 CIM 2.7 Public Preliminary Release
//            -  CR 876 - Rename the "Digital Unix" operating system 
//                        type to "Tru64 UNIX".
//    03/17/2003 CIM 2.7 Publid Final Release
//            -  CR 935 - Add entries to targetOperatingSystem value map.
//                        Added z/OS and changed VM/EAS to VM
// ===================================================================

#pragma locale ("en_US")

 
// ==================================================================
// ApplicationSystem
// ==================================================================
        [Version("2.6.0"), Description (
        "The CIM_ApplicationSystem class is used to represent an "
        "application or a software system that supports a particular "
        "business function and that can be managed as an independent "
        "unit. Such a system can be decomposed into its functional "
        "components using the CIM_SoftwareFeature class. The "
        "Features for a particular application or software system "
        "are located using the CIM_ApplicationSystemSoftwareFeature "
        "association.") ] 
class CIM_ApplicationSystem : CIM_System {
};

     
// ==================================================================
// SoftwareElement
// ==================================================================
        [Version("2.7.0"), Description (
        "The CIM_SoftwareElement class is used to decompose a "
        "CIM_SoftwareFeature object into a set of individually "
        "manageable or deployable parts, for a particular platform. "
        "A SoftwareElement's platform is uniquely identified by "
        "its underlying hardware architecture and operating system "
        "(for example Sun Solaris on Sun Sparc or Windows NT on "
        "Intel platforms). As such, to understand the details of "
        "how the functionality of a particular SoftwareFeature is "
        "provided on a particular platform, the CIM_SoftwareElement "
        "objects referenced by CIM_SoftwareFeatureSoftwareElements "
        "associations are organized in disjoint sets based on the "
        "TargetOperatingSystem property. A CIM_SoftwareElement "
        "object captures the management details of a part "
        "or component in one of four states characterized by the "
        "SoftwareElementState property.") ] 
class CIM_SoftwareElement : CIM_LogicalElement {

        [Key, MaxLen (256), Override ("Name"), Description (
        "The name used to identify this SoftwareElement.") ] 
    string Name;

        [Key, MaxLen (64), Description (
        "Software Version should be in the form "
        "<Major>.<Minor>.<Revision> or "
        "<Major>.<Minor><letter><revision>."), 
        MappingStrings {"MIF.DMTF|SubComponent Software |001.4"} ] 
    string Version;

        [Key, Description (
        "The SoftwareElementState is defined in this model to "
        "identify various states of a SoftwareElement's life cycle. \n"
        " - A SoftwareElement in the deployable state describes the "
        "details necessary to successfully distribute it and the "
        "details (Checks and Actions) required to move it to "
        "the installable state (i.e, the next state). \n"
        " - A SoftwareElement in the installable state describes the "
        "details necessary to successfully install it and the details "
        "(Checks and Actions) required to create an element in the "
        "executable state (i.e., the next state). \n"
        " - A SoftwareElement in the executable state describes the "
        "details necessary to successfully start it and the details "
        "(Checks and Actions) required to move it to the running "
        "state (i.e., the next state). \n"
        " - A SoftwareElement in the running state describes the "
        "details necessary to manage the started element."), 
        ValueMap {"0", "1", "2", "3"}, 
        Values {"Deployable", "Installable", "Executable", "Running"} ] 
    uint16 SoftwareElementState;

        [Key, MaxLen (256), Description (
        "This is an identifier for the SoftwareElement and is "
        "designed to be used in conjunction with other keys to "
        "create a unique representation of the element.") ] 
    string SoftwareElementID;

        [Key, MappingStrings {"MIF.DMTF|SubComponent Software|001.8"}, 
        Description (
        "The TargetOperatingSystem property specifies the element's "
        "operating system environment. The value of this "
        "property does not ensure that it is binary executable. Two "
        "other pieces of information are needed. First, the version of "
        "the OS needs to be specified using the class, CIM_OSVersion"
        "Check. The second piece of information is the architecture "
        "that the OS runs on. This information is verified using "
        "CIM_ArchitectureCheck. The combination of these constructs "
        "clearly identifies the level of OS required for a "
        "particular SoftwareElement."), 
        ValueMap {"0", "1", "2", "3", "4",
            "5", "6", "7", "8", "9",
            "10", "11", "12", "13", "14",
            "15", "16", "17", "18", "19",
            "20", "21", "22", "23", "24",
            "25", "26", "27", "28", "29",
            "30", "31", "32", "33", "34",
            "35", "36", "37", "38", "39",
            "40", "41", "42", "43", "44",
            "45", "46", "47", "48", "49",
            "50", "51", "52", "53", "54",
            "55", "56", "57", "58", "59",
            "60", "61", "62", "63", "64",
            "65", "66", "67", "68"},
        Values {"Unknown", "Other", "MACOS", "ATTUNIX", "DGUX",
            "DECNT", "Tru64 UNIX", "OpenVMS", "HPUX", "AIX",
            //10
            "MVS", "OS400", "OS/2", "JavaVM", "MSDOS",
            "WIN3x", "WIN95", "WIN98", "WINNT", "WINCE",
            //20
            "NCR3000", "NetWare", "OSF", "DC/OS", "Reliant UNIX",
            "SCO UnixWare", "SCO OpenServer", "Sequent",
            "IRIX", "Solaris",
            //30
            "SunOS", "U6000", "ASERIES", "TandemNSK", "TandemNT",
            "BS2000", "LINUX", "Lynx", "XENIX", "VM",
            //40
            "Interactive UNIX", "BSDUNIX", "FreeBSD", "NetBSD",
            "GNU Hurd", "OS9", "MACH Kernel", "Inferno", "QNX",
            "EPOC",
            //50
            "IxWorks", "VxWorks", "MiNT", "BeOS", "HP MPE",
            "NextStep", "PalmPilot", "Rhapsody", "Windows 2000",
            "Dedicated",
            //60
            "OS/390", "VSE", "TPF","Windows (R) Me",
            "Caldera Open UNIX", "OpenBSD", "Not Applicable",
            "Windows XP", "z/OS"},
        ModelCorrespondence {"CIM_OperatingSystem.OSType"} ] 
    uint16 TargetOperatingSystem;

        [Description (
        "The OtherTargetOS property records the manufacturer and "
        "operating system type for a SoftwareElement when the "
        "TargetOperatingSystem property has a value of 1 (\"Other\"). "
        "For all other values of TargetOperatingSystem, the "
        "OtherTargetOS property is NULL."), 
        MaxLen (64), 
        ModelCorrespondence {"CIM_OperatingSystem.OtherTypeDescription"} ] 
    string OtherTargetOS;

        [MaxLen (256), 
         MappingStrings {"MIF.DMTF|SubComponent Software|001.3"}, 
         Description ("Manufacturer of this SoftwareElement.") ] 
    string Manufacturer;

        [MaxLen (64), 
         MappingStrings {"MIF.DMTF|Software Component Information|002.4"}, 
         Description (
         "The internal identifier for this compilation of "
         "SoftwareElement.") ] 
    string BuildNumber;

        [MaxLen (64), MappingStrings {"MIF.DMTF|ComponentID|001.4"}, 
        Description (
        "The assigned serial number of this SoftwareElement.") ] 
    string SerialNumber;

        [MaxLen (64), Description (
        "The code set used by this SoftwareElement. It defines the bit "
        "patterns that a system uses to identify characters.  ISO "
        "defines various code sets such as UTF-8 and ISO8859-1.") ] 
    string CodeSet;

        [MaxLen (64), 
        MappingStrings {"MIF.DMTF|SubComponent Software|001.6"}, 
        Description (
        "The manufacturer's identifier for this SoftwareElement. "
        "Often this will be a stock keeping unit (SKU) or a "
        "part number.") ] 
    string IdentificationCode;

        [MaxLen (32), 
        MappingStrings {"MIF.DMTF|SubComponent Software|001.7"}, 
        Description (
        "The value of this property identifies the language edition "
        "of this SoftwareElement. The language codes defined in ISO 639 "
        "should be used. Where the element represents a multi-lingual "
        "or international version, the string \"Multilingual\" should "
        "be used.") ] 
    string LanguageEdition;
};

     
// ==================================================================
// SoftwareFeature
// ==================================================================
        [Version("2.6.0"), Description (
        " The CIM_SoftwareFeature class defines a particular function "
        "or capability of a product or application system. This class "
        "captures a level of granularity describing a unit of "
        "installation, rather than the units that reflect "
        "how the product is built or packaged. The latter detail "
        "is captured using a CIM_SoftwareElement class. When a "
        "SoftwareFeature can exist on multiple platforms or operating "
        "systems (for example, a client component of a three tiered "
        "client/server application that runs on Solaris, Windows NT, "
        "and Windows 95), the Feature is a collection of all the "
        "SoftwareElements for these different platforms. In this "
        "case, the users of the model must be aware of this situation "
        "since typically they will be interested in a sub-collection "
        "of the SoftwareElements required for a particular platform. \n"
        " SoftwareFeatures are always defined in the context of a "
        "CIM_Product, using the CIM_ProductSoftwareFeature association. "
        "Features are delivered through Products. Optionally, "
        "SoftwareFeatures from one or more Products can be organized "
        "into ApplicationSystems using the "
        "CIM_ApplicationSystemSoftwareFeature association.") ] 
class CIM_SoftwareFeature : CIM_LogicalElement {

        [Propagated ("CIM_Product.IdentifyingNumber"), Key, 
        MaxLen (64), Description (
        "The scoping Product's identification.") ] 
    string IdentifyingNumber;

        [Propagated ("CIM_Product.Name"), Key, MaxLen (256), 
        Description ("The scoping Product's commonly used name.") ] 
    string ProductName;

        [Propagated ("CIM_Product.Vendor"), Key, MaxLen (256), 
        Description ("The scoping Product's supplier.") ] 
    string Vendor; 

        [Propagated ("CIM_Product.Version"), Key, MaxLen (64), 
        Description ("The scoping Product's version.") ] 
    string Version;

        [Key, Override ("Name"), MaxLen (256), Description (
        "The Name property defines the unique label by which the "
        "SoftwareFeature is identified. This label should be a "
        "human-readable name that uniquely identifies the element "
        "in the context of the element's namespace.") ] 
    string Name;
};
     
    
// ==================================================================
// SoftwareFeatureSoftwareElements
// ==================================================================
        [Association, Aggregation, Version("2.6.0"), 
        Description (
        "SoftwareFeatureSoftwareElements identifies the Software"
        "Elements that make up a particular SoftwareFeature.") ] 
class CIM_SoftwareFeatureSoftwareElements : CIM_Component {

        [Aggregate, Override ("GroupComponent"),
        Description ("The SoftwareFeature that groups the "
        "SoftwareElement.") ] 
    CIM_SoftwareFeature REF GroupComponent;

        [Override ("PartComponent"), 
        Description ("The SoftwareElement that makes up the Feature.") ]
    CIM_SoftwareElement REF PartComponent;
};


// ================================================================== 
// SoftwareFeatureComponent 
// ================================================================== 
        [Association, Aggregation, Version("2.6.0"), 
        Description ( 
        "The SoftwareFeatureComponent aggregation models a set of " 
        "subordinate or independent Software Features of a Product. " 
        "These are aggregated together to form a higher-level or " 
        "large grain Feature under the same Product.") ] 
class CIM_SoftwareFeatureComponent : CIM_Component { 

        [Override ("GroupComponent"), Aggregate, 
         Description ("The parent SoftwareFeature.") ] 
   CIM_SoftwareFeature REF GroupComponent; 

        [Override ("PartComponent"), 
         Description ("The component SoftwareFeature.") ] 
   CIM_SoftwareFeature REF PartComponent; 
}; 

     
// ==================================================================
// ProductSoftwareFeatures
// ==================================================================
        [Association, Aggregation, Version("2.6.0"), 
        Description (
        "The ProductSoftwareFeatures association identifies the "
        "SoftwareFeatures for a particular Product.") ] 
class CIM_ProductSoftwareFeatures {

        [Key, Min (1), Max (1), Aggregate,
        Description ("The Product that scopes the SoftwareFeatures.") ] 
    CIM_Product REF Product;

        [Key, Weak,
        Description ("The SoftwareFeature in a Product.") ] 
    CIM_SoftwareFeature REF Component;
};


// ==================================================================
// ApplicationSystemSoftwareFeature
// ==================================================================
        [Association, Aggregation, Version("2.6.0"), 
        Description (
        "The ApplicationSystemSoftwareFeature association identifies "
        "the Features that make up a particular ApplicationSystem. "
        "The SoftwareFeatures can be scoped by different Products.") ] 
class CIM_ApplicationSystemSoftwareFeature : CIM_SystemComponent {

        [Override ("GroupComponent"), Aggregate, 
        Description (
        "The ApplicationSystem that aggregates the Features.") ] 
    CIM_ApplicationSystem REF GroupComponent;

        [Override ("PartComponent"), Description (
        "The Features in an ApplicationSystem.") ] 
    CIM_SoftwareFeature REF PartComponent;
};


// ==================================================================
// SoftwareFeatureServiceImplementation
// ==================================================================
        [Association, Version("2.6.0"), Description (
        "  An association between a Service and how it is implemented "
        "in software. The cardinality of this association is many-to"
        "-many. A Service may be provided by more than one "
        "SoftwareFeature. When multiple SoftwareFeatures are "
        "associated with a single Service, it is assumed that "
        "these elements operate in conjunction to provide the Service. "
        "Note that any SoftwareFeature may provide more than one "
        "Service. \n"
        "  If different implementations of a Service exist, "
        "each of these implementations would result in individual "
        "instantiations of the Service object. These individual "
        "instantiations would then have their own associations to "
        "the unique implementations.") ] 
class CIM_SoftwareFeatureServiceImplementation : CIM_Dependency {

        [Override ("Antecedent"), Description (
        "The SoftwareFeature implementing the Service.") ] 
    CIM_SoftwareFeature REF Antecedent;

        [Override ("Dependent"), Description (
        "The Service being implemented.") ] 
    CIM_Service REF Dependent;
};

     
// ==================================================================
// SoftwareFeatureSAPImplementation
// ==================================================================
        [Association, Version("2.6.0"), Description (
        "  An association between a ServiceAccessPoint and how it is "
        "implemented in software. The cardinality of this association "
        "is many-to-many. A SAP may be provided by more than one "
        "SoftwareFeature. When multiple SoftwareFeatures are "
        "associated with a single SAP, it is assumed that these "
        "elements operate in conjunction to provide the AccessPoint. "
        "Note that any SoftwareFeature may provide more than one "
        "ServiceAccessPoint. \n"
        "  If different implementations of a SAP exist, each "
        "of these implementations would result in individual "
        "instantiations of the ServiceAccessPoint object. "
        "These individual instantiations would then have their own "
        "associations to the unique implementations.") ] 
class CIM_SoftwareFeatureSAPImplementation : CIM_Dependency {

        [Override ("Antecedent"), Description (
        "The SoftwareFeature implementing the SAP.") ] 
    CIM_SoftwareFeature REF Antecedent;

        [Override ("Dependent"), Description (
        "The AccessPoint being implemented.") ] 
    CIM_Service REF Dependent;
};


// ================================================================== 
// FRUIncludesSoftwareFeature 
// ================================================================== 
        [Association, Aggregation, Version("2.6.0"), 
        Description ( 
        "  The FRUIncludesSoftwareFeature association identifies the "
        "SoftwareFeature(s) packaged with a particular FRU. A common "
        "usage is to determine whether the FRU is compatible with "
        "a hardware/software platform. In order to determine this, "
        "the following conditions need to be verified: \n"
        "(1) Is the physical package of the FRU compatible with the "
        "slots or equivalent packaging of the hardware? \n"
        "(2) Are there any physical constraints (such as power "
        "consumption) that prevent the FRU from being installed? \n"
        "(3) Are the SoftwareFeatures packaged with the FRU "
        "compatiable with the underlying operating system and other "
        "software already installed/to be installed on the platform? \n"
        "  This latter question can be answered by first checking "
        "if an instance of FRUIncludesSoftwareFeature exists. If it "
        "does, then the compatibility of each SoftwareFeature can be "
        "determined by evaluating the Check classes for the Software"
        "Elements that are part of the Feature (found by traversing "
        "the association, SoftwareFeatureSoftwareElements). For "
        "example, there might be a SoftwareElementVersionCheck that "
        "declares that a SoftwareElement (of the FRU's Software"
        "Feature) is not compatible with current software.") ] 
class CIM_FRUIncludesSoftwareFeature { 

        [Key, Max(1), Aggregate,
        Description ("The field replaceable unit.") ] 
    CIM_FRU REF FRU;

        [Key, Description (
        "The SoftwareFeature which is included in the FRU and whose"
        "SoftwareElements should be evaluated.") ]
    CIM_SoftwareFeature REF Component; 
}; 


// ==================================================================
// SoftwareElementServiceImplementation
// ==================================================================
        [Association, Version("2.6.0"), Description (
        "  An association between a Service and how it is implemented "
        "by one or more executable SoftwareElements. Note that this "
        "association is restricted to 'executable' Elements. In "
        "earlier phases of deployment, the SoftwareFeatureService"
        "Implementation association is adequate and recommended. \n"
        "  The relationship between this association and Software"
        "FeatureServiceImplementation is more fully described here. "
        "SoftwareElementServiceImplementation allows the description "
        "of greater granularity than SoftwareFeatureService"
        "Implementation, when a SoftwareFeature is fully deployed and "
        "results in several executable Elements. These Elements may "
        "implement several different Services. \n"
        "  Since SoftwareFeatures decompose into SoftwareElements, "
        "it is possible to describe how software implements a Service "
        "by using either this association or the SoftwareFeature"
        "ServiceImplementation relationship. One or the other should "
        "be chosen. Both associations should not be used for a single "
        "Service instance, since their information is redundant. \n"
        "  This relationship is especially important when the "
        "SoftwareFeature and Product aspects are not described for a "
        "SoftwareElement (ie, when the acquisition and deployment of "
        "the software is not detailed). In this case, the Software"
        "ElementServiceImplementation association is the only one "
        "available to describe how a Service is implemented in "
        "software. Since SoftwareFeatures are not instantiated, it "
        "is not possible to use the SoftwareFeatureService"
        "Implementation association. \n"
        "  The cardinality of this association is many-to-many. A "
        "Service may be provided by more than one SoftwareElement. "
        "If this is true, it is assumed that the SoftwareElements "
        "operate in conjunction. And, any SoftwareElement may "
        "provide more than one Service.") ]
class CIM_SoftwareElementServiceImplementation : CIM_Dependency {

        [Override ("Antecedent"), 
        Description (
        "The executable SoftwareElement implementing the Service.") ]
    CIM_SoftwareElement REF Antecedent;

        [Override ("Dependent"), 
        Description (
        "The Service implemented by the SoftwareElement.") ]
    CIM_Service REF Dependent;
};


// ==================================================================
// SoftwareElementSAPImplementation
// ==================================================================
        [Association, Version("2.6.0"), Description (
        "  An association between a ServiceAccessPoint and how it is "
        "implemented by one or more executable SoftwareElements. Note "
        "that this association is restricted to 'executable' "
        "Elements. In earlier phases of deployment, the Software"
        "FeatureSAPImplementation association is adequate and "
        "recommended. \n"
        "  The relationship between this association and Software"
        "FeatureSAPImplementation is more fully described here. "
        "SoftwareElementSAPImplementation allows the description of "
        "greater granularity than SoftwareFeatureSAPImplementation, "
        "when a SoftwareFeature is fully deployed and results in "
        "several executable Elements. These Elements may implement "
        "several different ServiceAccessPoints. \n"
        "  Since SoftwareFeatures decompose into SoftwareElements, "
        "it is possible to describe how software implements a SAP "
        "by using either this association or the SoftwareFeatureSAP"
        "Implementation relationship.  One or the other should be "
        "chosen. Both associations should not be used for a "
        "particular AccessPoint, since their information is "
        "redundant. \n"
        "  This relationship is especially important when the "
        "SoftwareFeature and Product aspects are not described for "
        "a SoftwareElement (ie, when the acquisition and deployment "
        "of the software is not detailed). In this case, the Software"
        "ElementSAPImplementation association is the only one "
        "available to describe how an AccessPoint is implemented in "
        "software. Since SoftwareFeatures are not instantiated, it "
        "is not possible to use the SoftwareFeatureSAP"
        "Implementation association. \n"
        "  The cardinality of this association is many-to-many. A "
        "ServiceAccessPoint may be provided by more than one Software"
        "Element. (If this is true, it is assumed that the Software"
        "Elements operate in conjunction.) And, any SoftwareElement "
        "may provide more than one SAP.") ]
class CIM_SoftwareElementSAPImplementation : CIM_Dependency {

        [Override ("Antecedent"), 
        Description (
        "The executable SoftwareElement implementing the SAP.") ]
    CIM_SoftwareElement REF Antecedent;

        [Override ("Dependent"), 
        Description (
        "The ServiceAccessPoint implemented by the SoftwareElement.") ]
    CIM_ServiceAccessPoint REF Dependent;
};


// ==================================================================
// end of file
// ==================================================================
