Hitchhiker's Guide to Software Architecture and Everything Else - by Michael Stal

Friday, December 22, 2006

Design Erosion

Most software systems start with a clean and comprehensible software architecture. But then, developers are often forced to add or change the system under increasing time pressure. After a while the system is polluted with workarounds. The strategic core architecture becomes vague or even completely lost. Design erosion has caused a breakdown of the original software architecture. Is this the normal way of an architect's life or did we simply fail? In the waterfall model design erosion will be inevitably caused by architects trying to cover all requirements at once, which we call big bang approach. As you know, in a sufficiently large system you can never anticipate all requirements. Thus, you can never come up with a sound architecture in the first place. From my viewpoint, this problem illustrates why agile processes are not an alternative but a must. In order to cope with these challenges, we have to embrace change. Change will definitely happen. Hence, we as architects must open our software systems to allow tactical extensions. Using additional use cases or when priorities are changing, then even the strategic design might be subject to change. Refactoring will hence be an important tool for architects. As implementation and architectural soundness must go hand in hand, applications such as Sotograph will enable architects to make sure that the implementation does not violate architectural guidelines and conventions as well as quality aspects. But this is only the tip of the ice berg. Testing, organisation issues, and many other aspects play an important role. It is possible to prevent design erosion, if your process model, organization, methods, and tools are appropriate. In product lines this factors are even more important because of the significantly larger impact of any change. In some circumstances, however, requirement changes caused by new business models, technologies or desired features might be too far-reaching. In these cases, it is sometimes much more effective to throw away the old system and build a new one from scratch. "Throwing away" does not mean that you should throw away your well-proven best practices or experiences. Just ged rid of the old software system, not of your expertise. As a consequence, a good project will enforce the documentation of best practices (e.g., domain models or DSLs, patterns, guidelines). Design erosion is also a good example that all those comparisons of software engineering with other disciplines are often like comparing apples and oranges. For instance, when building a house no one would ever come up with proposals such as adding additional rooms or floors after construction is completed. But people tend to think software engineering should support exactly that kind of flexibility. That is also the reason why software engineering, especially designing a software architecture is a really tough task.

12 Comments:

  • This comment has been removed by a blog administrator.

    By Anonymous Anonymous, at 5:58 PM  

  • This comment has been removed by a blog administrator.

    By Anonymous Anonymous, at 5:19 PM  

  • This comment has been removed by a blog administrator.

    By Anonymous Anonymous, at 1:35 PM  

  • This comment has been removed by a blog administrator.

    By Anonymous Anonymous, at 6:28 PM  

  • This comment has been removed by a blog administrator.

    By Anonymous Anonymous, at 9:40 PM  

  • This comment has been removed by a blog administrator.

    By Anonymous Anonymous, at 2:04 PM  

  • This comment has been removed by a blog administrator.

    By Anonymous Anonymous, at 5:24 PM  

  • This comment has been removed by a blog administrator.

    By Anonymous Anonymous, at 2:40 PM  

  • This comment has been removed by a blog administrator.

    By Anonymous Anonymous, at 4:55 PM  

  • Hi Michael

    Interesting post which I tried to trackback to. Just in case I got the trackback wrong, my post is at http://www.workforceinabox.com/?p=16

    Best regards
    Alastair

    By Anonymous Anonymous, at 10:27 AM  

  • A car amplifier will give you a loud and clear sound on a consistent basis. It will boost the power flowing from the

    receiver to the speakers. In doing so, it will reduce the stress put on all the other components of your car stereo

    system, including the receiver.

    Choosing the right car amplifier is important. Your decision should be based on five important features. Make sure you

    address them all !

    The first item on the agenda is the number of channels. This will depend on the number of speakers in your system.

    Two-channel amplifiers will feed well two speakers or a single subwoofer. You will want to consider a four-channel

    amplifier if you have any of the following combinations :

    By Anonymous Anonymous, at 11:56 AM  

  • Hi Michael,

    First and most important: I found it very hard to read such long text without even paragraphs or empty lines.

    I came upon this post when looking for information on design erosion, what it is (some official definition, publications) how to deal with it.

    While your post offered some points, they were rather shallow. Now that's not necessarily a bad thing, but in my case I just had very high hopes. :-)

    I however wanted to thank you for including the paragraph about software architecture being DIFFERENT from it's construction-related, home (and others) building namesake. That's a metaphor that I am hit with way too often - thank you for being one that disputes it rather than accepts!

    Out of curiosity: why do you keep the "comment deleted"? At first glance this was off-putting, kinda messy. Like not fully finished cleaning.

    Of course, these points are just my opinion!

    Thank you for offering some food for thoughts and general pointers, as well as for mentioning Sotograph - I had not known about it.

    Have you tried just Sotograph or perhaps whole "Sotoplatform"?

    http://www.hello2morrow.com/products/sotograph

    And if you were to choose between Sotograph and Sonar, which would you choose (and why)?

    regards,
    LAFK

    By Blogger LittleAncientForestKami, at 4:15 PM  

Post a Comment

<< Home