author = "Guerra, Eduardo Martins and Aniche, Mauricio",
                title = "Achieving quality on software design through test-driven 
            booktitle = "Software quality assurance in large scale and complex 
                         software-intensive systems",
            publisher = "Morgan Kaufmann - Elsevier",
                 year = "2015",
                pages = "201--220",
              address = "Waltham, USA",
             keywords = "Test driven development, software.",
             abstract = "Test-driven development (TDD) is a technique for developing and 
                         designing software where tests are created before production code 
                         in short cycles. There is some discussion in the software 
                         engineering community on whether TDD can really be used to achieve 
                         software quality. Some experiments were conducted in the last 
                         years comparing development by using TDD with one creating tests 
                         after the production code. However, these experiments always have 
                         some threats to validity that prevent researchers from reaching a 
                         final answer about its effects. This chapter, instead of trying to 
                         prove that TDD is more effective than creating tests after, 
                         investigates projects where TDD was successfully used, and 
                         presents recurrent and common practices applied to its context. A 
                         common mistake is to believe that just by creating tests before 
                         production code will make the application design just happens. As 
                         with any other technique, TDD is not a silver bullet, and while it 
                         certainly helps to achieve some desirable characteristics in 
                         software, such as decoupling and separation of concerns, other 
                         practices should complement its usage, especially for architecture 
                         and design coherence. In this chapter, we dive deep in TDD 
                         practice and how to perform it to achieve quality in software 
                         design. We also present techniques that should be used to setup a 
                         foundation to start TDD in project and to refine the design after 
                         it is applied.",
          affiliation = "{Instituto Nacional de Pesquisas Espaciais (INPE)}",
                 isbn = "9780128023013",
                label = "lattes: 3413978291577451 1 GuerraAnic:2015:AcQuSo",
             language = "pt",
           targetfile = "1_guerra3.pdf",
        urlaccessdate = "04 dez. 2020"