Stuff I Say
 

Category Archives: Software Engineering

Building a Glassfish Monitoring Client Using REST

The GlassFish 3.1 Application Server provides a REST web service interface that enables service consumers to access administrative and monitoring features.  Although GlassFish’s web-based admin console is generally regarded as one of the better app server consoles, in my experience with previous versions of GlassFish, there are some cases where the web console can be difficult to use.  For example, during clustered server failover scenarios, the web console will freeze until the network connection times out, which can take a minute or two.   To allow [...]

5 Ways To Improve Netflix

I am an avid user of Netflix‘s “Watch Instantly” feature, but I believe Netflix is a market leader in danger of becoming a follower.  For a cautionary tale, revisit the history of digital music and the role of Napster.  Digital music is now ubiquitous, but Napster, the pioneer who initiated the online distribution trend and wrestled the distribution monopoly away from the brick and mortar music industry, no longer has a significant role in the distribution medium it created.  We’re now on [...]

Architecting for the Cloud

My intention is for most, if not all, of the software I write for this project to run on the server side.  I plan to expose a RESTful Web Service API to consumers, which will authorize my software to retrieve their data from social networking sites and in return provide highly tailored recommendations for movies, books, businesses, etc, and connections to other social networking users.  I’ve outlined the project’s objectives here.  I’m now examining potential server side architectures and prototyping [...]

Historical Challenges of Large-Scale Software Development

One of the most often cited bodies of software engineering literature is a book entitled The Mythical Man Month, written by Dr. Frederick Brooks and first published in 1975.  The book chronicles his experiences managing the IBM OS/360 project during the mid 1960s, which was one of the earliest large-scale software development efforts.  The cover art for the book is a mural of the La Brea tar pits and the opening chapter includes the following passage, which nicely summarizes the [...]

What is a Software Development Process?

The term “Software Development Process” is used so often its meaning has become obscured.  We all know we should have one but what exactly is it?  In my experience, there are two elements that comprise a process – the first is the specific methodologies by which we perform Requirements Analysis, Design, Development, Integration and Test activities, and the second is the way in which those activities are structured over the project duration.  I’ll start with an explanation of the second [...]

Enterprise Software vs. Real-Time, Embedded Software

I work on a project that involves both real-time, embedded software development and enterprise software development and for some time I have been thinking about how to characterize the differences between the two disciplines.  I have observed that in practice these disciplines usually attract engineers with different backgrounds and training and seem to require different management approaches. Real-time, embedded software engineering has unique challenges related to guaranteed performance with precise timing requirements, diverse hardware interfaces and often must be concerned [...]

Software Product Lines

For the past several years I have been interested in applying software product line development techniques to the domain in which I work (unmanned air vehicles).  Specifically, I’m interested in applying these techniques to the development of Ground Control Station software. The concept of a software product line is well established in the software industry and a significant amount of academic and case study literature is available for review.  The basic idea is to develop a core software product where [...]

Software Project Scheduling

I was recently asked to lead a team to create a project schedule for all of the software work on an enterprise software project. This particular project is very large and includes multiple subsystems provided by several subcontractors as well as a significant amount of development and integration by our own internal team. Suffice it to say, project planning is not my area of expertise. I am a computer scientist, not a project manager. Nonetheless, this task is mine. Our [...]

The Importance of Defining an Organizational Structure

Many people – myself included – feel there is something a little unsavory about the whole concept of a defined organizational structure. After all, we’re responsible professionals, so why do we need to bother with establishing a pecking order? Why not just take the “let a thousand flowers bloom” approach and pick the best ideas from the available options that emerge? Some environments do lend themselves to this egalitarian approach, but large-scale system development isn’t one of them. And a [...]

Gutless Estimation

If I could assign one passage from Brooks’ tome to be read by Program Managers on both the customer and contractor sides of all DoD/IC programs, it would be the five paragraphs entitled “Gutless Estimation.” The issue cannot be restated any better than the original text: Observe that for the programmer, as for the chef, the urgency of the patron may govern the scheduled completion of the task, but it cannot govern the actual completion. An omelet, promised in two [...]

The Mythical Man Month – Lessons Unheeded

In 1964 Dr. Fredrick Brooks assumed the role of manager for IBM’s OS/360 development effort. Arguably one of the most complex software systems of its time, OS/360 is the progenitor of IBM’s modern family of mainframe operating systems. After his tenure at IBM, Dr. Brooks joined the Computer Science faculty at the University of North Carolina where in 1975 he penned “The Mythical Man-Month: Essays on Software Engineering” in which he describes the lessons he learned about managing large-scale software [...]

Large-Scale Software Systems

I started this blog as a venue for my stream of consciousness on topics related to the development of large-scale software systems. I work as a Software Systems Architect designing and building software systems for the Defense and Intelligence communities, who require systems on scales paralleled in very few other industries. For several years I have followed the efforts of the Software Engineering and Project Management communities and read much of the literature describing approaches to software engineering processes, process [...]