Para el desarrollo del software Mtodos Herramientas Consideraciones

  • Slides: 34
Download presentation
Para el desarrollo del software: Métodos Herramientas Consideraciones Generales: Ciclo de Vida del Software

Para el desarrollo del software: Métodos Herramientas Consideraciones Generales: Ciclo de Vida del Software Modelos Análisis Requerimientos Prototipaje 1

Métodos para desarrollar software Método del ciclo de vida clásico: v. Actividades que son

Métodos para desarrollar software Método del ciclo de vida clásico: v. Actividades que son realizadas por el analista para desarrollar e implantar un sistema. Método de desarrollo por análisis estructurado: v. Incorpora elementos tanto de análisis como de diseño. v. Especifica lo que se requiere que haga el sistema o la aplicación. v. Permite que las personas observen los elementos lógicos (lo que hará el sistema) separados de los componentes físicos (computadora, terminales, sistemas de almacenamiento, etc. ). v. Desarrolla un diseño físico eficiente para la situación donde será utilizado. v. Es un método para el análisis de sistemas manuales o automatizados, que conduce al desarrollo de especificaciones para sistemas nuevos o para efectuar modificaciones a los ya existentes. 2

Métodos para desarrollar software Método del desarrollo por prototipos: v. Pueden desarrollarse con métodos

Métodos para desarrollar software Método del desarrollo por prototipos: v. Pueden desarrollarse con métodos y lenguajes de programación convencionales v. Los informes no tienen un encabezados, logos, etc. , faltan controles de entradas y procesamiento. Lo importante es el ensayo, y hallar los requerimientos. Métodos de análisis orientado a objetos: v. Es un método de análisis que examina los requerimientos desde la perspectiva de las clases y objetos v. Se basa en conceptos como objetos y atributos, clases y miembros un todo y partes. 3

Herramientas para desarrollar software Las herramientas de desarrollo de software diseñan y construyen aplicaciones

Herramientas para desarrollar software Las herramientas de desarrollo de software diseñan y construyen aplicaciones y dan soporte al desarrollo e implantación de las mismas. 1. Calidad del Software Herramientas que tratan todos los aspectos de la calidad de software: funcionalidad, fiabilidad y rendimiento. 2. Construcción y Diseño Herramientas para la arquitectura y el modelado, el desarrollo dirigido por modelos, componentes, verificación de componentes, actividades de análisis de ejecución. 3. Gestión de cambios y configuración Gestión del ciclo de vida de los activos, como la automatización de procesos, el control de cambios, el rastreo y los informes. 4. Gestión de proceso y portafolio Herramientas integradas para gestionar requisitos, modelos y pruebas, implementar un proceso de desarrollo y progresos de informes y valoraciones. 5. Requisitos y análisis Herramientas integradas para la gestión de requisitos, de desarrollo de casos de estudio, los modelos de negocios y modelos de datos. 4

Herramientas para desarrollar software Herramientas para análisis Éstas herramientas ayudan a los especialistas en

Herramientas para desarrollar software Herramientas para análisis Éstas herramientas ayudan a los especialistas en sistemas a documentar un sistema existente, ya sea manual o automatizado. También sirve para determinar los requerimientos de una nueva aplicación. Incluye: v. Herramientas para recolección de datos: capturan detalles que describen sistemas y procedimientos en uso. Documentan procesos y actividades de decisión, se utilizan para apoyar la tarea de identificar requerimientos. v. Herramientas para diagramación: crean representaciones gráficas de sistemas y actividades. Apoyan el dibujo y revisión de diagramas de flujos de datos e iconos asociados con el análisis estructurado. Incluyen programas para representación en diagramas de flujo. 5

Herramientas para desarrollar software Herramientas CASE : (Computer Aided/Assisted Software/System Engineering) se puede definir

Herramientas para desarrollar software Herramientas CASE : (Computer Aided/Assisted Software/System Engineering) se puede definir como: “ el conjunto de herramientas y metodologías que soportan un enfoque de ingeniería para las distintas fases del desarrollo de software” En primer lugar se suele distinguir, atendiendo a la fase del ciclo de vida que soportan, entre: • CASE frontales ("front-end") o superiores ("Upper CASE"), abarcan las primeras fases de análisis y diseño. Automatizan las primeras actividades del proceso de desarrollo de sistemas. Esta herramienta proporciona soporte para el desarrollo de modelos gráficos de sistemas y procesos. Los diagramas de flujo son representativos de este tipo de herramientas. • CASE dorsales ("back-end") o inferiores ("Lower CASE"), cuyo objetivo suele ser el diseño detallado y la generación de código Categorias de herramientas CASE mas frecuentes: a)Herramientas de análisis y diseño b) Generación de código y documentación c)Herramientas de prueba d)Herramientas de gestión de configuración e) Herramientas de ingeniería inversa Herramientas de prototipado: Como son los diseñadores de pantallas, generadores 6 de menús, generadores de informes y lenguajes de especificación ejecutables.

Actividades en el proceso de desarrollo de software Para desarrollar un producto de software

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 método. Los modelos encadenan las diversas actividades 7

Actividades usuales 8

Actividades usuales 8

Acerca de las actividades v. La ingeniería de requerimientos es el proceso que lleva

Acerca de las actividades v. La ingeniería de requerimientos es el proceso que lleva a la especificación del software v. Los procesos de diseño e implementación transforman la especificación en un programa ejecutable v. La validación involucra chequear que el sistema cumple su especificación y las expectativas del usuario v. La evolución concierne con la modificación del sistema después que está en uso 9

Las actividades en el proceso de desarrollo de software : se relacionan conformando un

Las actividades en el proceso de desarrollo de software : se relacionan conformando un modelo se desarrollan aplicando un método El método se fundamenta en principios El método puede ser soportado por herramientas principio(s) - método(s) - herramienta(s) - modelo(s) 10

Ciclo de vida del software Análisis del problema Liberación del producto Comprensión del problema

Ciclo de vida del software Análisis del problema Liberación del producto Comprensión del problema Desarrollo del software 11

Ciclo de vida del software Transición . . . casi siempre. . . !!

Ciclo de vida del software Transición . . . casi siempre. . . !! Mantenimiento del producto 12

Obsolescencia del producto Fin del ciclo de vida 13

Obsolescencia del producto Fin del ciclo de vida 13

Actividades – Modelos - Procesos ¿Cómo encadenar las actividades del proceso de desarrollo de

Actividades – Modelos - Procesos ¿Cómo encadenar las actividades del proceso de desarrollo de software? Modelos (ciclo de vida) Ej. : Modelo de la cascada, UP. . ¿Cómo realizar las actividades del proceso de desarrollo de software? Métodos Ej. : Orientado a objeto, . . . ¿Cuáles principios se aplican en el proceso de desarrollo de software? Ej. : Incrementable, iterativo, . . . 14

Modelos de desarrollo de software Ø La cascada Separa y secuencia las fases Ø

Modelos de desarrollo de software Ø La cascada Separa y secuencia las fases Ø Evolutivo Especificación y desarrollo son intercalados Ø De transformaciones Un modelo formal del sistema es transformado en otro modelo de más bajo nivel de abstracción Ø Basado en reuso El sistema es producto de ensamblaje de componentes 15

¿Cuál modelo han usado? Análisis de Requerimientos Mantenimiento Diseño del Sistema Liberación Diseño de

¿Cuál modelo han usado? Análisis de Requerimientos Mantenimiento Diseño del Sistema Liberación Diseño de Programas Validación del Sistema Construcción de Programas Integración Validación de componentes 16

Modelo de la cascada • Encadenamiento secuencial de las actividades • Cada etapa produce

Modelo de la cascada • Encadenamiento secuencial de las actividades • Cada etapa produce documentos que son la entrada a la siguiente • Para desarrollar una etapa debe concluirse la anterior • Popular en la década 70. Análisis de requerimientos Diseño Implementación Validación de componentes Integración y validación del sistema Liberación y mantenimiento 17

Modelo de la cascada (cont. ) • El modelo original no se adapta a

Modelo de la cascada (cont. ) • El modelo original no se adapta a ciertas aplicaciones • Los costos al descubrir errores en etapas avanzadas son muy altos • Es rígido • Se incorporan variantes al modelo. Análisis de requerimientos Diseño Implementación Validación de componentes Integración y validación del sistema Liberación y mantenimiento 18

Análisis de requerimientos Datos provistos por los expertos en el dominio y usuarios potenciales

Análisis de requerimientos Datos provistos por los expertos en el dominio y usuarios potenciales Es una actividad requerida en cualquier modelo Documentos orientados al usuario y útiles para el analista: - Comprensibles Precisos Completos Consistentes 19 Fáciles de modificar

Análisis de requerimientos ØIdentificar el problema ØDocumentar los requerimientos ØInvolucrar a los usuarios y

Análisis de requerimientos ØIdentificar el problema ØDocumentar los requerimientos ØInvolucrar a los usuarios y expertos en el dominio de aplicación (requiere diálogo y comunicación) ØExisten estándares para la especificación de los requerimientos ØEsta actividad puede mantenerse a lo largo del proceso. 20

Requerimientos de software: sub áreas 1. Proceso de ingeniería de requerimientos: modelos de proceso,

Requerimientos de software: sub áreas 1. Proceso de ingeniería de requerimientos: modelos de proceso, actores, soporte y gerencia y mejora de calidad de proceso 2. Captura de requerimientos: origen de requerimientos, como capturarlos; incluye fuentes y técnicas. 3. Análisis de requerimientos: Detectar y resolver conflictos. Limites del sistema y como interactúa con el medio. Trasladar requerimientos de sistema a requerimientos de software 21

Requerimientos de software: sub áreas 4. Especificación de requerimientos de software: Calidad, estructura y

Requerimientos de software: sub áreas 4. Especificación de requerimientos de software: Calidad, estructura y verificabilidad del documento de especificación 5. Validación de requerimientos: Proceso para examinar documento de requerimientos a fin de asegurar que define el sistema esperado. 6. Gerencia de requerimientos: Abarca todo el ciclo de vida. Gerencia de cambios y mantenimiento de requerimientos de software 22

Prototipaje Resultados parciales del análisis Desarrollo rápido de partes del sistema Prototipo (esbozo parcial,

Prototipaje Resultados parciales del análisis Desarrollo rápido de partes del sistema Prototipo (esbozo parcial, no definitivo, . . ) Prototipo -a nivel de la interfaz - a nivel de componentes del sistema 23

Prototipaje Ø Esbozo parcial de partes del sistema Ø Permite experimentar Ø Permite validar

Prototipaje Ø Esbozo parcial de partes del sistema Ø Permite experimentar Ø Permite validar y precisar la especificación de requerimientos y características del futuro sistema Ø Indispensable para el desarrollo de la interfaz Ø Indispensable en el modelo evolutivo. 24

Especificación Datos resultantes del análisis de requerimientos y consideraciones técnicas Descripción orientada al desarrollador

Especificación Datos resultantes del análisis de requerimientos y consideraciones técnicas Descripción orientada al desarrollador Describe en forma precisa el sistema a desarrollar 25

Diseño Resultados del análisis, de la especificación y consideraciones técnicas Constituye un refinamiento del

Diseño Resultados del análisis, de la especificación y consideraciones técnicas Constituye un refinamiento del análisis Descripción detallada orientada al implementador 26

Programación Diseño y consideraciones técnicas Componentes de programas -Código - en un LP “echar

Programación Diseño y consideraciones técnicas Componentes de programas -Código - en un LP “echar código”. . . 27

Integración y gestión de configuraciones Componentes de programa Ensamblaje de versiones coherentes de los

Integración y gestión de configuraciones Componentes de programa Ensamblaje de versiones coherentes de los componentes Obtener el sistema ejecutable 28

Validación y verificación Documentos (textos, programas, etc) Permite determinar la confiabilidad o correctitud del

Validación y verificación Documentos (textos, programas, etc) Permite determinar la confiabilidad o correctitud del producto Documentos validados/ verificados 29

Validación y verificación Validación: el software responde a lo que espera el usuario •

Validación y verificación Validación: el software responde a lo que espera el usuario • Verificación: el software satisface la especificación • Técnicas diversas : –Pruebas formales: garantizar que el programa satisface la especificación –Chequeo “testing” : búsqueda de errores en los componentes, en la integración, en el sistema –Pruebas de usabilidad: “medir” la satisfacción del usuario al usar el producto 30

Tipos de pruebas • Test unitario Chequeo de componentes individuales • Test de módulo

Tipos de pruebas • Test unitario Chequeo de componentes individuales • Test de módulo Chequeo de colecciones de componentes dependientes • Test de sub-sistemas Prueba de Módulos integrados en sub-sistemas . El centro es la prueba de las interfaces • Test de sistemas Se prueba el sistema como un todo • Test de aceptación Pruebas con datos del cliente para chequear las expectativas del usuario 31

Prueba de software • Verificación dinámica del comportamiento de un programa sobre un número

Prueba de software • Verificación dinámica del comportamiento de un programa sobre un número finito de casos de prueba seleccionados del dominio de ejecuciones usualmente infinito. • Conceptos básicos: terminología, fundamentos teóricos, relaciones de la prueba con otras actividades. • Técnicas de prueba: criterios para la generación de datos de prueba. • Mediciones relacionadas con pruebas: evaluación de programa en prueba, evaluación de las pruebas realizadas • Gerencia: tópicos gerenciales y de actividades de prueba 32

Mantenimiento de software • Conceptos básicos: definiciones, actividades y problemas de mantenimiento • Procesos

Mantenimiento de software • Conceptos básicos: definiciones, actividades y problemas de mantenimiento • Procesos de mantenimiento basados en estándares • Factores clave: técnicos, gerenciales, costos, estimaciones y mediciones • Técnicas: incluyen comprensión de programas, reingeniería, ingeniería reversa y análisis de impacto 33

Bibliografía - Ghezzi &al, “Fundamentals of Software Engineering”. Prentice. Hall. Cap. 7 - Sommerville.

Bibliografía - Ghezzi &al, “Fundamentals of Software Engineering”. Prentice. Hall. Cap. 7 - Sommerville. Ingeniería de software. Addison Wesley 2002. Cap. 3