When we start designing a big system we might also think on how to split our solution in sub-systems. We can end-up having a lot of sub-systems with different dependencies. The same thing will happen if we start splitting a sub-system in components, we will have a lot of components with different dependencies.
How we can represent these dependencies in a simple and clean way?
I saw different solutions where you can end up with complicated schemas or with trees. Both solutions are complicated to read and people with spend some time understand these dependencies. X depends on Y and Z and so on.
This month I read “Software Architecture in Practice” written by L. Bass, P. Clements and R. Kazman.
I discovered a great and simple way to represent all these dependencies. Dependencies can be represented in a simple table where we will have on diagonal our sub-systems, or different components.
Each input resource that is needed by a sub-system will be on columns. Each resource will be placed in the cell of the row that offers these resources. In the same row, around our sub-system we will be able to see the output of our sub-system and what are sub-systems that depend on our sub-system.
In the following example we have 3 sub-systems. Aircraft System Group (ASG), Avionics Group (AG) and Environment Group (EG). We can observe very easily that the EG depends only on the AG and he need the Ownship and Emissions from it. Also the output of this sub-system is used only by the AG that use the Environment and Emitter Data input.
This example is taken from the book.
As we can observed it is very easily to understand how each sub-system and component interact. Based on this table we can see what sub-systems have a lot of dependencies. Also when we want to change a sub-system we can easily identify the sub-systems that may be affected of this change.
I encourage you to try this approach. If you have time, I really recommend to read the book.
Monday 11 February 2013
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment