Sesin 1 Ingeniera de Software Ingeni er a de Software El software se ha incrustado profundamente en casi todos los aspectos de nuestras vidas y, como consecuencia, el nmero de personas que tienen inters en las caractersticas y funciones que brinda una aplicacin especfica ha crecido en forma notable. Ingeni er a de Software Cuando ha de construirse una aplicacin nueva o sistema incrustado, deben escucharse muchas opiniones. Y en ocasiones parece que cada una de ellas tiene una idea un poco distinta de cules caractersticas y funciones debiera tener el software. Ingeni er a de Software Se concluye que debe hacerse un esfuerzo concertado para entender el problema antes de desarrollar una aplicacin de software. Ingeni er a de Software Los requerimientos de la tecnologa de la informacin que demandan los individuos, negocios y gobiernos se hacen ms complejos con cada ao que pasa. En la actualidad, grandes equipos de personas crean programas de cmputo que antes eran elaborados por un solo individuo. Ingeni er a de Software El software sofisticado, que alguna vez se implement en un ambiente de cmputo predecible y autocontenido, hoy en da se halla incrustado en el interior de todo, desde la electrnica de consumo hasta dispositivos mdicos o sistemas de armamento. Ingeni er a de Software La complejidad de estos nuevos sistemas y productos basados en computadora demanda atencin cuidadosa a las interacciones de todos los elementos del sistema. Se concluye que el diseo se ha vuelto una actividad crucial.
Ingeni er a de Software Los individuos, negocios y gobiernos dependen cada vez ms del software para tomar decisiones estratgicas y tcticas, as como para sus operaciones y control cotidianos. Si el software falla, las personas y empresas grandes pueden experimentar desde un inconveniente menor hasta fallas catastrficas. Se concluye que el software debe tener alta calidad. Ingeni er a de Software Estas realidades simples llevan a una conclusin: debe hacerse ingeniera con el software en todas sus formas y a travs de todos sus dominios de aplicacin. Y esto conduce a la ingeniera de software. Ingeni er a de Software Definicin: Es el establecimiento y uso de principios fundamentales de la ingeniera con objeto de desarrollar en forma econmica software que sea confiable y que trabaje con eficiencia en mquinas reales. Ingeni er a de Software Definicin: Es la aplicacin de un enfoque sistemtico, disciplinado y cuantificable al desarrollo, operacin y mantenimiento de software; es decir, la aplicacin de la ingeniera al software. Ingeni er a de Software La Ingeniera de software es el establecimiento y uso de principios robustos de la ingeniera a fin de obtener econmicamente software que sea fiable y que funcione eficientemente sobre mquinas reales. Ni vel es o capas de l a Ingeni er a de Software La ingeniera de software es una tecnologa con varias capas, como se aprecia en la figura. Ni vel es o capas de l a Ingeni er a de Software Cualquier enfoque de ingeniera (incluso la de software) debe basarse en un compromiso organizacional con la calidad. La administracin total de la calidad, en ltima instancia al desarrollo de enfoques cada vez ms eficaces de la ingeniera de software. El fundamento en el que se apoya la ingeniera de software es el compromiso con la calidad. Ni vel es o capas de l a Ingeni er a de Software El fundamento para la ingeniera de software es la capa proceso. El proceso de ingeniera de software es el aglutinante que une las capas de la tecnologa y permite el desarrollo racional y oportuno del software de cmputo. El proceso define una estructura que debe establecerse para la obtencin eficaz de tecnologa de ingeniera de software. Ni vel es o capas de l a Ingeni er a de Software El proceso de software forma la base para el control de la administracin de proyectos de software, y establece el contexto en el que se aplican mtodos tcnicos, se generan productos del trabajo (modelos, documentos, datos, reportes, formatos, etc.), se establecen puntos de referencia, se asegura la calidad y se administra el cambio de manera apropiada. Ni vel es o capas de l a Ingeni er a de Software Los mtodos de la ingeniera de software proporcionan la experiencia tcnica para elaborar software. Incluyen un conjunto amplio de tareas, como comunicacin, anlisis de los requerimientos, modelacin del diseo, construccin del programa, pruebas y apoyo. Los mtodos de la ingeniera de software se basan en un conjunto de principios fundamentales que gobiernan cada rea de la tecnologa e incluyen actividades de modelacin y otras tcnicas descriptivas. Ni vel es o capas de l a Ingeni er a de Software Las herramientas de la ingeniera de software proporcionan un apoyo automatizado o semiautomatizado para el proceso y los mtodos. Cuando se integran las herramientas de modo que la informacin creada por una pueda ser utilizada por otra, queda establecido un sistema llamado ingeniera de software asistido por computadora que apoya el desarrollo de software. Ni vel es o capas de l a Ingeni er a de Software Las herramientas de la ingeniera de software proporcionan un apoyo automatizado o semiautomatizado para el proceso y los mtodos. Cuando se integran las herramientas de modo que la informacin creada por una pueda ser utilizada por otra, queda establecido un sistema llamado ingeniera de software asistido por computadora que apoya el desarrollo de software. Fas es general es del proces o de des arrol l o de s of t ware Un proceso es un conjunto de actividades, acciones y tareas que se ejecutan cuando va a crearse algn producto del trabajo. Una actividad busca lograr un objetivo amplio (por ejemplo, comunicacin con los participantes) y se desarrolla sin importar el dominio de la aplicacin, tamao del proyecto, complejidad del esfuerzo o grado de rigor con el que se usar la ingeniera de software. Fas es general es del proces o de des arrol l o de s of t ware Comunicacin. Antes de que comience cualquier trabajo tcnico, tiene importancia crtica comunicarse y colaborar con el cliente (y con otros participantes). Se busca entender los objetivos de los participantes respecto del proyecto, y reunir los requerimientos que ayuden a definir las caractersticas y funciones del software. Fases general es del proceso de desarrol l o de software Planeacin. Cualquier viaje complicado se simplifica si existe un mapa. Un proyecto de software es un viaje difcil, y la actividad de planeacin crea un mapa que gua al equipo mientras viaja. El mapa llamado plan del proyecto de software define el trabajo de ingeniera de software al describir las tareas tcnicas por realizar, los riesgos probables, los recursos que se requieren, los productos del trabajo que se obtendrn y una programacin de las actividades. Fases general es del proceso de desarrol l o de software Modelado. Ya sea usted diseador de paisaje, constructor de puentes, ingeniero aeronutico, carpintero o arquitecto, a diario trabaja con modelos. Crea un bosquejo del objeto por hacer a fin de entender el panorama general cmo se ver arquitectnicamente, cmo ajustan entre s las partes constituyentes y muchas caractersticas ms. Si se requiere, refina el bosquejo con ms y ms detalles en un esfuerzo por comprender mejor el problema y cmo resolverlo. Fases general es del proceso de desarrol l o de software Construccin. Esta actividad combina la generacin de cdigo (ya sea manual o automatizada) y las pruebas que se requieren para descubrir errores en ste.
Despliegue. El software (como entidad completa o como un incremento parcialmente terminado) se entrega al consumidor que lo evala y que le da retroalimentacin, misma que se basa en dicha evaluacin. Model o de procesos de desarrol l o de Software Un proceso como la coleccin de actividades de trabajo, acciones y tareas que se realizan cuando va a crearse algn producto terminado. Cada una de las actividades, acciones y tareas se encuentra dentro de una estructura o modelo que define su relacin tanto con el proceso como entre s. Model o de procesos de desarrol l o de Software Model o de procesos de desarrol l o de Software Model o de procesos de desarrol l o de Software Model o de procesos de desarrol l o de Software Modelo de la cascada Hay veces en las que los requerimientos para cierto problema se comprenden bien: cuando el trabajo desde la comunicacin hasta el despliegue fluye en forma razonablemente lineal. Esta situacin se encuentra en ocasiones cuando deben hacerse adaptaciones o mejoras bien definidas a un sistema ya existente (por ejemplo, una adaptacin para software de contabilidad que es obligatorio hacer debido a cambios en las regulaciones gubernamentales). Model o de procesos de desarrol l o de Software Model o de procesos de desarrol l o de Software Modelo de la cascada El modelo de la cascada, a veces llamado ciclo de vida clsico, sugiere un enfoque sistemtico y secuencial para el desarrollo del software, que comienza con la especificacin de los requerimientos por parte del cliente y avanza a travs de planeacin, modelado, construccin y despliegue, para concluir con el apoyo del software terminado Model o de procesos de desarrol l o de Software Modelos de proceso incremental Hay muchas situaciones en las que los requerimientos iniciales del software estn razonablemente bien definidos, pero el alcance general del esfuerzo de desarrollo imposibilita un proceso lineal. Adems, tal vez haya una necesidad imperiosa de dar rpidamente cierta funcionalidad limitada de software a los usuarios y aumentarla en las entregas posteriores de software. En tales casos, se elige un modelo de proceso diseado para producir el software en incrementos. Model o de procesos de desarrol l o de Software Model o de procesos de desarrol l o de Software Modelos de proceso incremental El modelo de proceso incremental se centra en que en cada incremento se entrega un producto que ya opera. Los primeros incrementos son versiones desnudas del producto final, pero proporcionan capacidad que sirve al usuario y tambin le dan una plataforma de evaluacin Model o de procesos de desarrol l o de Software Modelos de proceso evolutivo El software, como todos los sistemas complejos, evoluciona en el tiempo. Es frecuente que los requerimientos del negocio y del producto cambien conforme avanza el desarrollo, lo que hace que no sea realista trazar una trayectoria rectilnea hacia el producto final; los plazos apretados del mercado hacen que sea imposible la terminacin de un software perfecto, pero debe lanzarse una versin limitada a fin de aliviar la presin de la competencia o del negocio. Model o de procesos de desarrol l o de Sof t ware Modelos de proceso evolutivo Hacer prototipos. Es frecuente que un cliente defina un conjunto de objetivos generales para el software, pero que no identifique los requerimientos detallados para las funciones y caractersticas. En otros casos, el desarrollador tal vez no est seguro de la eficiencia de un algoritmo, de la adaptabilidad de un sistema operativo o de la forma que debe adoptar la interaccin entre el humano y la mquina. En estas situaciones, y muchas otras, el paradigma de hacer prototipos tal vez ofrezca el mejor enfoque. Model o de procesos de desarrol l o de Software Model o de procesos de desarrol l o de Software El modelo espiral. Propuesto en primer lugar por Barry Boehm, el modelo espiral es un modelo evolutivo del proceso del software y se acopla con la naturaleza iterativa de hacer prototipos con los aspectos controlados y sistmicos del modelo de cascada. Tiene el potencial para hacer un desarrollo rpido de versiones cada vez ms completas. Model o de procesos de desarrol l o de Software Model o de procesos de desarrol l o de Software Modelos concurrentes El modelo de desarrollo concurrente, en ocasiones llamado ingeniera concurrente, permite que un equipo de software represente elementos iterativos y concurrentes de cualquiera de los modelos de proceso descritos en este captulo. Por ejemplo, la actividad de modelado definida para el modelo espiral se logra por medio de invocar una o ms de las siguientes acciones de software: hacer prototipos, anlisis y diseo. Model o de procesos de desarrol l o de Software Sesin 2 El paradigma orientado a objetos, UML y RUP El RUP Rational Unified Process El Proceso Unificado es un proceso de software genrico que puede ser utilizado para una gran cantidad de tipos de sistemas de software, para diferentes reas de aplicacin, diferentes tipos de organizaciones, diferentes niveles de competencia y diferentes tamaos de proyectos. Estructura del RUP RUP y UML El Proceso Unificado usa el Lenguaje de Modelado Unificado (UML) en la preparacin de todos los planos del sistema. De hecho, UML es una parte integral del Proceso Unificado, fueron desarrollados a la par. Perspecti vas de UML UML ser el lenguaje de modelado orientado a objetos estndar predominante los prximos aos.
Evidencias: Herramientas que proveen la notacin UML Edicin de libros Congresos, cursos, etc. Perspecti vas de UML Evidencias: Herramientas que proveen la notacin UML Edicin de libros Congresos, cursos, etc. Model os y Di agramas Un modelo captura una vista de un sistema del mundo real. Es una abstraccin de dicho sistema, considerando un cierto propsito. As, el modelo describe completamente aquellos aspectos del sistema que son relevantes al propsito del modelo, y a un apropiado nivel de detalle. Model os y Di agramas Diagrama: una representacin grfica de una coleccin de elementos de modelado, a menudo dibujada como un grafo con vrtices conectados por arcos. Di agramas de UML Diagrama de Casos de Uso Diagrama de Clases Diagrama de Objetos Diagramas de Comportamiento Diagrama de Estados Diagrama de Actividad Diagramas de Interaccin Diagrama de Secuencia Diagrama de Colaboracin Diagramas de implementacin Diagrama de Componentes Diagrama de Despliegue Di agramas de UML Use Case Diagrams Use Case Diagrams Diagramas de Casos de Uso Scenario Diagrams Scenario Diagrams Diagramas de Colaboracin State Diagrams State Diagrams Diagramas de Componentes Component Diagrams Component Diagrams Diagramas de Distribucin State Diagrams State Diagrams Diagramas de Objetos Scenario Diagrams Scenario Diagrams Diagramas de Estados Use Case Diagrams Use Case Diagrams Diagramas de Secuencia State Diagrams State Diagrams Diagramas de Clases Diagramas de Actividad Modelo Los diagramas expresan grficamente partes de un modelo Organi zaci n de Model os Propuesta de Rational Unified Process (RUP) M. de Casos de Uso del Negocio (Business Use-Case Model) M. de Objetos del Negocio (Business Object Model) M. de Casos de Uso (Use-Case Model) M. de Anlisis (Analysis Model) M. de Diseo (Design Model) M. de Despliegue (Deployment Model) M. de Datos (Data Model) M. de Implementacin (Implementation Model) M. de Pruebas (Test Model)
Paquetes en UML Los paquetes ofrecen un mecanismo general para la organizacin de los modelos/subsistemas agrupando elementos de modelado Se representan grficamente como: Nombre de paquete Paquetes en UML Cada paquete corresponde a un submodelo (subsistema) del modelo (sistema) Un paquete puede contener otros paquetes, sin lmite de anidamiento pero cada elemento pertenece a (est definido en) slo un paquete Una clase de un paquete puede aparecer en otro paquete por la importacin a travs de una relacin de dependencia entre paquetes Paquetes en UML
UNPSJB - 2005 Di agrama de Casos de Uso Casos de Uso es una tcnica para capturar informacin de cmo un sistema o negocio trabaja, o de cmo se desea que trabaje
No pertenece estrictamente al enfoque orientado a objeto, es una tcnica para captura de requisitos Ingeniera de Software - Clase 6 Di agrama de Casos de Uso Supervisor Verificar Situacin del Cliente Administrativo Preparar Catlogo Sistema Inventario Tipos de Venta Ejempl os UNPSJB - 2005 En el paquete tipos de venta: Venta Normal Venta en Rebajas Venta en Ofertas Vendedor Ejempl os UNPSJB - 2005 Ingeniera de Software - Clase 6 61 Solicitar Nueva Tarjeta Cliente Solicitar Prstamo <<extend>> [Tarjeta Caducada] Otro Ejemplo Ejempl os Verificar Operacin Reintegro Cuenta Corriente Cliente Reintegro Cuenta de Crdito <<include>> <<include>> Di agrama de Secuenci a
UNPSJB - 2005 : Encargado :WInPrstamos :Socio :Video :Prstamo prestar(video, socio) verificar situacin socio verificar situacin video registrar prstamo entregar recibo Di agrama de Col aboraci n : Encargado :WInPrstamos :Socio :Video :Prstamo 1: prestar(video, socio) 2: verificar situacin socio 3: verificar situacin video 4: registrar prstamo 5: entregar recibo Di agrama de Cl ases El Diagrama de Clases es el diagrama principal para el anlisis y diseo.
Un diagrama de clases presenta las clases del sistema con sus relaciones estructurales y de herencia. UNPSJB - 2005 Di agrama de Cl ases La definicin de clase incluye definiciones para atributos y operaciones.
El modelo de casos de uso aporta informacin para establecer las clases, objetos, atributos y operaciones. UNPSJB - 2005 Ejempl os (Clase y Visibilidad) Ejempl os Asociacin Profesor Departamento 1 0..1 director 1 dirige 0..1 Ejempl os (Cl ase Asoci aci n) 69 Empresa Empleado 1..* * 1..* * trabajadores empleador Cargo nombre sueldo 0..1 1..* superior subordinado 1..* 0..1 Ejempl os (General i zaci n) Trabajador Directivo Administrativo Obrero { disjunta, completa } Ejempl os
Avin militar Avin comercial Avin de carga Avin de pasajeros Motor Vendedor de billetes Avin 1..4 1 1..4 1 Piloto Reserva n 1 n 1 Lnea area Vuelo n 1 n 1 1..2 n 1..2 n n 1 n 1 1 n 1 n { disjunta, completa } { disjunta, completa } Di agrama de Estados
con prstamos sin prstamos alta baja prestar devolver[ nmero_prstamos = 1 ] prestar devolver[ nmero_prstamos > 1 ] nmero_prstamos = 0 nmero_prstamos > 0 Socio nmero : int nombre : char[50] nmero_prestamos : int = 0 alta() baja() prestar(cdigo_libro : int, fecha : date) devolver(cdigo_libro : int, fecha : date) Di agrama de Acti vi dad
Buscar Bebida Poner caf en filtro Aadir agua al depsito Agarrar taza Poner filtro en mquina Encender mquina Caf en preparacin Servir caf Agarrar zumo Beber [no hay caf] [hay caf [no zumo] [hay zumo] / cafetera.On indicador de fin Otro Ejempl o ( con swi m l i nes) Emitir billete Pasajero Vendedor Airline Solicitar pago Reservar plazas Confirmar plaza reservada Pagar pasaje Informar alternativas y precios Verificar existencia vuelo Dar detalles vuelo Solicitar pasaje Seleccionar vuelo Di agrama Componentes Control y Anlisis Comment Acceso a BD Comment Rutinas de Coneccion Comment Interf az de Terminal Comment Gestin de Cuentas Comment Di agrama de Despl i egue 76 Punto de Venta Servidor Central Terminal de Consulta Gestin de Cuentas Comment Interfaz de Terminal Comment Rutinas de Coneccion Comment Rutinas de Coneccion Comment Interfaz de Terminal Comment Rutinas de Coneccion Comment Acceso a BD Comment Control y Anlisis Comment Resumen UML define una notacin que se expresa como diagramas sirven para representar modelos/subsistemas o partes de ellos El 80 por ciento de la mayora de los problemas pueden modelarse usando alrededor del 20 por ciento de UML-- Grady Booch
Por qu l a Ori entaci n a Objetos? Proximidad de los conceptos de modelado respecto de las entidades del mundo real Mejora captura y validacin de requisitos Acerca el espacio del problema y el espacio de la solucin Modelado integrado de propiedades estticas y dinmicas del mbito del problema Facilita construccin, mantenimiento y reutilizacin Probl emas en OO ...Los conceptos bsicos de la OO se conocen desde hace dos dcadas, pero su aceptacin todava no est tan extendida como los beneficios que esta tecnologa puede sugerir ...La mayora de los usuarios de la OO no utilizan los conceptos de la OO de forma purista, como inicialmente se pretenda. Esta prctica ha sido promovida por muchas herramientas y lenguajes que intentan utilizar los conceptos en diversos grados 79 Tarea
Hacer un informe explicando las ventajas y desventajas de los modelos de proceso de software analizados en clase.