INGENIERÍA DE SOFTWARE 1 Historia EVOLUCIÓN DEL DESARROLLO DE SOFTWARE 1960 Lenguajes de alto nivel. Primeros métodos de concepción de sistemas. 1970 Programación estructurada. Primeros conceptos de la ingeniería del software. Intento de estandarización en el entorno de bases de datos (database Task Group). 1975 Modelo Entidad-Relación. Gran importancia a los datos. Diseño estructurado. 2 EVOLUCIÓN DEL DESARROLLO DE SOFTWARE 1980 1985 Primeras metodologías de análisis y diseño estructurado (YOURDON, GANE&SARSON, WARNIER, JACKSON). Primeras metodologías que parten de una visión general del sistema de información global. Lenguajes de cuarta generación (4GL). CASE inicial). CASE integradas. Aproximación entre metodologías estructuradas y sistémicas (INFORMATION ENGINEERING). Lenguajes de programación orientados a objetos. 1990 Primer intento de estandarización de metodologías (EUROMETHOD). Diseño orientado a objetos. Metodologías de desarrollo orientadas a objetos. 3 EVOLUCIÓN DEL DESARROLLO DE SOFTWARE 1995 Estructuras arquitectónicas distribuidas. Utilización de componentes. Primer intento de estandarización de los modelos orientados a objetos UML. 2000 Auge de aplicación de arquitecturas en tres capas (DCOM, CORBA, etc). Nuevas técnicas de interacción con el usuario (Sist. Ubicuos). Solicitud de nuevos desarrollos sobre WEB. Consolidación de UML. ¿Estandarización del método (Proceso Unificado de Desarrollo). Futuro,¿? Metodologías Ágiles (Xtreme Programming). 4 INGENIERÍA DE SOFTWARE 5 Modelado CONSTRUCCIÓN DE UNA CASA PARA “FIDO” Puede hacerlo una sola persona Requiere: Modelado mínimo Proceso simple Herramientas simples 6 “Software Architecture and UML” de Grady Booch (Rational Software). CONSTRUCCIÓN DE UNA CASA Construida eficientemente y en un tiempo razonable por un equipo Requiere: Modelado Proceso bien definido Herramientas más sofisticadas 7 “Software Architecture and UML” de Grady Booch (Rational Software). CONSTRUCCIÓN DE UN RASCACIELOS 8 “Software Architecture and UML” de Grady Booch (Rational Software). QUÉ ES LA INGENIERÍA DEL SOFTWARE? ¿Qué es ingeniería?: Conjunto de conocimientos y técnicas cuya aplicación permite la utilización racional de los materiales y recursos naturales, mediante invenciones, construcción u otras realizaciones provechosas para el hombre. La ingeniería del software es una ingeniería que cubre todos los aspectos relativos a la producción de software. IS: Disciplina o área de la Informática o Ciencias de la Computación, que ofrece métodos y técnicas para desarrollar y mantener software de calidad que resuelven problemas de todo tipo. Los ingenieros de software deben adoptar una aproximación sistemática y organizada en su trabajo y utilizar las herramientas y técnicas apropiadas dependiendo del problema a resolver, las restricciones de desarrollo y los recursos disponibles. 9 MODELADO EN INGENIERÍA Arquitectura/Ingeniería de Estructuras Vistas Edificio Vista 3D Alzado/Planta Perfil Estructura del edificio Instalación Eléctrica Instalación Aire Acc. ... Ingeniería Software Modelos UML del Sistema Software Modelo de Casos de uso Modelo Lógico Modelo de Comportamiento Modelo de Implementación Modelo de Despliegue DocumentList FileMgr add( ) delete( ) fetchDoc( ) ) sortByName( FileList fList add( ) delete( ) 1 Document name : int docid : int numField : int get( ) open( ) close( ) read( ) sortFileList( ) create( ) fillDocument( user read() fill the code.. ƯÁ¤¹®¼¿¡ ´ëÇÑ º¸±â¸¦ »ç¿ëÀÚ°¡ ¿äûÇÑ´Ù. mainWnd fileMgrdocument : gFile :repository FileMgr Document Repository 1: Doc view request ( ) FileManager 3: create ( ) 4: create ( ) Document 5: readDoc ( ) rep File Repository (from Persistence) read( ) name : char * = 0 readDoc( ) readFile( ) ÈÀÏ°ü¸®ÀÚ´Â Àоî¿Â ¹®¼ÀÇ Á¤º¸¸¦ ÇØ´ç ¹®¼ °´Ã¼¿¡ ¼³Á¤À» ¿äûÇÑ´Ù. 6: fillDocument ( ) 7: readFile ( ) GrpFile 8: fillFile ( ) read( ) open( ) create( ) fillFile( ) È¸é °´Ã¼´Â ÀоîµéÀÎ °´Ã¼µé¿¡ ´ëÇØ À̸§º°·Î Á¤·ÄÀ» ½ÃÄÑ È¸é¿¡ º¸¿©ÁØ´Ù. 9: sortByName ( ) GraphicFile File FileList Diagramas Diagramas DocumentList 2: fetchDoc( ) ) Herramientas Modelado (ej) Autocad Herramientas Modelado (ej) Rational Rose 10 UN SISTEMA DE SOFTWARE ES SIMILARMENTE COMPLEJO! Complejas interacciones entre sistemas y usuarios Seguridad, concurrencia Transacciones, persistencia Millares de objetos en ejecución Sub-sistemas, componentes, distribución Miles de millones de líneas de código Escalable.. confiable.. 11 CLAVES EN DESARROLLO DE SI Notación Herramientas Proceso 12 adaptada desde “Visual Modeling with Rational Rose and UML” de Terry Quatrani MODELO Es un esquema simplificado que describe un sistema o realidad desde un determinado punto de vista que facilita su estudio y compresión ? ? ? Modelo (simplificado) Sistema Software (complejo) Los modelos de un sistema software se expresan visualmente mediante el 13 lenguaje de modelado UML ¿QUÉ ES EL MODELAMIENTO VISUAL? Mapear los procesos reales del mundo de un Sistema utilizando una representación gráfica 14 POR QUÉ MODELAMOS? Para capturar los procesos del negocio Para comunicarse con los usuarios (facilita la comunicación) Define la arquitectura Para manejar la complejidad Para detectar errores y omisiones temprano en el ciclo de vida Para entender los requerimientos Para guiar la implementación Para entender el impacto del cambio Para asegurarse de que los recursos sean utilizados eficientemente 15 CAPTURA LOS PROCESOS DEL NEGOCIO Para poder determinar los requerimientos de un software, es necesario conocer los procesos de un negocio, utilizando los use case podemos representar estos procesos 16 FACILITA LA COMUNICACIÓN Cuando se desarrolla un software nos encontramos frente a los expertos del negocio y los desarrolladores, los cuales usan dos lenguajes distintos. Se necesita un lenguaje común 17 DEFINE LA ARQUITECTURA El modelamiento visual provee una capacidad para capturar la arquitectura lógica del software independiente de los lenguajes de implementación, luego esta arquitectura lógica es mapeada a una arquitectura física. 18 ABSTRACCIÓN - MODELADO VISUAL (MV) “El modelado captura las partes esenciales del sistema” Orden Item envío Proceso de Negocios Sistema Computacional 19 NOTACIÓN (VISUAL) - BENEFICIOS Manejar la complejidad Interface de Usuario (Visual Basic, Java, ..) Lógica del Negocio (C++, Java, ..) Múltiples Sistemas Servidor de BDs (C++ & SQL, ..) “Modelar el sistema independientemente del lenguaje de implementación” Componentes Reutilizados 20 Promover la Reutilización