Software Engineering and Strandbeests
2013-08-07
How to expose students to the multidimensional nature of Software Engineering processes? May be making an analogy with the Strandbeests, an ingenious blending of art and engineering.
As a Software Engineering (SE) teacher I've to think about the planning of the course. Many times, this lead to ask myself how to make young practitioners experience a genuine software development process and appreciate the relations and tradeoffs between all the processes of SE. SE is a multidimensional field that involve many overlapping and complementary processes from many subdisciplines.
Adjective: (adj) multidimensional (having or involving or marked by several dimensions or aspects) "multidimensional problems"; "a multidimensional proposition"; "a multidimensional personality"
Due to time and other resource limitations, most of the SE courses are organized in a linear way, having to make a selection and prioritization of topics following some arbitrary order. This artificial order may lead the student to think that in real projects those processes must be executed following that order, perhaps influenced by their algorithmic and mathematical backgrounds. Although there are good courses for specific SE topics, an advanced summary course that relates these topics to one other is still missing.
In short, the problem that we face as SE teachers is how to teach each SE subdiscipline, their processes and the multidimensional relationships between them in a linear way like in a university course.
While I was thinking about this problem, I remembered this photo of me with a Strandbeest and the analogy between SE and "this new forms of life" came to my head.
Strandbeest on ArtFutura 2012, Montevideo, Dec 2012
The Strandbeests
Theo Jansen has been creating Strandbeest (Dutch: strand=beach; beest=beast), wind-walking examples of artificial life, since 1990. What was at first a rudimentary breed has slowly evolved into a generation of machines that are able to react to their environment: "over time, these skeletons have become increasingly better at surviving the elements such as storms and water, and eventually I want to put these animals out in herds on the beaches, so they will live their own lives."
Constructed as intricate assemblages of PVC pipes, wood, zip ties, rubber rings, recycled plastic bottles and wing-like sails, Jansen's creations are constantly being improved and have become excellently adapted to their sandy beach environment. They are an ingenious blending of art and engineering.
Software Engineering
Software engineering (SE) is the application of a systematic, disciplined, quantifiable approach to the design, development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software.
In order to consistently develop software well engineered, the development must be conducted in an orderly process going from conception phase through to the delivery of a final software product. This process connects all the SE subdisciplines through their own processes, adding more complexity to the whole system.
The analogy
Strandbeest and SE processes have more in common than meets the eye.
Both are complex, multidimensional systems that initially seem to behave chaotically
Where would you start if you want to build a Strandbeest? Maybe you can start making some of the leg triangles connecting the rods with the joints; after making all the legs, they will be attached to the crankshaft. But why don't you start to put the crankshaft in the center (it seem to be a core part of the beast) and then attach every piece to it, joining this pieces by their joints?
Now think about SE subdiscipline processes... Which one will be the first to be teached? Maybe you can start with Software Requirement processes because they represent a logical first step to build software, and then continue with the other processes. But why don't you start with Software Quality processes, that traverse all the SE subdisciplines, and then continue with some of the main processes implicated in the software development itself?
For me, the answer to this question is that no matter where you start to teach (or build), you have to expose how the whole system works if you want your students pay attention to the small details of every small component. You have to show the relationships, how each part articulate with the other and how each one trusts in the designed behaviour of the other. As teachers we must develop cross subdiscipline activities and excercises in order to expose the relationships between their processes.
Internally, they are made of simple components that can be analyzed individually
The Strandbeest, no matter it size, can be divided into small and simple parts. Once you have that small part you can analyze how to join with the next sibling understanding how they work together.
You can do the same with the SE discipline. No matter how complex it appear to be, you can divide it in subdisciplines, each one with their own processes. We must teach a this granular level but we can't forget that this small parts work together with others and this collaborative work is the key to the success of the whole system.
The whole system works as expected if all components do their job in the right moment
Coordination. The Strandbeest is collosal example of it. Thanks to a supple coordination of 12 identical legs, the body of the machine moves smoothly forward as though the legs were simply complicated wheels. For every foot that lifts off the ground there's another that touches back down, and the flurry of trading steps produces a centipede's gait that's simultaneously enchanting and intimidating.
The same happens with SE!. It is based on many interdependent processes involving many interacting stakeholders with conflicting interests and points of view. The management of dependencies between stakeholders activities corresponds to the coordination process.
You can't describe how the system works as a sequence of simple steps
As I said before, in both cases that is completely true. Maybe this is not too bad, because it push you to think about how to explain the complexity of this systems in easier ways. Moreover, it push you away of the "kitchen recipes" courses and ask you to teach more about the scientific basis of each piece what make them interact gently. This is the way that will let your students ask you, and to themselves, better ways to accomplish the same using better (or simpler) processes.
Both are blends of art and engineering
Finally, many discussions about if SE is an art or an engineering field have taken place. We don't want to enter in that discussion, but in the sake of continue with our comparison, maybe you can't say that Strandbeest are only art. You only have to think about all the math and physic concepts that are around each of these beasts.
Jansen says: "The walls between art and engineering exist only in our minds."
Acknowledgments
Over the last years I've picked up and stolen many good ideas from many good people. Most of these are lost in the dimness of my memory. But I do remember that my photograph with the Strandbeest was taken by my friend Alejandro (Lalo) on the ArtFutura 2012 held on Montevideo.
Significant Revisions
Aug 7, 2013: Original publication on dariomac.com