Slide 1
Objetivos
Para explicar los beneficios del software reutilizable y algunos de sus problemas Para discutir las diferentes formas de implementar el software reutilizable Para explicar cmo los conceptos reutilizables pueden ser representados como patrones o incrustados en generadores de programas Para hablar sobre la reutilizacin de COTS (cuna) Para describir el desarrollo de lneas de producto de software
Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 18 Slide 2
El campo de la reutilizacin Los patrones de diseo Reutilizacin basado en generador Los marcos de aplicacin Sistema de reutilizacin de aplicaciones
Slide 3
En la mayora de las disciplinas de ingeniera, los sistemas han sido diseados por la composicin de componentes existentes que han sido utilizados en otros sistemas. La ingeniera del software ha estado ms centrada en el desarrollo original, pero actualmente se reconoce que para lograr un software mejor, ms rpidamente y a menor costo, tenemos que adoptar un proceso de diseo que se basa en la reutilizacin del software sistemtico.
Software Engineering, 7th edition. Chapter 18 Slide 4
La reutilizacin de componentes
Beneficios de la Reutilizacin 1
Mayor fiabilidad: Software reutilizados, que han sido probados en sistemas de trabajo, deben ser mas confiables que el nuevo software. El uso inicial del software revela cualquier avera del diseo y de la puesta en prctica. stos entonces estn fijados, as reduciendo el nmero de faltas cuando se reutiliza el software. Proceso de reduccin de riesgos: Si existe el software, hay menos incertidumbre en los costes de la reutilizacin que el software que en los costes de desarrollo. Este es un factor importante para la gestin de proyectos, ya que reduce el margen de error en la estimacin de costes del proyecto. Esto es particularmente cierto cuando se vuelven a utilizar los componentes de software relativamente grandes, tales como sub-sistemas. El uso eficaz de los especialistas: En lugar de especialistas en aplicaciones haciendo el mismo trabajo en diferentes proyectos, estos especialistas pueden desarrollar software reutilizables que encapsulan sus conocimientos.
Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 18 Slide 6
Beneficios de la Reutilizacin 2
Cumplimiento de las normas: Algunas normas, como las normas de interfaz de usuario, puede ser implementadas como un conjunto de componentes estndar reutilizables. Por ejemplo, si los mens en un interfaz de usuario se implementan utilizando componentes reutilizables, todas las aplicaciones presentes en el mismo men se ajustan en formatos para los usuarios. El uso de interfaces de usuario estndar mejora fiabilidad, los usuarios son menos propensos a cometer errores cuando se presenta una interfaz familiar. El desarrollo acelerado: Llevar un sistema de mercado tan pronto como sea posible es muchas veces ms importante que el coste global de desarrollo. La reutilizacin de software puede acelerar la produccin de sistema, porque el desarrollo y la validacin en tiempo debe reducirse.
Slide 7
Problemas de Reutilizacin 1
Aumento de costes de mantenimiento: Si el cdigo fuente de un sistema de software reutilizable o componente no est disponible, los costos de mantenimiento podrn incrementarse, los elementos reutilizados del sistema puede llegar a ser cada vez ms incompatibles con los cambios del sistema. La falta de herramienta de apoyo: Conjuntos de herramientas CASE no puede apoyar el desarrollo con reutilizacin. Puede ser difcil o imposible integrar estas herramientas con un sistema de biblioteca de componentes. El proceso de software asumido por estas herramientas no puede tomar en cuenta la reutilizacin. Sndrome No inventado: Algunos ingenieros de software a veces prefieren volver a escribir componentes, ya que creen que pueden mejorar los componentes reutilizables. Esto es en parte tiene que ver con la confianza y con el hecho de que el software original de la escritura es vista como ms difcil que la reutilizacin de software de otras personas.
Slide 8
Problemas de Reutilizacin 2
Crear y mantener una biblioteca de componentes: Llenar una biblioteca de componentes reutilizables y garantizar a desarrolladores de software el uso esta biblioteca puede ser costoso. Nuestras tcnicas actuales para la clasificacin, catalogacin y recuperacin de componentes de software son inmaduros. Encontrar, la comprensin y la adaptacin de componentes reutilizables: Los componentes de software tienen que ser descubiertos en una biblioteca, ser entendidos y, ser adaptados a veces al trabajo en un nuevo entorno. Los ingenieros deben estar razonablemente seguros de encontrar un componente en la biblioteca antes de que hagan rutinariamente una bsqueda para incluir un componente como parte de su proceso normal del desarrollo.
Slide 9
El campo de la reutilizacin
Aunque la reutilizacin es a menudo simplemente considerada como la reutilizacin de los componentes de un sistema, hay muchos enfoques diferentes para la reutilizacin que pueden ser utilizados. La reutilizacin es posible en un rango de niveles de funciones simples para completar los sistemas de aplicacin. El campo de la reutilizacin cubre la gama de tcnicas de reutilizacin posible.
Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 18 Slide 10
El campo de la reutilizacin
Slide 11
Enfoques de Reutilizacin 1
Los patrones de diseo: Abstracciones genricas que se producen en todas las aplicaciones son representados como patrones de diseo que muestran los objetos abstractos y concretos y de las interacciones. Desarrollo basado en componentes: Los sistemas se desarrollan mediante la integracin de componentes (colecciones de objetos) que se ajusten a las normas de componentes del modelo. Esto se trata en el captulo 19. Los marcos de aplicacin: Colecciones de clases abstractas y concretas que pueden ser adaptadas y ampliadas para crear sistemas de aplicacin. Envoltura de sistemas heredados: Los sistemas heredados (vase el captulo 2) que pueden ser "envueltos por la definicin de un conjunto de interfaces y el acceso a estos sistemas de legado a travs de estas interfaces. Servicio de sistemas orientados: Los sistemas se desarrollan mediante la vinculacin de los servicios compartidos que pueden ser proporcionados externamente.
Slide 12
Enfoques de Reutilizacin 2
Lneas de aplicacin de productos: Un tipo de aplicacin es generalizada en torno a una arquitectura comn para que pueda adaptarse en diferentes formas para diferentes clientes. Integracin de COTS: Los sistemas se desarrollan mediante la integracin de los sistemas de aplicacin existentes. Aplicaciones verticales configurables: Un sistema genrico est diseado de manera que se puede configurar para las necesidades de clientes especficos del sistema. Generadores de programas: Un sistema de generador encaja el conocimiento del los tipos particulares de aplicaciones y puede generar sistemas o fragmentos del sistema en ese dominio Aspecto de desarrollo de software orientado: Los componentes compartidos se entretejen en una aplicacin en diferentes lugares cuando se compila el programa.
Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 18 Slide 13
El calendario de desarrollo del software. La expectativa del tiempo de vida del software. Los antecedentes, aptitudes y experiencia del equipo de desarrollo. La criticidad del software y sus requisitos no funcionales. El dominio de la aplicacin. La plataforma de ejecucin para el software.
Slide 14
Concepto de reutilizacin
Cuando vuelves a utilizar un programa o diseo de componentes, tienes que seguir las decisiones de diseo realizados por el desarrollador original del componente. Esto puede limitar las posibilidades de reutilizacin. Sin embargo, una forma ms abstracta de reutilizacin es la reutilizacin de concepto cuando se describe un enfoque particular en una implementacin de manera independiente y la implementacin es, a continuacin, desarrollada. Los dos enfoques principales para el concepto de reutilizacin son:
Los patrones de diseo; Programacin Generativa.
Software Engineering, 7th edition. Chapter 18 Slide 15 Ian Sommerville 2004
Un patrn de diseo es una forma de reutilizar el conocimiento abstracto acerca de un problema y su solucin. Un patrn es una descripcin del problema y la esencia de su solucin. Debe ser lo suficientemente abstracto para ser reutilizado en diferentes entornos. Los patrones a menudo se basan en las caractersticas de objetos como la herencia y polimorfismo.
Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 18 Slide 16
Nombre
Un identificador de modelo significativo.
Consecuencias
Mltiples pantallas
50 D A C B 25 A 0 B C D
Tema
Observador 1 A: 40 B: 25 C: 15 D: 20 Observador 2
Slide 18
El patrn Observador
Nombre
Observador
Descripcin Separa la pantalla de estado del objeto, del objeto en s. Descripcin del problema Se utiliza cuando se necesitan mltiples pantallas de estado. Descripcin de la solucin Vase la descripcin de diapositivas con UML. Consecuencias Optimizaciones para mejorar el rendimiento de visualizacin no son prcticos.
Slide 19
El patrn Observador
Slide 20
Los generadores de programa implican la reutilizacin de patrones y de algoritmos estndares. stos se encajan en el generador y son parmetrizados por comandos del usuario. Un programa entonces se genera automticamente. La reutilizacin basada en generador es posible cuando las abstracciones del dominio y su asignacin al cdigo ejecutable puede ser identificado. Una lenguaje especfico del dominio se utiliza para componer y controlar estas abstracciones.
Software Engineering, 7th edition. Chapter 18 Slide 21
Generadores de aplicaciones para procesamiento de datos de negocios; Analizador y generadores de analizadores lxicos para el procesamiento de lenguaje; Generadores de cdigo en las herramientas CASE..
Un Generador basado en la reutilizacin es muy rentable, pero su aplicabilidad se limita a un nmero relativamente pequeo de dominios de aplicacin. Es ms fcil que los usuarios finales desarrollen programas usando los generadores en comparacin con el otro componente de los enfoques basados en la reutilizacin.
Software Engineering, 7th edition. Chapter 18 Slide 22
Slide 23
Desarrollo de Aspecto-Orientado
El desarrollo Aspecto-orientado trata un problema importante de la tecnologa de dotacin lgica - la separacin de preocupaciones. Las preocupaciones no se asocian a menudo simplemente funcionalidad de la aplicacin, pero son transversales - por ejemplo, todos los componentes pueden controlar su propio funcionamiento, todos los componentes pueden tener para mantener la seguridad, etc. Cuestiones intersectoriales se implementan como los aspectos y se tejen dinmicamente en un programa. El cdigo de preocupacin es la reutilizacin y el nuevo sistema es generado por el tejedor del aspecto.
Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 18 Slide 24
Desarrollo de Aspecto-Orientado
Slide 25
Los marcos son un sub-diseo del sistema compuesto por una coleccin de clases abstractas y concretas, y las interfaces entre ellas. El sub-sistema es implementado por la adicin de componentes para rellenar las partes del diseo y de instancias de las clases abstractas en el marco. Los marcos son moderadamente grandes entidades que pueden ser reutilizados.
Slide 26
Clases de Marco
Los Marcos son genricos y se extienden para crear un uso o un subsistema ms especfico. La ampliacin del marcos consiste en:
Adicin de clases concretas que heredan las operaciones de las clases abstractas en el marco; Agregando los mtodos que se llaman en respuesta a los acontecimientos que son reconocidos por el marco.
Problema con los marcos es su complejidad lo que significa que se necesita mucho tiempo para utilizarlos con eficacia.
Software Engineering, 7th edition. Chapter 18 Slide 28
Modelo-Vista-Controlador
Marco de la infraestructura del sistema para el diseo GUI. Permite la presentacin mltiple de un objeto y las interacciones por separado con estas presentaciones. Marco MVC implica la creacin de instancias de una serie de patrones (como se explica anteriormente en concepto de reutilizacin).
Slide 29
Modelo-Vista-Controlador
Slide 30
Consiste en la reutilizacin de los sistemas de aplicacin completa, ya sea por la configuracin de un sistema para un ambiente o por la integracin de dos o ms sistemas para crear una nueva aplicacin. Dos enfoques cubiertos aqu: Integracin de productos COTS; Desarrollo de la lnea de productos.
Slide 31
COTS - Commercial Off-The-Shelf systems. Sistemas COTS suelen completar los sistemas de aplicacin que ofrece un API (Application Programming Interface). La creacin de sistemas mediante la integracin de grandes sistemas COTS es ahora una estrategia de desarrollo viable para algunos tipos de sistema, tales como sistemas de comercio electrnico.
El beneficio clave es el rpido desarrollo de aplicaciones y, por lo general, menores costos de desarrollo.
Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 18 Slide 32
Que productos COTS ofrecen la funcionalidad ms adecuada? Puede haber varios productos similares que pueden ser utilizados. Cmo se intercambiarn los datos? Los productos individuales utilizan sus propias estructuras y formatos de datos. Qu caractersticas del producto sern utilizadas realmente? La mayora de los productos tienen ms funcionalidad que la necesaria. Usted debe intentar negar el acceso a la funcionalidad inusitada
Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 18 Slide 33
Sistema de E-Adquisiciones
Slide 34
En el cliente, se utilizan los programas estndares de correo electrnico y navegacin web En el servidor, una plataforma de comercio electrnico tiene que ser integrado con un sistema de pedidos existentes.
Se trata de la escritura de un adaptador para que puedan intercambiar datos. Un sistema de correo electrnico est tambin integrado para generar e-mail para los clientes. Esto tambin requiere un adaptador para recibir datos desde el sistema de pedidos y facturacin.
Software Engineering, 7th edition. Chapter 18 Slide 35
Las lneas de productos o familias de aplicaciones de software son aplicaciones con una funcionalidad genrica que puede ser adaptada y configurada para su uso en un contexto especfico. La adaptacin puede implicar: Componentes y la configuracin del sistema; Adicin de nuevos componentes para el sistema; Seleccin de una biblioteca de componentes ya existentes; Modificacin de los componentes para satisfacer las nuevas necesidades.
Software Engineering, 7th edition. Chapter 18 Slide 37
Especializacin de la Plataforma
Diferentes versiones de la aplicacin se han desarrollado para diferentes plataformas.
Diferentes versiones de la aplicacin son creadas para gestionar entornos operativos diferentes, por ejemplo diferentes tipos de equipos de comunicacin. Diferentes versiones de la aplicacin se crean para clientes con diferentes necesidades. Diferentes versiones de la aplicacin se crean para apoyar los procesos de negocio diferentes.
Software Engineering, 7th edition. Chapter 18 Slide 38
La especializacin funcional
Proceso de especializacin
Configuracin de COTS
Slide 39
Slide 40
Un sistema de planificacin de recursos empresariales (ERP) es un sistema genrico que apoya los procesos de negocio comunes, tales como pedidos y facturacin, fabricacin, etc. Estos son muy utilizados en las grandes empresas - que representan probablemente la forma ms comn de la reutilizacin del software. El ncleo genrico se adapta mediante la inclusin de mdulos y mediante la incorporacin de conocimiento de los procesos de negocios y reglas.
Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 18 Slide 41
Lneas de productos de software que se configuran en tiempo de diseo son instancias de aplicacin de arquitecturas genricas como se discuti en el captulo 13. Los productos genricos suelen surgir despus de la experiencia con productos especficos.
Slide 42
Las arquitecturas deben estar estructuradas de tal manera de separar los diferentes subsistemas para que puedan ser modificados. La arquitectura debe tambin separar entidades y sus descripciones, y los niveles ms altos en las entidades del sistema de acceso a travs de las descripciones en lugar de hacerlo directamente.
Slide 43
Slide 44
Despachando Vehculos
Un sistema especializado de gestin de los recursos, donde el objetivo es asignar los recursos (vehculos) para manejar incidentes. Las adaptaciones incluyen:
A nivel de interfaz de usuario, hay componentes de visualizacin del operador y las comunicaciones; En la gestin de niveles de I/O, hay componentes que se encargan de la autenticacin, la presentacin de informes y planificacin de ruta; A nivel de gestin de recursos, hay componentes de localizacin de vehculos y el envo, la gestin de estado del vehculo y el registro de incidentes; La base de datos incluye los equipos, vehculos y bases de datos de mapa.
Software Engineering, 7th edition. Chapter 18 Slide 45
Un sistema de despacho
Slide 46
Slide 47
Puntos Clave
Ventajas de la reutilizacin son menores costos, desarrollar software de forma ms rpida y reducir riesgos. Los patrones del diseo son las abstracciones de alto nivel que documentan soluciones acertadas del diseo. Generadores de programas tambin estn preocupados con la reutilizacin del software - los conceptos reutilizables estn integrados en un sistema generador. Los marcos de aplicacin son colecciones de objetos concretos y abstractos que se han diseado para su reutilizacin a travs de la especializacin.
Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 18 Slide 49
Puntos Clave
Reutilizacin de productos COTS se refiere a la reutilizacin de los grandes, fuera de los sistemas comerciales. Problemas con la reutilizacin de COTS incluyen la falta de control sobre la funcionalidad, el rendimiento y la evolucin y los problemas con la inter-operacin. Los sistemas ERP son creados por la configuracin de un sistema genrico, con informacin sobre el negocio de un cliente. Las lneas de productos de software estn relacionados con las aplicaciones desarrolladas en torno a un ncleo comn de funcionalidad compartida.
Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 18 Slide 50