Re: Difference between Design and Architecture



On 2006-05-18 13:31:03 -0500, Bjorn Reese <breese@xxxxxxxxxxxxx> said:

Cody Powell wrote:

2. But we have learned that the kind of unit tests and acceptance
tests produced by the discipline of Test Driven Development are much
more important to flexibility, maintainability, and scalability.
[...]
-- Robert Martin,
http://www.butunclebob.com/ArticleS.UncleBob.ArchitectureIsaSecondaryEffect

Why is TDD much more important to scalability than architecture?

Why is scalability a problem? Because when you attempt to increase the capabilities of an application you must decouple parts of it that you hadn't thought about decoupling previously. You must break the application into pieces that can be positioned approriately within a larger and faster physical architecture.

When you break the software up like this, you also break the software. You introduce bugs that can be very hard to find. However, if you have written the application using TDD; you have tests that can show you when you have broken functionality. Thus the tests allow you to make the changes with full knowledge of the side effects.

The tests are the lubricant that make the changes much more reliable. The tests also allow the changes to be made incrementally. Thus TDD is a major aid to scalability.


--
Robert C. Martin (Uncle Bob)  | email: unclebob@xxxxxxxxxxxxxxxx
Object Mentor Inc.            | blog:  www.butunclebob.com
The Agile Transition Experts  | web:   www.objectmentor.com
800-338-6716                  |



.



Relevant Pages

  • Re: Difference between Design and Architecture
    ... or are you implying that TDD is the only way to produce tests? ... also a way to decouple systems which, incidentally, makes them more ... This decoupling enhances scalability. ... architecture, and architecture is not more important that ...
    (comp.object)
  • Re: Difference between Design and Architecture
    ... or are you implying that TDD is the only way to produce tests? ... reliability is not scalability. ... However, restructuring is directionless, whereas architecture is ... easier to delay and defer. ...
    (comp.object)
  • Re: Difference between Design and Architecture
    ... if you have written the application using TDD; you have tests that can show you when you have broken functionality. ... Thus TDD is a major aid to scalability. ... You have argued, to use software architecture terms, that testability is ... However, restructuring is directionless, whereas architecture is ...
    (comp.object)