0% encontró este documento útil (0 votos)
36 vistas9 páginas

2do Parcial Resuelto

Cargado por

Usiel Di Biase
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
36 vistas9 páginas

2do Parcial Resuelto

Cargado por

Usiel Di Biase
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

2do parcial resuelto

¿Qué es el diseño?
El diseño es uno de los workflows del PUD donde modelamos el sistema y encontramos su forma para que
soporte todos los requisitos, incluidos los RNF.
Es un proceso mediante el cual se aplican varias técnicas y principios con el objetivo de definir un sistema
con el suficiente nivel de detalle como para permitir su realización física. Se identifican los principales
componentes estructurales y la relación entre ellos. En este proceso de diseño una entrada muy
importante es el modelo de análisis (un modelo lógico), ya que nos proporciona una comprensión
detallada de los requerimientos, y por salida el modelo de diseño y la descripción de la arquitectura. El
diseño es una aproximación a la implementación.
El diseño nos permite:

• Adquirir una comprensión en profundidad de los aspectos relacionados a los RNF.


• Crear una a entrada y un punto de partida para las actividades de implementación.
• Ser capaces de descomponer los trabajos de implementación en partes mas pequeñas.
• Capturar las interfaces entre los subsistemas.
• Crear una abstracción sin costuras de la implementación del sistema.
Que es el diseño arquitectónico?
El diseño arquitectónico es un proceso que se interesa por entender cómo debe organizarse un
sistema y como deber diseñarse su arquitectura global, para dar respuesta a los requerimientos,
funcionales y no funcionales.
Durante este proceso se identifican los principales componentes estructurales del sistema y sus
relaciones entre ellos. Su salida es un modelo arquitectónico que describe la forma en la que se organiza el
sistema como un conjunto de componentes comunicándose entre sí.
Es muy útil pensar este proceso como una serie de decisiones que los arquitectos deben tomar en
lugar de una secuencia de actividades.
Algunas de las preguntas que deben ser respondidas son:
1. ¿Existe alguna arquitectura genérica que sirva de plantilla?
2. ¿Como se debe distribuir el sistema en nuestro hardware?
3. ¿Qué patrones o estilos arquitectónicos podemos usar?
4. ¿Cuál será el enfoque fundamental usado para estructurar el sistema?
5. ¿Como separamos los componentes en subcomponentes?
6. ¿Como vamos a controlar la operación de los componentes?
7. ¿Cuál organización arquitectónica es mejor para entregar los requerimientos no funcionales del
sistema?
8. ¿Como se evaluará el diseño arquitectónico?
9. ¿Como se documentará la arquitectura?
Etapas del diseño arquitectónico:

Determinar los requerimientos arquitectónicos:


Identificar los requerimientos arquitectónicos: se toma como entrada los requerimientos
funcionales y los requerimientos de los involucrados. Se determinan los requerimientos
arquitectónicos y se produce como salida un documento que contiene los requerimientos
arquitectónicos de la aplicación.
Priorizar los requerimientos: se determina su prioridad en alta, media y baja dependiendo de que
tan significativos para la arquitectura sean.
Diseño arquitectónico:
Elección del framework de la arquitectura: se eligen los patrones arquitectónicos que puedan
soportar nuestros requerimientos.
Distribuir componentes: se definen los componentes que comprenden el diseño de nuestra
aplicación; identificando sus interfaces, sus relaciones, sus responsabilidades y los nodos en los que
pueden ser distribuidos; con el objetivo de disminuir el acoplamiento, aumentar la cohesión, aislar las
dependencias externas, estructurar los componentes jerárquicamente y disminuir las llamadas entre ellos.
Validación: implica probar la arquitectura mediante, escenarios o prototipos con el objetivo de identificar
potenciales defectos y debilidades que pueden ser corregidos antes de llegar a la fase de implementación.
¿Qué aspectos se diseñan?
Los aspectos que se diseñan son:

• Arquitectura: Es el conjunto de decisiones significativas que tomamos para cumplir los


requerimientos. En el proceso de diseño arquitectónico tomamos el modelo de análisis proveniente
del workflow de análisis y lo planteamos sobre alguna tecnología en concreto mientras nos
aseguramos de cubrir los requerimientos no funcionales con las tecnologías elegidas. La
arquitectura está en el centro ya que el diseño está centrado en la arquitectura y los otros aspectos
son partes de esta. También es muy importante ya que afecta el rendimiento y la potencia del
sistema, así como a la capacidad de distribución y a la mantenibilidad.
• Datos: a partir de los requerimientos se definen las estructuras de datos necesarias para
implementar el software. Acá se toman decisiones respecto al volumen de datos a tratar, los tipos,
el medio para persistir los datos (Bases de datos) y la integración de estos medios de persistencia
con nuestro producto (clases a persistir).
• Procesos: transformamos los elementos estructurales de la arquitectura y los convierte en una
descripción procedimental de los componentes de software. Se diseñan aspectos como la
concurrencia, la performance, la conexión con los medios de persistencia, etc.
• Interacción H/M: es una disciplina en si misma y estudia cómo se diseñan, evalúan e implementan
los sistemas que deben interactuar con el ser humano. Va más allá del diseño de la interfaz grafica y
se tienen en cuenta aspectos como: la usabilidad, la seguridad, la funcionalidad, la experiencia de
usuario, entre otras cosas.
• Formas de E/S: define como se ingresan los datos al sistema y como se van a presentar sus salidas.
La forma de entrada depende mucho de como se van a procesar los datos (por lotes, en línea o en
tiempo real), mientras que la salida depende mucho de quien va a ser el usuario que deba
interpretarla.
• Procedimientos manuales: se diseña como se va a integrar el software que estamos diseñando con
los procesos de negocio ya existentes. También se diseñan los procedimientos de contingencia por
si el software falla y los datos deben ser registrados en papel.
Todo esto debe estar documentado en la descripción de la arquitectura.
¿Vistas de la arquitectura, que se muestra en cada una y que diagramas UML se usan para modelarlas?
Las vistas de la arquitectura propuestas por Kruchten son 4 + 1.

Vista lógica: se muestra la funcionalidad que el software puede ofrecer a los usuarios. Representa
lo que el software puede hacer, las funciones y los servicios que ofrece. Se puede representar con
diagramas de clases, de comunicación o secuencia.
Vista de despliegue: en esta vista se muestra el sistema desde la perspectiva de un programador.
Muestra como esta dividido el software en componentes y las dependencias que hay entre esos
componentes. Se pude representar mediante diagramas de componentes y de paquetes.
Vista de procesos: en esta vista se muestran los procesos que hay en el sistema y la forma en la que
se comunican. Representa el flujo de trabajo paso a paso del negocio y operaciones que conforman
el sistema. Se puede usar el diagrama de actividad.
Vista física: en esta vista se muestran desde la perspectiva del ingeniero en sistemas las partes
físicas del sistema, las conexiones o los componentes que conforman la solución. Se representa con
el diagrama de despliegue.
Vista de escenarios: esta representada por los casos de uso de software y va a tener por función
unir y relacionar a las otras 4, con lo que tendremos una trazabilidad entre componentes, clases,
equipos, paquetes, y demás. Se representa con el diagrama de casos de uso.
Explique que tipos de prototipos pueden construirse durante el desarrollo de software y que ventajas y
desventajas tiene usar prototipos.
Cuando utilizamos prototipos para evaluar las características requeridas del sistema o probar
suposiciones podemos construirlos de 4 tipos distintos:

• De interfaz de usuario: nos permiten definir pantallas.


• Funcionales: implementan algunas funcionalidades y a medida que se evalúan se refinan y
agregan mas.
• Arquitectónicos: sirven para evaluar decisiones arquitectónicas de infraestructura,
tecnología e implementación:
• De rendimiento: evalúan el rendimiento de una aplicación critica.
Los prototipos también pueden ser:

• Desechables: sirven para el análisis y validación de requisitos, y después de que se redacta


la especificación de los requerimientos se desechan.
• Evolutivos: comienzan con un sistema relativamente simple y van añadiendo
funcionalidades a medida que se descubren nuevos requerimientos. Estos culminan en el
sistema requerido.
Ventajas de usar prototipos:
✓ Nos permite examinar la viabilidad y utilidad de una aplicación.
✓ Ayuda al cliente a establecer claramente los requisitos.
✓ Su costo es bajo comparado con los beneficios que puede aportar.
Desventajas de usar prototipos:
o El cliente puede creer que es el sistema funcional y llegar a adoptarlo como producto final.

¿En qué momentos utilizaría prototipos y para que los utilizaría?


Los prototipos pueden ser sumamente útil durante la captura de requerimientos y la validación de estos,
podemos usar prototipos de interfaz de usuario para validar los requerimientos de nuestro cliente y
encontrar nuevos a medida que este explora la interfaz.
También pueden ser útiles durante el diseño arquitectónico en la actividad de validacion, usando
prototipos arquitectónicos podemos evaluar si alguna de nuestras decisiones es factible y satisface los
requerimientos RNF.
Patrones arquitectónicos, ¿que son?

Un patrón arquitectónico es una solución probada para un escenario concreto, describen como se puede organizar el
sistema y buscan dar solución a uno o varios requerimientos no funcionales. En cierto modo, captan la esencia de
una arquitectura que se usó en otros sistemas. Están asociados a buenas prácticas y su aplicación garantiza calidad.

¿En que actividad del diseño arquitectónico se aplican?

El diseño arquitectónico no tiene actividades definidas ya que es un proceso de toma de decisiones, pero podría
decirse que los patrones arquitectónicos se aplican al momento de decidir como se van a distribuir los componentes
de nuestro sistema en distintos subsistemas y nodos de hardware.

Ian Gorton propone dividir el diseño arquitectónico en una serie de actividades, y la elección de los patrones
arquitectónicos se realizaría en la actividad que el llamo “elección del framework arquitectónico”.

¿Cuáles son?

• Layered: la funcionalidad del sistema esta distribuida en capas, y cada una se apoya en
los servicios que brinda la capa inmediatamente debajo de ella y provee servicios a la
que esta inmediatamente arriba. Por lo general, la capa inferior esta relacionada con el
acceso a datos, la superior con las vistas que se presentan al usuario y las intermedias
con el procesamiento de los datos y la comunicación con sistemas externos. Vista de
módulos.

• Cliente-Servidor: la funcionalidad del sistema se organiza como un


conjunto de servidores y servicios, y clientes que los acceden y los
usan. Clientes y servidores se comunican mediante una red de
algún tipo. Permite aumentar la cohesión entre los módulos dentro
de cada servidor y disminuir el acoplamiento entre los distintos
servidores, de modo que puedan cambiarse servidores o servicios
sin que afecte otras partes del sistema. Vista de estructura estática.

• Publish-Suscribe: consiste en componentes que publican eventos


y otros que se suscriben a ellos. Cada tópico puede tener mas de
un publicante que pueden aparecer y desaparecer
dinámicamente. También los suscriptores pueden subscribirse y
des suscribirse dinámicamente a un tópico. Esto da mucha
flexibilidad frente a las configuraciones estáticas. Comunicación
asíncrona.

• Messaging: Esta arquitectura desacopla a emisores de receptores a


través de una cola, los mensajes enviados se almacenan en la cola
hasta que haya comunicación con el receptor. Esto permite la
comunicación asíncrona porque los emisores envían los mensajes a una cola sin esperar una respuesta y
favorece el bajo acoplamiento ya que no hay vinculo directo entre emisores y receptores.

• Broker: esta arquitectura se usa cuando se re requiere una


gran transformación entre los datos de origen y de destino,
el componente bróker actúa como un concentrador de
mensajes donde los remitentes y los receptores se conectan
a través de los puertos al bróker y este realiza la
transformación de los datos para permitir el entendimiento entre los otros 2 componentes.
• Process cordinator: un componente encapsula la secuencia de pasos del proceso de negocio y llama a los
servidores en el orden definido para llevar a cabo este proceso. Puede usar comunicación asíncrona o
síncrona, promueve el bajo acoplamiento y encapsula la lógica de negocio en un solo lugar.
• Model View Controller: en esta arquitectura se separan la lógica de presentación e
interacción de los datos del sistema. Consta de 3 componentes, el modelo que
maneja los datos y las operaciones relacionadas con estas, la vista que gestiona
como se presentan los datos y el controlador que dirige la interacción del usuario y
se la pasa esas interacciones entre la vista y modelo.

¿Qué es un sistema distribuido y cuáles son sus características?

Un sistema distribuido es aquel que implica numerosas computadoras, e contraste con los sistemas centralizados
donde una única computadora ejecuta todos los componentes del sistema.

Se caracteriza por:

• Compartición de recursos: permiten compartir recursos de hardware y software a través de una red.
• Apertura: se diseñan sobre protocolos estándar que combinan software y equipos de diferentes
vendedores.
• Concurrencia: varios procesos pueden estar ocurriendo al mismo tiempo sobre diferentes computadoras de
la red.
• Tolerancia a fallas: la disponibilidad de múltiples computadoras y la posibilidad de duplicar la información
permite a estos sistemas seguir funcionando incluso si ocurre una falla de software o hardware.
• Escalabilidad: los sistemas pueden crecer incrementando recursos para cubrir nuevas demandas.
Pueden escalar en 3 dimensiones:
Tamaño: debe ser posible agregar más recursos.
Distribución: dispersar los recursos sin reducir su rendimiento.
Manejabilidad: debe poder administrarse un sistema conforme aumenta su tamaño, incluso
si partes del sistema se encuentran en otra organización.
¿En qué consiste el desarrollo de software basado en componentes?

Consiste en un modelo de desarrollo evolutivo centrado en la reutilización de código de terceros. Un componente es


una pieza de código preelaborado que encapsula alguna funcionalidad expuesta a través de interfaces estándar. El
proceso comienza con la identificación de clases, algoritmos y aplicaciones que pueden ser reutilizados en otros
proyectos, estos son empaquetados para su posterior reutilización por parte de los mismos desarrolladores o de
terceros. Cuando otro proyecto identifica componentes del paquete que pueden ser aprovechados los añade al
proyecto, con esto se ahorra mucho tiempo y dinero, permitiendo invertir estos en otras partes del proyecto y así
crear proyectos más complejos. Además, tiene el plus que estos componentes empaquetados fueron probados
muchas veces, y sus errores fueron corregidos, por lo que añaden mucha calidad al proyecto.

Ventajas:

✓ Ahorro de tiempo.
✓ Ahorro de dinero.
✓ Aumento de la productividad.
✓ Aumento de la robustes y la calidad del software producido.

Desventajas:

o Los porcentajes de mejora dependen mucho de la librería elegida.


o Poco control de lo que viene empaquetado, aunque los repositorios confiables como npm solucionan
bastante este problema.
o Las vulnerabilidades creadas por un paquete mal intencionado pueden ser desastrosas y comprometer a
gravemente al sistema.

También podría gustarte