Michael Jablonski

June 18, 2021

Cartography and Software Design

In the early days of the American Civil War the confederate general Andrew Jackson summoned Jedediah Hotchkiss, a cartographer, to make a map of the Virginia’s Shenandoah Valley. One requirement was for the map to show “… all points of offense and defense.”  Hotchkiss made a detailed map, which Jackson used to confound the Union forces, keeping the federal armies away from Richmond, the capital of the Confederacy. 
 
By contrast, the Union generals had no clue about the layout of the land and Jackson prevailed against the Union armies, using his map to outwit them. Jackson used the map to rapidly move his forces from one strategic place to another.
 
Like using a map, writing a software requirements document is essential to successful software design. You should never start writing your computer program until you know what it is supposed to do. 
 
Like Jackson wanting to know “all points of offense and defense,” a requirements document should show all the interfaces to the program and all inputs and outputs. 
 
Without a requirements document, your program may very well do something, but it may not be what the customer wants and needs.