Desarrollo de cualquier software y en el proceso que conlleva.
Como desarrollar software de solidez industrial.
Hacer código entendible es tan importante como hacer código ejecutable.
- Laura Brandán: [email protected]
- Santiago Ávalos
- Matías Lee
- Diego Lis
- Gonzalo Peralta
- Leandro Ramos
Pankaj Jalote "An Integrated Approach to Software Engineering" 3ra ed., Springer, 2005
- Objetivo: Planear, ejecutar y administrar un software de tamaño pequeño.
- El dominio del problema
- El desafío de la Ingeniería del Software
- El enfoque de la Ingeniería del Software
- Procesos, Modelo de procesos. Componentes. Enfoque ETVX.
- Características deseadas del proceso del software: Predecible y repetible. Tolerante a cambios, Testeable y Mantenible.
- Proceso de desarrollo del software, etapas fundamentales.
- Modelos de procesos de desarrollo: Cascada, Prototipado, Iterativo.
- Otros procesos del software: Administración del proyecto, Proceso de inspección, Administración de configuración, Administración de cambios, Administración del proceso (CMM).
- Requerimientos del software, Necesidad de la especificación de requerimientos, Proceso de requerimientos.
- Análisis del problema: Enfoque informal, Modelo de flujo de datos (DFD), Modelo orientado a objetos (UML), Prototipado.
- Especificación de los requerimientos del software: Características, Componentes, Lenguajes de especificación, Estructura de un documento.
- Especificación funcional con Casos de Uso: Conceptos, Estructura, Abstracción.
- Validación
- Métricas: Tamaño, Calidad
- Rol de la arquitectura del software
- Vistas: Módulos, Componentes y conectores, Asignación de recursos
- Vista de Componentes y Conectores (C&C). Estilos arquitectónicos para C&C: Tubos y Filtros, Datos compartidos, Cliente-Servidor, Estratificados,
- Documentación del diseño arquitectónico.
- Arquitectura en comparación con el diseño. Preservación de la integridad de una arquitectura.
- Evaluación de las arquitecturas (método de análisis ATAM)
- Planeamiento del proceso
- Estimación del esfuerzo: Incertidumbres, Construcción de los modelos (estimaciones top-down y bottom-up), el modelo COCOMO.
- Planificación y recursos humanos: Planificación global y detallada, estructura del equipo de trabajo
- Plan del control de calidad: Introducción y eliminación de errores, enfoques, plan
- Administración del Riesgo: Conceptos, Evaluación, Control
- Planeamiento del Seguimiento del proyecto: Mediciones, seguimiento observacional, registro del seguimiento.
- Niveles en el proceso de diseño
- Principios del diseño: Particionado y jerarquía, Abstracción, Modularidad. Estrategias top-down y bottom-up
- Acoplamiento y cohesión
- Notación y especificación del diseño
- Metodología de diseño estructurado: Cuatro pasos elementales, heurísticas de diseño, análisis de transacción.
- Verificación
- Métricas: de red, de estabilidad y de flujo de información
- Conceptos de orientación a objetos: Clases, Objetos, Relación entre objetos, herencia, polimorfismo.
- Conceptos de diseño: Acoplamiento, cohesión, principio abierto-cerrado, c UML
- Una metodología de diseño: Modelado dinámico, modelado funcional, definición de clases y operaciones, Optimización.
- Métricas
- Lenguaje de diseño de procesos (PDL). Diseño lógico (del algoritmo). Modelo de estado de clases (Autómatas de estado nito). Refinamiento en abstracciones de datos e invariantes de representación.
- Verificación: Recorrido del diseño, Revisión crítica (bajo proceso de inspección), verificación de consistencia y uso de técnicas formales
- Métricas. Complejidad Ciclomática, Vínculos de datos, Métricas de cohesión
- Principios y pautas para la programación: Errores comunes, Programación estructurada, ocultamiento de la información, prácticas de programación, estándares de codificación
- Proceso de codificación: Incremental, Dirigido por test, Programación de a pares, Control del código fuente y construcción (build).
- Refactorización: Conceptos básicos, Malos olores, refactorizaciones comunes,
- Verificación: Inspección del código, test de unidad, Análisis estático, métodos formales
- Conceptos fundamentales: Defecto y desperfecto (fault & failure), oráculos, casos de test y criterios de selección, psicología del test.
- Testing de caja negra: Particionado por clases de equivalencia, Análisis de valores limites, gramfo de causa-efecto, testing de a pares, casos especiales, testing basado en estados (Máquinas de esteado finitas)
- Testing de caja blanca: Criterios basados en el flujo de control, criterios basados en flujo de datos,
- Testing por mutacion, generación de casos de test y herramientas de soporte.
- El proceso de testing: Nivles, Plan, Especificación de los casos de test, ejecución de los casos de test, Análisis, Registro de defecros y seguimmiento
- Análisis y prevención de los defectos.
- Métricas. Estimación de la ¿ con habilidad
** Se toma SIEMPRE testing
- Computación y sociedad
- Propiedad intelectual, licencia de software y contratos informáticos
- Aspectos legales
- Responsabilidad y ética profesional.