Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>There is something to be said about 'Designing Big Complex Systems' that should not be associated with TDD - <em>especially</em> when TDD is interpreted as 'Test Driven Design' and not 'Test Driven Development'. </p> <p>In the context 'Development', using TDD will ensure you are writing <em>testable</em> code which give all the benefits cited about TDD ( detect bugs early, high code:test coverage ratio, easier future refactoring etc. etc.)</p> <p>But in 'Designing' large complex systems, TDD does not particularly address the following concerns that are inherent in the architecture of the system </p> <ol> <li>(Engineering for) Performance</li> <li>Security</li> <li>Scalability</li> <li>Availability</li> <li>(and all other 'ilities')</li> </ol> <p>(i.e. all of the concerns above do not magically 'emerge' through the "write a failing test case first, followed by the working implementation, Refactor - lather, rinse, repeat..." recipe). </p> <ul> <li><p>For these, you will need to approach the problem by white-boarding the high-level and then low-level details of a system with respect to the constraints imposed by the requirements and the problem space. </p></li> <li><p>Some of the above considerations compete with each other and require careful trade-offs that just don't 'emerge' through writing lots of unit tests.</p></li> <li><p>Once key components and their responsibilities are defined and understood, TDD can be used in the <strong><em>implementation of these components</em></strong>. The process of Refactoring and continually reviewing/improving your code will ensure the low-level design details of these components are well-crafted.</p></li> </ul> <p>I am yet to come across a significantly complex piece of software (e.g. compiler, database, operating system) that was done in a <strong>Test Driven <em>Design</em></strong> style. The following blog article talks about this point extremely well (<a href="http://ravimohan.blogspot.co.uk/2006/06/compilers-tdd-mastery.html" rel="nofollow noreferrer"><strong>Compilers, TDD, Mastery</strong></a>)</p> <p>Also, check the following <a href="http://skillsmatter.com/expert/agile-testing/simon-brown" rel="nofollow noreferrer"><strong>videos on Architecture</strong></a> which adds a lot of common sense to the thought process.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload