Diferencia entre revisiones de «Reutilización de requisitos»

(Etiqueta: nuestro-nuestra)
(Etiqueta: nuestro-nuestra)
Línea 22: Línea 22:
 
Esta es una de las temáticas que debería ser trabajada con más profundidad por la importancia que tiene para el desarrollo de la industria del software.  
 
Esta es una de las temáticas que debería ser trabajada con más profundidad por la importancia que tiene para el desarrollo de la industria del software.  
 
Aplicar la reutilización optimiza el tiempo de trabajo. En ocasiones se invierte mucho tiempo elaborando sistemas y componentes que ya han sido implementados anteriormente, y este, se podría reducir con solo utilizarlas y adaptarlas al nuevo sistema. Se podría incluso reducir el costo del producto y sus esfuerzos, logrando que la satisfacción de los clientes sea mucho mayor.  
 
Aplicar la reutilización optimiza el tiempo de trabajo. En ocasiones se invierte mucho tiempo elaborando sistemas y componentes que ya han sido implementados anteriormente, y este, se podría reducir con solo utilizarlas y adaptarlas al nuevo sistema. Se podría incluso reducir el costo del producto y sus esfuerzos, logrando que la satisfacción de los clientes sea mucho mayor.  
== Marcos de trabajo ==  
+
=== Marcos de trabajo ===  
 
Muchas de las personas que se involucran en el desarrollo de software principalmente los desarrolladores de [[aplicaciones Web]], desde sus inicios se enfrentan a disímiles conceptos de los cuales deben tener conocimiento a la hora de desarrollar sus soluciones, unos de estos conceptos es el de marco de trabajo.
 
Muchas de las personas que se involucran en el desarrollo de software principalmente los desarrolladores de [[aplicaciones Web]], desde sus inicios se enfrentan a disímiles conceptos de los cuales deben tener conocimiento a la hora de desarrollar sus soluciones, unos de estos conceptos es el de marco de trabajo.
 
   
 
   
 
Los marcos de trabajo son colecciones de patrones de diseño, [[interfaces]], clases y [[código fuente]] real, que conforman un sistema que proporciona cierto apoyo al programador. Lo mejor es la práctica de uso y explotación de los marcos existentes y [[subsistemas]] en lugar de crear algo desde cero, propenso a introducir errores y que no cuente con respaldo mundial como lo tienen mucho de los principales marcos de trabajo.
 
Los marcos de trabajo son colecciones de patrones de diseño, [[interfaces]], clases y [[código fuente]] real, que conforman un sistema que proporciona cierto apoyo al programador. Lo mejor es la práctica de uso y explotación de los marcos existentes y [[subsistemas]] en lugar de crear algo desde cero, propenso a introducir errores y que no cuente con respaldo mundial como lo tienen mucho de los principales marcos de trabajo.
== Línea de productos de software ==  
+
=== Línea de productos de software ===  
 
Son una estrategia ampliamente utilizada en numerosas ramas de la industria que consiste en la producción de múltiples productos utilizando una infraestructura común. Este enfoque se está introduciendo también en la ingeniería del software, en la medida en que ésta va siendo cada vez más una actividad industrial que necesita mejorar su eficiencia y optimizar sus costes.  
 
Son una estrategia ampliamente utilizada en numerosas ramas de la industria que consiste en la producción de múltiples productos utilizando una infraestructura común. Este enfoque se está introduciendo también en la ingeniería del software, en la medida en que ésta va siendo cada vez más una actividad industrial que necesita mejorar su eficiencia y optimizar sus costes.  
==='''Concepto'''===
+
===='''Concepto'''====
 
Una línea de productos de software, también llamada familia de aplicaciones en la literatura, es un conjunto de sistemas de software de una misma área de negocio y que tienen ciertas funcionalidades en común.  
 
Una línea de productos de software, también llamada familia de aplicaciones en la literatura, es un conjunto de sistemas de software de una misma área de negocio y que tienen ciertas funcionalidades en común.  
==='''Ventajas'''===
+
===='''Ventajas'''====
 
Las líneas de productos de software presentan ventajas en cuanto a:
 
Las líneas de productos de software presentan ventajas en cuanto a:
 
* Reducción del esfuerzo de desarrollo dedicado a cada producto.
 
* Reducción del esfuerzo de desarrollo dedicado a cada producto.
Línea 36: Línea 36:
 
* Permiten producir más funcionalidades en la misma cantidad de tiempo.
 
* Permiten producir más funcionalidades en la misma cantidad de tiempo.
 
* Permiten producir más funcionalidades con la misma cantidad de dinero.
 
* Permiten producir más funcionalidades con la misma cantidad de dinero.
== Reutilización de productos COTS ==  
+
=== Reutilización de productos COTS ===  
 
Los productos de software COTS (por sus siglas en inglés Commercial Off The Shelf) son [[productos]] que se aplican a un [[sistema software]] que puede utilizarse sin cambios por su comprador. Incluye muchas características y funciones para que sea potencialmente reutilizable en diferentes [[aplicaciones]] y entornos.  
 
Los productos de software COTS (por sus siglas en inglés Commercial Off The Shelf) son [[productos]] que se aplican a un [[sistema software]] que puede utilizarse sin cambios por su comprador. Incluye muchas características y funciones para que sea potencialmente reutilizable en diferentes [[aplicaciones]] y entornos.  
 
   
 
   
Línea 42: Línea 42:
 
   
 
   
 
Por lo que se puede resumir que los beneficios de reutilización de productos COTS son significativos debido a que estos sistemas ofrecen mucha más funcionalidad a la persona que los reutiliza, se ahorra mucho tiempo si se reutiliza un sistema existente, los tiempos de desarrollo del producto en construcción se reducen drásticamente.
 
Por lo que se puede resumir que los beneficios de reutilización de productos COTS son significativos debido a que estos sistemas ofrecen mucha más funcionalidad a la persona que los reutiliza, se ahorra mucho tiempo si se reutiliza un sistema existente, los tiempos de desarrollo del producto en construcción se reducen drásticamente.
== Patrones de diseño ==
+
=== Patrones de diseño ===
 
[[Christopher Alexander]] ha plasmado que ”cada patrón describe un problema que ocurre una y otra vez en nuestro ambiente, y luego describe el núcleo de la solución a ese problema, de forma tal que esa solución puede ser usada un millón de veces, sin hacerlo de la misma manera dos veces.”
 
[[Christopher Alexander]] ha plasmado que ”cada patrón describe un problema que ocurre una y otra vez en nuestro ambiente, y luego describe el núcleo de la solución a ese problema, de forma tal que esa solución puede ser usada un millón de veces, sin hacerlo de la misma manera dos veces.”
 
   
 
   
Línea 48: Línea 48:
 
   
 
   
 
== Patrones de reutilización ==
 
== Patrones de reutilización ==
Los patrones de análisis son hoy en día una de las mejores herramientas para asegurar el mantenimiento de una organización de software. Estos patrones parten de un objetivo de negocio hasta una solución técnica que desde la perspectiva del software no son otra cosa que un análisis que le indica al arquitecto de software cómo se debe enfocar una solución [[tecnológica]].  
+
Los patrones de análisis son hoy en día una de las mejores herramientas para asegurar el mantenimiento de una organización de software. Estos patrones parten de un objetivo de negocio hasta una solución técnica que desde la perspectiva del software no son otra cosa que un análisis que le indica al arquitecto de software cómo se debe enfocar una solución [[tecnológica]].
 +
=== Patrones de análisis ===
 
   
 
   
 
Estos patrones son un conjunto de clases y [[relaciones]] entre ellas, que tienen algún sentido en el [[contexto]] de una aplicación. Representan una estructura que puede ser válida para otras aplicaciones.  
 
Estos patrones son un conjunto de clases y [[relaciones]] entre ellas, que tienen algún sentido en el [[contexto]] de una aplicación. Representan una estructura que puede ser válida para otras aplicaciones.  
 
   
 
   
===Características de los patrones de análisis===
+
====Características de los patrones de análisis====
 
*Ayudan a construir la experiencia colectiva de [[Ingeniería de Software]].
 
*Ayudan a construir la experiencia colectiva de [[Ingeniería de Software]].
 
*Son una abstracción de "problema – solución".
 
*Son una abstracción de "problema – solución".
Línea 59: Línea 60:
 
* Proporcionan [[vocabulario]] y entendimiento común.
 
* Proporcionan [[vocabulario]] y entendimiento común.
 
   
 
   
== Patrones de creación ==  
+
=== Patrones de creación ===
 
Los patrones de creación son los relacionados con la creación de instancias de clases. Estos se pueden dividir en los patrones de creación de clases y los patrones de objetos de creación, los mismos facilitan y simplifican la creación de objetos. También permiten crear objetos sin definir la clase concreta, sólo la interfaz que debe implementar incluyendo reutilizar otros objetos en vez de crear nuevos debido a restricciones o eficiencia. Existen varios tipos de patrones de creación. A continuación se muestra una lista de ellos.
 
Los patrones de creación son los relacionados con la creación de instancias de clases. Estos se pueden dividir en los patrones de creación de clases y los patrones de objetos de creación, los mismos facilitan y simplifican la creación de objetos. También permiten crear objetos sin definir la clase concreta, sólo la interfaz que debe implementar incluyendo reutilizar otros objetos en vez de crear nuevos debido a restricciones o eficiencia. Existen varios tipos de patrones de creación. A continuación se muestra una lista de ellos.
  

Revisión del 14:14 29 nov 2013

Reutilización de requisitos
Información sobre la plantilla
Reutilización.jpeg
Concepto:Reutilizar es la acción de volver a utilizar los bienes o productos. La utilidad puede venir para el usuario mediante una acción de mejora o restauración, o sin modificar el producto si es útil para un nuevo usuario.

Reutilización de requisitos. Donald Reifer ha plasmado que “la Ingeniería de Requisitos es el uso sistemático de procedimientos, técnicas, lenguajes y herramientas para obtener con un coste reducido el análisis, documentación, evolución continua de las necesidades del usuario y la especificación del comportamiento externo de un sistema que satisfaga las necesidades del usuario.”

Actividades

Cuando la reutilización está presente en un proceso de desarrollo software, este debe integrar todas las actividades necesarias para producir y reutilizar componentes de software. Así se distinguen dos actividades principales dentro de la reutilización: el desarrollo para la reutilización y el desarrollo con reutilización.

Desarrollo para la reutilización

Consiste en la realización de un software que cumple con un conjunto de restricciones sobre su reutilización y su calidad. A la hora de desarrollar componentes reutilizables es fundamental centrarse en criterios de calidad, en la disminución de los costes de producción de los componentes.

Cuando se va a crear un componente reutilizable debe analizarse la variabilidad de los requisitos que satisface dicho componente, de forma que se construya como un componente genérico que pueda ser especializado en el momento de su reutilización para ajustarse a unos requisitos específicos.

Desarrollo con reutilización

Las técnicas utilizadas en el proceso de desarrollo con reutilización dependen en gran medida de los componentes que se hayan preparado en el proceso de desarrollo para la reutilización. El desarrollo con reutilización consiste en la generación de nuevos productos software integrando elementos existentes, de forma directa o pasando por un proceso de adaptación.

Técnicas de reutilización

Esta es una de las temáticas que debería ser trabajada con más profundidad por la importancia que tiene para el desarrollo de la industria del software. Aplicar la reutilización optimiza el tiempo de trabajo. En ocasiones se invierte mucho tiempo elaborando sistemas y componentes que ya han sido implementados anteriormente, y este, se podría reducir con solo utilizarlas y adaptarlas al nuevo sistema. Se podría incluso reducir el costo del producto y sus esfuerzos, logrando que la satisfacción de los clientes sea mucho mayor.

Marcos de trabajo

Muchas de las personas que se involucran en el desarrollo de software principalmente los desarrolladores de aplicaciones Web, desde sus inicios se enfrentan a disímiles conceptos de los cuales deben tener conocimiento a la hora de desarrollar sus soluciones, unos de estos conceptos es el de marco de trabajo.

Los marcos de trabajo son colecciones de patrones de diseño, interfaces, clases y código fuente real, que conforman un sistema que proporciona cierto apoyo al programador. Lo mejor es la práctica de uso y explotación de los marcos existentes y subsistemas en lugar de crear algo desde cero, propenso a introducir errores y que no cuente con respaldo mundial como lo tienen mucho de los principales marcos de trabajo.

Línea de productos de software

Son una estrategia ampliamente utilizada en numerosas ramas de la industria que consiste en la producción de múltiples productos utilizando una infraestructura común. Este enfoque se está introduciendo también en la ingeniería del software, en la medida en que ésta va siendo cada vez más una actividad industrial que necesita mejorar su eficiencia y optimizar sus costes.

Concepto

Una línea de productos de software, también llamada familia de aplicaciones en la literatura, es un conjunto de sistemas de software de una misma área de negocio y que tienen ciertas funcionalidades en común.

Ventajas

Las líneas de productos de software presentan ventajas en cuanto a:

  • Reducción del esfuerzo de desarrollo dedicado a cada producto.
  • Reducción del tiempo de entrada en el mercado de cada producto
  • Permiten producir más funcionalidades en la misma cantidad de tiempo.
  • Permiten producir más funcionalidades con la misma cantidad de dinero.

Reutilización de productos COTS

Los productos de software COTS (por sus siglas en inglés Commercial Off The Shelf) son productos que se aplican a un sistema software que puede utilizarse sin cambios por su comprador. Incluye muchas características y funciones para que sea potencialmente reutilizable en diferentes aplicaciones y entornos.

En la actualidad una de la formas de reutilizar este tipo de productos es mediante los sistemas grandes cuando tienen definidas interfaces API´Sque permiten programar el acceso a las funciones de dichos sistemas. Debido a la funcionalidad que estos productos COTS ofrecen, es posible reducir costes y tiempos de entrega en varios órdenes de magnitud comparados con el desarrollo de un nuevo software.

Por lo que se puede resumir que los beneficios de reutilización de productos COTS son significativos debido a que estos sistemas ofrecen mucha más funcionalidad a la persona que los reutiliza, se ahorra mucho tiempo si se reutiliza un sistema existente, los tiempos de desarrollo del producto en construcción se reducen drásticamente.

Patrones de diseño

Christopher Alexander ha plasmado que ”cada patrón describe un problema que ocurre una y otra vez en nuestro ambiente, y luego describe el núcleo de la solución a ese problema, de forma tal que esa solución puede ser usada un millón de veces, sin hacerlo de la misma manera dos veces.”

Es evidente que a lo largo de una multitud de diseños de aplicaciones, hay problemas que se repiten o que son similares, es decir, que responden a un cierto patrón. Por lo antes escrito se puede resumir que los patrones de diseño son soluciones simples y elegantes a problemas específicos y comunes del diseño orientado a objetos y que pueden ser utilizados para resolver problemas en el presente que tuvieron éxito en el pasado.

Patrones de reutilización

Los patrones de análisis son hoy en día una de las mejores herramientas para asegurar el mantenimiento de una organización de software. Estos patrones parten de un objetivo de negocio hasta una solución técnica que desde la perspectiva del software no son otra cosa que un análisis que le indica al arquitecto de software cómo se debe enfocar una solución tecnológica.

Patrones de análisis

Estos patrones son un conjunto de clases y relaciones entre ellas, que tienen algún sentido en el contexto de una aplicación. Representan una estructura que puede ser válida para otras aplicaciones.

Características de los patrones de análisis

  • Ayudan a construir la experiencia colectiva de Ingeniería de Software.
  • Son una abstracción de "problema – solución".
  • Se ocupan de problemas recurrentes.
  • Identifican y especifican abstracciones de niveles más altos que componentes o clases individuales.
  • Proporcionan vocabulario y entendimiento común.

Patrones de creación

Los patrones de creación son los relacionados con la creación de instancias de clases. Estos se pueden dividir en los patrones de creación de clases y los patrones de objetos de creación, los mismos facilitan y simplifican la creación de objetos. También permiten crear objetos sin definir la clase concreta, sólo la interfaz que debe implementar incluyendo reutilizar otros objetos en vez de crear nuevos debido a restricciones o eficiencia. Existen varios tipos de patrones de creación. A continuación se muestra una lista de ellos.

  • Abstract Factory: Proporciona una interfaz para crear familias de objetos o que dependen entre sí, sin especificar sus clases concretas.
  • Builder: Separa la construcción de un objeto complejo de su representación, de forma que el mismo proceso de construcción pueda crear diferentes representaciones.
  • Factory Method: Define una interfaz para crear un objeto, pero deja que sean las subclases quienes decidan qué clase instanciar. Permite que una clase delegue en sus subclases la creación de objetos.
  • Prototype: Especifica los tipos de objetos a crear por medio de una instancia prototípica,y crear nuevos objetos copiando este prototipo.
  • Singleton: Garantiza que una clase sólo tenga una instancia, y proporciona un punto de acceso global a ella.

Fuentes

  • Reifer, Donald. 1994. Encyclopedia of Software Engineering. [ed.] J.J Marciniack. s.l.: Wiley, 1994. pp. 1043-1054.
  • Francisco José García Peñalvo, José Manuel Marqués Corral, Jesús Manuel Maudes Raedo. Análisis y Diseño Orientado al Objeto para Reutilización. Burgos. España: s.n. 2007
  • MSDN. Microsoft. [En línea] 2011. [Citado el: 6 de Junio de 2011. [1]
  • Ramírez, José Ramón Salazar. Lenguajes y Ciencias de la Computación. En línea 2009. Citado el: 22 de noviembre de 2010. [2]
  • Torío, Julio Mellado. Estrategias de prueba de líneas de producto de sistema de tiempo real especificados con diagramas de estados jerárquicos. Tesis Doctoral. UNIVERSIDAD POLITÉCNICA DE MADRID: s.n., 2004.
  • Claudia P. Ayala, Pere Botella, Xavier Franch. Construcción de una Taxonomía de componentes COTS orientados a la Gestión de Requisitos. Barcelona. España : s.n. 2008
  • EPS, Informática. Reutilización. Conferencia.
  • Alexander, Christopher. “The Timeless Way of Building”, s.n., 1979
  • Ruiz, Alvaro Ernesto Carmona. De los patrones de análisis y de integración a los componentes de negocio. Conferecia. Bogotá, Colombia : s.n., 2005. Mühlrad, Daniel. Patrones de diseño. 2008.