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
Lo que se puede medir,
 se puede administrar.
              Peter Drucker
A los desarrolladores
   nos gusta pensar
 que somos artistas
¡ 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
El software no se comporta
    de acuerdo a nuestros
     paradigmas
Índice de Fallos   Curva de Fallas de HW




                            Tiempo
Curva de Fallas de HW


                    Mortandad
Índice de Fallos




                     infantil




                            Tiempo
Curva de Fallas de HW


                    Mortandad     Se
Índice de Fallos




                     infantil descompone




                            Tiempo
Curva (idealizada) de Fallas de SW
 Índice de Fallos




                    Tiempo
Curva (idealizada) de Fallas de SW
 Índice de Fallos




                    Continúa el mismo índice
                     hasta la obsolescencia




                           Tiempo
Índice de Fallos   Curva (real) de Fallas de SW




                               Tiempo
Curva (real) de Fallas de SW
                                        Incremento del
                                      índice de fallas por
                                     efectos colaterales
Índice de Fallos




                        ¡CAMBIO!




                                   Tiempo
Índice de Fallos   Curva (real) de Fallas de SW




                               Tiempo
Índice de Fallos   Curva (real) de Fallas de SW




                               Tiempo
Índice de Fallos   Curva (real) de Fallas de SW




                               Tiempo
¿Qué tanto es tantito
en Ingeniería de SW?
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
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
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
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!
MITOS
  del
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
               $
 Cliente:
2 vértices




tiempo                   requerimientos
El Triángulo del Software
               $
 Cliente:            Desarrollador:
2 vértices             1 vértice




tiempo                    requerimientos
El Triángulo del Software
                     $
 Cliente:                       Desarrollador:
2 vértices                        1 vértice




             De lo contrario:
tiempo                               requerimientos
               ¡huyan!
El reto está en evolucionar
de la artesanía de software
a 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 una
    metodologí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 Estrada
            jeae@ucaribe.edu.mx
http://www.facebook.com/LeonardoDaVinciMX
                @davincimx

Software, ¿artesanía o ingeniería?

  • 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 sepuede medir, se puede administrar. Peter Drucker
  • 3.
    A los desarrolladores nos gusta pensar que somos artistas
  • 4.
    ¡ Dramático ! Usode 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 nose comporta de acuerdo a nuestros paradigmas
  • 6.
    Índice de Fallos Curva de Fallas de HW Tiempo
  • 7.
    Curva de Fallasde HW Mortandad Índice de Fallos infantil Tiempo
  • 8.
    Curva de Fallasde HW Mortandad Se Índice de Fallos infantil descompone Tiempo
  • 9.
    Curva (idealizada) deFallas de SW Índice de Fallos Tiempo
  • 10.
    Curva (idealizada) deFallas de SW Índice de Fallos Continúa el mismo índice hasta la obsolescencia Tiempo
  • 11.
    Índice de Fallos Curva (real) de Fallas de SW Tiempo
  • 12.
    Curva (real) deFallas de SW Incremento del índice de fallas por efectos colaterales Índice de Fallos ¡CAMBIO! Tiempo
  • 13.
    Índice de Fallos Curva (real) de Fallas de SW Tiempo
  • 14.
    Índice de Fallos Curva (real) de Fallas de SW Tiempo
  • 15.
    Índice de Fallos Curva (real) de Fallas de SW Tiempo
  • 16.
    ¿Qué tanto estantito en Ingeniería de SW?
  • 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 Proyectosde 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 lasActividades 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
  • 20.
  • 21.
    En realidad, laescuela sólo entrena a los desarrolladores para la fase de construcción. Y a los administradores... ¡ni siquiera se les menciona el tema!
  • 22.
  • 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.
  • 31.
    El Triángulo delSoftware $ tiempo requerimientos
  • 32.
    El Triángulo delSoftware $ Cliente: 2 vértices tiempo requerimientos
  • 33.
    El Triángulo delSoftware $ Cliente: Desarrollador: 2 vértices 1 vértice tiempo requerimientos
  • 34.
    El Triángulo delSoftware $ Cliente: Desarrollador: 2 vértices 1 vértice De lo contrario: tiempo requerimientos ¡huyan!
  • 35.
    El reto estáen evolucionar de la artesanía de software a la ingeniería de software
  • 36.
    CMM: Un Modelode Referencia
  • 38.
    El proceso delsoftware 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 losprocesos 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 degestió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)
  • 45.
  • 46.
    GRACIAS POR SUATENCIÓN ¿Preguntas? Dr. José Enrique Alvarez Estrada jeae@ucaribe.edu.mx http://www.facebook.com/LeonardoDaVinciMX @davincimx