Desarrollo ágil

Diseño de una aplicación

jj.github.io/curso-tdd/temas/diseño

✓ TODO

□ ¿Se ha formulado correctamente el problema?

□ ¿Se ha creado una épica?

□ ¿Se ha propuesto una solución informática?

□ ¿Se han usado logs y otros servicios?

Tras la épica

  • HU0: (Configuración) Como usuario, necesito que cada proyecto deberá tener una cadena única que lo identifique.
  • HU1: Como usuario, necesito que cuando se cree un hito en un proyecto, ese hito se incluirá en la estructura de datos del proyecto correspondiente.
  • HU2: Como usuario, necesito que cuando se cree un issue, se añadirá al hito correspondiente con estado “abierto”. Si no está asignado a ningún hito, se emitirá un mensaje de error.
  • HU3: Como usuario, necesito que cuando se cierre un issue, se cambie el estado del mismo.
  • HU4: Como usuario, necesito que si se borra un issue, dejará de estar accesible.
  • HU5: Si se solicita el porcentaje de terminación del hito, se responderá con una cantidad entre 0 y 100.

Diseño dirigido por dominio

Identificar objetos valor, entidades y agregados

Y reflejarlo en el diseño de la jerarquía de clases o módulos

Diseñar la estructura de datos correctamente

HU0 cada proyecto deberá tener una cadena única que lo identifique.

class Project:

    def __init__(self, name ):
        self.name = name

    def name(self):
        return self.name
                        

Refinar

Como programador, quiero que el nombre de un proyecto sea inmutable, con el formato CamelCase y longitud < 255

Las HUs nunca tienen detalles de implementación

Como programador, cada issue debe tener un identificador, nombre de proyecto y un estado

enum IssueState <Open Closed>;
unit class Project::Issue;
has IssueState $!state = Open;
has Str $!project-name;
has UInt $!issue-id;

multi submethod BUILD( UInt :$!issue-id!,
		       Str :$!project-name!) {}

method close() { $!state = Closed }
method reopen() { $!state = Open }
                        

✓ TODO

Deshacer la épica en historias de usuario

Y añadir issues donde se desambigüen