Software Engineer’s Blog

Software Engineering weblog

Elements of engineering discipline

As per IEEE definition, software engineering is “systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software”. There is still ongoing debates on how much engineering can apply to software development, and what would applying engineering mean.

Let us put it this way. Being “systematic, disciplined, quantifiable” is more of a business need. As software is getting increasingly pervasive to every aspect of life, business wants software development to be more repeatable and predictable.

Computing, business and software development environment has been undergoing drastic changes. We have attained some level of repeatability and predictability in software development though that may be far below the level desirable from business standpoint. This was due to untiring efforts of many great brains.

Looking back, what helps us towards being “systematic, disciplined, quantifiable”? “repeatable and predictable”?

I would classify progresses into following categories, with progress made in each of them:
1. Processes (who does what and when) and methods (how)
2. Standards (with standards like CMMI levels on one side of the spectrum and coding standards at the other side)
3. Proven practices (Harvest success patterns)
4. Tools (Software tools that help us do our work better and faster)
5. Metrics (Measures helping in objective observation and decision making)
6. Body of knowledge
7. Code of ethics

These are what I am calling elements of engineering discipline.

Let us not have any illusions.

Methodology/process wars are far from over. Proliferation of programming languages would continue. Computing technologies would continue to evolve.

There is a long way to go before software engineering would stabilize as a true engineering discipline but essential ingredients are getting to be in place and there is business need…

Let us move on


August 21, 2009 Posted by | Agile, Rational Unified Process, software engineering, Unified Process | Leave a comment