Bad Software Architecture

Leave a comment

March 22, 2010 by huionn

This serves as revision of what I read recently…

  1. No architectural design – Initially, a software system may be built by a few developers concurrently and then all works are integrated together. As developers develop their parts independently, there are a lot of code duplication…
  2. Incomprehensibility – the system is too complicated to comprehend which is directly caused by factors below…
  3. Lack of cohesion – as there is no clear architecture, developer put all functionalities close to the codes they are working on for convenience. Sometimes, the developers require an existing functionality with minor modification. The “safest” way is to copy & paste the original codes into the developers’ module and modify it. This is because changing the code may break its dependencies in unpredictable ways. As a result, the module (class) has low cohesion and tend to have a lot of dependencies (which lead to problem below)…
  4. High coupling (there are two types of coupling, intentional coupling and accidental coupling) – High accidental coupling hinders testing and reusing code and makes understanding it nontrivial…

Problems outside the code

development team – new recruits cannot understand the system, old staffs have to work hard and cannot withstand the stress => high turnover

slow development cycle – rigid software is hard to enhance and extend

support team – every release causes new bug => maintenance nightmare


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: