- Ingeniera del Software. Un enfoque prctico. Roger
S. Pressman. 7 edicin. MC-Graw Hill. - Ingeniera del Software . Ian Sommerville. 9 edicin . Addison-Wesley. Pearson. -Laboratorio Nacional de Calidad del Software. www.inteco.es/calidad_TIC/descargas/guias/ INTECO. Tema 1 Introduccin a la Ingeniera del Software Ingeniera del Software El comienzo de la sabidura de un ingeniero del software est en reconocer la diferencia entre obtener un software que funcione y obtener uno que funcione correctamente M. A. J ackson Ingeniera del Software Los ingenieros informticos debern habituarse a trabajar en un entorno que cambia continuamente, y en el que los cambios se suceden ms rpidamente cada ao Importancia de la IS Las economas de los pases desarrollados son software dependientes El nmero de sistemas controlados por el software crece continuamente La industria del software representa una fraccin cada vez ms importante del PNB de los pases Desarrollo del software. Comunicacin compleja 1. Lo que el director desea. 2. Como lo define el director de proyecto. 3. Como se disea el Sistema. 4. Como lo desarrolla el programador. 5. Como se ha realizado la instalacin. 6. Lo que el usuario quera. Origen: desconocido Problemas de desarrollo del software Proyectos fuera de plazo y de presupuesto Excesiva dependencia de los desarrolladores Falta de control del desarrollo del proyecto Escasa integracin de las diferentes fases del desarrollo Escaso control de calidad del producto Escasa documentacin actualizada de los proyectos No utilizar una metodologa formal El Software El Software: Instrucciones que, cuando se ejecutan, proporcionan la funcionalidad deseada. Estructuras de datos que facilitan a las instrucciones manipular adecuadamente la informacin. Documentos que describen el desarrollo, uso, instalacin y mantenimiento de los programas. Software: "programas de computador, procedimientos, y, posiblemente, la documentacin asociada y los datos pertenecientes a las operaciones de un sistema de computacin". Incluye: Formacin, soporte al consumidor e instalacin. Caractersticas del software Elemento lgico, no fsico. Desarrollado, no fabricado. No se estropea, se deteriora! (deterioro por cambios) Mayoritariamente cerrado: usar todo o nada (poco ensamblaje de componentes: reutilizacin--) Factores de calidad de McCall Operaciones del producto Revisin del producto Transicin del producto Correccin: Hace lo que quiero? Fiabilidad: Lo hace de forma fiable todo el tiempo? Eficiencia: Se ejecutar en mi hardware lo mejor que pueda? Integridad: Es seguro? Facilidad de uso: Est diseado para ser usado fcilmente? Facilidad de mantenimiento: Puedo corregirlo? Flexibilidad: Puedo cambiarlo? Facilidad de prueba: Puedo probarlo? Portabilidad: Podr usarlo en otra mquina? Reusabilidad: podr reusar alguna parte del software? Interoperabilidad: Podr hacerlo interactuar con otro sistema? Atributos de Calidad del Software (Bell 2000) Fiable Capacidad de ofrecer los mismos resultados bajo las mismas condiciones. Eficiente Utilizacin ptima de los recursos de la mquina. Robusto No poseer un comportamiento catastrfico ante situaciones excepcionales (Tolerante a fallos). Correcto Se ajusta a las especificaciones dadas por el usuario. Portable Capaz de integrarse en entornos distintos con el mismo esfuerzo. Adaptable (extensibilidad) Modificar alguna funcin sin que afecte a sus actividades. Inteligible Diseo claro, bien estructurado y documentado. No Errneo No exista diferencia entre los valores reales y los calculados Reutilizable (reusabilidad) Atributos de Calidad del Software (Sommerville 2002) Mantenibilidad Confiabilidad fiabilidad seguridad proteccin Eficiencia Usabilidad Perspectiva histrica del desarrollo de software Dcada 50-60: Software como un aadido. Desarrollo artesanal, a medida. Lenguajes de bajo nivel. Dcada 60-70: Software como producto. Dcada lenguajes y compilacin. Crisis del software. Dcada 70-80: Programacin estructurada. Ingeniera del Software. Primeros mtodos estructurados. Dcada 80-90: Tecnologa de SGBDs, SOs... Nuevos paradigmas de programacin y de produccin de programas: OO C/S 90s - actualidad: Anlisis/Diseo OO. Tecnologa CASE Componentes y reutilizacin Interoperabilidad (CORBA, .NET...) Internet ISw. distribuida repositorios de componentes reutilizables e-business; e-commerce ... Objetivos de la Ingeniera del Software Trmino que aparece en 1968 La produccin de programas debe abordarse como una ingeniera ms. (Boehm) La Ingeniera del Software es la aplicacin prctica y sistemtica del conocimiento cientfico a: la produccin de programas correctos, que se desarrollan a tiempo y dentro de las estimaciones de presupuesto, y a la correspondiente documentacin para desarrollarlos, usarlos y mantenerlos. La Ingeniera del Software se fundamenta en tcnicas relacionadas con: ciencia de la computacin, programacin, ingeniera, administracin, matemticas, economa,... Ms definiciones de ISw... La ISw es el establecimiento y uso de principios slidos de ingeniera, orientados a obtener software econmico que sea fiable y trabaje de manera eficiente en mquinas reales (Fritz Bauer). Isw: (1) La aplicacin de un enfoque sistemtico, disciplinado y cuantificable para el desarrollo, la operacin y el mantenimiento del software; es decir, la aplicacin de la ingeniera al software; (2) El estudio de enfoques como en (1) (Glosario Estndar de Trminos de Ingeniera del Software de IEEE, 1998). Una disciplina que comprende todos los aspectos de la produccin de software desde las etapas iniciales de la especificacin del sistema, hasta el mantenimiento de ste despus de que se utiliza(Sommerville 2002). Situacin actual de la ISw Tres problemas esenciales en los comienzos del siglo XXI (Sommerville 2002): El reto de lo heredado El reto de la heterogeneidad El reto de la entrega Hoy da, existe un consenso en la importancia de la ISw muchos autores comienzan a renegar del trmino crisis del software Principios de la Ingeniera del Software Abstraccin Permite parcelar la complejidad. Por ello se olvidan aspectos irrelevantes del sistema y se potencian los fundamentales. Encapsulamiento u Ocultacin de la informacin Esconder todos los detalles que no afecten a otros mdulos, definiendo interfaces estrictos que sirvan de interaccin entre los distintos modelos. Modularidad Sirve para parcelar la solucin en mdulos independientes con fuerte cohesin interna. Localizacin Deben estar agrupados todos aquellos elementos que estn afectados por un mismo hecho. Uniformidad Tdos los mdulos deben tener una notacin similar. Completitud Deben estar desarrollados todos los aspectos del sistema. Validacin y Verificabilidad El producto final debe ser fcilmente validable y verificable: Estamos desarrollando el programa correcto? Estamos desarrollando correctamente el programa? El proceso de resolucin de problemas Proceso de resolucin 1. Identificar el problema 2. Definir y representar el problema 3. Explorar las posibles estrategias 4. Aplicar y mejorar las estrategias 5. Mirar atrs y evaluar los efectos de la actividad realizada (se ha resuelto el problema?) Decidir qu hacer (cul es el problema) Decidir cmo hacerlo Hacerlo Probar el resultado Usar el resultado Proceso de resolucin Proceso Software Pr obl ema o Necesi dad Sol uci n o Softwar e Proceso de resolucin Proceso de resolucin 1. qu hacer (Especificacin de Requisitos y Anlisis ) 2. cmo hacerlo (Diseo del Sistema Software) 3. Hacerlo (Codificacin ) 4. Probar el resultado 5. Usar el resultado (Instalado ) 6. Mantenimiento Proceso mnimo construccin SW Obtener requisitos software Disear Implementar Realizar pruebas Instalar Mantener y ampliar Proceso SW frente a ciclo de vida PROCESO DE CONSTRUCCION CICLO DE VIDA DEL PRODUCTO Necesidad Especi- ficacin de requi- sitos Diseo Cdigo Sistema Software Obtencin de Requisitos Disear el Sistema Programar el Cdigo Probar el Sistema
Visin general del proceso de ISw Con independencia del rea de aplicacin, tamao o complejidad del proyecto, cualquier sistema se encontrar al menos en una de las siguientes fases genricas: Definicin ~ Anlisis (del sistema, del sw.) desarrollo ~ Diseo, codificacin, prueba mantenimiento. Fase de definicin Qu debe hacer el sistema? informacin que ha de manejar el sistema necesidades de rendimiento restricciones de diseo interfaces del sistema con los usuarios y con otros sistemas criterios de validacin Se elaboran los documentos de requisitos del sistema (SyRS) y del software (SRS) Fase de desarrollo Cmo construir el sistema? Se disean las estructuras de los datos y los programas cmo se caracterizan las interfaces, cmo realizar el paso del diseo al lenguaje de programacin, cmo ha de realizarse la prueba, se escriben y documentan los programas, y se prueba el software construido. Fase de mantenimiento Comienza una vez construido el sistema, cuando se empieza a utilizar. Se centra en el cambio. El software es sometido a reparaciones y modificaciones cada vez que se detecta un fallo o se necesita cubrir una nueva necesidad de los usuarios. En esta fase recae el mayor porcentaje del coste de un sistema. Fase de mantenimiento Un buen sistema no es slo un conjunto de programas que funcionan. Debe ser fcil de mantener Documentacin esencial (CASE, Computer Assisted Software Engineering) Tipos de mantenimiento Correctivo: un programa no realiza correctamente la aplicacin para la que ha sido diseado, y, por tanto, debe ser modificado. Perfectivo: modificaciones a los programas para conseguir mayor adecuacin a los requisitos, mayor eficiencia, o simplemente recoger nuevas funcionalidades no expresadas en la fase de definicin del sistema. Tipos de mantenimiento Adaptativo: Adaptar los programas para acomodarlos a los cambios de su entorno externo (modificaciones en la legislacin, CPU, SO, las reglas de negocio, etc.) Preventivo: El software se deteriora con los cambios, y este tipo de mantenimiento hace cambios en los programas para que se puedan corregir, adaptar y mejorar ms fcilmente (Reingeniera del software). Impacto del cambio Definicin Desarrollo Mantenimiento 1x 1,5-6x 60-100x C o s t e