UNIDAD 1 - PASO 2 - INGENIERÍA Y GESTIÓN DE REQUISITOS
ANDRES DAVID LEÓN YOHAN STIVEN RAMOS DAVID MAURICIO ROJAS ORTIZ ANDERSON JULIAN PINILLA GOMEZ
TUTOR: MOISES DE JESUS RODRIGUEZ
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA VICERRECTORÍA ACADÉMICA Y DE INVESTIGACIÓN DISEÑO DE SISTEMAS 2018
INTRODUCCIÓN
Los continuos avances en la Informática y las Telecomunicaciones están haciendo cambiar la forma en la que se desarrollan actualmente las aplicaciones software. En particular, el incesante aumento de la potencia de los ordenadores personales, el abaratamiento de los costes del hardware y las comunicaciones, y la aparición de redes de datos de cobertura global han disparado el uso de los sistemas abiertos y distribuidos. Esto ha provocado, entre otras cosas, que los modelos de programación existentes se vean desbordados, siendo incapaces de manejar de forma natural la complejidad de los requisitos que se les exigen para ese tipo de sistemas. Comienzan a aparecer por tanto nuevos paradigmas de programación, como pueden ser la coordinación, la programación orientada a componentes, o la movilidad, que persiguen una mejora en los procesos de construcción de aplicaciones software. En ellos se trabaja tanto en extensiones de los modelos existentes como en nuevos modelos, en la estandarización de sus interfaces y servicios, y la pertinaz búsqueda del cada vez m ́ as necesario mercado global de componentes software. Estos son parte de los nuevos retos con los que se enfrenta actualmente la ingeniería del software.
METAS
Proporcionar detalles sobre la arquitectura del software, las estructuras de datos, las interfaces y los componentes necesarios para implementar el sistema.
Desarrollar el diseño para un sistema de información o software de calidad del producto. Identifique las diferentes representaciones de un software tomando como características de resistencia, funcionalidad y belleza.
SOLUCIÓN DE PUNTOS PROPUESTOS
1. Cuando se “escribe” un programa, ¿se diseña software? ¿En qué difieren el diseño de software y la codificación? EL diseño es lo que la gran mayoría de ingenieros se propone realizar; es el lugar de la creatividad, los requerimientos de los participantes, Las necesidades de la compañía y las consideraciones técnicas, todo esto se une para formular un producto o sistema. Esto es desarrollado gracias a los ingenieros de software. En su defecto la codificación hace referencia al proceso de sistematización y estructuración de datos, signos e información que inicia estableciendo una serie de normas y criterios de este modo permite la formulación y comprensión de mensajes.
2. ¿Cómo se evalúa la calidad del diseño del software? La calidad del software es el conjunto de cualidades que lo caracterizan y que determinan su utilidad y existencia; grado con el que un sistema, proceso que cumple los requisitos funcionales y las necesidades del usuario; al no ser físico el software su medición se hace compleja, es difícil medir su función por lo tanto los procesos para manejar y supervisar. por esto encontramos aspectos o propiedades para evaluarlo como ciertas propiedades de calidad, características operativas, la capacidad que tenga para soportar cambios y la adaptabilidad a nuevos entornos.
3. Dé ejemplos de tres abstracciones de datos y de las abstracciones de procedimiento que se usan para manipularlas.
Ejemplo 1: Abstracción de datos “Televisor” con sus atributos selector de cambios, video, audio con su abstracción de procedimiento “Encender” que implica una secuencia de pasos del procedimiento como caminar hacia el televisor, llegar y presionar el botón de encendido/apagado.
Ejemplo 2: Abstracción de datos “Coche” con sus atributos color, el modelo o la marca con su abstracción de procedimiento “Ponerse en marcha” que implica una secuencia de pasos del procedimiento como caminar hacia el coche, llegar, pisar el freno para asegurar el vehículo, pisar el clutch para preparar el carro para recibir primer cambio en la palanca, asegurarse de que la palanca esté en neutra, encender el motor y quitar el freno de mano o de emergencias.
Ejemplo 3: Abstracción de datos “Puerta” con sus atributos tipo, dirección del abatimiento, mecanismo de apertura, peso dimensiones, etc con su abstracción de procedimiento “Abrir” que implica una secuencia larga de pasos del procedimiento como caminar hacia la puerta, llegar y tomar el picaporte, girar éste y jalar la puerta, retroceder para que la puerta se abra, etc.
4. Describa con sus propias palabras la arquitectura de software. Es la estructura de un programa, un conjunto organizado de componentes de este mismo. la forma en la que éstos interactúan y la estructura de datos que utilizan. permite que el ingeniero de software resuelva problemas de diseño comunes.
5. Sugiera un patrón de diseño que encuentre en una categoría de objetos cotidianos (por ejemplo, electrónica de consumo, automóviles, aparatos, etc.). Describa el patrón en forma breve. Sugiero el patrón de diseño fabrica abstracta, Su objetivo principal es soportar múltiples estándares que viene definidos por las diferentes jerarquías de herencia de objetos. con este patrón se pueden crear diferentes familias de objetos. Además de estar orientado a combinar productos.
6. ¿Cuándo debe implementarse un diseño modular como software monolítico? ¿Cómo se logra esto? ¿El rendimiento es la única justificación para la implementación de software monolítico?
Se debe implementar un diseño modular como software monolítico cuando una aplicación se diseña para realizar una sola función, que sea autónoma, independiente de otras aplicaciones computacionales. Se logra combinando la interfaz de usuario, la verificación, lógica de negocio y acceso de datos en un solo programa de una plataforma única. Como justificación para implementar software monolítico además del rendimiento es lo fácil de desarrollar y que es eficiente, ya que se producen pocos cambios en el contexto.
7. ¿Cómo se relacionan los conceptos de acoplamiento y portabilidad del software? Dé ejemplos que apoyen su punto de vista. Para que el software sea portable es decir que el sistema sea fácil de implementar, cuando pasa de una plataforma a otra; tiene que tener un acoplamiento mínimo aceptable donde la relación entre módulos sea mínima. Ejemplos: un sistema operativo como Linux que tiene bajo acoplamiento al ser un sistema monolítico por lo que es portable al poderse instalar en una computadora de cualquier marca. Otro ejemplo es el navegador google chrome, que se puede ejecutar en cualquier dispositivo con acceso a internet.
8. Describa en breves palabras cada uno de los cuatro elementos del modelo del diseño. Diseño de datos, Diseño arquitectónico, Diseño de interfaces, Diseño a nivel de componente. El diseño de datos se encarga de modelar las estructuras de datos que se necesitan para dar soporte al software. Propiamente se creen las bases de datos y las relaciones entre las tablas. En esta sección se hace uso de los diagramas de entidad to relación y del diccionario de datos. El diseño arquitectónico tiene su origen en las especificaciones y requerimientos obtenidos en el análisis, se trata de organizar las funciones que el sistema debe incorporar para cumplir con los requisitos que se han solicitado, asimismo debe mostrar las relaciones entre el sistema, los subsistemas y las interacciones con otros sistemas.
El diseño de la interfaz describe la forma como el sistema interactuar con el usuario más que la apariencia del sistema. El diseño a nivel de componente es una descripción procedimental de cada una de las partes que fueron especificadas en el diseño arquitectónico. La importancia de esta fase en el proceso de desarrollo se debe a que está en fase puede modelar producto de calidad
9. Con el uso de la arquitectura de una casa o edificio como metáfora, establezca comparaciones con la arquitectura del software. ¿En qué se parecen las disciplinas de la arquitectura clásica y la del software? ¿En qué difieren? En que podemos relacionar con la arquitectura de una casa con la arquitectura de software una forma de verlo es que al momento de realizar una casa o edificio se tiene en cuenta la realización de unos planos que se asemejan mucho al plano de un edificio donde se muestra la estructura del software algo así como la estructura del edificio, también el funcionamiento y la interacción de las partes.
10. De ejemplos de: ● Arquitecturas centradas en los datos. -repositorio pasivo -repositorio activo -frameworks dinámicos -partes dinámicas funcionales
● Arquitecturas de flujo de datos. -cada filtro trabaja de manera independiente de los componentes que se encuentran situados en ellas o antes o después de ellas. -obtiene como resultado datos de salida en un formato especifico.
o
Arquitecturas orientadas a objetos
-Aplicaciones básicas: sistemas desarrollados bajo cualquier estructura o geográficamente dispersos y bajo cualquier figura de propiedad - De exposición de funcionalidades: donde las funcionalidades de la capa explicativa son expuestas en forma de servicios (generalmente como servicios web). -De integración de servicios: facilitan el intercambio de datos entre elementos de la capa aplicativa orientada a procesos empresariales internos o colaboración -De composición de procesos: que define el proceso en términos del negocio y sus necesidades y que varían en la función del negocio. - De entrega: donde los servicios son desplegados a los usuarios finales.
o
Arquitecturas en capas.
-aplicaciones de línea de negocios como (LOB) como contabilidad y sistemas de gestión de gente. -aplicaciones web corporativas y sitios web -aplicaciones corporativas de escritorio o de clientes inteligentes con servidores centralizados de aplicación con lógica de negocios.
11. Algunos de los estilos arquitectónicos citados en la pregunta 10, tienen naturaleza jerárquica, mientras que otros no. Elabore una lista de cada tipo. ¿Cómo se implementarían los estilos arquitectónicos que no son jerárquicos? Naturaleza jerárquica Arquitectura en capaz
NO jerárquicos arquitectura de flujo de datos
Arquitectura orientada a objetos Arquitectura centrada en los datos
Esta se aplica cuando los datos de entrada son transformados a través de una serie de componentes computacionales o manipulativos en los datos de salida
12. . Los términos estilo arquitectónico, patrón arquitectónico surgen con frecuencia en los análisis de la arquitectura del software. Investigue y describa en qué difiere cada uno de ellos de los demás. Los estilos arquitectónicos Cada estilo arquitectónico describe una categoría del sistema que contiene: un conjunto de componentes, que realiza una función requerida por el sistema, un conjunto de conectores que posibilitan la comunicación, la coordinación y la cooperación entre los componentes; restricciones que definen como se puede integrar los componentes que forman el sistema; y modelos semánticos que permiten al diseñador entender las propiedades globales de un sistema para analizar las propiedades conocidas de sus partes constituyentes. Los patrones arquitectónicos, o patrones de arquitectura, también llamados arquetipos ofrecen soluciones a problemas de arquitectura de software en ingeniería de software. Dan una descripción de los elementos y el tipo de relación que tienen junto con un conjunto de restricciones sobre cómo pueden ser usados. Un patrón arquitectónico expresa un esquema de organización estructural esencial para un sistema de software, que consta de subsistemas, sus responsabilidades e interrelaciones. En comparación con los patrones de diseño, los patrones arquitectónicos tienen un nivel de abstracción mayor. Aunque un patrón arquitectónico comunica una imagen de un sistema, no es una arquitectura como tal. Un patrón arquitectónico es más un concepto que captura elementos esenciales de una arquitectura de software. Muchas arquitecturas diferentes pueden implementar el mismo patrón y por lo tanto compartir las mismas características. Además, los patrones son a menudo definidos como una cosa estrictamente descrita y comúnmente disponible. Por ejemplo, la arquitectura en capas es un estilo de llamamiento-y-regreso, cuando define uno un estilo general para interaccionar. Cuando esto es descrito estrictamente y comúnmente disponible, es un patrón. Uno de los aspectos más importantes de los patrones arquitectónicos es que encarnan diferentes atributos de calidad. Por ejemplo, algunos patrones representan soluciones a problemas de rendimiento y otros pueden ser utilizados con éxito en sistemas de alta disponibilidad. A primeros de la fase de diseño, un arquitecto de software escoge qué patrones arquitectónicos mejor ofrecen las calidades deseadas para el sistema.
13. Seleccione una aplicación con la que esté familiarizado. Responda:
Control. ¿Cómo se administra el control dentro de la arquitectura? ¿Existe una jerarquía de control distinta?
Datos. ¿Cómo se comunican los datos entre los componentes? ¿El flujo de datos es continuo o los objetos de datos pasan al sistema en forma esporádica? Servicios de automatización de Word es una aplicación de servicio de SharePoint Server 2010 que tiene tres componentes de arquitectura únicos:
El modelo de objetos.
La cola de documentos.
El motor de Servicios de automatización de Word.
No existe una jerarquía de control distinta. Se comunican mediante sub sistemas que intercambian la información de las acciones que se quieren realizar y el flujo de datos es continuo.
14. En ocasiones resulta difícil definir el término componente. Primero dé una definición general y luego otras más explícitas para el software orientado a objetos y para el tradicional. Por último, elija tres lenguajes de programación con los que esté familiarizado e ilustre la manera en la que cada uno define un componente.
DEFINICIÓN DECOMPONENTE Componente es aquello que forma parte de la composición de un todo. Se trata de elementos que, a través de algún tipo de asociación o contigüidad, dan lugar a un conjunto uniforme. Por ejemplo: “Un pequeño motor, un reloj y un mecanismo electrónico son los componentes de este
aparato”. El software orientado a objetos se compone, como su nombre indica, de objetos. Los objetos son entidades que tienen un determinado estado, comportamiento (métodos) e identidad: El estado está compuesto de datos o informaciones; serán uno o varios atributos a los que se habrán asignado unos valores concretos (datos).
El comportamiento está definido por los métodos a los que responde dicho objeto, es decir, qué operaciones puede realizar. La identidad es una propiedad de un objeto que lo diferencia del resto; incluso de los de su misma clase. Un objeto contiene toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de mecanismos de interacción llamados métodos, que favorecen la comunicación entre ellos. Esta comunicación favorece a su vez el cambio de estado en los propios objetos. Esta característica lleva a tratarlos como unidades indivisibles, en las que no se separa el estado y el comportamiento. Se conoce como softwar e1 al soporte lógico de un sistema informático, que comprende el conjunto de los componentes lógicos necesarios que hacen posible la realización de tareas específicas, en contraposición a los componentes físicos que son llamados hardware. La interacción entre el software y el hardware hace operativo un ordenador (u otro dispositivo), es decir, el Software envía instrucciones que el Hardware ejecuta, haciendo posible su funcionamiento. Los componentes lógicos incluyen, entre muchos otros, las aplicaciones informáticas, tales como el procesador de texto, que permite al usuario realizar todas las tareas concernientes a la edición de textos; el llamado software de sistema, tal como el sistema operativo, que básicamente permite al resto de los programas funcionar adecuadamente, facilitando también la interacción entre los componentes físicos y el resto de las aplicaciones, y proporcionando una interfaz con el usuario.
15. ¿Por qué los componentes de control en el software tradicional son necesarios y por qué generalmente no se requieren en el orientado a objetos? El tratamiento de estas situaciones es lo que ha hecho ver la necesidad de nuevos modelos, pues la programación tradicional se ha visto incapaz de tratarlos de una forma natural. Así, la Programación Orientada a Objetos (POO) ha sido el sustento de la ingeniería del software para los sistemas cerrados. Sin embargo, se ha mostrado insuficiente al tratar de aplicar sus técnicas
para el desarrollo de aplicaciones en entornos abiertos. En particular, se ha observado que no permite expresar claramente la distinción entre los aspectos computacionales y meramente composicionales de la aplicación, y que hace prevalecer la visión de objeto sobre la de componente, estos últimos como unidades de composición independientes de las aplicaciones. Asimismo, tampoco tiene en cuenta los factores de mercadotecnia necesarios en un mundo real, como la distribución, adquisición e incorporación de componentes a los sistemas. A partir de estas ideas nace la programación orientada a componentes (POC) como una extensión natural de la orientación a objetos para los entornos abiertos [Nierstrasz, 1995][Szyperski y Pfister, 1997]. Este paradigma propugna el desarrollo y utilización de componentes reutilizables dentro de lo que sería un mercado global de software. Sin embargo, disponer de componentes no es suficiente tampoco, a menos que seamos capaces de reutilizarlos. Y reutilizar un componente no significa usarlo m ́as de una vez, sino que implica la capacidad del componente de ser utilizado en contextos distintos a aquellos para los que fue diseñado. En este sentido, uno de los sueños que siempre ha tenido la ingeniería del software es el de contar con un mercado global componentes, al igual que ocurre con otras ingenierías, o incluso con el hardware. De hecho, la analogía con los circuitos integrados (IC) llegó a poner de moda los términos software IC, software bus y software backplane, aunque nunca se haya podido llegar m ́as allá de la definición de estos conceptos. Para hablar de la existencia de un mercado de componentes software es necesario que los componentes estén empaquetados de forma que permitan su distribución y composición con otros componentes, especialmente con aquellos desarrollados por terceras partes. Esto nos lleva a la definición de componente:
“Un componente es una unidad de composición de aplicaciones software, que posee un con junto de interfaces y un conjunto de requisitos, y que ha de poder ser desarrollado, adquirido, incorporado al sistema y compuesto con otros componentes de forma independiente, en tiempo y espacio” [Szyperski, 1998].
16. Investigar los tipos de cohesión y tipos de acoplamiento. COHESIÓN Medida del grado de identificación de un modulo con una función concreta. Cohesión aceptable (fuerte)
COHESIO ́ N FUNCIONAL: (un modulo realiza una única acción). COHESI N SECUENCIAL: (un modulo contiene acciones que han de realizarse en un orden particular sobre unos datos concretos). COHESI N DE COMUNICACI N: (un modulo contiene un conjunto de operaciones que se realizan sobre los mismos datos). COHESIO ́ N TEMPORAL: (las operaciones se incluyen en un modulo porque han de realizarse al mismo tiempo; p.ej. inicialización). Cohesión inaceptable (débil)
COHESI N PROCEDURAL: (un modulo contiene operaciones que se realizan en un orden concreto aunque sean independientes). COHESI N LGICA: (cuando un modulo contiene operaciones cuya ejecución depende de un parámetro: el flujo de control del modulo es lo único que une a las operaciones que lo forman). COHESIO ́ N COINCIDENTAL: (cuando las operaciones de un modulo no guardan ninguna relación observable entre ellas).
ACOPLAMIENTO Medida de la interacción de los módulos que constituyen un programa.
Niveles de acoplamiento (de mejor a peor):
ACOPLAMIENTO DE DATOS: (acoplamiento normal): Todo lo que comparten dos módulos se especifica en la lista de parámetros del módulo invocado. ACOPLAMIENTO DE CONTROL: Cuando un módulo pasa datos que le indican a otro qué hacer (el primer módulo tiene que conocer detalles internos del segundo). ACOPLAMIENTO EXTERNO: Cuando dos módulos utilizan los mismos datos globales o dispositivos de E/S (p.ej. ficheros). Si los datos son de sólo lectura, el acoplamiento se puede considerar aceptable. No obstante, en general, este tipo de acoplamiento no es deseable porque la conexión existente entre los módulos no es visible (de forma explícita). ACOPLAMIENTO PATOLGICO: Cuando un módulo utiliza el código de otro o altera sus
datos locales (“acoplamiento de contenido”). Los lenguajes estructurados incluyen reglas para el ámbito de las variables que impiden este tipo de acoplamiento. Los lenguajes orientados a objetos incluyen modificadores de visibilidad para evitar este tipo de acoplamiento.
17. ¿Qué es un componente de la aplicación web? Todas las aplicaciones de base de datos basadas en la web tienen tres componentes primarios: un navegador web (o cliente), un servidor de aplicaciones web y un servidor de bases de datos. Las aplicaciones de base de datos basadas en la web se basan en un servidor de bases de datos, que proporciona los datos para la aplicación. El servidor de bases de datos a veces también proporciona lógica empresarial en forma de procedimientos almacenados. Los procedimientos almacenados pueden proporcionar ventajas de rendimiento significativas, en especial en una arquitectura de varios niveles. Además de servidores de bases de datos, otros componentes del sistema de información empresarial incluyen bases de datos de IMS, mensajes de WebSphere
MQ y registros de CICS. Los clientes manejan la lógica de presentación, que controla el modo en que los usuarios interactúan con la aplicación. En algunos casos, el cliente valida la entrada proporcionada por el usuario. Las aplicaciones web a veces integran applets Java en la lógica del cliente para mejorar el nivel de presentación.
Applet Programa Java que forma parte de una página HMTL (Hypertext Markup Language). ( HTML es el método estándar para presentar datos web a los usuarios.) Los applets funcionan con navegadores habilitados para Java como, por ejemplo, Microsoft Internet Explorer; se cargan cuando se procesa la página HTML. Los servidores de aplicaciones web gestionan la lógica empresarial. La lógica empresarial, generalmente escrita en Java, da soporte a aplicaciones de varios niveles. El servidor de aplicaciones web puede gestionar peticiones de varios clientes remotos. El nivel de aplicación web puede incluir archivos JSP (JavaServer Pages), servlets Java, componentes de Enterprise JavaBeans (EJB) o servicios web.
JSP Tecnología que proporciona un modo coherente para ampliar la funcionalidad del servidor web y crear contenido web dinámico. Las aplicaciones web que se desarrollan con tecnología JSP son independientes del servidor y la plataforma.
Servlet Programa Java que responde a las solicitudes de cliente y genera respuestas dinámicamente.
EJB Arquitectura de componentes para crear aplicaciones distribuidas con el modelo de programación de Java. Los componentes de transacciones de servidor se pueden volver a utilizar y proporcionan portabilidad entre servidores de aplicaciones.
Servicios Web Aplicaciones modulares independientes que proporcionan una interfaz entre el proveedor y el consumidor de recursos de aplicaciones. Puede leer más sobre servicios web más adelante en esta información.
18. Todos los lenguajes de programación modernos implementan construcciones de programación estructurada. Dar ejemplos de tres lenguajes de programación.
Lenguaje
Principal área de aplicación
Compilado/interpretado
ADA
Tiempo real
Lenguaje compilado
BASIC
Programación para fines educativos
Lenguaje interpretado
C
Programación de sistema
Lenguaje compilado
C++
Programación de sistema orientado a objeto Lenguaje compilado
Cobol
Administración
Lenguaje compilado
Fortran
Cálculo
Lenguaje compilado
Java
Programación orientada a Internet
Lenguaje intermediario
MATLAB
Cálculos matemáticos
Lenguaje interpretado
Cálculos matemáticos Cálculos matemáticos
Lenguaje interpretado
LISP
Inteligencia artificial
Lenguaje intermediario
Pascal
Educación
Lenguaje compilado
PHP
Desarrollo de sitios web dinámicos
Lenguaje interpretado
Inteligencia artificial
Inteligencia artificial
Lenguaje interpretado
Perl
Procesamiento de cadenas de caracteres
Lenguaje interpretado
19.
Seleccione un pequeño componente codificado e ilustrado con 1) un diagrama de actividad, 2) un diagrama de flujo, 3) una tabla de decisiones y 4) LDP.
Codificador de video: La codificación de video sirve para convertir señales de video analógico a señales de video digital. La mayoría de codificadores comprimen la información para que pueda ser almacenada o transmitida ocupando el mínimo espacio posible.
Codificador MPEG Moving Picture Experts Group: es el nombre de un grupo de estándares de codificación de audio y vídeo normalizados por el grupo MPEG (Moving Picture Experts Group). MPEG-1 vídeo se utiliza en el formato Video CD.
Diagrama de Actividades
Codificador MPGE
Encender el equipo
Instalar el formato MPEG si no lo tiene.
Seleccionar el archivo del video o audio.
Reproducción del video o audio.
Diagrama de flujo
Entrada v
Muestras PCM de audio
Cuantificación codificado
Bitstream codificado
Empaquetado
Modelo Psicoacustico
Tabla de decisiones Decisión
SI
Codificador de video
x
Codificador de audio
x
NO
Codificador de documentos Codificador de videos largos. Codificador de audios cortos
x x x
20. ¿Por qué es importante la "subdivisión" en el proceso de revisión de diseño a nivel de componente?
Estas subdivisiones, buscando una analogía con la programación informática, como subrutinas encadenadas de las que se sale cuando todas las partes de un componente están resueltas (segundo nivel) y cuando todos los componentes de un subsistema se han proyectado (en el primer nivel). Cada uno de estos niveles comprende un conjunto de actividades encaminado a resolver problemas cada vez más específicos a medida que desciende el nivel.
CONCLUSIONES
Esta actividad fue de gran importancia para enriquecer nuestros conocimientos, ya se pudimos adquirir investigar y dar respuestas a preguntas relacionadas con la parte de sistemas, y nos lleva a conocer temas en los cuales escaseaba el conocimiento, este aprendizaje nos ayudara en nuestra carrera y en la vida laboral.
BIBLIOGRAFIA
Ecured.(2018).estilos arquitectónicos. Recuperado de: https://www.ecured.cu/Estilos_arquitect%C3%B3nicos
Wikipedia.(12-sep-2018). Patrones de arquitectura. Recuperado de: https://es.wikipedia.org/wiki/Patrones_de_arquitectura
Sistemas umma. (2011). elementos de diseño. Recuperado de: https://sistemasumma.com/2011/03/14/elementos-del-diseno/
MEDINA,J.(2013).estilos arquitectónicos.SlideShare.Recuperado de: https://es.slideshare.net/jonathanlopezmedina/estilos-arquitectnicos-22444434
Julián Pérez Porto y Ana Gardey. Publicado: 2010. Actualizado: 2013. Definiciones: Definición de componentes. Recuperado de https://definicion.de/componentes/
Torre,P.(2018).El paradigma del software orientado a objetos.indalics Recuperado de: https://indalics.com/consultoria-informatica-estrategia-digital/software-orientado-objetos
Wikipedia(14-may.2018).software. Recuperado de: https://es.wikipedia.org/wiki/Software
Microsoft.(2014).arquitectura de Word automation services.Recuperado de: https://docs.microsoft.com/es-es/previous-versions/office/developer/sharepoint2010/ee556832(v%3Doffice.14)
© Fernando Berzal, Recuperado de: https://elvex.ugr.es/decsai/java/pdf/4D-cohesion.pdf
IBM® IBM KNOWLEDGE CENTER. Componentes de aplicaciones basadas en la web. https://www.ibm.com/support/knowledgecenter/es/SSEPEK_10.0.0/intro/src/tpc/db2z_co mponentsofwebapplications.html
IsraelCCM. (27 de marzo de 2017) https://es.ccm.net/contents/304-lenguajes-de-programacion
Sols Rodriguez – Candela, A. (2014). Systems engineering: theory and practice. Pontifical Comillas University Recuperado de: http://bibliotecavirtual.unad.edu.co:2077/lib/unadsp/reader.action?ppg=136&docID=110 02046&tm=1499805437434
Lidia Fuentes, Jos ́e M. Troya y Antonio Vallecillo Dept. Lenguajes y Ciencias de la Computaci ́on. Universidad de M ́alaga. ETSI Inform ́atica. Campus Teatinos, s/n. 29071 M ́alaga, Spain. http://www.lcc.uma.es/~av/Docencia/Doctorado/tema1.pdf