Thursday, November 29, 2007

[Misc] The war of BPM solution suits

John Raynolds blog impressed me and motivated me to write this article about BPM solution suites. Since SOA "was born" the BPM topic became a new "silver bullet" in the software industry. Major companies, like IBM, BEA, Lobardi and others invest enormous capital to develop BPM solution suites. These suites should help developers to build software systems in reasonable time. Also Open Source providers, like JBoss develop their own SOA stack platform to capture all areas about SOA. Is this the right way?

I agree with Raynolds statement about the benefit of using BPM tools:
"BPM suites allow you to create multi-party process-oriented applications from scratch, deploy them to production, and maintain them over the long haul. You begin by diagramming the business process using a graphical notation such as the Business Process Modeling Notation (BPMN). The resultant Business Process Diagram (BPD) captures the highest level requirements in an executable process definition...
This is one of the great things about BPM, the mapping between the requirement and the implementation couldn't be more straight-forward. The BPD can be stepped through with the business folks ad-infinitum to make sure that it's really correct, and together you can add in all of the (business) exception flows and caveats until everyone is happy."
All products try to abstract the underlying technologies by providing nice GUI-wizards and modeling tools. Additional they introduce their proprietary script languages which is only a subset of Java or Java Script. Especially in this area the BPM tools harm the creativity of software developers. Software development is a creative work!! However, the tools often don't use the full strength of a language, such as Java.

The Infoq article summarizes some statements about Java developers and why they hate BPM. I think the BPM area is too big for a single software system to capture all issues. The real challenge is to combine things together. At present I've not seen a solution suite which closes the gap between the business process modeling and their execution in an engine. Products, like WebSphere Business Modeler, are great tools to model and document your process, but ends with simulation. What about their execution? The real benefit comes with a good combination of both, modeling/documentation and execution in an engine (e.g. jbpm).

Tuesday, November 20, 2007

[Pub] Central and East European Conference on Software Engineering Techniques

The 2nd IFIP Central and East European Conference on Software Engineering Techniques (CEE-SET 2007), was held in Poznan, Poland from 10 to 12 October 2007. The conference aims for exchanging ideas and experiences concerning software engineering techniques, and this year special topic was "balancing agility with discipline". As Barry Boehm and Richard Turner (2003) have noted that both agile methods and plan-driven (discipline) methods present values for successful software development in a changing world, however following question arise, “how much formalism is enough in order to keep a (complex) system responsive to changes?”.

Derived from needs and experiences from Siemens PSE, we presented two technical papers concerning balancing the agility with discipline in context of requirement tracing and coordination support in global software development:

Dindin Wahyudin, Matthias Heindl, Benedikt Eckhard, Alexander Schatten and Stefan Biffl, In-time role-specific notification as formal means to balance agile practices in global software development settings:
In global software development (GSD) projects, distributed teams collaborate to deliver high-quality software. Project managers need to control these development projects, which increasingly adopt agile practices. However, in a distributed project a major challenge is to keep all team members aware of recent changes of requirements and project status without providing too little or too much information for each role. In this paper we introduce a framework to define notification for development team members that allows a) measurement of notification effectiveness, efficiency, and cost; b) formalizing key communication in an agile environment; and c) providing method and tool support to implement communication support. We illustrate an example scenario from an industry background to explain the concept and report results from an initial empirical evaluation. Main results are that the concept allows determining and increasing the effectiveness and efficiency of key communication in a global software development project in a sufficiently formal way without compromising the use of agile practices. (Paper, Presentation)
Matthias Heindl and Stefan Biffl, A Framework to Balance Tracing Agility and Formalism:
Software customers want both sufficient product quality and agile response to requirements changes. Formal software requirements tracing helps to systematically determine the impact of changes and keep track of development artifacts that need to be re-tested when requirements change. However, full tracing of all requirements on the most detailed level can be very expensive and time consuming. In this paper we introduce an initial “tracing activity model”, a framework that allows measuring the expected cost and benefit of tracing approaches. We apply a subset of the activities in the model in a study to compare 3 tracing strategies, ranging from agile “just in time” tracing to fully formal tracing, in the context of re-testing in an industry project at a large financial service provider. In the study a) the model was found useful to capture costs and benefits of the tracing activities to compare the different strategies; b) a combination of upfront tracing on a coarse level of detail and focused just-in-time detailed tracing can help balancing tracing agility (for use in practice) in a formal tracing framework (for research and process improvement). Presentation

All accepted papers were included in the proceedings published as Springer Lecture Notes in Computer Science. Beside presentations and discussions of technical papers, key note presentations focused on deriving the need for empirical evaluation of “state of the art” methods and tools such as agile development in different contexts. Dieter Rombach (head of Fraunhofer Institute for Experimental Software Engineering) suggested that many researchers in SE have provided tools and methods that seem useful, however most of them were never or only partially evaluated with external validation such as industry implementation.

Bertrand Meyer, from ETH, Zürich, delivered the second key note with emphasis on software engineering principles related to agility during development process. In his talk, one interesting point was that, the skeptic toward model-driven development (MDD), as he noticed that current MDD approaches put a focus on developing more user-oriented models with lack of intention toward code and programming as part of the model. He insisted that code or programs can be considered as model of the real system, with a high degree of responsiveness to changes.

In conjugation with the conference, several sessions called as Software Engineering in Progress (SEP) were held on current issues in on-going research in field of software engineering, which in my opinion were very good for new researcher to promote their current achievements and to receive expert feedback in early stage of their works.

Overall, the conference was well organized, and attracted more than 60 participants and presenters from academic and industrial background. I discussed the overall quality of the conference with colleagues from Linz, Dresden, and Bozen, and we agreed that the content of the papers in general had in good quality and were technically sound; many of the presentations sparked lively discussions during the sessions.

Dindin Wahyudin (Edited by Alexander Schatten)

[Pub] Modeling Complex Systems with UML (ICEIS)

The development of complex systems calls for appropriate tools; however, at an the beginning of a project powerful tools that enforce too much formalism early on may hinder designers more than they provide support. For sketching UML draft models the Open Source tool UMLet has become quite popular and warrants an evaluation of the tool’s usability compared to industry standard tools.

Ludwig Meyer presented the paper "Explorative UML Modeling: Comparing the Usability of UML Tools" at the 2007 ICEIS in Funchal/Madeira.

The paper argues that there are three main ways UML tools are used in large scale software engineering:
  1. to exploratively sketch key system components during initial project stages
  2. to manage large software systems by keeping design and implementation synchronized
  3. to extensively document a system after implementation
Professional tools cover (3) to some extent, and attempt to cover (2), but the vast number of programming languages, frameworks and deployment procedures makes those tasks all but impossible. By aiming at these two goals, tools must enforce formal UML language constructs more rigorously and thus become more complicated. The can become unsuitable for (1).

The paper discusses explorative UML modeling and compares the industry standard Rational Rose and the open-source UML sketching tool UMLet (available at http://www.umlet.com). It defines usability measures and assesses both tools' performance using 16 representative use cases that are typical to the creation and modification of UML diagrams.

Dindin Wahyudin (Edited by Alexander Schatten)

Monday, November 19, 2007

[Tech] News from Spring

First of all, today I got the news about the name change of Interface 21, the company behind the Springframework. Interface 21 becomes Spring Source. At present spending a lot of time with Mule. Do you think, there are similarities between MuleSource and SpringSource :)))

Ok, back to my topic!

Developing enterprise applications becomes very structured using Spring. But what about testing? Especially integration tests, database issues and the like. The Spring Mock module provides useful Helper classes and abstract test cases in order to make powerful tests, which deals with transaction management and so on. This article provides a sample application where the fundamental steps of testing a Spring application are described.

Additionally I've found the first part of a three-part article series, dealing with the new configuration features in Spring:
  • Spring annotations for configuration
  • Auto detection of spring components
If the second and third parts are online, I'll update the site. See you!

Friday, November 09, 2007

[Arch] Domain Driven Design - Presentation

In this presentation Eric (specialist in domain driven design and autor of the book domain driven design ) steps through a Cargo sample, where he give an example how to identify objects and put them in a relation. When dealing with domain driven design you will realize that complexity is in the domain and this complexity will be also found in the model.

Eric point to a very important thing in domain driven design: The language and naming of objects. The complexity of implementation can be reduced through good domain design. This fact is represented in his sample by using Leg-Based and Stop-Based models. Depending on the used model there is a major impact on the implementation details. While designing the domain model it is necessary to validate the model by playing different scenarios (use cases) with the model. The language of the model depends on the context in which the model is used.

The presentation gives a really good introduction in Domain Driven Design (DDD).

Wednesday, November 07, 2007

[Misc] Software Engineering and Outsourcing in a "Flat World"

I am just reading the book from Thomas Friedman "The World is Flat", definitly a recommended read. Friedman explains (with a quotation from Carly Fiorina, the former HP CEO):
"The dot-com boom and bust were just 'the end of the beginning'. The last 25 years in technology, said Fiorina, have been just the 'warm-up act'. Now we are going into the main event, she said, 'and by the main event, I mean an era in which technology will literally transform every aspect of business, every aspect of life and every aspect of society.' "
I am actually willing to believe that, however he also brings loads of examples of companies, from HP over Mircosoft to Walmart that do extensive outsourcing activities particularly in China and India.

O.k. I also knew that, but I was not aware of the actual amount of work that has beeing moved from the US to Asia and former eastern-block countries (e.g., like Boing is outsourcing to Russia). Outsourcing from research activities to tax-counselor work to journalism (e.g. Reuters) to supply-chaines that spin around the whole world and produce on direct customer needs.

First I wonder if this is also true for European companies, and more important: have I overslept that development particularly related to Software Engineering? (btw. in that context an American manager expressed the fear, that if this is continuing as it started, the only thing that is left for the American workforce will be to sell hamburgers to each other - if they then still have the money to buy them, I would like to add).

Of course I heard about outsourcing to India... but the typical impression I got was that these outsourcing projects were a rather mixed experience. Thomas Friedman is painting this in much brighter colours than I did observe it myself (as a distant observer). I wonder: does any of the reader here has actual experiences of the "flat world" when it comes to Software projects? Does it really work to do SE projects mainly by using electronic communication? I am not speaking of open source projects, where every participant is more or less following his own agenda, I am speaking of a specific piece of software that needs to be designed for a specific customer with specific needs in a specific time-frame. Does this work for non-trivial undertakings?

Any actual experiences, comments?