Eclipse Process Framework (EPF) Composer 1.0 Architecture Overview
EPF Composer is an open-source tool platform designed for process engineers and project managers to author, tailor and publish methods and processes for development organizations and projects. It is offered as an exemplary tool under the EPF Project - an Eclipse Technology Project hosted on http://www.eclipse.org/epf.
This article provides a high-level architecture overview of EPF Composer 1.0 with a focus on the following aspects of the design:
- The key components that make up the system architecture
- The design decisions that underlie the architecturally significant components
To gain a better understanding of the key concepts behind EPF Composer and its capabilities, please read the following articles:
2. Architecture Diagram
EPF Composer 1.0 is a Java application built on top of several open source components and standards. The following diagram shows the organization of the key components in the system architecture.
Note: EPF Composer 1.0 does not include a Java Runtime Environment (JRE) to avoid licensing issues. A Sun or IBM JRE version 1.4.2 & higher is required to run the application.
3. Dependent Components
The following sections provide a brief description of the open source components used in EPF Composer 1.0.
3.1. Eclipse Rich Client Platform (RCP) version 3.2
Eclipse RCP is an extensible platform for building Java applications that look and behave like native desktop applications. EPF Composer 1.0 is designed to be a standalone Eclipse RCP application that runs on both the Windows and Linux desktops. It does not have any server-side components.
3.2. Eclipse Modeling Framework (EMF) version 2.2
EMF is a modeling and code generation framework for building applications based on structured data models. EPF Composer 1.0 uses EMF extensively to generate the underlying domain and edit classes for accessing the method library, importing and exporting of library content to and from XML, and exporting of library content to Microsoft Project. EPF Composer 1.0 stores all method library content in a repository of XMI files.
3.3. Graphical Editing Framework (GEF) version 3.2
GEF is a framework for developing graphical editors and diagrams. EPF Composer 1.0 uses GEF to implement graphical editors for visualizing and editing activity flows and work product dependencies.
3.4. International Components for Unicode for Java (ICU4J) version 3.4
ICU4J is Java library for Unicode support, software internationalization and globalization. EPF Composer 1.0 uses it to support authoring and publishing of method content and processes in multiple languages and locales.
3.5. JTidy version 04aug2000r7
JTidy is a syntax checker and pretty printer for HTML. EPF Composer 1.0 uses it to validate and format the method element XHTML source representations.
4. Supported Standards
The following sections provide a brief description of the open standards and specifications used in the design and implementation of EPF Composer 1.0.
4.1. XML Meta Interchange (XMI) version 2.1
XMI is an Object Management Group (OMG) specification for storing and interchanging metadata in XML format. The first release of EPF Composer stores all method library content in XMI files. It also uses XMI as the file format for distributing method plug-ins and configurations.
4.2. Unified Modeling Language (UML) 2.0 Diagram Interchange Specification
UML 2.0 Diagram Interchange Specification is an OMG specification for exchanging UML 2.0 diagrams among modeling tools. EPF Composer uses this specification to store the graph-oriented information associated with the Activity, Activity Detail and Work Product Dependency diagrams.
4.3. Extensible Stylesheet Language Transformation (XSLT) version 1.0
XSLT is a World Wide Web Consortium (W3C) recommendation for transforming a XML document into another form of XML document. EPF Composer uses XSLT to render and publish the XMI method library elements into XHTML pages.
4.4. Dynamic HTML (DHTML)
DHTML encompasses several web-related specifications:
- HyperText Markup Language (HTML) - a static markup language for defining web pages
- Cascading Style Sheets (CSS) - a presentation definition language for styling HTML pages
- Document Object Model (DOM) - an API for parsing and accessing HTML and XML documents
5. EPF Composer Components
The following sections provide a brief description of each EPF Composer 1.0 specific component.
This component provides common infrastructure services to all EPF Composer components. The key services include logging, error handling, string manipulation, file I/O, XML parsing and escaping, XSLT processing, and HTML pretty formatting.
This component provides basic access and editing support to the method and process elements stored in a method library. "UMA" stands for "Unified Method Architecture". It defines the meta-model for how the EPF method content and processes are structured. Most of the Java classes contained in the UMA component are auto-generated using EMF from the uma.ecore file.
The concrete UMA model classes can be grouped into two broad category and several sub categories.
Method content describes roles, the tasks that they perform, the work products produced by the tasks performed and supporting guidance. They can be categorized into logical groups for indexing and display purposes. Method content elements are independent of a development lifecycle. In fact, they are often reused in multiple development lifecycles.
The following UML class diagram shows the organization of the method content classes. They are generated from the uma.ecore file.
Method content can be sub-divided into the following categories.
- Core Method Content - role, task and work product (artifact, outcome and deliverable)
- Guidance - checklist, concept, example, guideline, estimation considerations, practice, report, reusable asset, roadmap, supporting material, template, term definition, tool mentor and whitepaper
- Content Category - discipline grouping, discipline, domain, work product kind, role set grouping, role set, tool and custom category
Processes describe the development lifecycle. They define sequences of tasks performed by roles and work products produced over time. Processes are typically expressed as workflows or breakdown structures. The sequencing of the tasks within the breakdown structure usually represents different types of development lifecycles, such as waterfall, incremental, and iterative.
The following UML class diagram shows the organization of the process element classes.
UMA defines a method library as a root container for all method elements. The following UML class diagram shows the organization of the key classes in a method library instance.
The default EMF persistence implementation stores a container and all containing elements, associated by composition, in a single XMI file. Based on the above class diagram, this would produce an extremely large XMI file that stores a method library and all its containing elements. Naturally, this would lead to performance and scalability issues as a method library grows in size. To resolve these issues, the default EMF Ecore implementation is extended to optionally store the containing elements in a separate XMI file. This design allows library elements such as the method configurations, method plug-ins, method content description and processes to be persisted in their own XMI files.
The UMA meta-model defines several unidirectional associations, such as the ones between a task and a role, as depicted in the UML class diagram below. The UMA component includes an Ecore extension, called "opposite feature", to allow unidirectional associations to be queried in the reverse direction. With this extension, the system can easily query for, say, a list of tasks that is primarily performed by a role, or a list of tasks that is additionally performed by a role. There are about 50 pre-defined opposite features in the UMA component.
5.3. Library Management
This component provides the UI and services to manage a method library. The following lists the core library management services:
- Creating a new method library, method plug-in and configuration
- Opening, saving and backing up an existing method library
- Persisting a method library across multiple XMI files
- Managing the method library project in a workspace
- Providing adapter factories and item providers to display and filter method library content
- Providing commands to edit the method library content
- Managing method configurations
- Validating method element names
- Integrating with source control systems such as CVS and ClearCase
This component provides rich text editing capability in the method element editors. The rich text editor is implemented using a combination of SWT Browser and DHTML.
This component provides the views and editors that constitute the Authoring perspective in EPF Composer 1.0. The Authoring perspective is designed for a process engineer to view and author the method library elements such as roles, tasks, work products, guidance, content categories and processes. This component also contains wizards that guide a user in creating a new method library, plug-in and configuration.
The following UML class diagram shows the key design elements in the Authoring component. All method editors are multi-page form-based page editors.
This component provides the views that constitute the Browsing perspective in EPF Composer 1.0. The Browsing perspective is designed for a process engineer and project manager to browse the content of a realized method configuration in HTML format.
Each method editor also has a preview feature that lets a content author browse a method element in HTML format.
This component provides the UI and services to publish a configuration or process to a static web site. The publishing process involves the following steps:
- Convert the method element XMI into a generic XML format
- Transform the generic XML file into a XHTML web page
- Auto-generate the Role diagram, if required, using Java2D
- Auto-generate the Activity diagram, if required, using GEF
This component provides the UI and services to search for specific method elements in a method library.
This component provides the UI and services to export and import method plug-ins and configurations packaged in XMI files. It is designed to allow method library content to be distributed in a portable and efficient way.
5.10. XML Export/Import
This component provides the UI and services to export and import method library content to and from a XML file. It is designed to allow third party vendors to migrate their method content, presumably stored in some proprietary format, to a UMA-based method library.
The structure and content of the XML file is governed by the EPF XML Schema.
5.11. Microsoft Project (MSP) Export
This component provides the UI and services to export a process to a Microsoft Project 2003 XML file. It is designed to allow a project manager to export a capability pattern or delivery process to a Microsoft Project XML file.
The structure and content of the exported XML file is governed by the Microsoft Office Project 2003 XML Schema.
5.12. RCP Main
This component provides product-specific customization that defines the EPF Composer 1.0 look and feel, packaging and software update site. It also contains the EPF Composer welcome screen and content, such as the EPF overview, samples and tutorials.