Está en la página 1de 85

Ingeniera de Software

Sorey Bibiana Garca Zapata


Ingeniera Informtica
Politcnico Jaime Isaza Cadavid
Especialista en Desarrollo de Software
Universidad EAFIT

Algunos discutirn mi forma de explicar la ingeniera


de software, mi argumento es simple
No puedes hacer bien algo de lo que no tienes
conciencia, y saber de memoria un concepto de un
libro pocas veces genera conciencia

Este es un curso para principantes, y tambin para


personas de vieja guardia, que aun no entienden
ahora por que nos complicamos tanto.
Los que todo lo saben, aqu tampoco encontrarn nada nuevo, o de pronto si, un
poquito de conciencia.

Qu es Ingeniera
de software?

"Ingeniera del Software es el estudio de


los principios y metodologas para
desarrollo y mantenimiento de sistemas de
software" Zelkovitz 1978.

Ingeniera del Software es la aplicacin


practica del conocimiento cientfico en el diseo
y construccin de programas de computadora y
la documentacin asociada requerida para
desarrollar, operar(funcionar) y mantenerlos. Se
conoce tambin como desarrollo de software o
produccin de software Bohem 1976.

Ingeniera del Software trata del


establecimiento de los principios y mtodos de
la ingeniera a fin de obtener software de modo
rentable que sea fiable y trabaje en maquinas
reales Fritz Bauer 1972.

La aplicacin de un enfoque sistemtico,


disciplinado, y cuantificable al desarrollo,
operacin, y mantenimiento del software;
es decir la aplicacin de Ingeniera del
Software. IEEE 1993.

Se entendi?
Busquemos una definicin

Pues bien,
vamos a conocer un poco de eso.

Ha pensado alguna vez,

Donde hay software?

Parece que son ms


responsabilidades de las que
esperbamos no?
Bueno, y que tal si nos hacemos un par
de preguntas

Ira en un viaje
alrededor de la tierra
en globo, sabiendo
que este esta
controlado por una
computadora?

Viajara usted en un avin cuyo


software ha sido construido por usted?

Si su respuesta a estas
preguntas ha presentado
un poco de duda, vale la
pena cuestionarse alguna
cosas

Dudan los enfermos


del corazn de sus
mdicos cirujanos?

Dudan los empresarios


de los ingenieros civiles y
arquitectos que
construyen sus edificios?

Bueno, y es que no es carpintero por


tener madera, clavos y martillo
Como no se es desarrollador de
software por saber programar.

Ha visto el gracioso video de

Que pasara si los programadores


hicieran aviones?
Si, no lo invito a verlo antes de continuar
http://www.youtube.com/watch?v=UZq4sZz56qM

Gracioso, no?
Pues no!
No es gracioso que siendo un profesional tu
trabajo sea tomado en broma
El problema es, que pasa si nosotros mismos
nos tomamos nuestro trabajo en broma?

Pues bien, si no se toma su trabajo en serio, lo que pasar es


que usted mismo no ser tomado en serio.

Si usted sabe programar pero desconoce las


motivaciones asociadas a su trabajo, las
responsabilidades que implica y las consecuencias
que acarrea su mal desempeo es decir, si no sabe
ingeniera de software o le importa poco lo que
significa, pues usted no sabe hacer software, solo
sabe programar.

Si comparamos saber hacer


software, con saber hacer
edificios, lo que usted sabe
hacer bsicamente es
pegar ladrillos

Y si bien los ladrillos y dems estructuras, conforman el


producto final; existen una serie de roles asociados a la
construccin, sin los cuales las admirables construcciones
modernas no podran ser construidos.

Es el caso de los maestros de obra, arquitectos,


ingenieros civiles
Solo por mencionar algunos de los ms obvios.

Un programador es
solo un rol del
conjunto de roles
implicados en el
proceso de desarrollo
de software

Pues bien, para desarrollar software existen


una serie de roles asociados, encargados de
analizar, planificar y establecer, que es lo
que va a desarrollarse, como, con cuantos
recursos, en cuanto tiempo e incluso a que
nivel de calidad

Y es que, si tuviera dinero para enviar a construir su


propia casa.

No le gustara que quien va a construirla le


garantizara la calidad del trabajo que va a
realizar y le demostrara que cuenta con el
conocimiento, materiales y equipo
necesarios para hacer un trabajo perfecto?

Si?
Pues bien, los clientes y usuarios de
los proyectos de software, esperan
exactamente lo mismo!

La ingeniera de software es una


idea casi tica sobre como hacer el
software de forma correcta

El problema radica en que como casi


todas las cosas en la vida, existen
visiones diferentes de cmo hacer
las cosas de forma correcta
No obstante, existen unos principios generales

Reemplacemos entonces la frase


hacer software de forma correcta por
hacer software de calidad

Si calidad!!,
La calidad determina el camino a seguir de todas las
disciplinas asociadas a la ingeniera de software,
aunque para algunos resultan
excesivas y engorrosas

Yo dira que, hacer las cosas bien, siempre va


a requerir un poco ms de esfuerzo, que
hacerlas de cualquier otro modo

pues bien, la mayora de los crticos


acerca del por que la ingeniera de
software aade ms cantidad de
trabajo, resultan ser personas que
desconocen las motivaciones y el
propsito de la labor que realizan

En que parte de las definiciones


formales nuestro que hacer como
personas?

La ingeniera es el
conjunto de
conocimientos y
tcnicas cientficas
aplicadas, que se
dedica a la resolucin
u optimizacin de los
problemas que
afectan directamente
a la humanidad
Wikipedia

En ella, el conocimiento, manejo y dominio de las


matemticas y fsica, obtenido mediante estudio,
experiencia y prctica, se aplica con juicio para
desarrollar formas eficientes de utilizar los materiales
y las fuerzas de la naturaleza para beneficio de la
humanidad y del ambiente.
Wikipedia

Ah coincidimos

Ser ingeniero tiene


que ver con
ser humanamente
responsable

No hablo de personas con ttulo de ingeniero, si no de personas que se dediquen a ejercer


la ingeniera de software

En resumen

Ingeniera de software es la disciplina o


rea de la informtica que ofrece
mtodos y tcnicas para desarrollar y
mantener software de calidad.
Wikipedia

http://es.wikipedia.org/wiki/Ingenier%C3%ADa_del_software

Pero, y qu importa la calidad?

Acaso en software no importa es


bsicamente que funcione?
Veamos algunas respuestas a esa pregunta
(Ojo, las siguientes imagenes son meramente ilustrativa, no todas
pertenecen al hecho descrito)

Therac-25
(1985 1987)

Era una mquina empleada en terapia de


radiacin, producida por Atomic Energy of
Canada Limited, notoria por haber sido
objeto del error de software, causando al
menos seis accidentes y que le cost la
vida al menos a cinco personas

Mariner 1
(28 de Julio de 1962)

Un guin en las
instrucciones del
programa de guiado
del cohete provoc la
desviacin del Atlas y
tuvo que enviarse un
comando para su
autodestruccin a los
4 minutos y 53
segundos de su
lanzamiento

Vuelo 501 del ARIANE-5


(4 de Junio de 1996)
Otro ejemplo documentado sobre el
dao ocasionado por software mal
diseado es el de la explosin de la
lanzadera Ariane-5, cuando a 40
segundos despus de la iniciacin de la
secuencia de vuelo, la lanzadera se
desvi de su ruta, se parti y explot.
En el proyecto global se invirtieron 10
aos de construccin y 7 mil millones
de euros, lo que supuso un duro golpe
para la Agencia Espacial Europea (ESA)

http://www.youtube.com/watch?v=ION
cgYzVFlg

A-320 de Air France


(26 de junio de 1988)
Durante una presentacin en el
meeting de Habsheim, cerca de
Mulhouse (Francia), un A-320 de Air
France se estrella en el bosque, al final
de la pista. Habr tres muertos y una
centena de heridos.
Justo despus, el mundo se pregunta
las causas del accidente del avin
anunciado como "el ms seguro del
mundo".
Una de las causas se le atribuye a un
error en el software de navegacin
http://www.youtube.com/watch?v=_E
M0hDchVlY

Que tal las


respuestas?
Nada
agradables si
me permiten
decirles!

Pues bien, aunque actualmente existen


muchas personas que construyen software
con conocimiento emprico, tal como si fuera
arte, lo que debe diferenciar un trabajo bien
hecho (profesional o emprico), es los
mtodos y la evidente forma de hacer el
trabajo teniendo en mente la calidad de los
procesos ejecutados y de los productos
desarrollados.

Bueno, y si es que
parece que la ingeniera
de software establece
tan claramente lo que
hay que hacer
Cual es el problema?
Acaso no todos lo
hacemos as?
Pues no, a veces pasa que

Y quien dice que


siempre sale mal?
A pues no,
no siempre sale
mal
Solo algunas
veces
Veamos

CHAOS Report
(Estudio de Resultado de Ejecucin de los Proyectos de Software)

Exitoso

33

49

51

53

28

23

15

18

27

26

28

34

29

1996

1998

2000

2002

2004

40
31

1994

Cancelado

46

53

16

Fallido

CHAOS Report 1995: http://net.educause.edu/ir/library/pdf/NCP08083B.pdf

Pues bien,
muchos de estos errores son aducidos
principalmente a falta de planeacin y buen
anlisis, cosa que tiene mucho sentido pero
que sin embargo, no es la nica razn
Como seres humanos involucrados en el
proceso de desarrollo, cometemos errores
que de no ser corregidos a tiempo, van
aumentando su costo y consecuencias

Usemos ms analogas para entender


De que estamos hablando

Y si este fuera nuestro proyecto?

Qu necesitaramos
para construirlo?

Veamos
Herramientas
Personas
Tiempo
Dinero
Recursos

Parece
Intuitivo no?

Sin embargo sabemos que en realidad, es


un poco ms difcil de lo que imaginamos

Sin embargo

Seguimos
cayendo en los
mismos
errores una y
otra vez

Pues bien,
muchos de estos errores son aducidos
principalmente a falta de planeacin y buen
anlisis, cosa que tiene mucho sentido pero
que sin embargo, no es la nica razn
Como seres humanos involucrados en el
proceso de desarrollo, cometemos errores
que de no ser corregidos a tiempo, van
aumentando su costo y consecuencias

Qu errores se comenten?

Falta de comunicacin

Ausencia de objetivos y metas


claras durante la ejecucin del
proyecto

Mala estimacin
de tiempos

Falta de planificacin

Requisitos poco claros y falta de


acceso a la informacin

Indefinicin del alcance y las


responsabilidades de las partes

Falta de
identificacin y
gestin de los
riesgos

Carencia de
habilidades en la
ejecucin de un rol

Falta de seguimiento al
avance del proyecto

Falta de control del


presupuesto

Recursos Insuficientes

No poseer o seguir
una arquitectura

Falta de conocimiento e inters


en la aplicacin de mejores
prcticas

En la mayora de
proyectos de desarrollo,
los costes de
mantenimiento, superan
por un amplio margen los
costos de desarrollo, se
habla de un 30% en
Desarrollo y un 70% en
Mantenimiento.

Veamos que tal estamos ahora

Ahora bien, de acuerdo a lo que hemos


hablado entonces, los Ingenieros de software
no solo deben considerar aspectos tcnicos:
Deben tener una visin ms amplia, en lo
tico, social y profesional.

Y como se hace?

Bueno, una primera forma de pensar en las


actividades que se involucra el proceso de
desarrollo de software es preguntarse acerca
de Que se construir? Como se har? Y De
que forma evolucionar?
O bien, como veamos en la grfica anterior,
La Definicin, El Desarrollo y El
Mantenimiento

Los cambios en las primeras etapas son ms


costosos que en las ltimas

Ingeniera de Software
Sorey Bibiana Garca Zapata
www.soreygarcia.com

También podría gustarte