Issuu on Google+

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


Introduccion a ing sw