Wednesday, July 23, 2008

Deciphering software complexity - Cohesion, Coupling, threading and concurrent engineering

I was just curious to understand software complexity & concurrent programming...increasingly so as I was encountering several deals where there is a requirement for software concurrent engineering to reduce cycle time from requirements to production deployment especially in AD engagements. It reminded me of the complexity assessment throuhg dependency matrices and application of DSM technique expounded by my former collegue Navneet. It reminded me then to look into cohesion, coupling, concurrent engineering and cyclometic complexity topics in software engineering that I learnt long back while in college. I never got the time to look at it, except for now as I was thinking of a novel approach to handling this problem and write a paper!

Cohesion is defined as the closeness of the relationshio between its components [Ian Somerville on Software engineering]. There are 8 difeerent levels of cohesion in order of increasing strength: Coincidental, logical association, temporal cohesion, procedural cohesion, communicational cohesion, sequential cohesion, functional cohesion and object cohesion.

Coupling is the strength of interconnectedness between the components during design.

In general a reduced software complexity requires high cohesion and loose coupling.

For concurrent engineering perpective one can look at how multi-core processors are handling concurrent execution. This takes me back to the basics of concurrent execution and synchronization basics [Terrence W Pratt, Programming language] I read while at college. Concurrent execution is facilitated through syncronization techniques such as interrupts, semaphores, guarded statements, multi-tasking and so on. Now the paradigm for concurrent execution has shifted with multi-threading and the concept boosted with multi-processor and multi-core systems.

What of the above technique can we use to address software complexity and concurrent
software development?

2 comments:

  1. Hi Sunil

    Please look at the application of coupling and cohesion at triz journal here - http://www.triz-journal.com/archives/2008/06/04/

    You can download the more detailed version as pdf from http://www.aitriz.org/index.php?option=com_content&task=view&id=99&Itemid=45

    These two papers define a measure of software complexity on the basis of system complexity estimator.

    ReplyDelete
  2. I like your SCE and used it briefly. Back then I expressed my reservations on the model. Thanks for sending me the URL for the detailed paper. I'll read it again, but would reserve my rights to think differently and challenge it :-)...

    ReplyDelete