Está en la página 1de 28

Universidad Politécnico Gran Colombiano

Materia Arquitectura del software

Integrantes
Restrepo Castro Jesús Alberto Código 1911980849

López Mora Kevin Leonardo Código 1821026132

Deiyiber Ducuara Montilla Código 1421029044

Oscar Andrés herrera Diaz Código 1911983765

Año 2020
Contenido
Objetivos Generales...........................................................................................................................3
Objetivos Específicos..........................................................................................................................3
Justificación........................................................................................................................................3
Arquitectura orientada a servicios:....................................................................................................3
¿Qué es la arquitectura de software?............................................................................................5
¿Por qué es importante la arquitectura de software?....................................................................6
El ciclo de desarrollo de la arquitectura.............................................................................................6
Identifique una situación problemática recurrente donde la arquitectura orientada a servicios sea
una solución adecuada (utilice el formato de patrón de arquitectura)..............................................7
Patrón de arquitectónico...............................................................................................................7
Patrón cliente-servidor...................................................................................................................7
Características generales arquitectura Cliente-Servidor................................................................8
Ventajas del esquema Cliente-Servidor..........................................................................................8
Desventajas....................................................................................................................................9
Requerimientos funcionales...............................................................................................................9
Diseño de la Arquitectura...................................................................................................................9
Validación.........................................................................................................................................12
Pruebas implementación del servicio..............................................................................................12
CONCLUSION PRIMERA FASE...........................................................................................................19
CONCLUSION SEGUNDA FASE..........................................................................................................20
GLOSARIO.........................................................................................................................................20
Referencias.......................................................................................................................................21
Objetivos Generales
Realizar un diseño arquitectónico para sistemas de calidad definiendo la arquitectura que
emplearemos en la solución de software usando patrones que garanticen la eficacia y la
integración completa del sistema desde la perspectiva del cliente final siguiendo sus lineamientos
para apoyar los diferentes procesos de construcción del sistema.

Objetivos Específicos
Desarrollar app que permita visualizar a los Pokémon y darnos información acerca de ellos, esto
como consumo de api publica, la tecnología de front usada será angular y esta app tendrá un login,
y un registro para que solo las personas registradas puedan hacer uso de nuestra app de
Pokémon.

Justificación
Debido a que el desarrollo de software requiere la estructuración ordenada de procesos, se
requiere que el ingeniero de software utilice los recursos que involucran a la arquitectura de
software para el desempeño profesional, por tal motivo el presente documento tiene el propósito
de diseño, implementación y pruebas de un servicio SOAP para una aplicación web que consuma
recursos de la API de Pokémon.

Arquitectura orientada a servicios:


La arquitectura orientada a servicios es un tipo de arquitectura que resulta de aplicar la
orientación a servicios. Los servicios representan la lógica de una actividad de negocio que tiene
un resultado específico. Se caracteriza por:

 Estar basado en el diseño de servicios que reflejan las actividades del negocio en el mundo
real, estas actividades forman parte de los procesos de negocio de la compañía.
 Representar los servicios utilizando descripciones de negocio para signarles un contexto
de negocio.
 Tener requerimientos de infraestructura específicos y únicos para este tipo de
arquitectura, en general se recomienda el uso de estándares abiertos para la
interoperabilidad y transparencia en la ubicación de servicios
 Estar implementada de acuerdo con las condiciones específicas de la arquitectura de TI en
cada compañía.
 Requerir un gobierno fuerte sobre la representación e implementación de servicios.
 Requerir un conjunto de pruebas que determinen que es un buen servicio.

En el desarrollo e implementación rigen los principios del manifiesto SOA:

 Respete la estructura social y de poder de la organización.

 Reconozca que SOA, en última instancia, exige cambios en muchos niveles.

 El alcance de la adopción de SOA puede variar. Mantenga los esfuerzos manejables


y dentro de límites significativos.

 Los productos y los estándares por sí solos no le darán SOA ni se aplicarán


el paradigma de orientación al servicio para usted.

 SOA se puede realizar a través de una variedad de tecnologías y estándares.

 Establecer un conjunto uniforme de normas y políticas empresariales basadas


sobre los estándares de la industria, de facto y de la comunidad.

 Busque la uniformidad en el exterior y permita la diversidad en el interior.

 Identificar servicios mediante la colaboración con empresas y


partes interesadas en tecnología.

 Maximice el uso del servicio considerando el actual y


alcance futuro de utilización.

 Verifique que los servicios satisfagan los requisitos y objetivos comerciales.

 Evolucionar los servicios y su organización en respuesta al uso real.

 Separe los diferentes aspectos de un sistema que cambian a diferentes ritmos.

 Reduzca las dependencias implícitas y publique todas las dependencias externas para
aumentar la solidez y reducir el impacto del cambio.

 En cada nivel de abstracción, organice cada servicio en torno a una coherencia


y unidad de funcionalidad manejable.
En su aplicación la arquitectura SOA tiene dos pasos: primero el Análisis orientado a
servicios, es la primera etapa de una iniciativa SOA y la primera fase del ciclo de prestación
de servicios. Comienza con la recopilación de la información, para cada proceso de la
empresa, que previamente se a definido junto al analista de negocio, la información se
completa en apoyo de un servicio que modela un subproceso, que da como resultado la
creación de candidatos de servicio conceptual, candidatos de capacidad de servicio y
candidatos de composición. Y segundo el diseño orientado a servicios que cuenta con
principios que se aplican sobre cada uno de los servicios modelados: contrato de servicio
estandarizado, bajo acoplamiento, reusabilidad, autonomía, sin estado, garantizar su
descubrimiento, preparado para ser usado en composiciones.

¿Qué es la arquitectura de software?

en comienzos de la informática, la programación de software se consideraba un arte y se


ejecutaba como tal debido a la dificultad y conocimiento que debía enfrentar una persona a la
hora de crear software, pero con el tiempo se han encontrado nuevas formas o métodos para
desarrollar habilidades para dicha actividad con base de las cuales se pueden resolver los
problemas.

También se ha logrado desarrollar nuevas metodologías para que ejecutar un proyecto de


software no sea tan complicado entre las cuales destacan

1. Modelo de Cascada

2. Modelo de Espiral

3. Metodología de Prototipo

4. Desarrollo Rápido de Aplicaciones (RAD)

5. Metodología de Programación Extrema (XP)

Entre otras.

Para abordar este asunto debemos definir el concepto ya que el termino de arquitectura de
software se usa para referirse a varios procesos relacionados con las TI la Arquitectura de Software

Se refiere a las "Estructuras de un sistema" que está compuesto por varios elementos con
propiedades visibles de forma externa y relaciones que existen entre ellos cuando decimos
"elementos" puede referirse a distintas entidades relacionadas con el sistema.
El elemento puede referirse a diferentes entidades que existen en tiempos de ejecución (objetos,
hilos), Entidades lógicas existen en tiempo de desarrollo (clases, componentes) y entidades físicas
(nodos, directorios). Por otro lado, las relaciones entre elementos dependen de propiedades
visibles (o públicas) de los elementos

¿Por qué es importante la arquitectura de software?

La arquitectura de software es de importancia porque de esta manera se estructura un sistema y


tiene un impacto directo sobre la capacidad ser un producto de calidad. Los atributos de calidad
son el desempeño, en tiempo de respuesta del sistema a las peticiones que se le hacen, la
usabilidad, que sería que tan sencillo es de usar para el cliente final, o bien la modificabilidad, que
es que tan simple es introducir cambios en el sistema. Los atributos de calidad son parte de los
requerimientos (no funcionales) del sistema.

Finalmente, los diseños arquitectónicos que se crean en una organización suelen ser reutilizados
para crear sistemas diferentes. Esto permite reducir costos y aumentar la calidad, sobre todo si
dichos diseños han resultado previamente en sistemas exitosos.

El ciclo de desarrollo de la arquitectura

Requerimientos, Diseño, Documentación y Evaluación.


Identifique una situación problemática recurrente donde la
arquitectura orientada a servicios sea una solución adecuada (utilice
el formato de patrón de arquitectura).

Antes de que comience un importante desarrollo de software, debemos elegir una arquitectura
adecuada que nos proporcione la funcionalidad deseada y los atributos de calidad. Por lo tanto,
debemos entender diferentes arquitecturas, antes de aplicarlas a nuestro diseño.

Patrón de arquitectónico

Un patrón arquitectónico es una solución general y reutilizable a un problema común en la


arquitectura de software dentro de un contexto dado. Los patrones arquitectónicos son similares
al patrón de diseño de software pero tienen un alcance más amplio.

 Patrón de capas
 Patrón cliente-servidor
 Patrón maestro-esclavo
 Patrón de filtro de tubería
 Patrón de intermediario
 Patrón de igual a igual
 Patrón de bus de evento
 Modelo-vista-controlador
 Patrón de pizarra
 Patrón de intérprete

Uno de los patrones que se ajusta a nuestro proyecto es cliente-servidor ya que la interacción es
con una API de Pokémon.

Patrón cliente-servidor
Este patrón consiste en dos partes; un servidor y múltiples clientes. Los clientes solicitan servicios
del servidor y el servidor proporciona servicios relevantes a esos clientes. Además, el servidor
sigue escuchando las solicitudes de los clientes.
Características generales arquitectura Cliente-Servidor

 El Cliente y el Servidor pueden actuar como una sola entidad y también pueden actuar
como entidades separadas.
 Las funciones de Cliente y Servidor pueden estar en plataformas separadas, o en la misma
plataforma.
 Cada plataforma puede ser escalable independientemente. Los cambios realizados en las
plataformas de los Clientes o de los Servidores, ya sean por actualización o por reemplazo
tecnológico, se realizan de una manera transparente para el usuario final.
 La interrelación entre el hardware y el software están basados en una infraestructura
poderosa, de tal forma que el acceso a los recursos de la red no muestra la complejidad de los
diferentes tipos de formatos de datos y de los protocolos.
 Su representación típica es un centro de trabajo (PC), en donde el usuario dispone de sus
propias aplicaciones de oficina y sus propias bases de datos, sin dependencia directa del
sistema central de información de la organización.

Ventajas del esquema Cliente-Servidor


 facilita la integración entre sistemas diferentes y comparte información, permitiendo por
ejemplo que las máquinas ya existentes puedan ser utilizadas, pero utilizando interfaces más
amigables al usuario.
 Al favorecer el uso de interfaces gráficas interactivas, los sistemas construidos bajo este
esquema tienen una mayor y más intuitiva con el usuario.
 La estructura inherentemente modular facilita además la integración de nuevas tecnologías y
el crecimiento de la infraestructura computacional, favoreciendo así la escalabilidad de las
soluciones.
 Contribuye además a proporcionar a los diferentes departamentos de una organización,
soluciones locales, pero permitiendo la integración de la información.

Desventajas

 El mantenimiento de los sistemas es más difícil pues implica la interacción de diferentes partes
de hardware y de software, distribuidas por distintos proveedores, lo cual dificulta el
diagnóstico de fallas.
 Es importante que los clientes y los servidores utilicen el mismo mecanismo (por ejemplo
sockets o RPC), lo cual implica que se deben tener mecanismos generales que existan en
diferentes plataformas.
 Hay que tener estrategias para el manejo de errores y para mantener la consistencia de los
datos.

En la API de Pokémon se tendrán en cuenta los siguientes requerimientos:

Definir los requerimientos: Involucra crear un modelo desde los requerimientos que guiarán el
diseño de la arquitectura basado en los atributos de calidad esperados

Requerimientos funcionales

 los usuarios no pueden ingresar a la aplicación sino están registrados


 el usuario requiero correo y contraseña para poder crear su login en la app
 la aplicación permite ver información de los Pokémon con imágenes
 la aplicación cuenta con experiencia de usuario

Diseño de la Arquitectura
Involucra definir la estructura y las responsabilidades de los componentes que comprenderán la
Arquitectura de Software.

Se realizan mock para dar forma y seguir construyendo el proyecto según los requerimientos del
cliente.
Validación
Significa “probar” la arquitectura, típicamente pasando a través del diseño contra los
requerimientos actuales y cualquier posible requerimiento a futuro.

Pruebas implementación del servicio

Endpoint del servicio es http://localhost:3000/usuario

Collection creada en postman para almacenar y agrupas los servicios con verbo HTTP y request y
response
Creación de usuario en servicio REST usando postman
verificación de usuarios en la base de datos
Respuesta del servicio, donde nos indica que el email debe ser único
Valida que los roles sean válidos y muestra el mensaje donde indica cuales son los roles válidos.
Estructura del proyecto...

En esta imagen mostramos la estructura del servicio el cual esta implementado con NODE JS
usando el framework Express y haciendo uso de diferentes dependencias.
En la carpeta Server se encuentra toda la configuración del servicio de la siguiente manera:
en config está configurado las conexión y variables de entorno.
en la carpeta models están configurados los Schemas para realizar las creaciones de las
Colecciones base de datos.
y por último en la carpeta routes, en la cual se configuran las rutas o (Endpoints) de nuestro
servicio.
Creación del modelo Usuario para la base de datos Mongo DB

Creación de servicio POST, para la creación del usuario.


Librerías y dependencias instaladas para poder crear el servicio

Visual Studio Code proyecto

Es importante aclarar que se utilizó esta api ya que la de Pokémon nos genero error, a
continuación se muestra cómo se consume el api

Iniciamos en la consola el proyecto


Abrimos Visual Studio Code y la carpeta del proyecto

El comando ng new no lo genera todo.

Archivo clase JSON


Se crea una carpeta para el servicio de HttpClient es decir archivo JSON

Al constructor le pasamos un variable que nos devuelve el método getjson que seria la url que
vamos enviar desde la app.coponets.ts.
otra forma de pasarle la url

Archivo app.module.js
En esta clase importamos HttpClient me genero algunos inconvenientes pero lo arregle con
HttpClientModule

Archivo app.component.ts
Importamos la clase de la carpeta json.service y en el constructor por medio del método que se
implementó getjson le pasamos la url para el httpclient y realizamos la impresión en consola.
Por medio de la consola nos imprime los resultados de la api
https://swapi.py4e.com/api/starships
Realizamos consulta de los planetas

En este punto comprobamos que el archivo json esta correcto

Ahora necesitamos pasar los datos que llegan de la api para que sean leídos en el html
app.componest.ts

Resultados en consola

También se implementa con Ajax con JSON que considero la manera mas fácil y útil como esta en
el proyecto que se adjunta

CONCLUSION PRIMERA FASE


 A través de esta primera fase pudimos concluir que en la arquitectura de software se
requiere varios métodos y tiempo para el desarrollo de una aplicación si queremos cumplir
con los objetivos propuestos.

 En este proyecto se plantea un modelo con parámetros generales de diseño los cuales
permiten agilizar la implementación de un software en corto tiempo.

 Con la innovación de las tecnologías la arquitectura de software tiene patrones simples los
cuales permiten dar soluciones a problemas en el momento que se está implementado
una aplicación.

 El diseño de la arquitectura es parte fundamental de la ingeniería de software pues tiene


como función organizar los objetos y clases que se definirían en el desarrollo.

 Los cronogramas nos permiten llevar un orden en la realización de un proyecto por tal
razón es fundamental que en la arquitectura de software contemos con este mecanismo
para llevar un control en la gestión de las actividades y entregas en tiempos reales.

CONCLUSION SEGUNDA FASE

 En esta segunda fase del proyecto dimos inicio al plan de desarrollo de nuestro servicio
enfocado en la optimización de diferentes operaciones realizadas por el aplicativo en cada
uno de sus módulos.

 Se realiza una exitosa conexión a la base de datos mediante una conexión desde el
formulario, es decir, todos los datos son enviados de forma organizada en tablas
predefinidas.

 Se realiza un diseño fresco y elegante a la vista mediante css para la fácil visualización del
formulario de parte de los futuros afiliados.

 Se realiza unas perfectas pruebas mediante post-man para la ejecución la verificación de


ejecución y conexión del formulario con la base de datos.

GLOSARIO
ARQUITECTURA DE REFERENCIA: Es una estructura que optimiza el trabajo, aumenta la
confiabilidad y proporciona una implementación efectiva da soluciones técnicas y prácticas para el
desarrollo del software.

ATRIBUTO DE CALIDAD: Características que el sistema debe poseer adicional a la funcionalidad.


(Desempeño, modificabilidad, entre otros). El diseño de la arquitectura determina el cumplimiento
y balance entre los atributos de calidad requeridos.
CCF: Sigla que designa a cada una de las Cajas de Compensación Familiar

CMIS: es un estándar abierto que permite a diferentes sistemas de gestión de contenidos


interoperar a través de Internet, por sus siglas en inglés, Content Management Interoperability
Services.

CONCURRENCIA: Es la tendencia de las cosas a producirse al mismo tiempo en un sistema.

CONTROLADOR: Es el encargado de procesar las interacciones del usuario y ejecuta los cambio en
el modelo.

DISEÑAR: analizar requerimientos, idear, planificas, implementar y modificas el desarrollo de un


software.

DRIVERS: son requerimientos en ingles que se conocen como DRIVERS DE LA ARQUITECTURA las
cuales se denominan como guías que incluyen atributos de calidad, funciones, reglas,
componentes y restricciones.

Referencias
 https://www.google.com/search?
q=que+es+la+arquitectura+del+software&oq=que+es+la+arquitectura+del+software&aqs=
chrome..69i57j0l7.7835j1j7&sourceid=chrome&ie=UTF-8
 https://sg.com.mx/revista/27/arquitectura-software

 https://www.megapractical.com/blog-de-arquitectura-soa-y-desarrollo-de-
software/metodologias-de-desarrollo-de-software

 https://www.ecured.cu/Arquitectura_Cliente_Servidor

 Humphrey, W. S. (2002). Personal Software Process (PSP). En: Encyclopedia Of Software


Engineering, Volume 2, 948-961.

 Humphrey, W. S. (2000). The Team Software Process SM (TSP SM), (November)

 PRESTASHOP (2019). Utilizado para la creacion de la plantilla de la pagina.

 https://sg.com.mx/revista/28/requerimientos-y-arquitecturaRequerimientos y
Arquitectura publicado en SG #28 ARQUITECTURA Autor Humberto Cervantes.
 http://amedrano1.blogspot.com/ 16 de Agosto del 2012 Publicado por UnKnown

 Giardine, B., Riemer, C., Hardison, R. C., Burhans, R., Elnitski, L., Shah, P., ... & Nekrutenko,
A. (2005). Galaxy: a platform for interactive large-scale genome analysis. Genome
research, 15(10), 1451-1455.

También podría gustarte