Anda di halaman 1dari 50

Software Reutilizable

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

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

Los temas cubiertos

El campo de la reutilizacin Los patrones de diseo Reutilizacin basado en generador Los marcos de aplicacin Sistema de reutilizacin de aplicaciones

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

Slide 3

La reutilizacin del software

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

Ian Sommerville 2004

Reutilizacin basada en Ingeniera de Software

Sistema de reutilizacin de aplicaciones


El conjunto de un sistema de aplicacin puede ser reutilizado, ya sea por su incorporacin sin cambios en otros sistemas (reutilizacin de COTS) o mediante el desarrollo de las familias de aplicacin.
Componentes de una solicitud de sub-sistemas a los objetos solo se pueden reutilizar. Cubierto en el Captulo 19. Los componentes de software que implementan un objeto nico y bien definido o funcin pueden ser reutilizados.
Software Engineering, 7th edition. Chapter 18 Slide 5

La reutilizacin de componentes

La reutilizacin de objetos y la funcin

Ian Sommerville 2004

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.

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

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.

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

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.

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

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

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

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.

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

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

Los factores de planificacin en la reutilizacin

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.

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

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

Los Patrones de Diseo

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

Elementos del patrn

Nombre
Un identificador de modelo significativo.

Descripcin del problema. Descripcin de la solucin.


No un diseo concreto sino una plantilla para una solucin del diseo que puede ser instanciado de diversas maneras.
Los resultados, las ventajas y desventajas de aplicar el modelo.
Software Engineering, 7th edition. Chapter 18 Slide 17

Consecuencias

Ian Sommerville 2004

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

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

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.

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

Slide 19

El patrn Observador

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

Slide 20

Reutilizacin basada en Generador

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

Ian Sommerville 2004

Tipos de Generadores de programa

Tipos de generadores de programa

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

Ian Sommerville 2004

Reutilizacin a travs del Generador de programa

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

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

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

Slide 25

Los Marcos de aplicacin

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.

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

Slide 26

Clases de Marco

Los marcos de la infraestructura del sistema


Apoyar el desarrollo del sistema de infraestructuras tales como las comunicaciones, interfaces de usuario y compiladores.

Los marcos de integracin de middleware


Estndares y clases que apoyan la comunicacin de componentes y el intercambio de informacin.
Apoyar el desarrollo de determinados tipos de aplicaciones como las telecomunicaciones o sistemas financieros.
Software Engineering, 7th edition. Chapter 18 Slide 27

Marcos de aplicaciones de empresa

Ian Sommerville 2004

Ampliacin de los marcos

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

Ian Sommerville 2004

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).

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

Slide 29

Modelo-Vista-Controlador

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

Slide 30

Reutilizacin de Sistemas de Aplicacin

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.

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

Slide 31

Reutilizacin de los productos COTS


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

Opciones de diseo COTS

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

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

Slide 34

Productos COTS Reutilizados

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

Ian Sommerville 2004

Problemas de integracin del sistema COTS

La falta de control sobre la funcionalidad y el rendimiento


Sistemas COTS pueden ser menos eficaces de lo que parecen
Diversos sistemas de los COTS pueden hacer diversas asunciones que significa que la integracin es difcil Proveedores de COTS no controlan la evolucin de los usuarios del sistema COTS vendedores no pueden ofrecer apoyo durante la vida til del producto
Software Engineering, 7th edition. Chapter 18 Slide 36

Problemas con el sistema de inter-operabilidad COTS

Ningn control sobre la evolucin del sistema

Soporte de los proveedores de COTS

Ian Sommerville 2004

Lneas de productos de software

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

Ian Sommerville 2004

Especializacin de productos COTS

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

Especializacin para el Entorno

La especializacin funcional

Proceso de especializacin

Ian Sommerville 2004

Configuracin de COTS

Configuracin del tiempo de despliegue


Un sistema genrico se configura mediante la insercin de conocimiento de las necesidades del cliente y procesos de negocio. El software en s no cambia.

Configuracin del tiempo del diseo


Un cdigo genrico comn se adapta y cambia de acuerdo a las necesidades de los clientes en particular.

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

Slide 39

La organizacin del sistema de ERP

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

Slide 40

Los sistemas ERP

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

Configuracin del tiempo del diseo

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.

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

Slide 42

Lnea de productos de arquitecturas

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.

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

Slide 43

Un sistema de gestin de los recursos

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

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

Ian Sommerville 2004

Un sistema de despacho

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

Slide 46

Desarrollo del caso del producto

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 18

Slide 47

Desarrollo del caso del producto

Obtenga necesidades de los interesados


Utilice a un miembro existente de la familia como prototipo
Encuentre el miembro de la familia que mejor se adapte a los requisitos Adaptar los requisitos que sean necesarios para las capacidades del software Desarrolle los mdulos nuevos y realice los cambios para el miembro de la familia Caractersticas dominantes del documento para el desarrollo adicional del miembro
Software Engineering, 7th edition. Chapter 18 Slide 48

Elige al miembro mas cercano de la familia

Re-negociar los requisitos

Adaptar el sistema existente

Entregue a nuevo miembro de la familia

Ian Sommerville 2004

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

Anda mungkin juga menyukai