Saturday, February 13, 2010

These are my new bookshelves. One of the things we discuss in Service Oriented Architecture software design is reuse and composition of services. Looking at this design for the bookshelf, you can see reusable components, in the piping, the fittings and the shelf.

The service is composed of these simple components. The "Service" is defined as; an Object that displays and stores books, and is itself reusable, i.e. a different but similar bookshelf with variations in size and shape.

The key to reuse in software has been around for a long time. In Unix, much of the software utilities are simple, focused things that do one thing well and can be chained together to compose more elaborate utilities and functionality. Find, sed, awk, and utilities for manipulating strings can be aggregated into whole applications. In Unix everything is a file allowing for easy manipulation of files and directories.

This same idea is applied to services. Small fine grained utility services can be composed into larger more useful services. The reusability of these larger more coarse grained services falls off as they become more specific in their business functionality.

Wednesday, February 10, 2010

Software Quality

A proposal to improve software quality.

Those executives responsible for delivering software on time and under budget should have an additional target of improved software quality. There are tools readily available like PMD. Checkstyle, FindBugs and peer code reviews that will allow for code to be analyzed and reviewed before and during production to insure the quality meets the goals set forth for the executives responsible.

Until these kinds of quality metrics are in place the overall quality of software is not going to be on the same level as functionality, schedule and budget. The recent problems with Toyota brakes and throttles, Mercedes Sensortronics and other new software going into cars, let alone airliners and hospitals requires a new level of diligence and competency.

Imagine a corporation being held accountable for the deaths of consumers because they did not adequately perform the required Quality Assurance actions on their software products.