Sessió B1: Test Driven Development, C++, Accessors

Objectius

Exemple de test driven development

A classe implementarem "en viu" les primeres classes del nostre sistema: Track i Album. De moment no us preocupeu gaire de com s'integrarà això amb la resta de sistema.

Us hem fet commit de un entorn de desenvolupament mínim al directori src dels vostres sandbox. El directori src del sandbox ha de quedar de la següent manera:

src/
aquí posareu les classes que implementen el sistema, implementades per vosaltres (arxius hxx i cxx)
src/TestsUnitaris/
aquí posareu els tests unitaris (granularitat petita) que testegen les classes del src/. Aquests tests seran escrits per vosaltres, tot i que, en aquesta sessió us els donem.
src/TestsFuncionals/
aquí posareu els tests funcionals o d'aceptació (granularitat grossa), que testegen la funcionalitat del src/. Els tests funcionals fan de requeriments de sistemes. Aquests tests seran donats pels professors.
src/externalLibs/
aquí van els fitxers que pertanyen a llibreries que no desenvolupeu vosaltres. De moment teniu el framework de testeig i una petita llibreria que us facilitarà l'accés al sistema de fitxers.

Nota Test Driven Development

Red-Green-Refactor: el mantra del TDD

El llibre de Kent Beck que explica TDD a base d'exemples.

Amazon permet llegir-ne algun capítol.

A la wiki, teniu una explicació de com heu aplicar TDD a les pràctiques i de com convinar-ho amb l'ús de Subversion

També us hem posat una metàfora molt il·lustrativa comparant el TDD amb l'art de l'escalada

C++

Si encara no l'heu fet, seguiu el tutorial pas a pas per refrescar conceptes de C++, contenidors STL i polimorfisme

A part, us recomanem molt que implementeu l'exercici (resolt) Factures en C++ de la col.lecció de problemes.

Nota Manual de Referències del C++

La web www.sgi.com té una bona guia de la STL

La web www.cplusplus.com té una bona referència dels 'streams' de la STL

Estàndard de codificació

Alerta Estàndard de noms i del codi

Els exemples que us donarem seguiran aquest estàndar. I el vostre codi també s'hi haurà d'ajustar.

Alerta Accessibilitat dels membres
Alerta Implementant mètodes
Alerta Model de memòria

A C++ no tenim un garbage collector que elimini els objectes. Tot i que gran part dels objectes s'eliminen automaticament per mecanismes de pila.

Convencions de gestió de memòria:

Testfarm: Monitorització automàtica de la qualitat del codi

La pàgina de testfarm monitoritza tots els vostres repositoris. En particular mostra l'estat dels tests (verd o vermell), i el nombre de tests passant. Hi anirem afegint noves funcionalitats com mètriques de codi.

Tasques

  1. Passeu un a un els tests unitaris que teniu, commentats, a la carpetea src/TestUnitaris del subversion seguint les tècniques del test driven development (TDD). Això corresponen les classes Obra i Colleccio.
  2. Feu commit al subversion a cada pas a cada red, gren i refactor. No tingueu por de comitejar algo que no esteu segurs que sera el cami. Si camineu pel cami equivocat subversion permet tornar enrera i a més, ho podreu seguir amb l'històric per repassar com ho heu fet.
  3. Desenvolupeu dirigits per testos una nova classe Autor amb TDD però ara fent els testos vosaltres.

Valid XHTML 1.0!