When discussing and thinking about the engineering of software, I often think in terms of solid engineering. What I mean by this is the dictionary definition of solid: something strong and stable, well made and dependable. Experience brings with it insight into patterns of construction, and an ability to recognize the wisdom that others share. Certain things in software development occur again and again, and these often have an available solution that will increase the dependability and stability of the whole codebase, proven through unit testing.

There is another meaning to solid engineering, however. There is an acronym that applies to object-oriented software: SOLID. These refer to five principles that, if followed, result in clear objects that will work together well. From the time of Uncle Bob’s introduction, these codified ideas have spread through the C++ world, and over to the Java world. These principles are taught in Object Oriented classes, but by giving them a simple acronym, they are easily organized and discussed.

Over the coming days and weeks, I’ll be going over these topics one letter at a time. Solid object oriented engineering encompasses these ideas, and they make for a good starting point to discuss further the ideas that allow for a good, stable basis on which to build a well constructed application.

First up: the letter S.