-
Notifications
You must be signed in to change notification settings - Fork 129
/
diseño.html
127 lines (107 loc) · 5.37 KB
/
diseño.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Desarrollo ágil: Diseño</title>
<link rel="stylesheet" href="dist/reset.css">
<link rel="stylesheet" href="dist/reveal.css">
<link rel="stylesheet" href="dist/agil.css" id="theme">
<!-- Theme used for syntax highlighted code -->
<link rel="stylesheet" href="plugin/highlight/monokai.css" id="highlight-theme">
</head>
<body>
<div class="reveal">
<div class="slides">
<section><h2>Desarrollo ágil</h2>
<h1>Diseño de una aplicación</h1>
<h3><a href="https://jj.github.io/curso-tdd/temas/diseño"><code>jj.github.io/curso-tdd/temas/diseño</code></a></h3>
</section>
<section><h1>✓ TODO</h1>
<h2 class="fragment">□ ¿Se ha formulado
correctamente el problema? </h2>
<h2 class="fragment">□ ¿Se ha creado una épica? </h2>
<h2 class="fragment">□ ¿Se ha propuesto una
solución informática? </h2>
<h2 class="fragment">□ ¿Se han usado logs y
otros servicios? </h2>
</section>
<section><h1>Tras la épica</h1>
<ul>
<li><strong>HU0</strong>: (Configuración) Como usuario, necesito que cada proyecto deberá tener una cadena única que lo identifique.</li>
<li><strong>HU1</strong>: Como usuario, necesito que cuando se cree un hito en un proyecto, ese hito se incluirá en la estructura de datos del proyecto correspondiente.</li>
<li><strong>HU2</strong>: 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.</li>
<li><strong>HU3</strong>: Como usuario, necesito que cuando se cierre un issue, se cambie el estado del mismo.</li>
<li><strong>HU4</strong>: Como usuario, necesito que si se borra un issue, dejará de estar accesible.</li>
<li><strong>HU5</strong>: Si se solicita el porcentaje de terminación del hito, se responderá con una cantidad entre 0 y 100.</li>
</ul>
</section>
<section>
<section><h1>Diseño dirigido por dominio</h1>
<h2 class="fragment">Identificar objetos
valor, entidades y agregados</h2>
</section>
<section><h1>Y reflejarlo en el diseño de la
jerarquía de clases o módulos</h1>
</section>
<section><h1>Diseñar la estructura de datos
correctamente</h1></section>
<section><h3><strong>HU0</strong> cada proyecto deberá tener una cadena única
que lo identifique.</h3>
<pre><code>class Project:
def __init__(self, name ):
self.name = name
def name(self):
return self.name
</code></pre>
</section>
<section><h1>Refinar</h1>
<h2 class="fragment">Como programador,
quiero que el nombre de un proyecto sea
inmutable, con el formato CamelCase y
longitud < 255</h2>
</section>
<section><h1>Las HUs <strong>nunca</strong>
tienen detalles de implementación</h1>
</section>
<section><h3>Como programador, cada issue debe
tener un identificador, nombre de proyecto
y un estado</h3>
<pre><code data-line-numbers="1|2-8|3-5|10-11">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 }
</code></pre>
</section>
</section>
<section> <h1>✓ TODO</h1>
<h2 class="fragment">Deshacer la épica en historias de
usuario</h2>
<h2 class="fragment">Y añadir issues donde se
desambigüen</h2>
</section>
</div>
</div>
<script src="dist/reveal.js"></script>
<script src="plugin/notes/notes.js"></script>
<script src="plugin/markdown/markdown.js"></script>
<script src="plugin/highlight/highlight.js"></script>
<script>
// More info about initialization & config:
// - https://revealjs.com/initialization/
// - https://revealjs.com/config/
Reveal.initialize({
hash: true,
width: "95%",
slideNumber: true,
// Learn about plugins: https://revealjs.com/plugins/
plugins: [ RevealMarkdown, RevealHighlight, RevealNotes ]
});
</script>
</body>
</html>