Hacia la racionalización del Software
Dr. Carlos Platero Dueñas
INTRODUCCIÓN
INTRODUCCIÓN A LA INGENIERÍA DEL SW
Grupo de Control e Informática industrial
Ingeniería del SW ■
Business Week – “Software: motor de futuro” (inicio de los 80) – “La trampa del software-automatizar o qué”(finales de los 80)
■ ■
El SW es hoy quien marca la diferencia Historia de las computadoras – Hasta los 70, especificaciones HW. Ingeniería de detalle (especificaciones, informes,...) – Artesanos del SW
cplatero@fais.upm.es
3/48
Grupo de Control e Informática industrial
Historia del SW
“El conocimiento es poder, y las computadoras es un amplificador de ese poder... La industria americana de computadoras ha sido innovadora, vital, fructífera. Crea valor mediante la transformación del poder cerebral de los trabajadores de conocimiento, con poco consumo de energía y materiales nuevos. Hoy, dominamos las ideas y los mercados del mundo en ésta, la más importante de las tecnologías modernas. Pero ¿qué pasará mañana?” (Feingenbaum) cplatero@fais.upm.es
4/48
Grupo de Control e Informática industrial
Características del SW ■
■ ■
El SW se desarrolla, no se fabrica El SW no se ‘estropea’ La mayoría del SW se construye a medida (rehusabilidad del código: de librerías de procedimientos a clases) 5/48
cplatero@fais.upm.es
Grupo de Control e Informática industrial
SW: Una enfermedad crónica ■
Problemas: – 1. Planificación y estimación de costes – 2. SW no corresponde con la demanda – 3. La calidad del SW no llega a ser aceptada
cplatero@fais.upm.es
■
Causas: – 1.Cuatro décadas – 2. Naturaleza lógica del SW. Si se rompe no hay pieza de recambio – 3.Efecto Ejecutivo – 4.Programadores a Ingenieros del SW. Intuitivo. Ensayo y error 6/48
Grupo de Control e Informática industrial
El gran mito del SW ■
Los requisitos del proyecto cambian continuamente, pero los cambios pueden acomodarse, ya que el SW es flexible
7/48
cplatero@fais.upm.es
Grupo de Control e Informática industrial
Ingeniería del SW (1/2) ■
Definición de Bauer “El establecimiento y uso de principios de ingeniería robusta, orientados a obtener software económico que sea fiable y funcione de manera eficiente sobre máquinas reales.”
cplatero@fais.upm.es
8/48
Grupo de Control e Informática industrial
Ingeniería del SW (2/2) ■
■
Se fundamenta: Ingeniería de Sistemas+HW Constituido por – Métodos: Análisis de requisitos, diseño de estructuras de datos y funciones, codificación, prueba y mantenimiento. – Herramientas: CASE – Procedimientos: Entrega de informes, controles de calidad y coordinación
■
Paradigmas de la Ingeniería del SW 9/48
cplatero@fais.upm.es
Grupo de Control e Informática industrial
El ciclo de vida clásica
cplatero@fais.upm.es
10/48
Grupo de Control e Informรกtica industrial
Construcciรณn de prototipos
11/48
cplatero@fais.upm.es
Grupo de Control e Informรกtica industrial
El modelo en espiral
cplatero@fais.upm.es
12/48
Grupo de Control e Informática industrial
Técnicas de cuarta generación
13/48
cplatero@fais.upm.es
Grupo de Control e Informática industrial
Una visión genérica de la Ingeniería del SW (1/2) ■
Definición (qué) – Análisis del sistema – Planificación del SW – Análisis de requisitos
■
Desarrollo (cómo)
■
Mantenimiento (cambio) – Corrección – Adaptación – Mejora
– Diseño del SW – Codificación – Pruebas del SW cplatero@fais.upm.es
14/48
Grupo de Control e Informática industrial
Una visión genérica de la Ingeniería del SW (2/2)
15/48
cplatero@fais.upm.es
Un enfoque de Ingeniería de Sistemas ENCE
Grupo de Control e Informテ。tica industrial
Detecciテウn de defectos en pasta de papel
17/48
cplatero@fais.upm.es
DISEテ前
FUNDAMENTOS DEL DISEテ前 SW
Grupo de Control e Informática industrial
Diseño del SW ■
■ ■
■
Definición de diseño: Traduce los requisitos en una representación del SW Simulación Combinación: intuición, experiencia, principios, heurística Diseño+codificación consume el 75% del coste de ingeniería sin contar mantenimiento
19/48
cplatero@fais.upm.es
Grupo de Control e Informática industrial
Proceso de diseño Diseño y calidad del SW ■ Calidad SW 1. Organización jerárquica 2. Modular 3. Representación distinta de datos y procedimientos 4. Módulos independientes 5. Mínima complejidad en el interface entre módulos 6. De análisis a diseño ■
cplatero@fais.upm.es
20/48
Grupo de Control e Informática industrial
Fundamentos del diseño (1/6) ■
Abstracción y refinamiento – De lenguaje coloquial a lenguaje procedimiental – Abstracción:
■
Ejemplo – Nivel I: • Cuatro objetos: Visión, Gestor, motores, UI.
– Nivel II: • tareas del gestor – Recibir y coordinar la información de Visión – Recibir y coordinar la información de Motores – Recibir y coordinar la información de UI
• Datos (Instancias) • Procedimientos (mensajes) • Control
– Nivel III • procedimiento:mandarDatosCalibración 21/48
cplatero@fais.upm.es
Grupo de Control e Informática industrial
Fundamentos del diseño (2/6) ■
Modularidad – “es el atributo individual del SW que permite a un programa ser intelectualmente manejable” – “divide y vencerás” – Esfuerzo del interfase entre módulos – ¿ Cuánto hay que dividir el programa ?
cplatero@fais.upm.es
22/48
Grupo de Control e Informática industrial
Fundamentos del diseño (3/6) ■
Arquitectura del SW – Proceso de partición del problema – ¿ Cuál es el mejor ?. No hay solución
23/48
cplatero@fais.upm.es
Grupo de Control e Informática industrial
Fundamentos del diseño (4/6) ■
Jerarquía de control – Representa la organización de los componentes del programa – Representación árbol • Profundidad y anchura • Visibilidad y conectividad
cplatero@fais.upm.es
24/48
Grupo de Control e Informática industrial
Fundamentos del diseño (5/6) ■
Estructura de datos – templetes
25/48
cplatero@fais.upm.es
Grupo de Control e Informática industrial
Fundamentos del diseño (6/6) ■
Ocultamiento de la información – Módulos contienen información inaccesible por otros módulos. – Facilita las modificaciones y el mantenimiento – Efecto corta fuego, no se propaga los errores
cplatero@fais.upm.es
26/48
Grupo de Control e Informática industrial
Diseño modular ■
Tipos de módulos: – Secuencial, incremental, paralelo
■
Independencia funcional – Una función clara y aversión a otros módulos – Calidad del SW – Medidas • Cohesión:realiza tareas sencillas con pocos datos • Acoplamiento
cplatero@fais.upm.es
27/48
Grupo de Control e Informática industrial
Acoplamiento
cplatero@fais.upm.es
28/48
Grupo de Control e Informática industrial
Diseño de datos 1.Análisis y diseño de datos, no sólo funcional 2.Identificarse las estructuras y sus operaciones 3.Diccionario de datos 4.Refinamiento sucesivo
5. Uso de templete 6. Ocultamiento de los datos 7. Tipo de herramienta a utilizar
29/48
cplatero@fais.upm.es
Grupo de Control e Informática industrial
Diseño arquitectónico ■
Visión arquitectónica
cplatero@fais.upm.es
30/48
Grupo de Control e Informática industrial
Diseño procedimental ■
Programación estructurada – De tipo funcional – Secuencia, condición y repetición – Cognitivo – Representación gráfica: diagrama de flujo – Seudocódigo o LDP 31/48
cplatero@fais.upm.es
Grupo de Control e Informática industrial
Documentación del diseño I. Ámbito Objetivo del sistema HW, SW e interfaces Principios funcionales Base de datos definidas Principales restricciones II. Documentación de referencia Documentos del SW Documentos del sistema Documentos del vendedor Referencias técnicas cplatero@fais.upm.es
III. Descripción del diseño Descripción de datos Estructura del programa Interfaces entre módulos IV. Módulos (para cada uno) Texto explicativo Descripción del interfaz Modulos usados Organización de datos Comentarios
32/48
Grupo de Control e Informática industrial
Documentación del diseño V. Estructura de archivos y datos globales Extructura de archivos externos Datos globales Referencias cruzadas VI. Referencias cruzadas para los requisitos VII.Previsiones de prueba Directrices de prueba Estrategia de integración Consideraciones especiales
VIII. Empaquetamiento Provisiones especiales Consideraciones de trasnferencia IX. Notas especiales X. Apéndices
cplatero@fais.upm.es
Codificación
Estilo de codificación
33/48
Grupo de Control e Informática industrial
El estilo de codificación ■ ■
Simplicidad y claridad Elementos del estilo – Documentación en el código – Declaración de datos – Construcción de sentencias – Estructura de archivos – Sentencias del preprocesador
35/48
cplatero@fais.upm.es
Grupo de Control e Informática industrial
Documentación interna ■
■
Declaración de variables Comunicar a otros lectores: – Cabecera del módulo – Cabecera de la función – Indicaciones de líneas
cplatero@fais.upm.es
36/48
Grupo de Control e Informática industrial
Documentación interna /*******************************************************************************/ /* */ /* NOMBRE: fft.c */ /* DESCRIPCION: Biblioteca de funciones para el */ /* calculo de la transformada rápida de Fourier */ /* (Fast Fourier Transform) */ /* LIBRERÍAS: complex (números complejos) */ /* matrix (matrices) */ /* GRUPO: Visión */ /* PROYECTO: ............ */ /* AUTOR: Juanito Valderrama */ /* FECHA: 1 - Enero - 2001 */ /* */ /*******************************************************************************/ /***************************************************************/ /* */ /* NOMBRE: */ /* DESCRIPCION: */ /* PARÁMETROS: */ /* */ /* SALIDA: */ /* VARIABLES GLOBALES: */ /* ADVERTENCIAS: */ /* */ /****************************************************************/
37/48
cplatero@fais.upm.es
Grupo de Control e Informática industrial
Declaración de datos ■
Notación húngara – Variables – Funciones
cplatero@fais.upm.es
38/48
Grupo de Control e Informática industrial
Construcción de sentencias if ( uEjemploA == uEjemploB ) { uEjemploC = uEjemploD; uEjemploB = uEjemploD; } else if ( uEjemploC == uEjemploD ) { uEjemploB = uEjemploC; uEjemploA = uEjemploD; } else if ( uEjemploA == uEjemploB ){ uEjemploA = uEjemploF; uEjemploM = uEjemploN; }
39/48
cplatero@fais.upm.es
Grupo de Control e Informática industrial
Estructura de archivos /proyecto: incluye los subdirectorios de archivos del proyecto /includes:
contiene todos los archivos .h y .hpp producidos en el desarrollo del proyecto.
/fuentes:
contiene los archivos de código fuente (.c y .cpp).
/lib:
contiene la librerías producidas en el proyecto (.lib, .a, etc.).
/obj:
contiene los archivos de código objeto (.o, .obj, etc.).
/exe, /bin:
contiene los archivos ejecutables (.exe, sin extensión, etc.).
cplatero@fais.upm.es
40/48
Grupo de Control e Inform谩tica industrial
Sentencias del preprocesador #ifdef VISION_ENCE // Grabar Imagen if ( bGrabarImagCalibracion == true ) { pVision->GrabarImagen(); bGrabarImagCalibracion = false; } //Ejecutar algoritmo de inspecci贸n lError = pVision->CalibracionVision( stVision, stVision); if ( lError != 0 ) { ::PostMessage(*hUserInterface,MGUI6_ERRORGESTOR,0,lError); return 0; } #else /////////////////////////////////////////////////////////////////////////////// stVision.fMedia = 100; stVision.fDesvTipica = 5; /////////////////////////////////////////////////////////////////////////////// #endif
41/48
cplatero@fais.upm.es
Ejemplo de aplicaci贸n de la Ingenier铆a del SW
ENCE
Grupo de Control e Informática industrial
Ejemplo (ENCE) 1/5
43/48
cplatero@fais.upm.es
Grupo de Control e Informática industrial
Ejemplo (ENCE) 2/5 Fase Calibración Calibración
Alias MGUI1 MGUI2
Nombre del mensaje ResultadosCalibracion CalibraciónTerminada
Parametros Media, desvia.Tip., Coordenadas motores Ninguno
Inspección Inspección Inspección Inspección
MGUI7 MGUI3 MGUI4 MGUI5
InspeccionInicializada ResultadosInspeccion InspeccionParada InspeccionTerminada
Ninguno Píxeles defectuosos, Posición de la mesa Ninguno Ninguno
En toda la aplicacción
MGUI6
CerrarAplicacionError Gestor
Ninguno
cplatero@fais.upm.es
Observaciones
44/48
Grupo de Control e Informรกtica industrial
Ejemplo (ENCE) 3/5 Nรบmero de Mensaje: MGUI1Nombre del Nombre del evento: Resultados de la calibraciรณn. Origen del evento: Mensaje mandado por el gestor dando los resultados del algoritmo de calibraciรณn Acciรณn: Actualizar el cuadro de dialogo de calibraciรณn con los nuevos valores. Parรกmetros del mensaje de entrada: Resultados de calibraciรณn y estado de los motores. Mensaje de salida: Ninguno Observaciones: Se inicializarรก el cuadro de diรกlogos de calibraciรณn con el primer mensaje recibido. --Nombre del mensaje: Descripciรณn: Parรกmetros de entrada: Mensaje de salida:
ResultadosCalibraciรณn Visualizar los resultados del algoritmo de calibraciรณn Resultados de calibraciรณn y estado de los motores. Ninguno
45/48
cplatero@fais.upm.es
Grupo de Control e Informรกtica industrial
Ejemplo (ENCE) 4/5 cUI::ResultadosCalibracion ( Parรกmetros de Visiรณn y Motores ) { Copiar parรกmetros ; ยฟ Es la primera vez ? Si -> Mensaje HacerCuadroCalibraciรณn (MUIUI3) ; Verificaciรณn de flags para mandar Mensajes de cambios en calibraciรณn (MUIG3, MUIG4, MUIG5) ; }
LRESULT cUi::ResultadosCalibracion ( WPARAM wParamG, LPARAM lParamG) { //Comprobacion si se pueden refrescar datos de calibraciรณn if ( bInspeccionPrimera != false ) { ErrorGestor ( 0, ERR_CALIB_RESULTADOS ); return ERR_CALIB_RESULTADOS; } WPARAM wParam; LPARAM lParam; // Toma los valores devueltos por el Gestor MensajeMGUI1 ( stVisionUI, stMotoresUI, wParamG, lParamG, false ); // Crea la ventana si es la primera vez que entra if ( bCalibracionPrimera == false ) { pDlgCalibracion = new TDCalibracion ( this, stVisionUI, stMotoresUI, stMotoresAux, bGrabarImagCalibracion ); pDlgCalibracion -> Create ( ); SetCursor ( 0, IDC_ARROW); bCalibracionPrimera = true;
cplatero@fais.upm.es
}
46/48
Grupo de Control e Informática industrial
Ejemplo (ENCE) 5/5
cplatero@fais.upm.es
Hacia la racionalización del Software Dr. Carlos Platero Dueñas
47/48