software, ¿artesanía o ingeniería?
DESCRIPTION
¿Cómo podemos hacerle para evolucionar desde la "artesanía" de software hacia la "ingeniería" de software?TRANSCRIPT
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 EstradaVersión 1.0 15-nov-2012
Lo que se puede medir,se puede administrar.
Peter Drucker
A los desarrolladoresnos gusta pensar
que somos artistas
47.3%
29.0%
19.2%
3.0%1.5%
SW entregado y nunca usadoSW pagado y no entregadoSW usado, luego abandonado o retrabajadoSW usado después de cambiosSW usado tal como fue entregado
¡ Dramático !Uso de SW contratado por el DoD
El software no se comportade acuerdo a nuestros
paradigmas
Curva de Fallas de HW
Tiempo
Índ
ice
de
Fa
l los
Tiempo
Índ
ice
de
Fa
l los
Curva de Fallas de HW
Mortandadinfantil
Tiempo
Índ
ice
de
Fa
l los
Curva de Fallas de HW
Mortandadinfantil
Sedescompone
Curva (idealizada) de Fallas de SW
Tiempo
Índ
ice
de
Fa
l los
Curva (idealizada) de Fallas de SW
Tiempo
Índ
ice
de
Fa
l los
Continúa el mismo índicehasta la obsolescencia
Curva (real) de Fallas de SW
Tiempo
Índ
ice
de
Fa
l los
Curva (real) de Fallas de SW
Tiempo
Índ
ice
de
Fa
l los
Incremento del índice de fallas por
efectos colaterales
¡CAMBIO!
Curva (real) de Fallas de SW
Tiempo
Índ
ice
de
Fa
l los
Curva (real) de Fallas de SW
Tiempo
Índ
ice
de
Fa
l los
Curva (real) de Fallas de SW
Tiempo
Índ
ice
de
Fa
l los
¿Qué tanto es tantitoen Ingeniería de SW?
Métrica de Foster250,000 LoC ≈ 1 Km de papel impreso
Obras completas de ShakespeareTarificador telefónico pequeño
Transbordador espacialTarificador telefonico grande
Sistemas de Admon de Red TelefónicaKernel Linux 2.6
MacOS X 10.4
0
50
100
150
200
250
300
350
400
1.4 2 4 8 12
63.6
344
Km
de
có
dig
o f
uen t
e
Tamaños de Proyectos de SW
CategoríaCategoría Número deNúmero deProgramadoresProgramadores
DuraciónDuración TamañoTamaño(LoC)(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
Extremadamentegrande
>200 5-10 años > 5M
Proporción de las Actividades
2%5%6%
15%
10%
10%
53%
Requerimientos y Análisis Diseño del sistemaDiseño detallado CodificaciónPruebas unitarias IntegraciónMantenimiento
Actividades y Esfuerzo
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!
MITOSdel
Software
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?
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.
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)
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.
Mito del Cliente #2
Los requisitos del proyecto cambian continuamente, pero los cambios pueden acomodarse fácilmente, ya que el software es flexible.
Mito del Desarrollador #1
Una vez que escribimos el programa y hacemos que funcione, nuestro trabajo ha terminado.
Mito del Desarrollador #2
Hasta que no tengo el programa ejecutándose, realmente no tengo forma de comprobar su calidad.
Mito del Desarrollador #3
Lo único que se entrega al terminar el proyecto es el programa funcionando.
El Triángulo del Software
$
tiempo requerimientos
El Triángulo del Software
$
tiempo requerimientos
Cliente:2 vértices
El Triángulo del Software
$
tiempo requerimientos
Cliente:2 vértices
Desarrollador:1 vértice
El Triángulo del Software
$
tiempo requerimientos
Cliente:2 vértices
Desarrollador:1 vértice
De lo contrario:
¡huyan!
El reto está en evolucionarde la artesanía de softwarea la ingeniería de software
CMM: Un Modelo de Referencia
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.
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.
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.
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.
Mediante un resultado cuantitativo del proceso y de las ideas y tecnologías innovadoras se posibilita una mejora del proceso.
En resumen ¿qué distingue a la artesanía de software
de la ingeniería de software?
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 unametodología de desarrollo de software– Orientada a Datos (E/R)
– Estructurada (Jackson, Yourdon, etc.)
– O.O. (OMT, Jacobson, Booch)
Recomendaciones Bibliográficas
GRACIAS POR SU ATENCIÓN
¿Preguntas?
Dr. José Enrique Alvarez [email protected]
http://www.facebook.com/LeonardoDaVinciMX@davincimx