Monday, December 17, 2007

I’m pleased to announce a new online portal dedicated to the community of software factory practitioners. The DevRevolution Software Factories Community Portal is the first in a series of portals designed to advance the state of the art in software development. Built by developers for developers, the DevRevolution Software Factories Community Portal offers a variety of resources for software factory practitioners at all levels, from beginners to experts. The site include a forum for discussions, an aggregation of software factory blogs and news feeds, and a catalog of additional software factory resources available on the web, complete with user ratings. Please visit the DevRevolution Software Factories Community Portal to participate in this new Community of Practice. And tell a friend!

Many thanks to Edward Bakker and Jezz Santos for their invaluable help in creating this community portal.

http://sf.devrevolution.com

posted on 12/17/2007 11:59:14 PM (Mountain Standard Time, UTC-07:00)  #    Comments [0]
 Saturday, April 07, 2007

I was fortunate to participate in several MSDN podcasts on the subject of model-driven development with such industry luminaries as Jack Greenfield, Steven Kelly, Mauro Regio and Brian Selic. I was the voice of the average joe schmo developer trying to make sense out of all the amazing things these other panelists had to say. It was both fun and a bit intimidating at the same time. It was also quite popular with the listening audience - these podcasts received thousands of downloads.

Well I just noticed that the podcasts have been transcribed, and the transcriptions are available on MSDN here:

Model-Driven Development (Part 1)
Model-Driven Development (Part 2)

Although the transcription is a bit mangled in some places, they generally did a good job of capturing what was said. Of course, you can always listen to the original podcasts:

ARCast 5: Model-Driven Development
ARCast 6: Model-Driven Development

 

posted on 4/7/2007 6:13:49 PM (Mountain Daylight Time, UTC-06:00)  #    Comments [0]
 Tuesday, March 27, 2007

An important component of a software factory is guidance. After all, a software factory is a highly specialized IDE for product a specific type of software. Without some instructions on the proper use of this highly specialized IDE the developer is pretty much lost, left to bump around in the maze until a sense of direction is established. Good guidance eliminates this disorientation, allowing the software engineer to use the factory productively right away.

An excellent source of information on engineering good guidance can be found at:
http://channel9.msdn.com/wiki/default.aspx/GuidanceEngineering.HomePage

Hey, I guess this guidance engineering wiki could be called meta-guidance!

posted on 3/27/2007 12:34:48 PM (Mountain Daylight Time, UTC-06:00)  #    Comments [3]
 Tuesday, August 08, 2006

Software development is a difficult endeavor. Development teams are expected to produce ever more complex software systems, yet economic forces require them to do it faster, better and cheaper. As software developers we have an unprecedented array of amazing tools at our disposal for developing, building and testing and deploying our software applications. We’ve made enormous strides in our methods with agile practices like iterative incremental development and test driven development. And yet we continue to build software applications the same way that automobiles used to be built - hand crafted one by one.

Let’s compare software development to the production of automobiles. Today a few very special automobiles are still built by hand. But if we had continued to build all automobiles in this way, then they would be enormously expensive and in very short supply. Quality would be erratic, safety and reliability would be problematic, performance would be unpredictable and parts would be hard to come by.  Thanks to the industrialization of the automobile industry, we have an amazing variety of safe, reliable automobiles that address a wide array of needs at a reasonable cost.

Since industrialization was so phenomenally successful for automobile production, can the same approach be applied to software? Can we industrialize the software development? In short the answer is yes! But what does industrialization mean in this context? Clearly software is not the same thing as automobiles. But is it really that different?

Every automobile has many features in common. Each automobile has an engine, transmission, brakes, headlights, a steering wheel, etc. Some features are required – like wheels, while other features are optional – like a GPS navigation system. Some features offer choices – like the color of the body, while other features offer no choice – such as the gas pedal.

When automobiles were first mass produced, each automobile was identical. Today when you order a car you have many choices – type of engine, type of interior, type of wheels, as well as options such as a sun roof, compact disc player and anti-theft security system. These choices are made possible through a technique called flexible manufacturing. Although each car coming down the production line is the same make and model, each one is also a unique. Each car is configured with a different set of features based on the needs and preferences of the customer. Through flexible manufacturing, the production line is capable of producing many variations of the same automobile without the need for retooling.

A software factory applies the same concept of flexible manufacturing to software development.  A software factory is a development environment configured to produce a specific type of application quickly and efficiently. The factory provides the tooling and guidance to rapidly develop a family of applications.

Each software application belongs to a class of applications; e.g., accounting system, word processor, ecommerce web site, etc. Within that class there are common features and variable features, in the same way that automobiles have required features and optional features.

The software factory combines a core set of common features with variable features that you select and configure. Once you have your custom feature set specified you use the software factory to automatically generate an implementation. You then manually tailor the implementation as needed to produce the finished product. In this way the software factory is a flexible manufacturing environment for software.

A software factory allows you to build software through mass customization, the ability to produce a range of similar applications by simply selecting the feature set for each application from a pre-defined set of features. This approach leads to economy of scope, where you achieve a significant increase in efficiency by leveraging reusable assets to build a variety of similar products.

posted on 8/8/2006 5:28:44 PM (Mountain Daylight Time, UTC-06:00)  #    Comments [1]
 Wednesday, March 22, 2006

The first-ever Boise Code Camp was a huge success! It was an all-volunteer effort based on the Code Camp Manifesto. There were 35 presentations on a variety of topics, and the 138 attendees gave it a big thumbs up. I thoroughly enjoyed the event, both as an attendee and a presenter.

As the lead for the methodology track I had the honor and privilege of moderating a panel discussion that explored methodology from several angles: people, environment and tools. The panel members were (from left to right) Dan Ray (Healthwise), Doug Seven (Microsoft), Kevin Call (Micron Technology), Jason Grundy (Treetop Tech), David Starr (Healthwise) and Jim McKeeth (Washington Group). These guys had a wealth of experience to share, and the audience came up with some great questions and observations as well.

I also gave a 90 minute presentation on Software Factories that included a demonstration of the DSL Tools as well as a demonstration of the Guidance Automation Toolkit. The presentation included a discussion of Software Product Lines and also covered the software factory process. Apparently the audience thought it went pretty well, giving the presentation an average rating of 8 out of 9.

 
 

posted on 3/22/2006 9:43:22 AM (Mountain Daylight Time, UTC-06:00)  #    Comments [6]