Software, ¿artesanía o ingeniería?

Post on 07-Jul-2015

838 views 3 download

description

¿Cómo podemos hacerle para evolucionar desde la "artesanía" de software hacia la "ingeniería" de software?

Transcript of Software, ¿artesanía o ingeniería?

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

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 Estradajeae@ucaribe.edu.mx

http://www.facebook.com/LeonardoDaVinciMX@davincimx