Sunday, November 12, 2006

What is Software Engineering?

Half the battle in any discussion is nailing down what is the same and what is different. It is easy to disagree about pretty much everything while having lots of common ground, or conversely to agree in words while having significant underlying differences.

The Guide to the Software Engineering Body of Knowledge serves as a foundation for the accreditation of university curricula, the licensing and certification of practicing software engineers, and raising software engineering toward a professional status.

Lessons learned and sometimes forgotten include Coplien's Commonality Variability Analysis (*). David Parnas warns about forgetting the past and being doomed to repeat the same mistakes. Tom Demarco, Barry Boehm, Fred Brooks, Edward Yourdon, in addition to Grady Booch, Martin Fowler, Robert Martin and others, have much to teach us through their writing.

It is important that software engineers recognise the context in which they work:
  • Management. In particular, risk management, mitigation and minimisation.
  • Metrics. Formal and informal. How to measure success at each step of the way.
  • Planning, estimation and reporting. Keeping stakeholders informed, onboard and happy.
(*) My good friend and colleague Gian introduced me to Commonality-Variablity and taught me a lot about interface and class design, among other lessons in life.

0 Comments:

Post a Comment

<< Home