Las imagenes usadas en esta presentación tiene un fin exclusivamente academico, si alguien considera que debo eliminarlas, por favor hagamelo saber. Gracias
Clasificación de Conjuntos de Datos Desequilibrados.pptx
Ingenieria De Software Para Dummies
1. Ingeniería de Software
Sorey Bibiana García Zapata
Ingeniera Informática
Politécnico Jaime Isaza Cadavid
Especialista en Desarrollo de Software
Universidad EAFIT
2. Algunos discutirán mi forma de explicar la ingeniería
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
3. Este es un curso para principantes, y también para
personas de vieja guardia, que aun no entienden
ahora por que nos “complicamos tanto”.
Los que todo lo saben, aquí tampoco encontrarán nada nuevo, o de pronto si, un
poquito de conciencia.
5. "Ingeniería del Software es el estudio de
los principios y metodologías para
desarrollo y mantenimiento de sistemas de
software" Zelkovitz 1978.
6. “Ingeniería del Software es la aplicación
practica del conocimiento científico en el diseño
y construcción de programas de computadora y
la documentación asociada requerida para
desarrollar, operar(funcionar) y mantenerlos. Se
conoce también como desarrollo de software o
producción de software” Bohem 1976.
7. “Ingeniería del Software trata del
establecimiento de los principios y métodos de
la ingeniería a fin de obtener software de modo
rentable que sea fiable y trabaje en maquinas
reales” Fritz Bauer 1972.
8. La aplicación de un enfoque sistemático,
disciplinado, y cuantificable al desarrollo,
operación, y mantenimiento del software;
es decir la aplicación de Ingeniería del
Software. IEEE 1993.
23. Bueno, y es que no es carpintero por
tener madera, clavos y martillo…
Como no se es desarrollador de
software por saber programar.
24. Ha visto el gracioso video de…
Que pasaría si los programadores
hicieran aviones?
Si, no lo invito a verlo antes de continuar…
http://www.youtube.com/watch?v=UZq4sZz56qM
25. 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?
26. 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 desempeño… es decir, si no sabe
ingeniería de software o le importa poco lo que
significa, pues usted no sabe hacer software, solo
sabe programar.
27. Si comparamos saber hacer
software, con saber hacer
edificios, lo que usted sabe
hacer básicamente es
“pegar ladrillos”
28. Y si bien los ladrillos y demás estructuras, conforman el
producto final; existen una serie de roles asociados a la
construcción, sin los cuales las admirables construcciones
modernas no podrían ser construidos.
29. Es el caso de los maestros de obra, arquitectos,
ingenieros civiles…
Solo por mencionar algunos de los más obvios.
30. Un programador es
solo un rol del
conjunto de roles
implicados en el
proceso de desarrollo
de software
31. 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
32. Y es que, si tuviera dinero para enviar a construir su
propia casa….
No le gustaría 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?
33. Si?
Pues bien, los clientes y usuarios de
los proyectos de software, esperan
exactamente lo mismo!
34. La ingeniería de software es una
idea casi ética sobre como hacer el
software de forma correcta
35. El problema radica en que como casi
todas las cosas en la vida, existen
visiones diferentes de cómo hacer
las cosas de forma correcta
No obstante, existen unos principios generales
36. Reemplacemos entonces la frase
“hacer software de forma correcta” por
“hacer software de calidad”
37. Si calidad!!,
La calidad determina el camino a seguir de todas las
disciplinas asociadas a la ingeniería de software,…
aunque para algunos resultan
“excesivas y engorrosas”
38. Yo diría que, hacer las cosas bien, siempre va
a requerir un poco más de esfuerzo, que
hacerlas de cualquier otro modo
39. … pues bien, la mayoría de los críticos
acerca del por que la ingeniería de
software añade más cantidad de
trabajo, resultan ser personas que
desconocen las motivaciones y el
propósito de la labor que realizan…
40. ¿En que parte de las definiciones
formales nuestro que hacer como
personas?
41. La ingeniería es el
conjunto de
conocimientos y
técnicas científicas
aplicadas, que se
dedica a la resolución
u optimización de los
problemas que
afectan directamente
a la humanidad
Wikipedia
42. En ella, el conocimiento, manejo y dominio de las
matemáticas y física, obtenido mediante estudio,
experiencia y práctica, 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
43. Ahí coincidimos
Ser ingeniero tiene
que ver con
“ser humanamente
responsable”
No hablo de personas con título de ingeniero, si no de personas que se dediquen a ejercer
la ingeniería de software
44. En resumen
Ingeniería de software es la disciplina o
área de la informática que ofrece
métodos y técnicas para desarrollar y
mantener software de calidad.
Wikipedia
http://es.wikipedia.org/wiki/Ingenier%C3%ADa_del_software
45. Pero, y ¿qué importa la calidad?
¿Acaso en software no importa es
básicamente que funcione?
Veamos algunas respuestas a esa pregunta…
(Ojo, las siguientes imagenes son meramente ilustrativa, no todas
pertenecen al hecho descrito)
46. Therac-25
(1985 – 1987)
Era una máquina empleada en terapia de
radiación, 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
47. Mariner 1
(28 de Julio de 1962)
Un guión en las
instrucciones del
programa de guiado
del cohete provocó la
desviación del Atlas y
tuvo que enviarse un
comando para su
autodestrucción a los
4 minutos y 53
segundos de su
lanzamiento
48. Vuelo 501 del ARIANE-5
(4 de Junio de 1996)
Otro ejemplo documentado sobre el
daño ocasionado por software mal
diseñado es el de la explosión de la
lanzadera Ariane-5, cuando a 40
segundos después de la iniciación de la
secuencia de vuelo, la lanzadera se
desvió de su ruta, se partió y explotó.
En el proyecto global se invirtieron 10
años de construcción 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
49. A-320 de Air France
(26 de junio de 1988)
Durante una presentación 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 después, el mundo se pregunta
las causas del accidente del avión
anunciado como "el más seguro del
mundo".
Una de las causas se le atribuye a un
error en el software de navegación
http://www.youtube.com/watch?v=_E
M0hDchVlY
51. Pues bien, aunque actualmente existen
muchas personas que construyen software
con conocimiento empírico, tal como si fuera
arte, lo que debe diferenciar un trabajo bien
hecho (profesional o empírico), es los
métodos y la evidente forma de hacer el
trabajo teniendo en mente la calidad de los
procesos ejecutados y de los productos
desarrollados.
52. Bueno, y si es que
parece que la ingeniería
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…
53.
54. Y quien dice que
siempre sale mal?
A pues no,
no siempre sale
mal…
Solo algunas
veces…
Veamos…
55. CHAOS Report
(Estudio de Resultado de Ejecución de los Proyectos de Software)
Exitoso Fallido Cancelado
33
53 46 49 51 53
40
28 23 15 18
31
27 26 28 34 29
16
1994 1996 1998 2000 2002 2004
CHAOS Report 1995: http://net.educause.edu/ir/library/pdf/NCP08083B.pdf
56. Pues bien,
muchos de estos errores son aducidos
principalmente a falta de planeación y buen
análisis, cosa que tiene mucho sentido pero
que sin embargo, no es la única razón…
Como seres humanos involucrados en el
proceso de desarrollo, cometemos errores
que de no ser corregidos a tiempo, van
aumentando su costo y consecuencias
62. Sin embargo sabemos que en realidad, es
un poco más difícil de lo que imaginamos
63. Sin embargo…
Seguimos
cayendo en los
mismos
errores una y
otra vez…
64. Pues bien,
muchos de estos errores son aducidos
principalmente a falta de planeación y buen
análisis, cosa que tiene mucho sentido pero
que sin embargo, no es la única razón…
Como seres humanos involucrados en el
proceso de desarrollo, cometemos errores
que de no ser corregidos a tiempo, van
aumentando su costo y consecuencias
79. En la mayoría 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.
81. Ahora bien, de acuerdo a lo que hemos
hablado entonces, los Ingenieros de software
no solo deben considerar aspectos técnicos:
Deben tener una visión más amplia, en lo
ético, social y profesional.
83. 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 veíamos en la gráfica anterior,
La Definición, El Desarrollo y El
Mantenimiento
84. Los cambios en las primeras etapas son más
costosos que en las últimas