Introducción a la Ingenieria de Software

5
Introducci´ on a la Ingenier´ ıa de Software Torres Germ´ an [email protected] Ingenier´ ıa de Software UNdeC 31 de marzo de 2015 Resumen En este trabajo se da una introducci´ on a la ingenier´ ıa de software, definiciones y conceptos basicos que mas adelante se van a trabajar con mas exactitud y una sintesis de los articulos Software’s Chronics Crisis[1] y No Silver Bullets[2], proporcionando un marco para entender el las siguientes unidades y comprendiendo la importancia de la ingenier´ ıa de software y su significado. 1. Introducci´ on En la actualidad los sistemas inform´ aticos estan en casi todo el entorno que nos rodea, sistemas que manejan grandes insfraestructuras, productos electronicos que funcionan con sistemas de software de control, etc. Lo cual hace que el desarrollo de software es esencial para la econom´ ıa. La ingenier´ ıa de software es una disciplina que tiene como meta desarrollar software. Este es abstracto e intangible y no esta regido por leyes fisicas o por procesos de manufactura, lo cual de alguna manera esto simplifica la ingenieria de software ya que no existen limitaciones f´ ısicas, sin embargo esto lo puede hacer completamente complejo y dificil de entender. La ingenier´ ıa de software fue propuesta en el a˜ no 1968 donde en ese tiempo se discutia la ’crisis del software’ llamada asi por los incovenientes que se tenia en el desarrollo, costos elevados, dificil de man- tener, desempe˜ no pobre, el desarrollo estaba en crisis, por lo que se necesitaban urgente nuevas t´ ecnicas y m´ etodos para controlar la complejidad de los sistemas. Con el pasar del tiempo se a mejorado en el desarrollo de esta ingenier´ ıa y ah mejorado considerable- mente el software. Se han desarrollado m´ etodos efectivos de especificaci´ on, dise˜ no e implementaci´ on de software. Sabemos que no hay un enfoque ideal en la ingenier´ ıa del software. La amplia diversidad de tipos de sistemas y las organizaciones que utilizan estos sistemas significa que necesitamos una diversidad de enfoques al desarrollo de software. 1.1. ¿Qu´ e es Software? Basicamente es un programa de computadora incluyendo su documentaci´ on y configuraci´on corres- pondiente para que estos se operen de manera correcta. Existen dos tipos de producto de software, uno es Productos gen´ ericos, se venden al mercado abierto. Y Productos personalizados, que son sistemas requeridos por un cliente particular. 1.2. ¿Qu´ e es la Ingenier´ ıa de Software? Es una disciplina de ingenier´ ıa que comprende todos los aspectos del desarrollo de software, desde las etapas iniciales de la especificaci´ on del sistema, hasta el mantenimiento de ´ este despues que se utiliza. 1

description

Introducción a la Ingenieria de Software

Transcript of Introducción a la Ingenieria de Software

  • Introduccion a la Ingeniera de Software

    Torres [email protected]

    Ingeniera de Software

    UNdeC

    31 de marzo de 2015

    Resumen

    En este trabajo se da una introduccion a la ingeniera de software, definiciones y conceptos basicosque mas adelante se van a trabajar con mas exactitud y una sintesis de los articulos Softwares ChronicsCrisis[1] y No Silver Bullets[2], proporcionando un marco para entender el las siguientes unidades ycomprendiendo la importancia de la ingeniera de software y su significado.

    1. Introduccion

    En la actualidad los sistemas informaticos estan en casi todo el entorno que nos rodea, sistemas quemanejan grandes insfraestructuras, productos electronicos que funcionan con sistemas de software decontrol, etc. Lo cual hace que el desarrollo de software es esencial para la economa.La ingeniera de software es una disciplina que tiene como meta desarrollar software. Este es abstractoe intangible y no esta regido por leyes fisicas o por procesos de manufactura, lo cual de alguna maneraesto simplifica la ingenieria de software ya que no existen limitaciones fsicas, sin embargo esto lo puedehacer completamente complejo y dificil de entender.La ingeniera de software fue propuesta en el ano 1968 donde en ese tiempo se discutia la crisis delsoftware llamada asi por los incovenientes que se tenia en el desarrollo, costos elevados, dificil de man-tener, desempeno pobre, el desarrollo estaba en crisis, por lo que se necesitaban urgente nuevas tecnicasy metodos para controlar la complejidad de los sistemas.Con el pasar del tiempo se a mejorado en el desarrollo de esta ingeniera y ah mejorado considerable-mente el software. Se han desarrollado metodos efectivos de especificacion, diseno e implementacion desoftware. Sabemos que no hay un enfoque ideal en la ingeniera del software. La amplia diversidad detipos de sistemas y las organizaciones que utilizan estos sistemas significa que necesitamos una diversidadde enfoques al desarrollo de software.

    1.1. Que es Software?

    Basicamente es un programa de computadora incluyendo su documentacion y configuracion corres-pondiente para que estos se operen de manera correcta. Existen dos tipos de producto de software, uno esProductos genericos, se venden al mercado abierto. Y Productos personalizados, que son sistemasrequeridos por un cliente particular.

    1.2. Que es la Ingeniera de Software?

    Es una disciplina de ingeniera que comprende todos los aspectos del desarrollo de software, desde lasetapas iniciales de la especificacion del sistema, hasta el mantenimiento de este despues que se utiliza.

    1

  • Esta definicion compreden frases claves, disciplina de la ingenieria: Los ingenieros hacen que las cosasfuncionen. Aplican metodos y herramientas donde sea conveniente, las utilizan de una forma selectiva ysiempre tratando de descubrir soluciones a los problemas, aun cuando no existan teorias o metodos pararesolverlas.Todos los aspectos de la produccion de software: La ingeniera de software no solo comprende losaspectos tecnicos de desarrollo de software, sino actividades como la gestion de proyectos de software yel desarrollo de herramientas, metodos, teoras de apoyo para la construccion de software.

    1.3. Cual es la diferencia entre ingenieria de software y la ciencia dela computacion

    Esencialmente la ciencia de la computacion se refiere a las teorias y metodos subyacentes a las compu-tadoras y los sistemas de software, mientras que la ingenieria de software se refiere a los problemaspracticos de producir software.

    1.4. Cual es la diferencia entre ingenieria en sistema e ingenieria desoftware?

    La ingeniera de sistemas se refiere a todos los aspectos del desarrollo y de la evolucion de siste-mas complejos donde el software desempena un papel principal. Por lo tanto la ingeniera de sistemascomprende el desarrollo hardware, polticas y proceso de diseno y distribucion de sistemas, asi como laingeniera de software. La ingeniera de sistemas es mas antigua que la del software. Por mas de 100anos, las personas han especificado y construido sistemas industriales complejos, como aviones y plantasqumicas.

    1.5. Que es un proceso del software?

    Un proceso de software es un conjunto de actividades y resultados asociados que producen un productode software. Estas actividades son llevadas a cabo por ingenieros de software. Existen cuatro actividadesfundamentales de procesos que son comunes para todos los procesos del software. Estas actividades son:

    1. Especificacion del software donde los clientes e ingenieros definen el software a producir y lasrestricciones sobre su operacion.

    2. Desarrollo del software donde el software se disena y se programa.

    3. Validacion del software donde el software se valida para asegurar que es lo que el cliente requiere.

    4. Evolucion del software donde le software se modifica para adaptarlo a los cambios requeridospor el cliente y el mercado.

    Diferentes tipos de sistemas necesitan distintos procesos de desarrollo.

    1.6. Que es un modelo de proceso de software?

    Un modelo de procesos de software es una descripcion simplificada de un proceso del software quepresenta una vision del proceso. Estos modelos pueden incluir actividades que son parte de los procesosy productos de software y el papel de las personas involucradas en la ingeniera del software. Algunosejemplos de estos tipos:

    1. Un modelo de flujo de trabajo. Muestra la secuencia de actividades en el proceso junto con lasentradas, salidas y dependencias. Las actividades en este modelo representan actividades humanas.

    2. Un flujo de modelo de flujos de datos o de actividad. Representa el proceso como unconjunto de actividades, cada una de las cuales realiza alguna transformacion en los datos.

    3. Un modelo de rol / accion. Representa los roles de las personas involucradas en el proceso delsoftware y actividades de las que son responsables.

    2

  • La mayor parte de los modelos de proceso de software se basan en uno de los tres modelos generales oparadigmas de desarrollo de software:

    1. El enfoque en cascada. Considera las actividades anteriores y las representa como fases deprocesos separados, tales como la especificacion de requerimientos, el diseno de software, la imple-mentacion, las pruebas, etc.

    2. El desarrollo iterativo. Este enfoque entrelaza las actividades de especificacion, desarrollo yvalidacion. Un sistema incial se desarrolla rapidamente a partir de especificaciones muy abstractas.Esto se refina basandose en las peticiones del cliente para producir un sistema que satisfaga lasnecesidades de dicho cliente.

    3. Ingeniera del software basada en componentes (CBSE) Esta tecnica supone que las partesdel sistema existen. El proceso de desarrollo de sistema se enfoca en la integracion de esas partesmas que desarrollarlas del principio.

    1.7. Cuales son los costos de la ingeniera del software

    No existe una respuesta sencilla a esta pregunta ya que la distribucion de costos a traves de lasdiferentes actividades en el proceso del software depende del proceso utilizado y del tipo de software quese vaya a desarrollar. Por ejemplo, el software de tiempo real normalmente requiere una validacion ypruebas mas extensas que los sistemas basados en web. Sin embargo, cada uno de los diferentes enfoquesgenericos al desarrollo del software tiene un perfil de distribucion de costos diferente a traves de lasactividades del proceso del software. Si se considera que el costo total del desarrollo de un sistema desoftware complejo es de 100 unidades de costo, la Figura 1 muestra como se gastan estas en las diferentesactividades del proceso.

    Figura 1: Costo de software.

    3

  • 1.8. Que son los metodos de la ingeniera del software

    Un metodo de ingeniera del software es un enfoque estructurado para el desarrollo de software cuyoproposito es facilitar la produccion de software de alta calidad de una forma costeable. Metodos comoAnalisis Estructurado [3] y JSD [4] fueron los primeros desarrollados en los anos 70. Estos metodosintentaron identificar los componentes funcionales basicos de un sistema, de tal forma que los metodosorientados a funciones aun se utilizan ampliamente. En los anos 80 y 90, estos metodos orieniados afunciones fueron complementados por metodos orientados a objetos, como los propuestos por Booch(1994) y Rumbaugh. Estos diferentes enfoques se han integrado en un solo enfoque unificado basado enel Lenguaje de Modelado Unificado (UML) [5]

    1.9. Que es CASE?

    CASE (Ingeniera del Software Asistida por Computadora) comprende un amplio abanico de diferentestipos de programas que se utilizan para ayudar a las actividades del proceso del software, como elanalisis de requerimientos, el modelado de sistemas, la depuracion y las pruebas. En la actualidad, todoslos metodos vienen con tecnologa CASE asociada, como los editores para las notaciones utilizadas en elmetodo, modulos de analisis que verifican el modelo del sistema segun las reglas del metodo y generadoresde informes que ayudan a crear la documentacion del sistema.

    1.10. Cuales son los retos fundamentales que afronta la ingeniera delsoftware?

    En el siglo xxi, la ingeniera del software afronta tres retos fundamentales:

    1. El reto de la heterogeneidad. Cada vez mas, se requiere que los sistemas operen como sistemasdistribuidos en redes que incluyen diferentes tipos de computadoras y con diferentes clases desistemas de soporte.

    2. El reto de la entrega.Muchas tecnicas tradicionales de ingeniera del software consumen tiempo.El tiempo que estas consumen es para producir un software de calidad. Sin embargo, los negocios dehoy en da deben tener una gran capacidad de respuesta y cambiar con mucha rapidez. Su softwarede soporte tambien debe cambiar con la misma rapidez. El reto de la entrega es reducir los tiemposde entrega para sistemas grandes y complejos sin comprometer la calidad del sistema.

    3. El reto de la confianza. Puesto que el software tiene relacion con todos los aspectos de nuestravida, es esencial que podamos confiar en el. Esto es especialmente importante en sistemas remotosde software a los que se accede a traves de paginas web o de interfaces de servicios web, El reto dela confianza es desarrollar tecnicas que demuestren que los usuarios pueden confiar en el software.

    1.11. Softwares Chronics Crisis

    El desarrollo de este paper basicamento lo que nos muestra son historias de proyectos y emprendi-mientos de de software que a pesar de tener buenas predispociciones fallaron devido a los problemasimprevistos que se tienen en la ingeniera y a medida que pasaba el tiempo este problema se iba me-jorando gracias a las medidas cualitativas. Los fundamentos matematicos de la programacion se estanconsolidando merced a la investigacion de metodos para la expresion algebraica de los disenos de pro-gramas, lo que ayuda a evitar la comision de errores graves. Los proyectos de desarrollo de software detamano medio suelen consumir vez y media el tiempo previsto, situacion que empeora en los grandes. Yalrededor de tres cuartas partes de todos los sistemas de gran tamano son fracasos operativos, que nofuncionan como se quera o no se utilizan para nada.

    1.12. No Silver Bullets

    Este documento ampliamente discutido sobre ingeniera del software escrito por Fred Brooks en 1986.1Brooks argumenta que no hay un simple desarrollo en tecnologa o tecnica de gestion, que por s solo

    4

  • prometa incluso una mejora en la productividad, fiabilidad, simplicidad, en un orden de magnitud [pordiez] dentro de una decada. Tambien afirma que, en el desarrollo de software, no podemos esperarsiquiera ver una ganancia del doble cada dos anos, como la que hay en el desarrollo del hardware.

    Brooks hace una distincion entre la complejidad accidental y la complejidad esencial y afirma quela mayora de lo que ahora hacen los ingenieros de software esta dedicado a lo esencial, as que reducirtodas las actividades accidentales a cero no dara una mejora de un orden de magnitud. Brooks aboga porabordar las partes esenciales del proceso de software. Mientras que Brooks insiste que no hay ningunabala de plata, el cree una serie de innovaciones atacando la complejidad esencial podra conducir aimportantes mejoras (tal vez mayor que diez veces en un perodo de diez anos).

    1.13. Conclusion

    Con las lecturas recomendadas y el capitulo uno de libro [6] tenemos un pantallaso basico de lo quetenemos que afrontar en el desarrollo de software, si durante el proyecto ocurren dificultades hay accionesa tomar para solucionar el problema tratando de utilizar las metodologias y herramientas que hay en laactualidad que mejoran satisfactoriamente el proceso y hay que hacer un buen uso de estas.

    Referencias

    [1] Gibbs, W. Wayt. Softwares chronic crisis.Scientific American 271.3 (1994): 72-81.

    [2] Brooks, Frederik P., and No Silver Bullet. .Essence and accidents of software engineering.IEEEcomputer 20.4 (1987): 10-19.

    [3] de Marco, (1978)

    [4] Jackson, (1983)

    [5] booch et al., Rumbaug et aL, (1999)

    [6] Sommervile, Ingeniera de Software, Prestince Hall, (2005), Ed. 7

    5