Ingenieria de software (conceptos básicos)

80
Prof. Yaskelly Yedra I-2012 Unidad I. Conceptos Básicos

Transcript of Ingenieria de software (conceptos básicos)

  • Prof. Yaskelly Yedra I-2012

    Unidad I. Conceptos Bsicos

  • Contenido1. Definicin de la Ingeniera de Software2. reas de conocimiento3. Lneas de investigacin en IS4. Disciplinas relacionadas5. Evolucin de la Ingeniera de Software6. Problemtica del desarrollo de software7. Principios en la IS8. Software de calidad9. Actividades en proceso de DS

  • Ingeniera del SW: rea de la Ciencia de laComputacin, que ofrece Mtodos yTcnicas para DS, estudia el conjunto deactividades relacionadas con el ciclo dedesarrollo de SW, en particular se enfoca enSW de Calidad.

    Que es la IS ?

  • Que es la IS ?

    La aplicacin de un enfoque sistemtico,disciplinado y cuantificable del desarrollo,la operacin y el mantenimiento delsoftware; esto es, la aplicacin de laingeniera al software.IEEE Std 610-1990

  • Contenido1. Definicin de la Ingeniera de Software2. reas de conocimiento3. Lneas de investigacin en IS4. Disciplinas relacionadas5. Evolucin de la Ingeniera de Software6. Problemtica del desarrollo de software7. Principios en la IS8. Software de calidad9. Actividades en proceso de DS

  • Requisitos Diseo Construccin Pruebas Mantenimiento Gestin de la Configuracin Gestin de la Ingeniera Soft. Procesos Herramientas y Mtodos Calidad

    reas de conocimiento

  • Contenido1. Definicin de la Ingeniera de Software2. reas de conocimiento3. Lneas de investigacin en IS4. Disciplinas relacionadas5. Evolucin de la Ingeniera de Software6. Problemtica del desarrollo de software7. Principios en la IS8. Software de calidad9. Actividades en proceso de DS

  • Metodologa orientado a objeto de desarrollo de software

    Modelos, Mtodos, Tcnicas y Herramientas de desarrollo de software.

    Sistemas de reescritura. Interacin Humano - Computador Patrones de diseo Programacin orientada a aspectos

    Lneas de investigacin

  • Componentes y reutilizacin de software Construccin de compiladores Mtricas de IS Desarrollo de aplicaciones basadas en Internet Arquitectura de software Calidad de software Inteligencia artificial aplicada Ingeniera orientada a modelos

    OtrasIngeniera orientada a aspectosIngeniera orientada a componentes

    Lneas de investigacin

  • Contenido1. Definicin de la Ingeniera de Software2. reas de conocimiento3. Lneas de investigacin en IS4. Disciplinas relacionadas5. Evolucin de la Ingeniera de Software6. Problemtica del desarrollo de software7. Principios en la IS8. Software de calidad9. Actividades en proceso de DS

  • Ingeniera de Computadores Ciencia de la Computacin Gestin Matemticas Gestin de Proyectos Gestin de la Calidad Ergonoma del Software Ingeniera de Sistemas Sistemas de Informacin

    Disciplinas relacionadas

  • Contenido1. Definicin de la Ingeniera de Software2. reas de conocimiento3. Lneas de investigacin en IS4. Disciplinas relacionadas5. Evolucin de la Ingeniera de Software6. Problemtica del desarrollo de software7. Principios en la IS8. Software de calidad9. Actividades en proceso de DS

  • Hardware: mainframes, cintas magnticas. Costos altos

    Lenguajes: ensambladores, Fortran Primeros compiladores (segunda mitad) Interfaces: Bach.

  • Desarrollo de software = desarrollo de programas

    Actividad individual Desarrollador = usuario Aplicaciones con distribucin reducida Resolver problemas cientficos y de ingeniera

    ...codificar y depurar...

  • Hardware: mainframes comerciales, almacenamiento en discos magnticos, minicomputadores. Costos altos

    Programacin orientada a funcin Sistemas operativos multiprogramacin Lenguajes: Cobol, PL/I, Simula 67 Interfaces: Bach.

  • Actividad de grupo Desarrollo de software para mercadeo Resolver problemas complejos en diferentes

    dominios, adems de cientficos y de ingeniera

    Programacin orientada a funcin.

  • Hardware: mainframes, minicomputadores, microcomputadores, surgen los PC

    Lenguajes: COBOL, PL/I, Pascal, Prolog Mtodos: programacin

    estructurada,refinamiento paso a paso, semnticas formales

    Computacin distribuida, Interfaces basadas en Lenguajes de Comando.

  • Desarrollo de la tecnologa Actividad de grupo Desarrollo de software para mercadeo Diversidad del dominio de aplicaciones Programacin orientada a mdulos Modelo de cascada .

  • 19

    Hardware: computadores personales, primeras estaciones de trabajo, redes locales

    Lenguajes: C, Ada Paradigma de

    programacin: programacin estructurada, modular, tipos de datos abstractos

    Herramientas interactivas, interfaces grficas (GUI)

    Hardware: Aumento considerable de la venta y uso de computadores personales, estaciones de trabajo, redes locales y globales, Internet, arquitecturas avanzadas

    Lenguajes: C++, Standard ML Paradigma de

    programacin: irrumpe la programacin OO

    Computacin cliente-servidor

  • El usuario se incorpora al proceso de desarrollo de software

    Relevancia de las interfaces de usuario Aumento exponencial del nmero y tipo de

    usuarios Demanda creciente de aplicaciones Resolver problemas en todos los dominios Inicio de las aplicaciones basadas en la

    tecnologa Internet .

  • Hardware: masificacin del uso de los computadores personales, arquitecturas paralelas, multimedia

    Redes de computadoras (LAN, WAN..) Lenguajes: Orientados a objetos, paralelos,

    visuales, de scripting (Java, VisualC++, HTML,..) Paradigma de programacin: OO, patrones y

    framework Crecimiento de Internet y el Web .

  • Los productos se insertan en la globalizacin El ciberespacio introduce nuevos tipos de

    aplicaciones: comercio electrnico, educacin a distancia,...

    Ambientes colaborativos El Web como infraestructura de las

    aplicaciones corporativas (Intranets) .

  • Hardware: dispositivos moviles, computacin ubicua

    Redes de computadoras (inalambricas..) Paradigma de programacin: modelos

    basados en componentes Crecimiento de Internet y la Web .

  • Programacin orientada a aspectos Ingenieria orientada a modelos Arquitecturas orientadas a modelos

  • un poco de historia primeras dcadas:

    desarrollar el hardware reducir costes de procesamiento y almacenamiento

    dcada de los ochenta: desarrollo de la microelectrnica mayor potencia de clculo y reduccin de costes

    objetivo actual: mejorar la calidad de las soluciones software.

    Orientacinpor lotes Distribucinlimitada Software a medida

    Multiusuario Tiempo real Bases de datos Software como producto Mayores gastos de mantenimiento

    Sistemas distribuidos Inteligencia Artificial Hardware de bajocoste Impacto en el consumo Redes area localy global Gran demanda

    Potentes sistemasde sobremesa Tecnologa de objetos Sistemas expertos Redes neuronales Cliente/servidor Tecnologas deInternet.

    1959 - 1965 1965 - 1975 1975 - 1989 1989 -

    AUMENTAN los problemas del desarrollo de software: Subexplotacin del potencial del hardware Incapacidad de atender a la demanda Incapacidad de mantener el software existente

    Resumen

  • Contenido1. Definicin de la Ingeniera de Software2. reas de conocimiento3. Lneas de investigacin en IS4. Disciplinas relacionadas5. Evolucin de la Ingeniera de Software6. Problemtica del desarrollo de software7. Principios en la IS8. Software de calidad9. Actividades en proceso de DS

  • Crecimiento de la demanda de nuevos productos

    Incumplimiento en los tiempos de entrega de los productos de software

    Incumplimiento de los presupuestos asignados a los proyectos

    Falta de mtodos para la produccin de software complejo

    Desde la dcada 70

  • Dificultad y altos costos para el mantenimiento del software existente

    Carencia de buenas especificaciones de requisitos

    Los requisitos no son estables El mercado cambia - constantemente. La tecnologa cambia Las metas de los usuarios cambian

    Desde la dcada 70

  • CostosTiempo de desarrollo

    Redes de ComputadoresTecnologas

    Emergentes

    Masificacin y variedad de losmicrocomputadores y accesorios Interfaces de usuario.

    Software libre

  • Contenido1. Definicin de la Ingeniera de Software2. reas de conocimiento3. Lneas de investigacin en IS4. Disciplinas relacionadas5. Evolucin de la Ingeniera de Software6. Problemtica del desarrollo de software7. Principios en la IS8. Software de calidad9. Actividades en proceso de DS

  • Los principios forman la base de mtodos, tcnicas, metodologas y herramientas

    Seis principios que pueden ser usados en todas las fases del desarrollo de software

    Modularidad es el principio clave quesoporta el diseo del software

  • Principles

    Methodologies

    principios

    mtodos y tcnicas

    metodologas

    herramientas

    herramientas

    metodologas

    y tcnicas

    mtodos

    principios

    Methodologies

    Principles

  • 1. Rigor y formalidad2. Abstraccin3. Modularidad4. Anticipacin al cambio5. Generalidad6. Incrementalidad.

    Principios aplica al proceso y al producto

    GHEZZI, C., JAZAYERI, M., MANDRIOLI, D. "Fundamentals of Software Engineering". Prentice-Hall International Editions. 2da ed. Nov. 2002

  • Significa ...seguir procesos sistemticos y verificables en el proceso de desarrollo de software

    IMPLICACIONES:

    La formalidad es la base de automatizacin de procesos

    Principio esencial para obtener productos reusables

  • Producto Analisis matemtico de correctitud de

    programas Test sistemtico y rigurosoProceso Rigurosa documentacin ayuda a la gestin

    del proyecto y asegura los tiempos de respuesta

  • Significa...Aplicar un proceso mental o intelectual que permite identificar lo relevante e ignorar los detalles

    IMPLICACIONES: percepcin del qu/ cmo (la separacin de

    intereses ) percepcin del todo/ partes (modularidad)

  • Cuando los requisitos son analizados se produce un modelo de la aplicacionpropuesta

    El modelo puede ser una descripcinformal o informal

    Es posible razonar acerca del sistemarazonando acerca del modelo

  • En procesos Cuando realizamos estimacin de costos

    solo tomamos en cuenta algunos factores

    En producto Los tipos de datos abstractos

  • Un sistema complejo puede ser dividido en piezas ms simples llamadas mdulos

    Un sistema que est conformado pormdulos se dice que es modular

  • permite: descomponer en partes un sistema complejo

    (descomposicin) componer el sistema a partir de sus partes

    (composicin)

    Comprender el sistema y las partes (comprensin)

  • Problema

    Subprob. 4Subprob. 2Subprob. 1 Subprob. 3

    solucin. 4solucin. 2Solucin. 1 solucin. 3

    Solucin

  • Significa:La capacidad de prever cmo y dnde pueden ocurrir los cambios

    La aplicacin de este principio es altamente apreciado en la etapa de mantenimiento

    Es un principio relevante para el desarrollo de componentes reusables

  • Habilidad para soportar la evolucin del software requiere anticipar posiblescambios

    Es la base para el software evolutivo

  • Significa:buscar la solucin ms amplia (que englobe los casos especficos)

    Busca la solucin ms amplia para problemas especficos

    La solucin general puede ser menos eficiente o ms costosa

    Principio importante para desarrollar productos reusables.

  • Significa:Construccin del producto por aproximaciones sucesivas y/o por componentes (partes)

    Desarrollo de prototipos para los componentes crticos

    til para desarrollo de aplicaciones no precisas, donde no estn bien definidos los requisitos.

  • Ejemplos

    Liberar subconjuntos de un sistemamuy tempranamente para encontar el feedback del usuario, y luego agregarincrementalmente nuevascaractersticas

    Liberar un primer prototipo e incrementalmente ir transformando el prototipo en el producto.

  • Contenido1. Definicin de la Ingeniera de Software2. reas de conocimiento3. Lneas de investigacin en IS4. Disciplinas relacionadas5. Evolucin de la Ingeniera de Software6. Problemtica del desarrollo de software7. Principios en la IS8. Software de calidad9. Actividades en proceso de DS

  • Mediante un proceso .... Soportado por un mtodo riguroso,

    sistemtico basado en principios reconocidos con actividades que se estructuren de

    acuerdo a un modelo facilitado por el uso de herramientas.

  • El software es construido para cumplir ciertas funcionalidades y satisfacer ciertas cualidades

    El proceso de construccin de software debe tambin cumplir ciertas cualidades.

    Cualidades de software son a menudo referidas como requisitos no funcionales(en realidad es un subconjunto de este tipode requisitos).

  • Internas vs. externas Externas visibles al usuario Internas concernientes a los desarrolladores

    Producto vs. procesos Nuestro objetivo es desarrollar productos de

    software El proceso se refiere a como lo hacemos

    Cualidades internas afectan las cualidadesexternas

    La calidad del proceso afecta la calidad del producto.

  • Cules son las caractersticas que deseamos al elaborar un software?

  • Centro ISYS. Esc. Computacin. UCV/2005 53

    Caractersticas de Calidad de software (Normas ISO 9126) :

  • Caractersticas (ISO 9126)

    Subcaractersticas

    Funcionalidad Adecuacidad (Suitability), exactitud/precisin ( Accurateness), Interoperabilidad, (Conformidad Compliance )Seguridad

    Confiabilidad Madurez, Tolerancia a Falla, Recuperabilidad

    Usabilidad comprensibilidad (Understandability ), aprendizaje (Learnability ), Operabilidad

    Eficiencia Rendimiento en tiempo, rendimiento de Recurso.

    Mantenibilidad Analizabilidad, Modificabilidad, Estabilidad, Testability (Prueba)

    Portabilidad Adaptabilidad, Instalabilidad, Conformidad a estndares, Reemplazabilidad/Substituibilidad

  • Correcto

    Confiable

    Robusto

    Se comporta acorde a su especificacin

    Se comporta de acuerdo a lo esperado por el usuario

    Se comporta razonablemente an en cirscunstancias no contempladas (tolerante a fallas).

  • construcciones correctas si ellas satisfacen las especificaciones

    en un movimiento ssmico unas colapsan (no son robustas)

    otras construcciones sufren pequeos daos tolerables o previsibles (son confiables).

  • Software es correcto si satisface lasespecificaciones de requisitos funcionales (asumiendo que las especificaciones ...)

    Si las especificaciones son formales la correctitud puede ser probada

  • Informalmente, el usuario confa en el producto Si las especificaciones son correctas, todo

    software correcto es confiable. Pero no a la inversa (en la practica, pueden haber especificaciones incorrectas....)

    ISO 9127: Confiabilidad: se refiere a la capacidad de un SW de mantenerse operativo bajo las condiciones establecidas por un perodo de tiempo.

  • Productos (o componentes) son usados (probablemente, con pequeos cambios) para construir otros productos

    Reuso de partes estandar miden la madurez de una ingeniera

    Tambien aplica a procesos.

  • Reusable

    Componentes reusables: Libreras cientficas Libreras para el desarrollo de

    interfaces (MFC de Windows) Patrones Especificaciones Clases.

  • factor clave para determinar la madurez de cualquier industria

    ....la IS debe an evolucionar para alcanzar su madurez como una disciplina de ingeniera..

    ....en el futuro

    las aplicacionessern construdas ensamblando componentes..

  • El software puede correr en diferentes plataformas de hardware o ambientes de software

    se refiere a la habilidad del sw de ser transferido de un ambiente a otro.

    Es una cualidad relevante cuando se introducen nuevas plataformas

    Es tambien relevante, cuando el software se baja de ambientes de redes heterogneos.

  • Interoperable Puede coexistir y cooperar con otros sistemas

    de software Las herramientas de ambientes integrados son

    interoperables

  • Se mide mediante tcnicas clsicas:

    complejidad de algoritmos evaluacin de la eficiencia

    (monitoreo, simulacin,..).

    Software Eficiente:Usa los recursos computacionales econmicamente (memoria, tiempo de .

    . procesamiento, comunicacin..)

  • Usabilidad es una cualidad del software que tiene mltiples componentes y tradicionalmente es asociado con: Aprendizaje Eficiencia Memorizacin Baja rata de errores Satisfaccin

    Qu es Usabilidad ?

    ISO 9127 Usabilidad: se refiere al esfuerzo requerido por un conjunto de usuarios para el uso del sw

  • Usabilidad

    Usable

    La usabilidad de un producto de software est determinada por la satisfaccin del usuario al utilizar el producto

    Fundamentalmente relacionada con las caractersticas de la interfaz de usuario

    Diversas cualidades inciden en la usabilidad (eficiencia, confiablidad,...).

  • Mantenibilidad: facilidad de mantenimiento

    Mantenimiento: cambios despues de la liberacin del producto

    Los costos de mantenimiento exceden el 69% del costo total del software

  • Tipos de Mantenimiento

    Correctivo(remocin de errores)

    Adaptativo(cambios para adecuarlos a modificaciones de su ambiente)

    Perfectivo(cambios para mejorar la calidad -satisfacer nuevos requisitos, aumentar la eficiencia, modificar funcionalidades, etc)

  • Facilidad de comprender el software Es una cualidad muy importante, para

    realizar modificaciones de programa. Esta cualidad incide en la mantenibilidad

  • Al equipo de desarrollo le interesa que el software sea comprensible, portable, mantenible, verificable ...

    Al usuario le interesa que el software sea fcil de usar, confiable, robusto...

  • Contenido1. Definicin de la Ingeniera de Software2. reas de conocimiento3. Lneas de investigacin en IS4. Disciplinas relacionadas5. Evolucin de la Ingeniera de Software6. Problemtica del desarrollo de software7. Principios en la IS8. Software de calidad9. Actividades en proceso de DS

  • Actividades en el proceso de desarrollo de software

    Para desarrollar un producto de software se realizan diversas actividades que se estructuran y relacionan de acuerdo a un modelo y se desarrollan siguiendo un mtodo.

    Los modelos encadenan las diversasactividades

  • se relacionan conformando :

    se desarrollan aplicando :

    El mtodo se fundamenta en:

    El mtodo puede ser soportado por:

    principio(s) - mtodo(s) - herramienta(s) - modelo(s)

    un modelo

    un mtodo

    principios

    herramientas

    Actividades en el proceso de desarrollo de software

  • Acerca de las actividades

    Utiliza y produce artefactos

    Se relacionan e interactan de diferentes maneras conformando distintos procesos de desarrollo de software (modelos)

    De acuerdo al modelo una actividad puede jugar un rol preponderante o incluso pudiera no existir.

  • Acerca de las actividades La ingeniera de requisitos es el proceso que

    lleva a la especificacin del software

    Los procesos de diseo e implementacin transforman la especificacin en un programa ejecutable

    La validacin involucra chequear que el sistema cumple su especificacin y las expectativas del usuario

    La evolucin concierne con la modificacin del sistema despus que est en uso

    swebok

  • Actividades usuales

  • Relaciones entre las actividades

    Actividades:Encadenamiento Rol

    Granularidad

    Modelo de desarrollo de

    software

    Anlisis de requisitos

    Prototipaje

    Especificacin

    Implementacin

    Mtodo 1 Mtodo nUn ejemplo

  • Actividades Modelos -Procesos

    El modelo de desarrollo de software indica como se relacionan las actividades

    Los procesos de desarrollo de software indican como se realizan las actividades para producir y evolucionar un sistema del software

  • Actividades Modelos - Procesos

    Cmo encadenar las actividades del proceso de desarrollo de software?

    Modelos (ciclo de vida)

    Ej.: Modelo de la cascada, UP....

    Cmo realizar las actividades del proceso de desarrollo de software?

    Mtodos

    Ej.: Orientado a objeto,

    Cules principios se aplican en el proceso de desarrollo de software?

    Ej.: Incrementable, iterativo,...

  • CONCEPTOS GENERALESCICLO DE VIDA: Conjunto de etapas que se han de llevar a cabo para crear, explotar y mantener un Sistema Informtico.

    METODOS: Son las normativas que marcan las directrices que se han de seguir para llevar a cabo una tarea. Responde a la pregunta QU.

    TECNICAS: Es un modo de representacin para la solucin de un problema concreto. Responde a la pregunta CMO.

    METODOLOGIA: Es un conjunto coherente de mtodos y tcnicas que cubren ms de una etapa del ciclo de vida.

    HERRAMIENTAS: Proporcionan un soporte automtico o semi-automtico para el proceso y para los mtodos.

    INGENIERA DE SOFTWARENmero de diapositiva 2Nmero de diapositiva 3Nmero de diapositiva 4Nmero de diapositiva 5Nmero de diapositiva 6Nmero de diapositiva 7Nmero de diapositiva 8Nmero de diapositiva 9Nmero de diapositiva 10Nmero de diapositiva 11Nmero de diapositiva 12Contexto : dcada 50Evolucin de la IS (dcada 50)Contexto : dcada 60Evolucin de la IS (dcada 60) Contexto : dcada 70Evolucin de la IS (dcada 70) Evolucin: dcada de los 80primera mitad segunda mitadEvolucin de la IS (dcada 80)Contexto : dcada 90Evolucin de la IS (dcada 90)Contexto : nuevo milenioEvolucin de la IS (nuevo milenio)Nmero de diapositiva 25Nmero de diapositiva 26Problemtica del DSProblemtica del DSFactores que influyen en los cambios en ISNmero de diapositiva 30Principios en la ISUna representacin visualPrincipios en la ISPrincipios: Rigor y FormalidadEjemplos:Principios: AbstraccinAbstraccin produce modelosEjemplosPrincipios. ModularidadPrincipios: ModularidadDescomposicin- anlisis -Anticipacin al cambioAnticipacin al cambioGeneralidadIncrementalidadIncrementalidadNmero de diapositiva 47Cmo obtener software de calidad?Software de calidadSoftware de calidadClasificacin de cualidadesSoftware de calidadNmero de diapositiva 53Nmero de diapositiva 54Confiabilidad, correctitud y robustezConfiabilidad, correctitud y robustezCorrectitudConfiabilidadReusabilidadReusabilidadReusabilidad PortabilidadInteroperabilidadNmero de diapositiva 64UsabilidadNmero de diapositiva 66Mantenibilidad (Maintainability)Nmero de diapositiva 68Comprensibilidad (Understandability)Importancia de las cualidadesNmero de diapositiva 71Nmero de diapositiva 72Nmero de diapositiva 73Nmero de diapositiva 74Nmero de diapositiva 75Nmero de diapositiva 76Nmero de diapositiva 77Nmero de diapositiva 78Nmero de diapositiva 79Nmero de diapositiva 80