The Artima Developer Community
Artima Weblogs | 's Weblog | Discuss | Email | Print | Bloggers | Previous | Next
Sponsored Link

Context-Sensitive Engineering
The Holistic Approach to Software Engineering as a Way to Handle Complexity
November 16, 2010
Complexity entails completeness! The software industry should admire and support a holistic approach to software engineering. Unfortunately, the industry does not herald a holistic viewpoint, since the software industry has a wrong treatment of complexity. This has to be changed!



A week ago, I have talked in a webinar about software engineering and the IEEE Certified Software Development Professional certificate. The whole webinar was recorded, and it is hosted by the organizer Dr. Heinz M. Kabutz on his server. See the resources section for a download link, or click here.

My essential message was that the software industry should admire and support a holistic approach to software engineering. Such ‘people centric’ attitude is the sole way to guarantee success, and deliver high quality products to end users. People are the key in the software engineering profession, and this should be clearly emphasized! Certificates (like IEEE CSDA/CSDP) are one way to reach in a well guided fashion the desired level of proficiency in the field of software engineering.

Changes on the Horizon

Nowadays, we may hear voices about redoing things, i.e. changing current practices, in the software industry. Let me just give you a couple of hints:

Complexity Revisited

By my opinion, the software industry has come to the critical point where it needs to admit and correct errors made in the past. In other words it is a time for a change! I think, the biggest mistake in the software industry, and hence the urgent need for a change in this respect, is associated with the improper treatment of complexity. From the outset, the industry got intimidated by the vast complexity inherent in software development. However, it was not complexity what had caused great havoc in the field, but the amiss handling of that complexity. Instead of being proud on that complexity, the industry even now feels ashamed about it!

If we look into the past (not quite huge past actually) we may notice one general tendency in our field: a constant attempt to hide complexity and marketing that software development is affordable to everyone! What a waste of energy, I would say! Just imagine where medicine would be today, if they would had invested a stupendous time, money and resources to find a way to make “Hello World!” type surgery (like, appendectomy) doable by any fool! Would that be a nice world to live in?

That same complexity is also hidden from end users, too! All complexity what they in fact perceive about a software product is solely the complexity related to the user interface, i.e. to the usage of the software. They do not have a feeling what is under the hood! Take, for example, some other engineering discipline, like mechanical engineering. Let us consider a car, as one representative product. It surely has a very simple user interface; otherwise only few would be able to drive it. Nevertheless, people can always open the engine hood, and sneak a quick look at the underlying complexity. There is no such thing in software. As a consequence, lay people think that building software should not be so hard, after all. Imagine their standpoint, especially after they manage to write their first “Hello World!” program, and successfully run it on their computer! They immediately get courage even to start quarrelling with professionals!

I’m not saying here that complexity should not be reduced were possible in order to better cope with hard problems. I’m just emphasizing that the software industry should not foster blunders that developing software is easy! Software development is a complex task! This must be the starting point! The industry should not buttress anymore those directions whose sole purpose is to reduce complexity just in order to make software construction possible to everyone. The industry must change the course, and reduce complexity primarily for professionals to be able to cope with hard task! Of course, everyone will have been welcome to such a transformed industry, but the decision regarding who is capable to really contribute even a simple program would be in the hand of natural selection instead of sales people. Only the most fitted ones would be able to join!

What should be the next steps?

  1. To accentuate loudly that software development is a complex endeavor!
  2. To highlight the fact that complexity entails completeness!
  3. To start educating software people that only a holistic approach to software engineering is the right way to go in order to triumph over the current “software crisis”!
  4. To get people certified!


Robert L. Glass, Facts and Fallacies of Software Engineering, Addison-Wesley, 2003.

JavaSpecialists - IEEE Certified Software Development Professional:

The Resurgence of Parallelism:

Expanding CS Education:


Talk Back!

Have an opinion? Readers have already posted 74 comments about this weblog entry. Why not add yours?

RSS Feed

If you'd like to be notified whenever adds a new entry to his weblog, subscribe to his RSS feed.

About the Blogger

In his professional career, Ervin was mostly involved in developing large-scale distributed enterprise systems. He is an expert for object-oriented programming, functional programming, aspect-oriented programming, and pattern-based software development. He is a fan of agile methods. Ervin is an Owner/CEO of a software consulting and training company D.O.O. "EXPRO I.T. CONSULTING" KIKINDA (

This weblog entry is Copyright © 2010 . All rights reserved.

Sponsored Links


Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use