Stuff I Say
 

Author Archives: Jeff Coble

Reviewing the Twitter API

I’ve spent the last couple of days reviewing an excellent tutorial presentation on the twitter API.  It looks like twitter provides an extensive REST web services API.  I also ran through the examples in the tutorial using curl and twurl.  It took some time to get twurl install on my Ubuntu box because of a mismatch in the version of rubygems that was installed via the synaptic package manager, but I eventually got that resolved through some creative google searching.  In the [...]

New Social Networking Project

I’ve decided to kick off a new personal software project to explore the convergence of social networking technologies, software as a service (SaaS) and graph-based data mining (my doctoral dissertation topic).  Specifically, I’m looking at ways in which meaningful patterns can be discovered by combining the unstructured text data (e.g. tweets, status updates, etc) with the structured data (relationships to people, events, places, etc) created in social networking technologies like Facebook and Twitter.  At present, it seems that Facebook offers [...]

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 [...]

Applying Iterative Development Methodologies to Large Software Projects

I wrote previously about my effort to develop a project schedule for a large software effort and alluded to my use of Time Boxing. In this post I’ll explain my interpretation of Time Boxing and describe some questions I still have with respect to applying the technique to large projects. When I was given this scheduling task I spent time researching software project management approaches and came across a good discussion of Time Boxing versus Scope Boxing in Bittner and [...]

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 [...]