CW 301309a 474
CW 301309a 474
CW 301309a 474
TUTOR:
MOISES DE JESUS RODRIGUEZ
Proporcionar detalles sobre la arquitectura del software, las estructuras de datos, las
interfaces y los componentes necesarios para implementar el sistema.
1. Cuando se “escribe” un programa, ¿se diseña software? ¿En qué difieren el diseño de
software y la codificación?
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.
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.
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 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
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.
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?
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.
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.
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.
“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 SECUENCIAL: (un modulo contiene acciones que han de realizarse en un orden
particular sobre unos datos concretos).
ACOPLAMIENTO
Medida de la interacción de los módulos que constituyen un programa.
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).
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.
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.
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.
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
Modelo
Psicoacustico
Tabla de decisiones
Decisión SI NO
Codificador de video x
Codificador de audio x
Codificador de documentos x
Codificador de videos x
largos.
Codificador de audios x
cortos
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