Weblog

Scrum and side effects

I am using scrum for six months and the side effects of scrum sometimes surprise me. In a recent post I wrote on scrum and organizational development. You can use scrum (daily scrum) as a vehicle for change (new technology and methods).

During our 6 months review of our developers I noted that four developers showed een significant increase in the folowing skills:

  • planning and organizing off their work,
  • communication skills,
  • group skills,
  • eagerness to become crossfunctional.

I think the use of Scrum contributed to this. The next reviews are in december ;-)

Oracle Real-Time Decisions, a short introduction

On the blog of Rittman Mead Consulting i’m reading about his first look at one the new tools Oracle lately bought, Oracle Real-Time Decisions (RTD).

At the moment BI and business modeling are two different worlds. Also at my current project we’re still missing the real integration between BI and the business processes we’re modeling. Oracle got a nice stack of products for fulfill the BI needs, and to model the business processes we use Oracle BPEL with a ‘custom business rule implementation’.

Nice tools for both worlds, but still no integration between them. Oracle Real-Time Decisions, as what we can expect from the name, gives us real-time decisions. So we can model the business process and include real-time decisions in it, instead of ’static’ (non-self-learning) rules. In short, RTD uses a data-mining engine which can receive all the data/events needed to take a real-time self-learning decision and this outcome can be used in the business-process. See this post for the complete article.

On OTN you will find a nice ‘Oracle by Example’ for getting started.

Its too early to draw any conclusions, but i see a lot of added value for RTD. IT-eye does a lot of BI and SOA projects, and the customer will see nice results when both can be integrated for fulfilling his business needs.

SOA Best Practices #2: Use Industry Models

This posting is part of the joined IT-Eye effort to describe our experiences on the field of SOA implementations: 10 best practices in a SOA Project.

Describing this best practice we will have a look at one of the big risk area’s in a SOA project: what are the requirements the project has if it comes to process and information model. Let me tell you upfront: If your goal is to optimize and control your business processes and you don’t have models that are recognized and committed by your business users (i.e. a Corporate Information Management body) you are heading for serious troubles. Budget overruns, long time to market, no customer acceptance, and an addition to the current reputation of IT organizations. You will never harvest on the promises that you made introducing the SOA gospel.

The big software companies like SAP, Oracle, Microsoft and IBM are on acquisition path. The main theme is preconfigured software templates. We are talking about information and process models. The marching order is to get as many industry specific models as possible. It’s a battle about content for integrated information systems; build around SOA based software platforms. These companies will offer you as a company out-of-the-box, plug–and-play business components.

The experience with the current SOA software platforms, like the Oracle SOA Suite, makes clear that the platform itself is not a solution to the business challenges that are out there. Those platforms will never live up to their promise if they are introduced as not more than a technology solution to the organization. Forget about agility, reuse or lower cost-of-ownership.

The aggressive acquisition moves of a company like Oracle highlights this problem. A good example is their Metasolv acquisition. Oracle has recognized the need for content, to offer a total solution for a specific vertical, in this case telco.

What does a SOA platform bring to you? It is a platform on which you easily can run new technology applications in a manageable way. In response to the increasingly complex demands on automated systems a SOA platform breaks solutions down into functional independent and self sustainable components. For a large part because of technical reasons the number of components that have to be implemented in order to get a working system explodes. Many of these technical components are automatically generated. One of the underlying principles is Model Driven Architecture (MDA). Services are for a large part generated based on the underlying information and process models. And key here is that these models should be persistent and relatively frozen. It is also important to make these models independent of underlying applications. (See also best-practice 9 – Canonical Model).

At IT-Eye we do recognize two main usages for a SOA platform: an integration usage and an application development usage. In both usages you will have need for a canonical model.

In the integration usage your canonical model will be a superset of the underlying application datamodels. But in the application development the aim is to introduce to the business a set of application independent models.

If you want to develop homegrown process and information models, you should realize that this leads to years of iterative development without a lot of reuse, and additional transformation effort on points where your models don’t apply to industry standards. The business will probably not recognize faster-time-to-market times of their requirements. It will still be IT failing to deliver on time.

This is where companies like Oracle will step in and offer Industry Models. They are industry best-practices. Use these to jump ahead of years of expensive development efforts. This is the technology aspect of introduction of Industry Models.

But there is an even more important aspect. You can use these models to engage the business with an environment they can control, that they can truly own. This way they get in the driver seat of their automation systems. Let them select and own them. It makes them partners in crime.

Bottom line: If your aim is to introduce SOA to get a true grip on you business processes, don’t start selecting a SOA platform. Your business team (Corporate Information Management) should select an Industry vertical that comes close to your line of business. Only then start to select a SOA technology platform to implement these models.

Jeff Sutherland on the origins of Scrum

If you want to know how it all started, and what influenced Scrum: Origins of Scrum. The name Scrum comes from this article: The new new product development game.

One more Xquery posting

I started my xquery blog posts because i wanted to illustrate how you can use xquery to query xml documents in a java program. Most of Oracle’s examples are using Oracle’s XMLDB to demo how you can query xml in an Oracle database.

But using Oracle’s xquery library you can query xml documents in java, and you can also query relation data in a non Oracle database. Why would you want to query relation data using xquery? One reason is that using xquery you can combine relational and xml data in one query, for example by joining an xml document to a database table. Another reason to use xquery is because it’s an easy way to create xml documents from relational data.

In the following example i create two tables in a derby database, insert some test data, and query the tables with xquery. In this example i use 2 tables, but i could have used one table and one xml document. The code uses an Oracle extension to create xml documents for tables (ora:view).

DriverManager.registerDriver(new org.apache.derby.jdbc.EmbeddedDriver());
Connection conn =
  DriverManager.getConnection("jdbc:derby:testdb;create=true");
// create test table and data
String sql;
try {
  Statement s = conn.createStatement();
  try {
    s.execute("drop table books");
  } catch (Exception e) {}
  try {
    s.execute("drop table authors");
  } catch (Exception e) {}
  s.execute("create table authors (id numeric primary key, firstname varchar(100), lastname varchar(100))");
  s.execute("create table books (id numeric primary key, title varchar(100), author_id numeric )");
  s.execute("insert into authors values (1, 'Elliotte Rusty','Harold')");
  s.execute("insert into authors values (2, 'Brett ','McLaughlin')");
  s.execute("insert into authors values (3, 'Arthur','Griffith')");
  s.execute("insert into books values (1,'Processing XML with Java: A Guide to SAX, DOM, JDOM, JAXP, and TrAX',1)");
  s.execute("insert into books values (2,'Java & XML, 2nd Edition: Solutions to Real-World Problems',2)");
  s.execute("insert into books values (3,'Java, XML, and the JAXP',3)");
} catch (SQLException e) {
  e.printStackTrace();
}
// create xquery
XQueryContext ctx = new XQueryContext(conn);

String query =
  "<bookstore>" + "<authors>{for $j in ora:view('"AUTHORS"')/ROW return <author>{$j/FIRSTNAME}{$j/LASTNAME}<books>" +
  "{for $i in ora:view('"BOOKS"')/ROW where $i/AUTHOR_ID/text() = $j/ID/text() return <book>{$i/TITLE}</book>}" +
  "</books></author>}</authors></bookstore>";
PreparedXQuery xquery = ctx.prepareXQuery(query);

// get result
XMLSequence seq = xquery.executeQuery();
while (seq.next()) {
  XMLItem item = seq.getCurrentItem();
  item.getNode().print(System.out);
}

Running this example results in the following xml document:

<bookstore>
   <authors>
      <author>
         <firstname>Elliotte Rusty</firstname>
         <lastname>Harold</lastname>
         <books>
            <book>
               <title>Processing XML with Java: A Guide to SAX, DOM, JDOM, JAXP, and TrAX</title>
            </book>
         </books>
      </author>
      <author>
         <firstname>Brett </firstname>
         <lastname>McLaughlin</lastname>
         <books>
            <book>
               <title>Java &amp; XML, 2nd Edition: Solutions to Real-World Problems</title>
            </book>
         </books>
      </author>
      <author>
         <firstname>Arthur</firstname>
         <lastname>Griffith</lastname>
         <books>
            <book>
               <title>Java, XML, and the JAXP</title>
            </book>
         </books>
      </author>
   </authors>
</bookstore>

One warning, the xquery api is going to change. An xquery java api is being defined in JSR-225: Xquery API for Java (XQJ). Currently there is a draft specification available which you can download.

More Info:

Technology
Ben jij slim genoeg voor IT-eye