There are two goals of the Eclipse Process Framework Project:
- To provide an extensible framework and exemplary tools for software process engineering - method and process authoring, library management, configuring and publishing a process.
- To provide exemplary and extensible process content for a range of software development and management processes supporting iterative, agile, and incremental development, and applicable to a broad set of development platforms and applications
Extensible software process engineering framework
The framework consists of the following two components:
- Meta-model: Method content and processes will be structured based on a formal meta-model. This meta-model will be documented with a comprehensive meta-model specification using MOF, UML diagrams, as well as an associated XML schema. The initial version of this meta-model has been derived from IBM's Unified Method Architecture (UMA, reference to UMA specification download to be added soon). UMA is an evolution of the current OMG industry standard Software Process Engineering Meta-model (SPEM) v1.1 integrating concepts from IBM Rational Unified Process, IBM Global Services, and IBM Rational Summit Ascendant. IBM and other OMG partners are working on making UMA, with improvements suggested by partners, to become SPEM 2.0. Two versions of draft specifications have already been submitted to the OMG as of November 2005. The initial exemplary tool implementation for EPF will be based on the first draft submission. As SPEM 2.0 stabilizes, it is expected to update the EPF to the final specification. The meta-model will be extensible through the usage of custom attributes and custom process elements as well as normal EMF extensibility mechanisms.
- Core extensible process tooling framework - Basic functionality and extension point APIs will be provided to allow 1) method authoring, 2) process authoring, 3) library management, and 4) configuring and publishing. Each of these domains is described in more details below, under exemplary tools.
An initial implementation of the process engineering framework is offered for contribution by IBM. It will require some modification to be made extensible, following the SPEM 2.0 extensibility mechanisms.
The following exemplary tools provide the following capabilities:
- Method Authoring - Best practices can be captured as a set of reusable method building blocks as defined in the meta-model; roles, work products, tasks, and guidance, such as templates, guidelines, examples, and check lists. Relationships between method elements can be defined through forms. A rich-text editor allows you to document method elements, and graphical views present diagrams showing relevant relationships. Reuse is facilitated by allowing you to create a method element as a derivative of another method element through various inheritance-type of relationships. This allows you to e.g. specify that a Systems Architect has similar responsibilities to a Software Architect by expressing the differences, reusing everything that is common.
- Process Authoring - Reusable process building blocks can be organized into processes along a lifecycle dimension by defining e.g. Work Breakdown Structures (WBSs), and when in the lifecycle to produce what work products in which state. The tool allows you to construct reusable chunks of processes through so called capability patterns. A capability pattern may for example define how to define, design, implement and test a scenario or a user story, and this pattern can now be reused in a variety of processes. The tool also allows you to define delivery processes, which are end-to-end processes. Structural information can often be edited with graphical as well as non-graphical editors.
- Library Management and Content Extensibility - An XMI-based library enables persistency and flexible configuration management as well as content interchange for distributed client-server implementations. Method and process content can be packaged into content plug-ins and content packages allowing simple distribution, management and extensibility of content. A plug-in can be produced describing how content in other plug-ins should be extended. As content plug-ins are added to your content library, the tool will resolve dependencies between process elements.
- Configuring and Publishing - A process configuration can be created by selecting a set of content plug-ins and content packages. Optionally, an exemplary process configuration can be used as a starting point, and content plug-ins and content packages added or removed from this exemplary configuration. As an example, you may start with a generic exemplary process suitable for small collocated teams, and add content plug-ins containing specific guidance for each of Eclipse, JUnit, J2EE, and IBM Rational RequisitePro. The delivery processes associated with a configuration can be further customized. As the configuration is published, the tool resolves the many relationships that may exist between process elements in the selected plug-ins and packages, and generates a set of html pages with links representing relationships between process elements to make the resulting Web site easy to navigate. The resulting Web site is viewable via a web browser, without the need for a Web server. This will allow users on all platforms to view the published process.
An initial implementation of these features is offered for contribution by IBM. See proposal artifacts at the end of this proposal. This initial contribution needs to be matured, and refactored to address the added extensibility of the process engineering framework.
Exemplary and extensible process content
Our intention is to enable the ecosystem to build software best practices. Some of these best practices may be contributed to Eclipse as exemplary uses of EPF, while others may be commercial process offerings. A key value proposition with the Process Framework is the ability and intent to support a wide spectrum of development styles to accommodate both established practices as well as new ones as they are introduced. The scope of the open source content will be kept small initially, to enable us to build a stable set of high-quality base content, focusing on core development activities; requirements, analysis & design, implementation, testing, change management, and project management. It is however crucial, that the framework and the base content can be extended to scale to support content covering the entire IT Lifecycle Management domain, including software, systems and product development, business engineering, operations and systems management, governance and portfolio management.
- IBM is offering for contribution the Basic Unified Process (BUP, a very light weight adaptation of RUP with influences from Scrum. This content exists in draft format, but needs to be completed and evolved based on contributions from other project members. The content may also need to be refactored to enable a broad set of processes to be created from it through content extensions. See BUP whitepaperand demo of the BUP prototype (BUP.avi). Also see a demo of a variant of Basic Unified Process with Scrum influences (BUP+Scrum.avi). Several other companies such as Ambysoft, BearingPoint, Capgemini, Covansys, Ivar Jacobson International, Number Six, and University of British Columbia will also create other content extensions
- Other project members, including Object Mentor, Bedarra Research Lab, Rally Software Development and Ambysoft will collaborate to contribute a Basic Agile process which covers other key ideas and processes from the Agile Development community, including Agile Modeling, Extreme Programming and Scrum
More exemplary and extensible processes will be created as committers express interest and contributions are proposed. See demo of process authoring capabilities in the EPF prototype (Authoring.avi).
Target Users of the Process Framework
For a perspective of how different types of organizations may leverage the Process Framework, see whitepaper titled Who will benefit from Process Framework
The content of this open source project is received and distributed under the license(s) listed above. Some source code and binaries may be distributed under different terms. Specific license information is provided in file headers and in NOTICE files distributed with the project's binaries.