One of the most common misunderstandings or missteps in following a particular software process is to follow that process in a blind, one-size-fits all fashion. This is especially true if you are mandated organizationally to use a particular software process. Just as the founding fathers could not have foreseen the challenges of the modern world when authoring the Constitution, there is no way that the creators of a generic software process could understand the nuances of every particular project where their process would be used.
Processes need to be malleable so that they don’t incite the “baby with the bathwater” response in which the entire process is tossed aside because it proves too inflexible. Good processes can and should be customized. There are several methods that can be used to achieve this end. One of my favorite articles on this topic is an oldie from Per Kroll (“Dr. Process”), entitled How Can We Customize the RUP? In this article, Per lays out 3 basic methods that can be used to customize the RUP:
- Make comprehensive changes to the RUP with the Process Workbench (Heavy)
- Produce a custom RUP configuration using RUP builder (Lighter)
- Create your own development case and place it in the project-specific Web site. (BINGO)
First reading this article caused me to re-examine the development case, an often overlooked project artifact. I fell in love with the idea of the development case but the RUP and online examples I could find at the time didn’t live up to my expectations. Between online examples, my ideas, and a great section on the development case in the book Software Development for Small Teams: A RUP-Centric Approach, I pulled together a template that I’ve carried with me, more or less unchanged, until this very day. I’ve included a copy of this template for you to download. The version that is included in Pennsylvania’s BSCoE Software Engineering Process (SEP) is very similar in many ways. You can find that version in the center ring of the online SEP.

The beauty of the development case is that: (1) it’s very lightweight, just a Word file; (2) it works equally well with a commercial process tool or with no process tool; (3) facilitating a meeting to walk through a development case forces people to communicate about what will and won’t work for them and to make decisions that often have very beneficial impacts for their projects. The best part of the development case is that it works very much like object-oriented inheritance. Customizations from higher levels in an organization can trickle down to lower layers of an organization with customizations and/or additions being provided at every layer where this is required to add value.
In addition to the technical assets (Java Framework) that
I’ve mentioned in previous blog postings, BSCoE also makes a set of software
process assets available. These software process assets are arranged into
disciplines and collected under the umbrella of BSCoE’s Software Engineering
Process (SEP). The BSCoE SEP is available online to the general public in
either a browsable or downloadable format.
The SEP is based roughly upon the Rational Unified Process (RUP)
and Microsoft Solutions Framework (MSF). Those looking at the sample assets
will notice the similarities with the standard RUP templates. The process
component of the SEP is specifically vague, leaving decisions such as formality
versus agility, process activities, and roles to the projects employing the
SEP. In particular, projects have several options for SEP customization
including document-driven (RUP-style development case), local modifications to
the process, or modifications with intent to contribute back changes to BSCoE
for inclusion in the master SEP distribution. The SEP is conceptually similar in
some ways to Ivar Jacobson’s new Essential Unified Process (EssUP). However,
whereas the EssUP variability comes through the selection of practices, SEP’s
variability comes through the selection of artifacts.
For those of you thinking of creating your own software
processes, I can only recommend the experience. Using the RUP and the Rational
Method Composer or the MSF and the new Team System templates, although
educational, is not an easy process. This is especially true if you intend to
employ lightweight, agile processes on your projects. In this case, modifying
the base processes from the RUP or MSF is tantamount to carving a chess piece
from a sculpture sized block of marble.
Fortunately, as always, there are many that have gone before
us in this endeavor. The sources highlighted below were of great help to us in
the creation of our process and are highly recommended whether you require
guidance or are just looking to better understand software engineering
processes in general:
- Scott Ambler’s Writings – This guy
is truly the best place to start when you’re looking for anything process
related. All roads will eventually lead through his work. Particularly
interesting are Scott’s Agile Unified Process and his Enterprise Unified
Process. The former is a lightweight version of the RUP focusing on test
driven development, agile modeling, agile database techniques, and
refactoring. The latter is an extension to the RUP covering enterprise
disciplines not mentioned in conjunction with many software processes such
as portfolio management, enterprise architecture, strategic reuse, and
software process improvement. In addition, it adds two new phases to the
RUP, production and retirement.
- Philippe Kruchten’s Books – The
two Addison-Wesley Professional books Rational
Unified Process Made Easy and Rational
Unified Process: An Introduction are seminal works on the RUP. Often
overlooked is Software Engineering
Processes: With the UPEDU, a book that runs through an educational
version of the Unified Process with some pretty decent explanations and
online examples.
- Craig Larman’s Books – Craig’s
books, although not focused on process engineering or the intricacies of
processes, convey an awful lot of information in real world contexts. Agile and Iterative Development: A
Manager’s Guides is one of the best ways for non-techie types to get
their arms around lower ceremony development processes. Applying UML and Patterns focuses
on modeling and design patterns but does so in the context of a process
using the Unified Process infused with Agile methods, making it a source
of great contextual information.
In addition, we have been picking up reference artifacts
along the way to illustrate best practices and real world examples. One of the artifacts
that I fell in love with was the Yummy
SAD, available online as HTML and downloadable in document format via FTP. This is one of the most generic, understandable,
and widely-applicable examples of a software architecture document (SAD) that I
have come across. One of the big selling points of the Yummy SAD is that aside
from just being an artifact, it also comes with an approach to architectural
decomposition. In particular, it espouses an architecturally significant use
case / quality attributes based approach to documenting and realizing your
architecture. Explaining software architecture in this fashion has helped me
clarify the relevance and importance of the SAD on more than one occasion.
Please feel free to share any best practice artifact
references or software process tips that you might help accumulated over the
years in the comments section below.
Pennsylvania’s
Office of Information Technology (OIT) issued the Keystone Technology Plan to
serve as the information technology blueprint through the year 2009. The plan’s
phased approach is quite interesting, with the following phases taking center
stage:
- Yesterday:
Enterprise
Planning and Governance
- Today
:Shared Infrastructure Services
- Tomorrow:
Business Centric Services
BSCoE plays a prominent role in OIT’s vision and is
mentioned as a driver of infrastructure today and key player in the creation of
business-centric services in the future.

Although I was notified of this release through offline
communications channels, I also stumbled upon a Technorati link to a
Pennsylvania-specific technology blog – PATechSpot. The folks running this blog
seem to have a pretty good handle on technology happenings in the Commonwealth.
It’s definitely a site worth adding to my blogroll.
The BSCoE4J Java application development framework was released today to the Commonwealth and is now available for download. The framework contains both abstract and concrete components that support the creation, manipulation, and persistence of domain objects. It interfaces well with, and is meant by no means to supplant, well-understood open source frameworks that address presentation layer, persistence layer, or domain object creation and discovery challenges.

The addition of the BSCoE4J Framework as the third core BSCoE assets rounds off the BSCoE offering for custom enterprise application development. BSCoE4J joins the BSCoE.NET Framework and the BSCoE Software Engineering Process (SEP), forming a comprehensive set of tools for Commonwealth applications looking to do development in either Java or .NET.
The BSCoE project recently received a Computerworld Honors Program laureate honoring the project for its use of information technology to benefit society. It looks like the official case studies and pictures of the award ceremonies have been posted online. You can find the BSCoE case study here. I’ve also included a couple of interesting photos from the Computerworld ceremonies including the snapshot of our client receiving the award.
The official press release just came out announcing that the Commonwealth of Pennsylvania will be using LogicLibrary’s Logidex product as its asset metadata repository. This is quite an exciting development since it will afford BSCoE the opportunity to automate many of the asset cataloging, management, and approval functions that would have otherwise been manual processes.
As a card holding member of the tool skeptics club, I admit to being plesantly surprised and impressed by all of the product demos that I’ve seen and the technical expertise displayed by LogicLibrary’s product technicians. Logidex has a number of extremely interesting features that I have seen in no other product, let alone product suite, including:
- Visualization of the enterprise architectural layers with the Federal Enterprise Architecture (FEA) included out of the box and support for the integration of other popular models such as the Zachman framework. This allows users to navigate the layers of the enterprise architecture and examine the assets associated with each of the layers.
- Cataloging the contents of multiple disparate version control systems and presenting them as a “virtual repository”. This repository includes UDDI discovery of Web services and baseline .NET and Java assets from Microsoft’s Enterprise Library and Sun’s core J2EE patterns, respectively.

- Providing a configurable workflow for the review and approval of software assets as well as notifications to asset consumers of changes to existing assets.
- Exposing core Logidex business services as Web services, lowering the barriers to integration with existing solutions, portals, etc. LogicLibrary eats their own dog food in this sense, by having their IDE plug-ins for Visual Studio and Eclipse consume these same Web services.
All in all, quite an interesting tool from some industry visionaries, including those responsible for IBM’s ill-fated San Francisco project. Like many large software packages, it’s hard to get a sense of how the software works since you can get trial software. Microsoft and LogicLibrary offer a limited trial version available on the MSDN lab. If you’re interested, I encourage you to check it out. Also, sharing of any experiences with this toolset, positive or otherwise, would be greatly appreciated.
|