1

Topic: TDD: why it arose?

Esteemed here the book about TDD, and thought of its value and generally what for it is necessary. As it is known, technologies pr-va a software - how many not a science, and the dial-up of the mechanical skills powdered by a thick layer by nothing confirmed  and marketing. In this case I was attracted with the thesis that TDD is created not so much for testing, how many for incremental creation of design, laconic, clear and simple for the further changes at any moment of development. And units-tests form as ghost effect, the useful bonus. But if to look at those examples which are resulted as an illustration of process with usage TDD, at all architectural changes imported to the code in the course of refactoring on each cycle TDD, it is possible to fulfill with the same success without everyone TDD simply drawing charts on a paper, considering limitation of this or that architecture, and importing to it changes in . With the above-named principles (laconicism, simplicity of change, ). I.e. For any sequence of changes in frames TDD there is a sequence of changes in frames of traditional charts in style UML. Only in a case with UML the design documentation, instead of units-tests as a result turns out. And since application TDD at all does not replace application of the best an expert (the patterns which have been checked up in practice receptions of implementation of OOPs-systems in specific language), it is not becomes clear why TDD it is presented as changeover to the traditional approach in software designing? Well type "already nobody draws charts, and it is fashionable  and TDD".

2

Re: TDD: why it arose?

If to me does not change storage, at Kent Beka in the book "Extremal programming. Test-driven development" all not absolutely so, and even at all so. Test-driven development (aka TDD) is fulfilled in 2 steps: on the first step writes the specification in the form of the test and the test by the most simple and naturally is forced to be fulfilled, on the second step - we do refactoring.  with application of templates i.e. to divide here designing and TDD it is incorrect. TDD in this case support and protection against the fool (that quickly not  and not to make operation "on get rid"), in my opinion, is faster. Also it is not necessary to forget that well  the system - is well and easily tested (it should be one of a software solution feature), and writing of tests and allows to hold code base in a state "good" .

3

Re: TDD: why it arose?

Hello, student __, you wrote: __> it is not clear, why TDD it is presented as changeover to the traditional approach in software designing? Well type "already nobody draws charts, and it is fashionable  and TDD". Because presently all new (or dug out of chests old) is always presented to those who invented or dug out, as the revolution changing the world. And especially, such powerful experts in marketing as Bek, Sutherland, etc. do not pay attention. TDD it is simple one of tools which in any cases approaches well, in any is bad. For architecture creation, in particular, it is bad in  parts of cases. And for support and support simplification  freedom at code modification - more often just approaches well.

4

Re: TDD: why it arose?

Hello, vmpire, you wrote: V> Hello, student __, you wrote: V> TDD it is simple one of tools which in any cases approaches well, in any is bad. V> for architecture creation, in particular, it is bad in  parts of cases. V> and for support and support simplification  freedom at code modification - more often just approaches well. At me such sensation that most of all TDD approaches for very small commands, in an ideal with unique . I cannot present to myself as it is possible to organize operation of several persons when stages of cycles TDD so are tightly dependent from each other.

5

Re: TDD: why it arose?

Hello, vmpire, you wrote: V> Hello, student __, you wrote: __>> it is not clear, why TDD it is presented as changeover to the traditional approach in software designing? Well type "already nobody draws charts, and it is fashionable  and TDD". V> Because presently all new (or dug out of chests old) is always presented to that who invented or dug out, as the revolution changing the world. V> and especially, such powerful experts in marketing as Bek, Sutherland, etc. do not pay attention. V> TDD it is simple one of tools which in any cases approaches well, in any is bad. V> for architecture creation, in particular, it is bad in  parts of cases. V> and for support and support simplification  freedom at code modification - more often just approaches well. TDD it also other method of interaction with the customer. Classical TDD implies constant and tight interaction with the customer during all period of development. In an ideal - the representative of the customer is a command part. The purpose is setting of confidential relations that would not be such: "They there added only one new button, and the price flied up on 1000$" Here the customer sees as the project and what costs is implemented the executor carries.

6

Re: TDD: why it arose?

Hello, student __, you wrote: V>> For architecture creation, in particular, it is bad in  parts of cases. V>> and for support and support simplification  freedom at code modification - more often just approaches well. __> at me such sensation that most of all TDD approaches for very small commands, in an ideal with unique . __> I cannot present to myself as it is possible to organize operation of several persons when stages of cycles TDD so are tightly dependent from each other. Everyone does a part of the project and tests for it. Anything specially it is not necessary to organize. Well, unless, used  and architecture of integration tests if they are.

7

Re: TDD: why it arose?

Hello, Qulac, you wrote: Q> TDD it also other method of interaction with the customer. Classical TDD implies constant and tight interaction with the customer during all period of development. In an ideal - the representative of the customer is a command part. Aha, I about this "ideal" in every second book see about  and so on. Only here one problem: it does not work. At least, in outsourcing (in the grocery company can ). Not for this purpose the customer employed a command that with it densely to work and that to it all made And transmission of knowledge also through "representative" whom assign from  - generally a nightmare. We instead use business analysts, much more conveniently.

8

Re: TDD: why it arose?

Hello, vmpire, you wrote: V> Hello, Qulac, you wrote: Q>> TDD it also other method of interaction with the customer. Classical TDD implies constant and tight interaction with the customer during all period of development. In an ideal - the representative of the customer is a command part. V> aha, I about this "ideal" in every second book see about  and so on. Only here one problem: it does not work. At least, in outsourcing (in the grocery company can ). V> Not for this purpose the customer employed a command that with it densely to work and that to it all made V> And transmission of knowledge also through "representative" whom assign from  - generally a nightmare. We instead use business analysts, much more conveniently. It is true, this method nasty works. Well the worse for the customer. I generally faced that the customer refused to communicate with me before project delivery.

9

Re: TDD: why it arose?

Hello, student __, you wrote: __> Esteemed here the book about TDD, and thought of its value and generally what for it is necessary. __> as it is known, technologies pr-va a software - how many not a science, and the dial-up of the mechanical skills powdered by a thick layer by nothing confirmed  and marketing. You so speak, as though "a dial-up of mechanical skills" it is bad. __> but if to look at those examples which are resulted as an illustration of process with usage TDD, at all architectural changes imported to the code in the course of refactoring on each cycle TDD, it is possible to fulfill with the same success without everyone TDD simply drawing charts on a paper, considering limitation of this or that architecture, and importing to it changes in . With the above-named principles (laconicism, simplicity of change, ). It is theoretically possible to write the code at once without bugs, but in practice that difficultly and what for invented static analysis of the code which automatically catches some bugs. With TDD also, it automatically catches some bugs of design.

10

Re: TDD: why it arose?

Hello, vmpire, you wrote: V> Everyone does a part of the project and tests for it. Anything specially it is not necessary to organize. Well, unless, used  and architecture of integration tests if they are. To have project parts, it is necessary to be defined at first with architecture. And it in the beginning is not present, if it forms in the course of . Or in general the architecture is, but it on is conceptual and  so much that on  is useless, and does not allow to start immediate implementation. And process  it is not clear as . Here three stages of cycle : 1) writing of the test which certainly will not be fulfilled successfully (others in  not comme il faut because each new test should anticipate . To it of change in the code); 2) corrections in the code by a principle of the least resistance; 3) refactoring of the code by results of 2) if it is necessary. At item 2 performance) each cycle,  the code potentially can change. And, even if the design of OOP of system does not change in a specific cycle, it is necessary to do refactoring or not - depends on results of item 1) and item 2). And it is not important, on changes how many are small - the essence of dependence does not change it. .., not only that  each subsequent cycle depends on result previous, stages in a cycle too depend from each other.

11

Re: TDD: why it arose?

Hello, mrTwister, you wrote: T> You so speak, as though "a dial-up of mechanical skills" it is bad. No, I do not say that it is bad. As easier theory here also does not smell - only a dial-up of the councils, a different level of usefulness, with absence of recurrence on the same projects. However, as well as in all that includes the human factor. T> it is theoretically possible to write the code at once without bugs, but in practice that difficultly and what for invented static analysis of the code which automatically catches some bugs. With TDD also, it automatically catches some bugs of design. Code writing here at anything, speech about design. With models generally to work easier, than with the system, let even on simple systems it not so.

12

Re: TDD: why it arose?

Hello, student __, you wrote: __> Is not present, I do not say that it is bad. As easier theory here also does not smell - only a dial-up of the councils, a different level of usefulness, with absence of recurrence on the same projects. If councils were general-purpose and repeated programmers for a long time would automate. At doctors, you think, treatment always works with identical result on the same patients? __> code writing here at anything, speech about design. Code writing here thus that is an example of that the person is mistaken and uses error trapping tools. TDD is a same searching tool of errors in design, as the compiler in syntax. __> with models generally to work easier, than with the system, let even on simple systems it not so. With some is easier, with some it is more difficult, but in the given context it is not important, as TDD does not forbid to draw the chart if there is a desire.

13

Re: TDD: why it arose?

Hello, student __, you wrote: ____> And process  it is not clear as . Here three stages of cycle : __> 1) writing of the test which certainly will not be fulfilled successfully (others in  not comme il faut because each new test should anticipate . To it of change in the code); __> 2) corrections in the code by a principle of the least resistance; __> 3) refactoring of the code by results of 2) if it is necessary. __> at item 2 performance) each cycle,  the code potentially can change. And, even if the design of OOP of system does not change in a specific cycle, it is necessary to do refactoring or not - depends on results of item 1) and item 2). __> And it is not important, on changes how many are small - the essence of dependence does not change it. __> .., not only that  each subsequent cycle depends on result previous, stages in a cycle too depend from each other. If to consider a situation academic - that yes, any new code (even irrespectively TDD) can change architecture of all system and results of operation of remaining members of team become irrelevant. But practice says that 99 % of operation of programmers - local and do not influence other parts of system. Tangently TDD - if each cycle TDD (or even every tenth) leads to system architecture change - means a command it is necessary to disperse and employ normal skilled developers. Because if they through TDD try to create architecture of difficult system, without giving attention to system engineering skills of the given command are insufficient for the given project.

14

Re: TDD: why it arose?

Hello, student __, you wrote: __> Esteemed here the book about TDD, and thought of its value and generally what for it is necessary. http://geepawhill.org/five-underplayed- … -of-tdd-2/