For myself, I can’t really differentatite between Modularity, Decomposition, Abstraction and SoC.
In my mind, Modularity is the over arching princinple. Abstraction is the depth of modularity and SoC is the width of modularity
Anyway there are a lot of similariteis between software design and organisational design, so much so that when the design is wrong, the same errors occur. Today I am going to do a paraody of design gone wrong because I feel like doing something relaxing on a sat night.
As we know exceptions have to be caught and thrown in Java, but what happens if an exception is raised in a organisational context?
So The 5 key ingredients are:
1. Abstraction and Information Hiding
Approach wrong person to do task A
This is a minor detail, ask XX to handle it.
I have to ask my boss. I have no decision power on this.
2. Separation of Concerns (SoC)
Approach wrong department to do enquire about how to do B
I do not handle this. You have come to the wrong department, I can’t help you. Please hold, Let me transfer you to XX department
Call Function SoC(enquiry that will never get anywhere);
3. Modularity, Decomposition
I can’t think of anything for this? COntributors?
Never follow instructions to the letter.
Argh, I told you you have to give me the original and 2 photocopies. On the photocopy you must chop certified True copy. This is wrong, I can’t process this.
5. Design for Change
Explaining to top management that the company needs a facebook app.
”This is not the way that we do things. We have done it this way for 10 years. Anyway people can go to our website.”
”What’s this new facebook thing? Why spend money on something no one will use.”