INGENIERIA DE SOFTWARE Es el estudio de los principios y metodologías para desarrollo y mantenimiento de sistemas de software... Zelkovitz Es la aplicación n práctica el conocimiento científico en el diseño o y construcción n de programas de computadora y la documentación n asociada requerida para desarrollar, operar y mantenerlos... Bohem
INGENIERIA DE SOFTWARE Trata del establecimiento de los principios y métodos de la ingeniería a fin de obtener software de modo rentable que sea fiable y trabaje en máquinas reales... Bauer Es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación (funcionamiento) y mantenimiento del software --- IEEE
PRINCIPIOS DE LA INGENIERIA DE SOFTWARE 1. HAZ DE LA CALIDAD LA RAZON DE TRABAJAR 2. ES POSIBLE SOFTWARE DE ALTA CALIDAD 3. UNA BUENA GESTION ES MAS IMPORTANTE QUE UNA BUENA TECNOLOGIA 4. LAS PERSONAS Y TIEMPO NO SON INTERCAMBIABLES 5. IMPORTANTE SELECCIONAR EL MODELO ADECUADO 6. ENTREGAR PRODUCTOS AL USUARIO LO MAS PRONTO POSIBLE 7. DETERMINAR EL PROBLEMA ANTES DE ESCRIBIR LOS REQUISITOS 8. EVALUAR LAS ALTERNATIVAS DEL DISEÑO 9. DISEÑAR SIN DOCUMENTACION ES NO DISEÑAR
PRINCIPIOS DE LA INGENIERIA DE SOFTWARE 10. MINIMIZAR LA DISTANCIA INTELECTUAL 11. USAR FORMALISMOS DISTINTOS PARA LAS DISTINTAS FASES 12. LAS TECNICAS SON ANTERIORES A LAS HERRAMIENTAS 13. INSPECCIONAR EL CODIGO 14. PRIMERO HAZLO CORRECTO, DESPUES HAZLO RAPIDO 15. LA GENTE ES LA CLAVE DEL ÉXITO 16. INTRODUCE LAS MEJORAS CON CUIDADO 17. ASUMIR CADA QUIEN SU RESPONSABILIDAD 18. LA ENTROPIA DEL SOFTWARE ES CRECIENTE
CAPAS DE LA INGENIERIA DE SOFTWARE HERRAMIENTAS: proporciona un enfoque para el proceso y métodos, es soporte, se llama CASE HERRAMIENTAS METODOS PROCESO CALIDAD METODOS: indican cómo construir técnicamente el software PROCESO: la ingeniería de software se fundamente en el proceso, es la unión que mantiene juntas las capas de tecnología UN ENFOQUE DE CALIDAD: cualquier enfoque debe apoyarse sobre un compromiso de organización de calidad
CAPAS DE LA INGENIERIA DE SOFTWARE La estrategia para el desarrollo de software se le llama MODELO DE PROCESO o PARADIGMA DE INGENIERIA DE SOFTWARE
PARADIGMAS DEL SOFTWARE Cada paradigma es un intento de ordenar las actividades de ayudar al contro y coordinación de los proyectos de software
PARADIGMA 1: CICLO DE VIDA CLASICO ó MODELO LINEAL SECUENCIAL Demanda un acercamiento secuencial y sistemático que coordine las siguientes actividades Ing. de Sistemas o de Información ANALISIS DISEÑO CODIGO PRUEBA
INGENIERIA DE SISTEMAS: es el establecimiento de requisitos y de las partes que se necesitan para el desarrollo del sistema ANALISIS: conocimiento de la información, funciones, relaciones, comportamiento, rendimiento e interconexión DISEÑO: Se centra en la estructura de datos, arquitectura del software, representaciones de interfaz y detalle procedural
GENERACION DE CODIGO: realización en un lenguaje de programación PRUEBAS: internas de lógica y externas de funcionalidad MANTENIMIENTO: correctivo, adaptativo y perfectivo
POR QUE FALLA? Causa confusión al inicio ( requerimientos ) Es difícil el cliente exponga todos los requisitos El cliente debe tener paciencia hasta que el proyecto termine o este avanzado
PARADIGMA 2: CONSTRUCCION DE PROTOTIPOS Consiste en crear modelos del software que se va a construir CONSTRUIR Diseño Rápido ESCUCHAR AL CLIENTE MAQUETA Recolección de Requisitos CLIENTE PRUEBA MAQUETA Evaluación por el cliente
POR QUE FALLA? No se ha tenido en cuenta la calidad del software Querra hacer del prototipo un producto final EFECTIVO SI: Se definen las reglas al comienzo Cliente y desarrollador se ponen de acuerdo que el prototipo es un mecanismo para definir los requerimientos
PARADIGMA 3: EL MODELO DRA (RAD) Desarrollo Rápido de Aplicaciones Modelo lineal secuencial que enfatiza un ciclo de desarrollo extremadamente corto Es una adaptación del lineal utilizando una contrucción basada en componentes
Comprende las siguientes fases: 1 Modelado de Gestión ( que información ) 2 Modelado de Datos (características obj ) 3 Modelado del Proceso ( flujo de información) 4 Generación de aplicaciones ( lenguajes, técnicas) 5 Pruebas y entrega ( pruebas )
POR QUE FALLA? Para proyectos grandes requiere mucho recurso humano Requiere clientes y desarrolladores comprometidos No todas las aplicaciones son apropiadas para DRA No es adecuado cuando los riesgos son altos
PARADIGMA 4: MODELO INCREMENTAL Combina el lineal con el de prototipos Se centra en la entrega de un producto operacional con cada incremento Es util cuando no hay suficiente personal y no alcanza la fecha límite ANALISIS DISEÑO CODIGO PRUEBA Entrega primer incremento ANALISIS DISEÑO CODIGO PRUEBA Entrega segundo incremento ANALISIS DISEÑO CODIGO PRUEBA TIEMPO / CALENDARIZACION
PARADIGMA 5: MODELO ESPIRAL Combina prototipos con los aspectos controlados y sistemáticos del modelo lineal secuencial Utiliza la construcción de prototipos como mecanismo de reducción de riesgos por lo tanto demanda una consideración directa de los riesgos
Comunicación con el cliente Planificación Análisis de riesgos 4 3 2 1 Ingeniería Evaluación del cliente Construcción y Adaptación MODELO ESPIRAL
ACTIVIDADES PRINCIPALES: Comunicación con el cliente Planificación ( determinar objetivos, recursos, tiempo, alternativas, restricciones ) Analisis de riesgos Ingeniería ( construir la aplicación ) Construcción y acción ( adaptación, probar, instalar, dar soporte ) Evaluación del cliente ( valoración de resultados )
OBTIENE EN LAS ETAPAS: 1 proyecto de desarrollo de conceptos 2 proyecto de desarrollo de nuevos productos 3 proyecto de mejora de productos 4 proyecto de mantenimiento de productos
POR QUE FALLA? Puede resultar difícil convencere a grandes clientes de que el proceso es controlable Requiere una habilidad para la evaluación del riesgo ( sino se reconocen riesgos surgirán problemas )
PARADIGMA 6: DESARROLLO BASADO EN COMPONENTES Es un modelo de la tecnología de objetos Las clases son reutilizables por las diferentes aplicaciones y arquitecturas del sistema Conduce a la reutilización del software Se basa en el UML
PARADIGMA 7: TECNICAS DE 4TA GENERACION Es software preestablecido para ingeniereos programadores de alto nivel y genera codificaciones específicas Se enfoca en la habilidad de manejar un leguaje lo mas cercano al natural Estas son CASE y generadores de código Ahorra tiempo en proyectos cortos
FASES DE LA INGENIERIA DEL SOFTWARE DEFINICION Qué? Identificar la informacion que ha de ser procesada Su función Rendimiento Comportamiento del sistema Interfaces REQUISITOS Restricciones Criterios de validación
FASES DE LA INGENIERIA DEL SOFTWARE DESARROLLO Cómo? Cómo se diseñan las estructuras de datos Cómo implementarse los procedimientos Cómo caracterizar las interfaces Cómo traducir al lenguaje Cómo realizar las pruebas
FASES DE LA INGENIERIA DEL SOFTWARE MANTENIMIENTO Se centra en el CAMBIO, en la corrección de errores Adaptaciones del software Cambio por las mejoras 4 tipos de cambio: Corrección Adaptación Mejora Prevención
FASES DE LA INGENIERIA DEL SOFTWARE DEFINICION DESARROLLO MANTENIMIENTO ANALISIS PLANIFICACION ANALISIS REQUERIMIENTOS DISEÑO CODIFICACION PRUEBA CORRECTIVO ADAPTATIVO PERFECTIVO