Ingenieria de Software Para Dummies 1234067613105981 3

download Ingenieria de Software Para Dummies 1234067613105981 3

of 85

Transcript of Ingenieria de Software Para Dummies 1234067613105981 3

  • Ingeniera de Software

    Sorey Bibiana Garca Zapata

    Ingeniera InformticaPolitcnico Jaime Isaza Cadavid

    Especialista en Desarrollo de SoftwareUniversidad 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 continuarhttp://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 consecuenciasque 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 equiponecesarios 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 todaspertenecen 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=IONcgYzVFlg

  • 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=_EM0hDchVlY

  • 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

  • 1994 1996 1998 2000 2002 2004

    1627 26 28 34 29

    31

    4028 23 15 18

    5333

    46 49 51 53

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

    Exitoso Fallido Cancelado

    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 buenanlisis, 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 entenderDe que estamos hablando

  • Y si este fuera nuestro proyecto?

  • Qu necesitaramos para construirlo?

  • Veamos

    HerramientasPersonasTiempoDineroRecursos

  • 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 buenanlisis, 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 estimacinde 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 Zapatawww.soreygarcia.com