Software modeling (especially the State Diagrams, my favorite), and modularization certainly helps breakdown a complex software architect and enable multiple teams to work together. It is essential nowadays because most of the development organizations I know have their Engineers scattered around the world. It is next to impossible to make them work together efficiently without modeling/modularization.
However, one concern from the embedded world is the overhead, more specifically, the static overhead -- memory footprint inflation, and dynamic overhead -- performance penalty. My observation is it is possible to keep this overhead as minimum as possible, or even make it zero by using compiler preprocessor (#defines). For example, a "#define FUNC func(); " decouples the logic but does not impact the compiler output.
Another observation is even if the modeling/modularization caused some overhead. There are more overhead if 2 teams are working on the same issue but located at opposite side of the planet. They will create duplicate resolutions, and sometimes even worse, create the third resolution to resolve issues from combining the previous 2 resolutions.
No comments:
Post a Comment