Vous êtes sur la page 1sur 10

Arquitectura de Software

Patricio Astorga Vega

Modelamiento de Soluciones de Software

Instituto IACC

2 Diciembre 2019
INSTRUCCIONES: Realice la siguiente actividad en base a la situación planteada:

Su equipo de trabajo está desarrollando un juego que permite al usuario interactuar con

personajes que juegan bajo ciertos roles y es por ello que se les ha solicitado incorporar al juego

una facilidad para crear nuevos personajes que se añadan a los ya predefinidos.

En el juego, todos los personajes serán instancias de un pequeño conjunto de categorías tales

como: héroe, villano, príncipe o monstruo.

Cada categoría tiene una serie de atributos como nombre, imagen, altura, peso, inteligencia,

habilidades, etc., y según sus valores una instancia de la categoría representa a un personaje u

otro. Por ejemplo, se puede tener el personaje “príncipe tonto” o “príncipe inteligente”, o un

“monstruo bueno” o “monstruo malo”.

En definitiva, primeramente deberá identificar los estilos de descomposición modular que

existen, con su principal característica, y a partir de ello seleccionar el que aplica para este caso y

ejemplificar cómo sería esta descomposición modular. Además, deberá diseñar una solución, en

base a los patrones GoF adecuados, que permita al usuario crear nuevos personajes y seleccionar

para cada sesión del juego personajes de una colección creada.


Desarrollo

1.- Identificar los estilos de descomposición modular existentes, mencionar sus características.

Precisamente una metodología de trabajo para lograr avanzar en un desarrollo cuando se

encuentra con problemas de mayor complejidad, es la descomposición modular para lo cual

existen dos principales criterios:

1. a.- Descomposición orientada a objetos: cuando nos encontramos con un caso de uso bastante

complejo y que tiene muy bien descrita las interfaces como los objetos que lo componen, resulta

medianamente fácil alcanzar una descomposición que nos permita interpretar mejor la solución

que será necesaria aplicar al caso, lo cual puede ser posteriormente representado mediante un

diagrama UML del tipo Clases, ya que podremos representar a cada clase, objeto, atributos y

relaciones entre las clases.

Características:

• La modificación de un objeto no afecta a otros.

• Fácil comprensión, por utilizar entidades del mundo real.

• Cuenta con entidades utilizables por otros sistemas, beneficiando la reutilización de

código

• Existen variados lenguajes orientados a objetos, por lo que la implementación resulta de

componentes arquitectónicos.

1. b.-Descomposición orientada a flujos de funciones: por otra parte tenemos el método también

conocido como descomposición de flujo de datos, en esencia buscamos representar la secuencia

lógica que tendrá la información a través del sistema, este enfoque actúa sobre el principio que

todo dato de entrada es procesado y transformado en un dato de salida. Este método también es

posible representarlo con diagramas UML, en este caso puede ser un diagrama a de actividad o
secuencial ya que es posible graficar cada uno de los procesos por lo que pasa el dato y las

acciones que originara su transformación.

Características:

• Se pueden reutilizar las transformaciones

• Su estructura permite que las personas piensen todo en términos de procesamiento de

entradas y resultados salidas.

• Si existen transformaciones anexas, el sistema puede evolucionar.

• Su implementación no tiene mayor complejidad.

2.- Identificar el estilo de descomposición que aplica al caso. Ejemplificar.

Tomando en consideración que los contenidos de esta semana mencionan 2 métodos de

descomposición y que se diferencian básicamente porque uno describe las clases con sus

respectivos atributos y métodos en caso que existan para interactuar entre los objetos y clases. Y

por otro el método de flujo de datos que básicamente representa la transformación de datos desde

su entrada proceso y salida.

En la descripción del desarrollo descrito estamos en la etapa de definición de categorías

(familias) que agrupara un determinado tipo de rol o personaje y que a su vez cada categoría

asignara valores a los atributos que corresponderán al personaje o rol de dicha categoría, esta

descomposición representa el método “Orientado a Objetos”. Además, cuando más adelante se

refiere a la funcionalidad que se solicita agregar al desarrollo debemos necesariamente debemos

considerar el método de flujo de datos ya que deberá recoger datos que ingresará el usuario por

pantalla y que luego al ser procesados se obtendrá un personaje asimilado a un rol o categoría y

que tendrá por defecto cierto tipo de valores asignados a cada uno de sus atributos.
3.- Diseñe una solución en base a GOF, donde el usuario pueda crear personajes y seleccionar de

su colección de personajes al inicio del juego.


En la solución para la funcionalidad que debe incorporarse utilizaremos el patrón de diseño de

software GOF, específicamente del grupo de patrones de ceración o creacionales el método

“Builder”, este nos señala por definición y cito “La representación de un objeto complejo se

separa de su construcción. Se pueden crear varias representaciones dependiendo de las

necesidades del programa.

El método Builder, permite la creación de un objeto complejo, a partir de una variedad de partes

que contribuyen individualmente a la creación y ensamblación del objeto mencionado. Por otro

lado, centraliza el proceso de creación en un único punto, de tal forma que el mismo proceso de

construcción pueda crear representaciones diferentes. Es un fiel representante del método divide

y vencerás que es un método de resolver un problema subdividiéndolo en problemas más

específicos que simplifiquen la solución a implementar.

Los componentes de este método son:


 Producto: representa el objeto complejo a construir.

 Builder: especifica una interface abstracta para la creación de las partes del Producto.

Declara las operaciones necesarias para crear las partes de un objeto concreto.

 ConcreteBuilder: implementa Builder y ensambla las partes que constituyen el objeto

complejo.

 Director: construye un objeto usando la interfaz Builder. Sólo debería ser necesario

especificar su tipo y así poder reutilizar el mismo proceso para distintos tipos.

Las ventajas de este método son:

 Permite variar la representación interna de un producto.

 El Builder ofrece una interfaz al Director para construir un producto y encapsula la

representación interna del producto y cómo se juntan sus partes.

 Si se cambia la representación interna basta con crear otro Builder que respete la interfaz.

 Separa el código de construcción del de representación.

 Las clases que definen la representación interna del producto no aparecen en la interfaz

del Builder.

 Cada ConcreteBuilder contiene el código para crear y juntar una clase específica de

producto.

 Distintos Directores pueden usar un mismo ConcreteBuilder.

 Da mayor control en el proceso de construcción.

 Permite que el Director controle la construcción de un producto paso a paso.

 Sólo cuando el producto está acabado lo recupera el director del builder.


Bibliografía

Arquitectura de Software
Fuente: Arquitectura de Software, Guía de contenidos semana 4, Modelamiento de
Soluciones de Software, Instituto Profesional IACC, 2019.
Método Builder
Fuente: http://migranitodejava.blogspot.com/2011/05/builder.html

Vous aimerez peut-être aussi