Este documento compara la artesanía del software con la ingeniería del software. La artesanía del software se caracteriza por procesos definidos de forma ocasional y caótica y el éxito depende del esfuerzo individual. La ingeniería del software define y utiliza procesos formales, lenguajes de modelado y metodologías de desarrollo de forma documentada y estandarizada. Esto permite mejorar continuamente el proceso mediante el uso de métricas y tecnologías innovadoras.
1. software:
¿Artesanía o Ingeniería?
No soy un científico, un ingeniero o un artesano,
soy un artista que plasma su arte en la
invisible urdimbre de los hilos electrónicos.
Dr. José Enrique Alvarez Estrada
Versión 1.0 15-nov-2012
2. Lo que se puede medir,
se puede administrar.
Peter Drucker
4. ¡ Dramático !
Uso de SW contratado por el DoD
1.5% 3.0%
19.2%
47.3%
29.0%
SW entregado y nunca usado
SW pagado y no entregado
SW usado, luego abandonado o retrabajado
SW usado después de cambios
SW usado tal como fue entregado
5. El software no se comporta
de acuerdo a nuestros
paradigmas
17. Métrica de Foster
250,000 LoC ≈ 1 Km de papel impreso
400
350
344
300
Km de código fuente
250
200
150
100
63.6
50
1.4 2 4 8 12
0
Tarificador telefónico pequeño Tarificador telefonico grande Kernel Linux 2.6
Obras completas de Shakespeare Transbordador espacial Sistemas de Admon de Red Telefónica MacOS X 10.4
18. Tamaños de Proyectos de SW
Categoría Número de Duración Tamaño
Programadores (LoC)
Trivial <1 1-4 semanas < 1K
Pequeño 1-2 1-6 meses 1K - 5K
Mediano 2-5 1-2 años 5K - 50K
Grande 5-50 2-3 años 50K - 500K
Muy grande 50-200 3-5 años 500K - 5M
Extremadamente >200 5-10 años > 5M
grande
19. Proporción de las Actividades
5% 2%
6%
15%
53%
10%
10%
Requerimientos y Análisis Diseño del sistema
Diseño detallado Codificación
Pruebas unitarias Integración
Mantenimiento
21. En realidad, la escuela sólo entrena
a los desarrolladores para la fase
de construcción.
Y a los administradores...
¡ni siquiera se les menciona el tema!
23. Mito de Gestión #1
Tenemos ya un libro que está lleno de
estándares y procedimientos para
construir software. ¿No le proporciona
ya a mi gente todo lo que necesita
saber?
24. Mito de Gestión #2
Mi gente dispone de las herramientas
de desarrollo de software más
avanzadas; después de todo, les
compramos las computadoras más
modernas.
25. Mito de Gestión #3
Si fallamos en la planificación, siempre
podremos añadir más programadores
y adelantar el tiempo perdido.
(también llamado mito de la horda mongoliana)
26. Mito del Cliente #1
Una declaración general de los
objetivos es suficiente para comenzar
a escribir los programas; podemos dar
los detalles más adelante.
27. Mito del Cliente #2
Los requisitos del proyecto cambian
continuamente, pero los cambios
pueden acomodarse fácilmente, ya
que el software es flexible.
28. Mito del Desarrollador #1
Una vez que escribimos el programa y
hacemos que funcione, nuestro trabajo
ha terminado.
29. Mito del Desarrollador #2
Hasta que no tengo el programa
ejecutándose, realmente no tengo
forma de comprobar su calidad.
30. Mito del Desarrollador #3
Lo único que se entrega al terminar el
proyecto es el programa funcionando.
38. El proceso del software se determina
según el caso, y ocasionalmente de
forma caótica. Se definen pocos
procesos, y el éxito depende del
esfuerzo individual.
39. Se establecen los procesos de gestión
del proyecto para hacer seguimiento del
costo, la planificación y la
funcionalidad. Para repetir éxitos
anteriores en proyectos con
aplicaciones similares, se aplica la
disciplina necesaria para el proceso.
40. Las actividades de gestión del proceso
de software se documentan,
estandarizan e integran en un proceso
de software para toda la organización.
Todos los proyectos utilizan una
versión documentada y aprobada de
dicho proceso.
41. Se recopilan medidas
detalladas del proceso del
software y de la calidad del
producto. Mediante la
utilización de medidas
detalladas, se comprenden y
controlan cuantitativamente
tantos los productos como el
proceso del software.
42. Mediante un resultado
cuantitativo del proceso y de
las ideas y tecnologías
innovadoras se posibilita una
mejora del proceso.
43. En resumen ¿qué distingue
a la artesanía de software
de la ingeniería de software?
44. 3 elementos
● Definición y uso de un proceso formal
– También llamado ciclo de vida
● Definición y uso de un lenguaje de modelado
– i.e. UML
● Definición y uso de una
metodología de desarrollo de software
– Orientada a Datos (E/R)
– Estructurada (Jackson, Yourdon, etc.)
– O.O. (OMT, Jacobson, Booch)