Saturday, October 29, 2005

Fostering Tools Communication: Eclipse Application Lifecycle Framework

A few weeks ago, I wrote a blog post comparing both Microsoft Visual Studio Team Server and Eclipse development environments. Since then, I found out about a new Eclipse project that seems quite promising. Eclipse is hosting a new project to develop an Application Lifecycle Framework. A good overview was given by Ali Kheirolomoom at Eclipse World this August. The eclipse ALF purpose is too:
Create a technology framework that will enable a diverse set of vendor tools, irrespective of architecture or platform, to exchange user data, manage business processes and collaborate in support the chosen ALM infrastructure technologies in use by development communities.

The ALF project plans to create a common and extensible domain specific vocabulary to facilitate domain modeling and provide an events and service flows model to enable loosely coupled tools integration. The technology will create a SOA leveraging web
services and web services orchestration to integrate disparate tools sets.
ALF Overview
ALF is designed to build upon the other eclipse tools and to provide additional support for security, web service orchestration, service flow and meta models as illustrated below:
ALF Stack
One example of how ALF could be used is illustrated below:
ALF Use Case
A user adds an issue to an issue tracking system which triggers an event that launches a service flow and determines whether the issue should be added to the Requirement Management System and Project Management System.

ALF plans to develop a meta model vocabulary based on the Zachman framework. The initial focus of the ALF will be on subject areas that cover:
  • Requirements management,
  • Request and issue management,
  • Configuration management and versioning,
  • Business process models
ALF Detailed Meta Model
The ALF appears to me as a key Eclipse initiative which will provide better integrations between disparate tools. It will also go a long way in offering better visibility and metrics at various levels of the application lifecycle.

Saturday, October 15, 2005

Integrating BIRT with Your Application

I recently started to explore BIRT - Eclipse Business Intelligence and Reporting Tool. As illustrated in the following examples available on BIRT's web site, it provides a wide range of reporting and charting capabilities.

One of the features, that I find quite promising is the ability to easily embed the BIRT engine in custom applications. This can easily be illustrated through a basic unit test. The code below illustrates the key elements required to get started:
     * @see junit.framework.TestCase#setUp()
    protected void setUp() throws Exception
        // The directory where the key plugins are located.
        System.setProperty("BIRT_HOME", "C:/.../src/main/resources");


     * @throws Exception Throws exception.
    public void testRunReport() throws Exception
        String[] args = {
            // The format
            // The output directory
            // The locale
            // The encoding
            // The file to generate the report from.
The BIRT_HOME directory should contains the following runtime plugins required for the embedded engine:
BIRT Plugins

Wednesday, October 05, 2005

Managing the Software Development Process: Microsoft is Getting it Right.

I recently attended a presentation on the upcoming Microsoft Visual Studio Team Suite (MVSTS) and I must say: what Microsoft is coming up with looks very much like an aggregation of the best practices that everyone preaches, all bundled into one very cohesive package. I decided to run a comparison between the tools available as Open Source and how an Open Source stack would compare to MVSTS.

First the Microsoft stack: I found two good resources for describing MVSTS roadmap and getting an overview of MVSTS.
Visual Studio Team Overview

Second the Open Source stack: I decided to focus on the Eclipse set of tools (see references below) and Apache Maven for software project management.
J2EE Open Source Tools

After integrating all the tools out there, the Open Source stack comes fairly close functionally to the MVSTS stack. Unfortunately, integrating all those technologies into one cohesive package requires a good amount of work. I personally feel that this is unfortunate. In my mind it raises some fundamental questions:
  • What purpose are open source foundations fulfilling when developing their product offerings? Is it technology adoption, industry cooperation, technology innovation? Providing a cohesive offering requires making some choices that are difficult in foundations with members with sometimes competing interests. Here Microsoft has a clear advantage. So how can the open source community provide a cohesive tool kit for managing the software development process? Is it a desirable outcome?
  • Can commercial entities leverage a common offering and maintain a coherent strategy and competitive advantage? A lot of the value in commercial offerings comes from the integration of diverse technologies into a cohesive offer. If open source foundations fulfill this role, can commercial entities' offerings still remain attractive? Does this cannibalize product offerings in favor of services?
The answer to most of those questions depends on the type of technology. With regards to tools supporting the software development process; I feel it makes sense to foster collaboration. Providing a more integrated open source offering would serve as a foundation to the open source development ecosystem. The Eclipse foundation has done a wonderful job at doing so, but in a fragmented fashion. This is what Microsoft achieves by investing in its development tool suite. It fosters the adoption of its technology and platform and nurtures its technological ecosystem. I feel that all commercial vendors could benefit with what amounts to a fairly minimal investment. Most of the technology building blocks are already available.

Eclipse References:
- Eclipse UML2 tools
- Test and performance tools
- Testing tools
- Monitoring tools
- Web tools
- SDO tools.