This repository has been archived by the owner on Sep 2, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathindex.html
928 lines (787 loc) · 35.2 KB
/
index.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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>TTPS: ruby</title>
<meta name="viewport" content="width=device-width"/>
<link rel="stylesheet" href="./css/reset.css" type="text/css"/>
<link rel="stylesheet" href="./css/showoff.css" type="text/css"/>
<link type="text/css" href="./css/fg.menu.css" media="screen" rel="stylesheet" />
<link type="text/css" href="./css/theme/ui.all.css" media="screen" rel="stylesheet" />
<link type="text/css" href="./css/sh_style.css" rel="stylesheet" />
<script type="text/javascript" src="./js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="./js/jquery.cycle.all.js"></script>
<script type="text/javascript" src="./js/jquery-print.js"></script>
<script type="text/javascript" src="./js/jquery.batchImageLoad.js"></script>
<script type="text/javascript" src="./js/jquery.doubletap-0.1.js"></script>
<script type="text/javascript" src="./js/fg.menu.js"></script>
<script type="text/javascript" src="./js/showoff.js"></script>
<script type="text/javascript" src="./js/jTypeWriter.js"> </script>
<script type="text/javascript" src="./js/sh_main.min.js"></script>
<script type="text/javascript" src="./js/core.js"></script>
<script type="text/javascript" src="./js/showoffcore.js"></script>
<script type="text/javascript" src="./js/coffee-script.js"></script>
<link rel="stylesheet" href="./file/base.css" type="text/css"/>
<script type="text/javascript">
$(function(){
setupPreso(false, './');
});
</script>
</head>
<body>
<a tabindex="0" href="#search-engines" class="fg-button fg-button-icon-right ui-widget ui-state-default ui-corner-all" id="navmenu"><span class="ui-icon ui-icon-triangle-1-s"></span>slides</a>
<div id="navigation" class="hidden"></div>
<div id="help">
<table>
<tr><td class="key">z, ?</td><td>toggle help (this)</td></tr>
<tr><td class="key">space, →</td><td>next slide</td></tr>
<tr><td class="key">shift-space, ←</td><td>previous slide</td></tr>
<tr><td class="key">d</td><td>toggle debug mode</td></tr>
<tr><td class="key">## <ret></td><td>go to slide #</td></tr>
<tr><td class="key">c, t</td><td>table of contents (vi)</td></tr>
<tr><td class="key">f</td><td>toggle footer</td></tr>
<tr><td class="key">r</td><td>reload slides</td></tr>
<tr><td class="key">n</td><td>toggle notes</td></tr>
<tr><td class="key">p</td><td>run preshow</td></tr>
<tr><td class="key">P</td><td>toggle pause</td></tr>
</table>
</div>
<div class="buttonNav">
<input type="submit" onClick="prevStep();" value="prev"/>
<input type="submit" onClick="nextStep();" value="next"/>
</div>
<div id="preso">loading presentation...</div>
<div id="footer">
<span id="slideInfo"></span>
<span id="debugInfo"></span>
<span id="notesInfo"></span>
</div>
<div id="slides" class="offscreen" style="display:none;">
<div class="slide" data-transition="none"><div class="content center" ref="00-presentacion/01_slide/1">
<p><img src="./file/00-presentacion/ruby.png" alt="Ruby logo"/>
<h1>Tecnologías de Producción de Software</h1>
<h2>Opción Ruby</h2>
</p>
</div>
</div><div class="slide" data-transition="uncover">
<div class="content smbullets" ref="00-presentacion/01_slide/2">
<h1>La cátedra</h1>
<ul>
<li><strong>Profesor:</strong> Lic. Christian A. Rodríguez
<a href="mailto:[email protected]" title="[email protected]"><img src="./file/00-presentacion/mail.png" alt="[email protected]"/>
<a href="https://twitter.com/car_unlp" title="twitter"><img src="./file/00-presentacion/twitter.png" alt="twitter"/>
<a href="https://github.com/chrodriguez" title="github"><img src="./file/00-presentacion/github.png" alt="github"/></a>
<li><strong>JTP:</strong> Lic. Patricio Mac Adden
<a href="mailto:[email protected]" title="[email protected]"><img src="./file/00-presentacion/mail.png" alt="[email protected]"/>
<a href="https://twitter.com/maxawen" title="twitter"><img src="./file/00-presentacion/twitter.png" alt="twitter"/>
<a href="https://github.com/patriciomacadden" title="github"><img src="./file/00-presentacion/github.png" alt="github"/></a>
<li><strong>Ayudantes:</strong>
<ul>
<li>APU Fernando López
<a href="mailto:[email protected]" title="[email protected]"><img src="./file/00-presentacion/mail.png" alt="[email protected]"/>
<a href="https://github.com/fernandolopez" title="github"><img src="./file/00-presentacion/github.png" alt="github"/></a>
<li>Fernando Martinez</li>
<li>APU J. Francisco Raposeiras
<a href="mailto:[email protected]" title="[email protected]"><img src="./file/00-presentacion/mail.png" alt="[email protected]"/>
<a href="https://twitter.com/rapofran" title="twitter"><img src="./file/00-presentacion/twitter.png" alt="twitter"/>
<a href="https://github.com/rapofran" title="github"><img src="./file/00-presentacion/github.png" alt="github"/></a>
</a></a>
</li>
</a>
</li>
</ul></li></a></a></li></a></a></li></ul></div>
</div><div class="slide" data-transition="uncover"><div class="content bullets" ref="00-presentacion/01_slide/3">
<h1>Horarios de cursada</h1>
<ul>
<li><strong>Lunes de 19 a 21 Aula 1-1</strong></li>
<li><strong>Jueves de 19 a 21 Aula 1-1</strong></li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets" ref="00-presentacion/01_slide/4">
<h1>Programa</h1>
<ul>
<li>Metodologías ágiles</li>
<li>Sistemas de control de versiones: GIT</li>
<li>El lenguaje Ruby
<ul>
<li>Introducción</li>
<li>VMs: MRI, Rubinius, jRuby</li>
<li>Preparación del entorno</li>
<li>Objetos, arreglos, hashes, símbolos, tipos estándar</li>
<li>Estructuras de control</li>
<li>Bloques e iteradores</li>
<li>E/S estandar</li>
<li>Clases de objetos, métodos y variables</li>
<li>Módulos y mixins</li>
</ul></li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets" ref="00-presentacion/01_slide/5">
<h1>Programa</h1>
<ul>
<li>TDD</li>
<li>Gemas: rubygems</li>
<li>Rake</li>
<li>Bundler</li>
<li>HTTP</li>
<li>La web
<ul>
<li>Rack</li>
<li>Sinatra</li>
<li>ORMs</li>
<li>Rails</li>
</ul></li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets" ref="00-presentacion/01_slide/6">
<h1>Modalidad de cursada</h1>
<ul>
<li>Clases teórico prácticas</li>
<li>Compromisos semanales con los alumnos</li>
<li>Trabajo en grupo. Los grupos podrán ir cambiando a lo largo de la cursada</li>
<li>Aprobación de la cursada mediante trabajo práctico y coloquio</li>
<li>Aprobación de la materia mediante extensión del trabajo práctico y coloquio</li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content bullets" ref="00-presentacion/01_slide/7">
<h1>Bibliografía / Recursos</h1>
<ul>
<li>A medida que se presenten los temas se indicarán las fuentes apropiadas</li>
<li>Todo el material se encuentra bajo licencia <strong>Creative Commons</strong>:</li>
</ul>
<p><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.es"><img alt="Licencia Creative Commons" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png"/></a><br/><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">TTPS - Opcion
Ruby</span> por <span xmlns:cc="http://creativecommons.org/ns#" property="cc:attributionName">Christian A. Rodriguez</span> se encuentra bajo
una <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.es">Licencia
Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported</a>.</p>
</div>
</div><div class="slide" data-transition="uncover"><div class="content center" ref="01-agiles/01_slide/1">
<h1>Metodologías Ágiles</h1>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets" ref="01-agiles/01_slide/2">
<h1>Temas</h1>
<ul>
<li>Introducción al proceso del software</li>
<li>Metodologías Tradicionales</li>
<li>Metodologías Ágiles</li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content center" ref="01-agiles/02_proceso_software/1">
<h1>Introducción al proceso del software</h1>
</div>
</div><div class="slide" data-transition="uncover"><div class="content bullets" ref="01-agiles/02_proceso_software/2">
<h1>Mejora de los procesos de producción</h1>
<ul>
<li>Todo proyecto necesita ser ejecutado y entregado bajo ciertas restricciones</li>
<li>Estas restricciones son:
<ul>
<li>Alcance</li>
<li>Plazo</li>
<li>Costo</li>
</ul></li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content bullets" ref="01-agiles/02_proceso_software/3">
<h1>Mejora de los procesos de producción</h1>
<p><img src="./file/01-agiles/triangulo-gestion-proyectos.png" alt="triangulo"/>
<ul>
<li>Triángulo de la Gestión de Proyectos
<ul>
<li>Cada lado del triángulo representa una restricción</li>
<li>Un lado no podrá ser modificado sin impactar a los otros</li>
</ul></li>
</ul>
</p>
</div>
</div><div class="slide" data-transition="uncover"><div class="content bullets incremental" ref="01-agiles/02_proceso_software/4">
<h1>¿Qué es lo que queremos conseguir?</h1>
<ul>
<li>Mayor <strong>productividad</strong>
<ul>
<li><em>Relación entre los resultados y el tiempo utilizado para obtenerlos</em></li>
</ul></li>
<li>Mayor <strong>calidad</strong>
<ul>
<li><em>Que el producto final satisfaga las necesidades del usuario</em></li>
</ul></li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content bullets incremental" ref="01-agiles/02_proceso_software/5">
<h1>Ámbitos de mejora en Ingeniería de software</h1>
<ul>
<li><strong>Notación:</strong> lenguajes</li>
<li><strong>Herramientas:</strong> IDEs, frameworks</li>
<li><strong>Procesos:</strong> <em>metodologías</em></li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content bullets" ref="01-agiles/02_proceso_software/6">
<h1>Un modelo de proceso a <em>medida</em></h1>
<ul>
<li><span class="letter_box" style="background-color: yellow">P</span> Planificación</li>
<li><span class="letter_box" style="background-color: #FFCC33">R</span> Requisitos</li>
<li><span class="letter_box" style="background-color: #FF3366">D</span>
Arquitectura y diseño</li>
<li><span class="letter_box" style="background-color: #CCCCFF">C</span>
Codificación (programación)</li>
<li><span class="letter_box" style="background-color: #66FF99">T</span> Testeo de
aceptación</li>
<li><span class="letter_box" style="background-color: #B0B0B0">D</span> Despliegue
(deployment)</li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content" ref="01-agiles/02_proceso_software/7">
<h1>Proceso secuencial</h1>
<h2>En este ejemplo no hay solapamiento</h2>
<p><img src="./file/01-agiles/01-proceso-secuencial.png" alt="proceso secuencial"/>
</p>
</div>
</div><div class="slide" data-transition="uncover"><div class="content" ref="01-agiles/02_proceso_software/8">
<h1>Proceso en cascada</h1>
<h2>Es mejor solapar trabajo</h2>
<p><img src="./file/01-agiles/02-proceso-cascada.png" alt="proceso en cascada"/>
</p>
</div>
</div><div class="slide" data-transition="uncover"><div class="content" ref="01-agiles/02_proceso_software/9">
<h1>Proceso incremental</h1>
<p><img src="./file/01-agiles/03-proceso-incremental.png" alt="proceso incremental"/>
</p>
</div>
</div><div class="slide" data-transition="uncover"><div class="content" ref="01-agiles/02_proceso_software/10">
<h1>Proceso incremental</h1>
<h2>Mejor hacer <em>todo</em> incremental</h2>
<p><img src="./file/01-agiles/04-proceso-incremental-completo.png" alt="proceso incremental"/>
<p><em>Pero... ¿Cómo planificar sin saber qué hacer?</em></p>
</p>
</div>
</div><div class="slide" data-transition="uncover"><div class="content" ref="01-agiles/02_proceso_software/11">
<h1>Proceso incremental con fase de exploración</h1>
<p><img src="./file/01-agiles/05-proceso-incremental-exploracion.png" alt="proceso incremental"/>
<p><em>¿Si deseamos obtener validaciones frecuentes con el cliente?</em></p>
</p>
</div>
</div><div class="slide" data-transition="uncover"><div class="content" ref="01-agiles/02_proceso_software/12">
<h1>Proceso iterativo e incremental</h1>
<p><img src="./file/01-agiles/06-proceso-iterativo-incremental.png" alt="proceso incremental">
<em>¿Y con pruebas de regresión entre iteraciones?</em></img>
</p>
</div>
</div><div class="slide" data-transition="uncover"><div class="content center" ref="01-agiles/02_proceso_software/13">
<p><img src="./file/01-agiles/07-proceso-iterativo-incremental-regresion.png" alt="proceso incremental"/>
</p>
</div>
</div><div class="slide" data-transition="uncover"><div class="content bullets" ref="01-agiles/02_proceso_software/14">
<h1>Modelos de proceso y metodologías</h1>
<ul>
<li>Aportan disciplina a la Ingeniería de Software</li>
<li>Un modelo de proceso es una estrategia <em>global</em> respecto de cómo
abordar un proyecto</li>
<li>Una <strong>metodología</strong> define <strong>Quién</strong> debe hacer <strong>Qué</strong>, <strong>Cuándo</strong> y <strong>Cómo</strong>
debe hacerlo
<ul>
<li>Metodologías tradicionales</li>
<li>Metodologías ágiles</li>
</ul></li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content center" ref="01-agiles/02_proceso_software/15">
<h1>Actividad</h1>
<h2>The Hard Choice Game</h2>
<p class="notes">Se requieren unos 40 minutos para realizar la actividad. Se trata de una
sencilla e interesante actividad para ilustrar el concepto de Deuda Técnica.
Pero más allá de dicho propósito, esta actividad permite motivar al inicio de un curso,
lo diferente que es una estrategia de trabajo en equipo respecto de una estrategia
de trabajo individual. Ver más en https://github.com/TTPS-ruby/capacitacion-ruby-ttps/blob/master/actividades/01-agiles/hard_choices.md</p>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets small" ref="01-agiles/02_proceso_software/16">
<h1>Sobre el juego</h1>
<h2>Reglas básicas</h2>
<ul>
<li>Armar grupos de no más de 5 personas y no menos de 2</li>
<li>Cada persona utilizará una ficha y lanzará en turnos el los dados</li>
<li>Arrancará el jugador que lance el número más alto</li>
<li>Los turnos son en sentido horario</li>
<li>Al llegar a la meta:
<ul>
<li>El primer jugador en llegar obtiene <strong>5 puntos</strong></li>
<li>El segundo <strong>2 puntos</strong></li>
<li>El tercero <strong>1 punto</strong></li>
</ul></li>
<li>El juego termina cuando hayan llegado tres jugadores a la meta, el resto <strong>no
cuenta</strong></li>
<li>No es necesario caer exactamente en la celda de la meta para finalizar</li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets small" ref="01-agiles/02_proceso_software/17">
<h1>Sobre el juego</h1>
<h2>Puntuación</h2>
<ul>
<li>Cuando se cae en una celda de herramienta se <strong>recoge una tarjeta de
herramienta</strong>
<ul>
<li><em>Las tarjetas de herramienta darán un punto adicional en el cómputo del
jugador</em></li>
</ul></li>
<li>Cuando se cae o pasa por un puente se recoge una tarjeta de puente.
<ul>
<li><em>Las tarjetas de puente restarán un punto en el cómputo del jugador</em></li>
</ul></li>
<li>Un jugador en su turno puede <strong>cambiar de dirección</strong>, es decir, puede volver
hacia atrás para intentar caer en una celda de herramienta <em>luego de haber
lanzado los dados</em></li>
<li>Caer sobre la ficha de otro jugador le devuelve al inicio :-)</li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content center" ref="01-agiles/02_proceso_software/18">
<h1>Empieza el juego</h1>
<h2>Ronda 1</h2>
</div>
</div><div class="slide" data-transition="uncover"><div class="content center" ref="01-agiles/02_proceso_software/19">
<h1>Nueva jugada</h1>
<h2>Ronda 2: cambian las reglas</h2>
</div>
</div><div class="slide" data-transition="uncover"><div class="content bullets" ref="01-agiles/02_proceso_software/20">
<h1>Nuevas reglas</h1>
<ul>
<li>Solo jugamos por 6 minutos</li>
<li>Ajustamos el
<a href="http://www.online-stopwatch.com/full-screen-stopwatch/">cronómetro</a></li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content bullets incremental" ref="01-agiles/02_proceso_software/21">
<h1>Conclusiones</h1>
<ul>
<li>¿Qué estrategias utilizaron?</li>
<li>¿Como fué el comportamiento de los participantes en cada tablero?
<ul>
<li><strong>Ronda 1:</strong> relajación, apatía y egoísmo. La argentinidad al palo...</li>
<li><strong>Ronda 2:</strong> tensión, colaboración e incluso sacrificio si alguien dejó de
jugar</li>
</ul></li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets incremental small" ref="01-agiles/02_proceso_software/22">
<h1>Comparamos con un proyecto de software</h1>
<ul>
<li>El tiempo establecido es el plazo del proyecto.
<ul>
<li>Hay muchas formas de llegar a la meta</li>
</ul></li>
<li>Recoger herramientas es aplicar buenas prácticas de ingeniería de software</li>
<li>Utilizar puentes o atajos es saltarse dichas buenas prácticas
<ul>
<li>No esforzarse por conseguir una arquitectura ideal</li>
</ul></li>
<li><strong><em>Sin embargo, para el éxito del proyecto puede que no sea tan determinante una
buena arquitectura respecto de entregar un producto que cumple con las expectativas
del cliente y en el plazo oportuno</em></strong>
<ul>
<li><em>No se puede estar eternamente eligiendo herramientas</em></li>
<li><em>Tampoco tiene sentido llegar a la meta con un producto muy pobre en arquitectura lo cual
puede ocasionar problemas en el posterior mantenimiento</em></li>
</ul></li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content center" ref="01-agiles/03_intro_tradicional/1">
<h1>Metodologías Tradicionales</h1>
</div>
</div><div class="slide" data-transition="uncover"><div class="content bullets" ref="01-agiles/03_intro_tradicional/2">
<h1>Introducción</h1>
<ul>
<li><strong>RUP (Rational Unified Process)</strong> es la metodología tardicional más conocida
y mejor documentada</li>
<li>Actualmente es un producto de IBM, pero su esencia está descrita en el libro
<em><a href="http://books.google.com.ar/books/about/The_Unified_Software_Development_Process.html?id=p6-KQlg9IVUC&redir_esc=y">The Unified Software Development
Process</a></em> </li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets small" ref="01-agiles/03_intro_tradicional/3">
<h1>Elementos RUP</h1>
<h2>Workflows o disciplinas</h2>
<ul>
<li><strong>Workflows primarios</strong>
<ul>
<li>Business Modeling (Modado del Negocio)</li>
<li>Requirements (Requisitos)</li>
<li>Analysis & Design (Análisis y Diseño)</li>
<li>Implementation (Implementación)</li>
<li>Test (Pruebas)</li>
<li>Deployment (Despliegue)</li>
</ul></li>
<li><strong>Workflows de Apoyo</strong>
<ul>
<li>Environment (Entorno)</li>
<li>Project Management (Gestión del Proyecto)</li>
<li>Configuration & Change Management (Gestión de
Configuración y Cambios)</li>
</ul></li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets smaller" ref="01-agiles/03_intro_tradicional/4">
<h1>Elementos RUP</h1>
<h2>Roles y actividades</h2>
<ul>
<li>Analyst
<ul>
<li>Business-Process Analyst</li>
<li>Business Designer</li>
<li>Business-Model Reviewer</li>
<li>Requirements Reviewer</li>
<li>System Analyst</li>
<li>Use-Case Specifier</li>
<li>User-Interface Designer</li>
</ul></li>
<li>Developer
<ul>
<li>Architect</li>
<li>Architecture Reviewer</li>
<li>Capsule Designer</li>
<li>Code Reviewer</li>
<li>Database Designer</li>
<li>Design Reviewer</li>
<li>Designer</li>
<li>Implementer</li>
<li>Integrator</li>
</ul></li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets smaller" ref="01-agiles/03_intro_tradicional/5">
<h1>Elementos RUP</h1>
<h2>Roles y actividades</h2>
<ul>
<li>Testing professional
<ul>
<li>Test Designer</li>
<li>Tester</li>
</ul></li>
<li>Manager
<ul>
<li>Change Control Manager</li>
<li>Configuration Manager</li>
<li>Deployment Manager</li>
<li>Process Engineer</li>
<li>Project Manager</li>
<li>Project Reviewer</li>
</ul></li>
<li>Other
<ul>
<li>Course Developer</li>
<li>Graphic Artist</li>
<li>Stakeholder</li>
<li>System Administrator</li>
<li>Technical Writer</li>
<li>Tool Specialist</li>
</ul></li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content bullets" ref="01-agiles/03_intro_tradicional/6">
<h1>Características esenciales de RUP</h1>
<ul>
<li>Proceso Dirigido por los Casos de Uso</li>
<li>Proceso Iterativo e Incremental</li>
<li>Proceso Centrado en la Arquitectura</li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content bullets" ref="01-agiles/03_intro_tradicional/7">
<h1>Proceso Dirigido por los Casos de Uso</h1>
<h2>¿Como es el proceso?</h2>
<p><img src="./file/01-agiles/08-rup-casos-de-uso.png" alt="Proceso dirigido por los casos de uso"/>
</p>
</div>
</div><div class="slide" data-transition="uncover"><div class="content bullets" ref="01-agiles/03_intro_tradicional/8">
<h1>Proceso Iterativo e Incremental</h1>
<ul>
<li>El ciclo de vida iterativo se basa en la evolución de prototipos ejecutables
que se muestran a los usuarios y clientes</li>
<li>En el ciclo de vida iterativo a cada iteración se reproduce el ciclo de vida
en cascada a menor escala</li>
<li>Los objetivos de una iteración se establecen en función de la evaluación de
las iteraciones precedentes</li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content bullets" ref="01-agiles/03_intro_tradicional/9">
<h1>Proceso Iterativo e Incremental</h1>
<p>Para cada caso de uso implementado en la iteración, sus actividades se encadenan
en una mini cascada</p>
<p><img src="./file/01-agiles/09-rup-mini-cascada.png" alt="mini cascada"/>
</p>
</div>
</div><div class="slide" data-transition="uncover"><div class="content bullets" ref="01-agiles/03_intro_tradicional/10">
<h1>Proceso Centrado en la arquitectura</h1>
<ul>
<li>La arquitectura de un sistema es la organización o estructura de sus partes más
relevantes</li>
<li>Una arquitectura ejecutable es una implementación parcial del sistema, construida
para demostrar algunas funciones y propiedades</li>
<li>RUP establece refinamientos sucesivos de una arquitectura ejecutable, construida
como un prototipo evolutivo</li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content center" ref="01-agiles/04_intro_agiles/1">
<h1>Metodologías Ágiles</h1>
</div>
</div><div class="slide" data-transition="uncover"><div class="content" ref="01-agiles/04_intro_agiles/2">
<h1>Ser ágile es actuar según el manifiesto ágil</h1>
<h2>Manifiesto por el Desarrollo Ágil de Software</h2>
<p>Estamos descubriendo formas mejores de desarrollar
software tanto por nuestra propia experiencia como
ayudando a terceros. A través de este trabajo hemos
aprendido a valorar:</p>
<p><strong>Individuos e interacciones</strong> <em>sobre procesos y herramientas</em>
<strong>Software funcionando</strong> <em>sobre documentación extensiva</em>
<strong>Colaboración con el cliente</strong> <em>sobre negociación contractual</em>
<strong>Respuesta ante el cambio</strong> <em>sobre seguir un plan</em></p>
<p>Esto es, aunque valoramos los elementos de la derecha,
valoramos más los de la izquierda.</p>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets" ref="01-agiles/04_intro_agiles/3">
<h1>Principios del Manifiesto Ágil</h1>
<ul>
<li><p>Nuestra mayor prioridad es satisfacer al cliente
mediante la entrega temprana y continua de software
con valor.</p></li>
<li><p>Aceptamos que los requisitos cambien, incluso en etapas
tardías del desarrollo. Los procesos Ágiles aprovechan
el cambio para proporcionar ventaja competitiva al
cliente.</p></li>
<li><p>Entregamos software funcional frecuentemente, entre dos
semanas y dos meses, con preferencia al periodo de
tiempo más corto posible.</p></li>
<li><p>Los responsables de negocio y los desarrolladores
trabajamos juntos de forma cotidiana durante todo
el proyecto.</p></li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets" ref="01-agiles/04_intro_agiles/4">
<h1>Principios del Manifiesto Ágil</h1>
<ul>
<li><p>Los proyectos se desarrollan en torno a individuos
motivados. Hay que darles el entorno y el apoyo que
necesitan, y confiarles la ejecución del trabajo. </p></li>
<li><p>El método más eficiente y efectivo de comunicar
información al equipo de desarrollo y entre sus
miembros es la conversación cara a cara.</p></li>
<li><p>El software funcionando es la medida principal de
progreso.</p></li>
<li><p>Los procesos Ágiles promueven el desarrollo
sostenible. Los promotores, desarrolladores y usuarios
debemos ser capaces de mantener un ritmo constante
de forma indefinida.</p></li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets" ref="01-agiles/04_intro_agiles/5">
<h1>Principios del Manifiesto Ágil</h1>
<ul>
<li><p>La atención continua a la excelencia técnica y al
buen diseño mejora la Agilidad.</p></li>
<li><p>La simplicidad, o el arte de maximizar la cantidad de
trabajo no realizado, es esencial.</p></li>
<li><p>Las mejores arquitecturas, requisitos y diseños
emergen de equipos auto-organizados.</p></li>
<li><p>A intervalos regulares el equipo reflexiona sobre
cómo ser más efectivo para a continuación ajustar y
perfeccionar su comportamiento en consecuencia.</p></li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content bullets" ref="01-agiles/04_intro_agiles/6">
<h1>¿Por qué surgen las metodologías ágiles?</h1>
<ul>
<li>Dificultades para implantar metodologías
tradicionales. Procesos ceremoniosos, herramientas y
notaciones de modelado sofisticadas (UML)</li>
<li>El enfoque ágil es una solución a medida para un
segmento importante de proyectos de desarrollo de
software</li>
<li><em>"Aceptar el cambio" ...</em></li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content bullets small" ref="01-agiles/04_intro_agiles/7">
<h1>Metodologías y técnicas ágiles más populares</h1>
<ul>
<li><strong>Kanban</strong>, <em>Andrew J. Davison</em></li>
<li><strong>Scrum</strong>, <em>Ken Schwaber & Jeff Sutherland</em></li>
<li><strong>Extreme Programming</strong>, <em>Kent Beck</em></li>
<li><strong>Lean Software Development</strong>, <em>Mary Poppendieck</em></li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content center" ref="01-agiles/05_scrum/1">
<h1>SCRUM</h1>
</div>
</div><div class="slide" data-transition="uncover"><div class="content" ref="01-agiles/05_scrum/2">
<h1>Introducción</h1>
<p>SCRUM se basa en lo que se conoce como <strong>Sprints</strong></p>
<p><em>Un sprint concentra el esfuerzo durante un período corto de tiempo hacia metas
prefijadas</em></p>
<p><img src="./file/01-agiles/10-scrum-01.png" alt="sprint"/>
</p>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets small" ref="01-agiles/05_scrum/3">
<h1>Introducción</h1>
<ul>
<li>El <strong>Product Owner (PO)</strong> compila todos los pedidos planificados para el producto y
prioriza las funcionalidades</li>
<li>El resultado del trabajo del PO es el <strong>Product Backlog</strong>, una lista de tareas
o <strong>TODO</strong> que constantemente se prioriza. Antes de cada Sprint, las tareas de
mayor prioridad son introducidas al <strong>Spring Backlog</strong></li>
<li>En conjunto con el usuario, los miembros del proyecto forman un <strong>Scrum Team</strong>
integrado por 5-9 personas. Luego de reuniones con el PO, se determina el
objetivo del Sprint y la funcionalidad priorizada, se explota en tareas
detalladas.
<ul>
<li>Notar que el cliente es parte del Scrum Team</li>
<li>El Scrum Team es auto-organizado y los miembros tienen una
responsabilidad conjunta en torno a los resultados</li>
</ul></li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets" ref="01-agiles/05_scrum/4">
<h1>Introducción</h1>
<ul>
<li>El <strong>Scrum Master</strong> coordina al equipo de desarrollo, evitando cualquier
posible impedimento, y constantemente trata de asegurar que el equipo se
encuentre en las mejores circunstancias posibles de forma de poder cumplir con
el objetivo fijado para el Sprint
<ul>
<li>No es necesario que sea técnico</li>
</ul></li>
<li>Cada Sprint realza el valor del producto, agregando nuevas funcionalidades y
mejoras que pueden entregarse al cliente</li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets" ref="01-agiles/05_scrum/5">
<h1>Roles</h1>
<h2>Scrum Team</h2>
<ul>
<li>Son quienes resuelven problemas y diseñan soluciones. Normalmente se compone de
5 a 9 integrantes - <em>este número de personas en un grupo ha demostrado ser el
adecuado para este tipo de trabajos</em></li>
<li>Los miembros deciden cómo organizar el trabajo y cómo se realiza distribución
de tareas. No hay roles fijados - <em>todos podrán cambiar de tareas con
cualquier otro miembro</em>. Esto no implica que no existan miembros que sean
expertos en determinado campo.</li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets small" ref="01-agiles/05_scrum/6">
<h1>Roles</h1>
<h2>Product Owner</h2>
<ul>
<li>Es la voz del cliente</li>
<li>Asegura que el Scrum Team trabaje con una adecuada perspectiva del negocio</li>
<li>Es quien administra el Product Backlog - <em>una lista de tareas pendientes donde
todas las especificaciones para el producto son expresadas indicando cuán
rentables considera que son</em>
<ul>
<li>El documento debe ser visible por toda la organización de forma tal que
<strong>todos</strong> estén al tanto de qué se espera en futuras versiones del producto</li>
</ul></li>
<li>El PO generalmente es el cliente, pero puede ser parte interna de la
organización. </li>
<li>Es aconsejable que el PO tenga un perfil comercial y conozca bien los procesos
de negocio</li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets" ref="01-agiles/05_scrum/7">
<h1>Roles</h1>
<h2>Scrum Master</h2>
<ul>
<li>Es una combinación de los roles de: mentor, mediador, resolver problemas y portero.</li>
<li>Debe tener breves reuniones diarias con el equipo - <em>Daily Scrums</em></li>
<li>Cuando alguien externo al proyecto introduce un tema importante para discutir
con el equipo, el Scrum Master trata de asegurar que los integrantes se distraigan
lo menos posible</li>
<li>Debe mantener la postura de <em>aquí y ahora</em> en relación al trabajo</li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets" ref="01-agiles/05_scrum/8">
<h1>Roles</h1>
<h2>Scrum Master</h2>
<ul>
<li>Focaliza sus esfuerzos en facilitar al equipo con las mejores circunstancias
para alcanzar las metas acordadas para el Sprint</li>
<li>Luego de cada Sprint, el Scrum Master mantiene una reunión de evaluación con
el equipo completo - <em>Retrospectiva del Sprint</em>
<ul>
<li>Se analizan experiencias y obtienen conclusiones</li>
<li>El objetivo es elevar el conocimiento global del equipo y motivar antes del
próximo Sprint</li>
</ul></li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets" ref="01-agiles/05_scrum/9">
<h1>Procesos</h1>
<h2>Creando el backlog</h2>
<ul>
<li>El PO recompila todos los requerimientos y especificaciones que son la base
de los cambios a introducir al producto: nuevas funcionalidades y corrección
de errores</li>
<li>De aquí se obtiene una lista priorizada de aquellos cambios que se desean
porque tienen valor para la organizacion.</li>
<li>Al inicio de cada Sprint el PO debería <em>congelar</em> los principales items de la
lista y presentarlos al equipo de Scrum</li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets" ref="01-agiles/05_scrum/10">
<h1>Procesos</h1>
<h2>El Sprint</h2>
<ul>
<li>De los días destinados a cada sprint (generalmente 15-30 días), los primeros
se utilizan para crear el <em>Sprint Backlog</em></li>
<li>Cuando se determian las tareas y tiempo para realizarlas, el PO deja de
participar</li>
<li>El equipo trabajará bajo su propia responsabilidad</li>
</ul>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets small" ref="01-agiles/05_scrum/11">
<h1>Procesos</h1>
<h2>Scrum diario</h2>
<ul>
<li>Cada día, a la misma hora, el Scrum Master con el equipo tienen una breve
reunoión</li>
<li>El propósito es el de <em>eliminar</em> todos los impedimentos de velocidad en el
grupo</li>
<li>Cada participante debería, de alguna manera, responder a las siguientes
preguntas:
<ul>
<li>¿Qué es lo que hizo desde la última reunión?</li>
<li>¿Qué hará desde ahora hasta la próxima reunión?</li>
<li>¿Hay algo que no permita avanzar en lo planificado?</li>
</ul></li>
</ul>
<p><em>Las dos primeras preguntas ofrecen a los participantes una visión global del
avance del proyecto. La tercera, sirve para solucionar problemas</em></p>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets" ref="01-agiles/05_scrum/12">
<h1>Métricas</h1>
<ul>
<li>Las tareas en el Sprint Backlog deben estimarse en cantidad de horas
<ul>
<li>El Sprint Backlog entonces tiene una cantidad de horas pendientes</li>
</ul></li>
<li>Diariamente podemos analizar el avance del equipo usando un gráfico conocido
como <strong>burn-down</strong></li>
</ul>
<p><img src="./file/01-agiles/10-scrum-02.png" alt="burndown"/>
</p>
</div>
</div><div class="slide" data-transition="uncover"><div class="content" ref="01-agiles/05_scrum/13">
<h1>SCRUM en 10 minutos</h1>
<h2>Un video ágil</h2>
<div style="text-align: center">
<iframe width="560" height="315" src="//www.youtube.com/embed/XU0llRltyFM" frameborder="0"/>
</div>
</div>
</div><div class="slide" data-transition="uncover"><div class="content smbullets" ref="01-agiles/06_referencias">
<h1>Referencias</h1>
<ul>
<li>http://agilemanifesto.org/</li>
<li>http://tastycupcakes.org/</li>
<li>http://agilismoatwork.blogspot.com.ar/</li>
<li>http://psw.tuneupprocess.com/</li>
<li>http://softhouseeducation.com/en/produkt/scrum-five-minutes</li>
<li>http://www.mountaingoatsoftware.com/</li>
</ul>
</div>
</div></div>
<div id="pauseScreen">
</div>
</body>
</html>