OPF Method Components
XHTML-to-XML Translation Guidelines


Topics:  Motivation  URN_Format Naming_Method_Components  Linking_To_Method_Components  Linking_To_Images  Metatypes  Metadata  Complete_Example

Motivation

The following document provides notes to assist translators in the task of converting method components to XML.

The new format for OPF Method Components has been devised as a formal XML vocabulary. The XML vocabulary will allow method components to be processed by a range of software tools, including transformations via XSL to XHTML for viewing in web browsers.

The format has also been designed to facilitate mantenance and also the expansion of the OPF by including a URN system that provides a global naming system that will support a network of OPF repositories that may provide a fixed home for class definitions and also instances of method components.

Finally, to allow the meta data in Method Components to be processed by external tools built to process standard web information, the RDF (Resource Description Framework) has been incorporated.

URN Format

A URN (Uniform Resource Name) is a type of URI (Uniform Resource Indicator) that provides a globally-unique identifier for a resource on the web. Whereas a URL (Uniform Resource Locator) specifies (hard-codes) the location where the resource can be found on the Internet, the URN provides the name of the resource, and a tool must be developed to resolve the URN to a URL web address (or set of equivent web addresses such as mirrors etc.).

The URN format used by the OPFRO has the following form:

{scheme}:{namespace identifier}:{opf repository}:{resource type}:{resource identifier}

These parts are defined as follows:

{scheme}
the form of the URI as fixed by web naming conventions. Because we are using URNs, this must be fixed to ‘urn’. Note that the hypertext transfer protocol uses ‘http’ for the URI scheme part of the URI.
{namespace identifier}
the identifier of the OPFRO namespace that is used to distinguish our URNs from URNs in another domains. It provids a mechanism to recognise OPF resources from anywhere on the web. Our namespace identifier is ‘opf’.
{opf repository}
the official OPF repository where the resource (e.g., method component) is stored. The OPFRO repository for all method components is ‘opfro’.
{resource type}
the type of resource, which is used so that users and tools will know the type of resource that is being identified. Currently, the official resource types are ‘methodComponent’, ‘image’ and ‘person’, although ‘ns’ and ‘schema’ types also exist for XML Namespace and Schema resources. Resource types are formatted in camel case with no spaces.
{resource identifier}
a unique identifier for a resource within a OPF repository. Resource identifiers start with a lowercase letter and are formatted in camel case with no spaces. The two types of resource identifiers are identifiers of method components and images. The method component identifiers are found at the <methodComponent> ‘name’ attribute and are based on the name or term of the method component.

Example OPFRO URNs include:

urn:opf:opfro:methodComponent:enterprise
urn:opf:opfro:methodComponent:systemArchitect
urn:opf:opfro:methodComponent:requirementsEngineering
urn:opf:opfro:image:requirementsEngineeringTasks

Naming Method Components

The URI identifier of a method component is the value of the ‘name’ attribute of a <methodComponent> root element. For example:

<methodComponent name="urn:opf:opfro:methodComponent:enterprise" ...>

The actual name of the Method Component is found in the first <term> element of the first <definition> element of the <definintions> section:

<definitions>
  <definition>
    <term>Enterprise</term>
		...
  </definition>
</definitions>

Linking To Method Components

To support maintainability and minimize redundancy, file names will not be hard coded in hyperlinks. Instead, the actual file names of the method components will be stored in a list XML document. To indicate a link to another method component, the <mcItemRef> tag must be used as indicated in green below:

<definitions>
 <definition>
  <term>Enterprise</term>
   <meaning>
    The highest level 
    <mcItemRef name="urn:opf:opfro:methodComponent:endeavor">endeavor</mcItemRef>,
    consisting of a collection of related 
    <mcItemRef name="urn:opf:opfro:methodComponent:program">programs</mcItemRef>
    that are managed as a single unit
  </meaning>
 </definition>
</definitions>

The XLS program will replace these mcItemRef elements with HTML anchors for display purposes.

These elements can appear with in the text for any method component section.

Linking To Images

Like method components references, images may also be referred to via the <mcImageRef> tag, which must be used as indicated in green below:

<classification>
 <type>Abstract</type>
  <imageRef name="urn:opf:opfro:image:enterpriseInTaxonomy">Enterprise within the OPF 
  taxonomy of method components</imageRef>
	...
</classification>

The XLS program will replace these imageRef elements with HTML image tags for display purposes.

These elements can appear within the text for any method component section.

Metatypes

The OPF XML Schema for OPF method components specifies the following common core sets of information that are inherited by all method components:

definitions
classification
responsibilities
guidelines
a list of guidelines on how to use the method component

The following metatypes (subtypes) of method components are extended with additional sections of information:

Role Meta Type
Quality Factor Meta Type
Cycle Meta Type
Work Unit Meta Type
Task Meta Type

See the XML schema or Method Component XML examples for the structure of each of these sections.

Metadata

The Meta Data section is formated using RDF XML namespace and Dublin Core ontology. This mechanism will expose the meta data for each component to other tools on the Web that support these standards. The <metadata> element is shown below with the editable sections shown in green:

<metadata>
  <rdf:RDF xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
           xmlns:rdfs = "http://www.w3.org/2000/01/rdf-schema#"
           xmlns:dc = "http://purl.org/dc/elements/1.1/" >
   <rdf:Description rdf:about="http://opfro.org/?urn:opf:opfro:methodComponent:enterprise"
           dc:title="OPF Method Component Class for Enterprise Producer"
           dc:description="The highest level endeavor, consisting of a collection 
		   of related programs that are managed as a single unit"
           dc:date="2005-07-17"
           dc:format="text/xml"
           dc:language="en" >
    <dc:publisher rdf:about="http://opfro.org/?urn:opf:opfro:organization:opfro">
      Open Process Framework Repository Organsiation
    </dc:publisher>
    <dc:creator>
      <rdf:Bag>
       <rdf:li rdf:about="http://opfro.org/?urn:opf:opfro:person:donaldFiresmith">
          Donald Firesmith
       </rdf:li>
       {add as needed}
      </rdf:Bag>
    </dc:creator>
    <dc:subject>
     <rdf:Bag>
      <rdf:li>enterprise</rdf:li>
      <rdf:li>endeavor</rdf:li>
      {add as needed}	  
     </rdf:Bag>
    </dc:subject>
  </rdf:Description>
 </rdf:RDF>
</metadata>

You will notice the 'rdf:about' attributes contain a URL like "http://opfro.org/?urn:opf:opfro:person:donaldFiresmith". This tell rdf spiders that the subject of this element is Donald Firesmith, and this is where you can find more info on Donald. It is intended that the http://opfro.org/? part will point to a server side URN resolution tool that will redirect the http request to the appropriate web page. the 'resource identifier' part of all URNs should be writen as the name of the person formatted in camel case, with no spaces and a lower case initial character.

This should provide enough information to commence the translation exercise. Examples for each of the meta types can be found by following these links:

Complete Example

An full example XML file of a basic method component has been included below. The source for this is found here. The XML Schema can be found here.

<?xml version="1.0" encoding="ISO-8859-1"?>
<methodComponent  
   name="urn:opf:opfro:methodComponent:enterprise"
   xmlns="urn:opf:opfro:ns:2005"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="urn:opf:opfro:ns:2005 http://opfro.org/schema/2005/opfMethodComponent.xsd"
   schemaVersion="1.0">

 <definitions>
  <definition>
   <term>Enterprise</term>
   <meaning>
    The highest level <mcItemRef name="urn:opf:opfro:methodComponent:endeavor">endeavor</mcItemRef>,
    consisting of a collection of related <mcItemRef name="urn:opf:opfro:methodComponent:program">programs</mcItemRef>
    that are managed as a single unit
   </meaning>
  </definition>
 </definitions>

 <classification>
  <type>Abstract</type>
  <imageRef name="urn:opf:opfro:image:enterprise.001">Enterprise within the OPF taxonomy of method components</imageRef>
  <superclass> 
   <mcItemRef name="urn:opf:opfro:methodComponent:endeavor">Endeavor</mcItemRef>
  </superclass>
  <subclasses>
   <subclass>Corporation</subclass>
   <subclass>Profit and Loss (P&L) Center</subclass>
   <subclass>Business Unit</subclass>
  </subclasses>
 </classification>

 <responsibilities>
  <responsibility>Elimininate unnecessary redundancies (e.g., duplicate effort and costs) between related programs of projects.</responsibility>
  <responsibility>Ensure standardization (e.g., development process, technology, platforms, and legacy integration) across related programs.</responsibility>
  <responsibility>Improve reuse (e.g., of work products, developer training) across related programs.</responsibility>
  <responsibility>Improve effort, schedule, and cost estimation across related programs.</responsibility>
  <responsibility>Minimize development and maintainance costs across multiple related applications produced by multiple related programs.</responsibility>
 </responsibilities>

 <guidelines>
  <guideline>Enterprises are rarely modeled unless entprises produce standard methods.</guideline>
 </guidelines>

 <metadata>
  <rdf:RDF xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
           xmlns:rdfs = "http://www.w3.org/2000/01/rdf-schema#"
           xmlns:dc = "http://purl.org/dc/elements/1.1/" >
   <rdf:Description rdf:about="http://opfro.org/?urn:opf:opfro:methodComponent:enterprise"
           dc:title="OPF Method Component Class for Enterprise Producer"
           dc:description="The highest level endeavor, consisting of a collection of related programs that are managed as a single unit"
           dc:date="2005-07-17"
           dc:format="text/xml"
           dc:language="en" >
    <dc:publisher rdf:about="http://opfro.org/?urn:opf:opfro:organization:opfro">
      Open Process Framework Repository Organsiation
    </dc:publisher>
    <dc:creator>
      <rdf:Bag>
       <rdf:li rdf:about="http://opfro.org/?urn:opf:opfro:person:donaldFiresmith">Donald Firesmith</rdf:li>
      </rdf:Bag>
    </dc:creator>
    <dc:subject>
     <rdf:Bag>
      <rdf:li>enterprise</rdf:li>
      <rdf:li>endeavor</rdf:li>
     </rdf:Bag>
    </dc:subject>
  </rdf:Description>
 </rdf:RDF>
</metadata>

</methodComponent>