Sei sulla pagina 1di 34

UNIDAD 1 - PASO 2 - INGENIERÍA Y GESTIÓN DE REQUISITOS

DIEGO JAKOV ORJUELA MOLANO


1122129393

TUTOR:
MOISES DE JESUS RODRIGUEZ

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA VICERRECTORÍA


ACADÉMICA Y DE INVESTIGACIÓN
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
INGENIERIA DE SISTEMAS
DISEÑO DE SISTEMAS
2018
INTRODUCCIÓN

los continuos y apresurados avances que sufre en nuestro mundo actual la informática, y por

ende la tecnología, hace que constantemente se cambien las metodologías y/o paradigmas para la

realización e implementación de diversas funciones como lo son la realización de la aplicaciones

de software y SI, esto lo vemos potenciado, con el contante abaratamiento de los dispositivos,

tanto a nivel físico (hardware), y lógico (software), a un ritmo nunca antes visto, donde por

ejemplo la computadora más "anticuada" de las que tenemos en nuestros hogares, es muchas

veces más potente que las que llevo a los hombres a la luna en el apolo 11, así miso como por la

constante aparición de infraestructura, equipos y aplicativos para aprovechar las redes existentes

y para expandir nuestros amigos en esta la edad digital con la implementación de la red de redes,

si además de esto sumamos el efecto del consumismo extremo en el cual está sumergido nuestra

sociedad, esto ha hecho que la programación y sus metodológicas sean constantemente

sobrepasadas, y no puedan manejar la complejidad de los requisitos, requerimientos y demás que

manejan estos sistemas, esto ha provocado que la programación vaya evolucionado a lo largo de

la historia, cambiando sus metodologías mediante la implementación de nuevos paradigmas y

técnicas, buscando mejorar de manera considerable el proceso de la construcción del nuevo

software, siendo estos los principales retos de la ingeniería de software, estar a la vanguardia

para no dejar que los sistemas y/o invenciones la sobrepasen y sean incomprensibles para ella.
METAS

 Indagar sobre la arquitectura del software, las estructuras de datos, las interfaces y los

componentes necesarios para implementar el sistema.

 Identificar el proceso de diseño para un sistema de información o software de calidad

del producto.

 Identificar 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?

Hay muchas diferencias, esos dos componentes son etapas distintas durante el proceso de

construcción de un software o sistema de información, ya que el orden lógico de los procesos es;

primero la etapa de análisis, en la cual los analistas se sientan junto con el cliente o clientes, para

determinar qué es lo que "verdaderamente" se necesita que haga la solución a desarrollar, y como

desea el cliente que se haga este paso, con esta información este equipo luego de procesarla,

realiza el listado de requerimientos que debe tener este software, y hace una "maquetación

básica" de lo que debería hacer, es decir hace un bosquejo de lo que debe hacer el software, y

como lo debe hacer en la parte interna (invisible para el usuario), luego de esto pasa al equipo de

diseño, que busca la manera de implementar lo que el equipo de análisis hizo, mediante el

lenguaje de programación escogido para este fin, además de esto junto con lo que planteo el

cliente ellos se encargan de hacer el diseño de dicho aplicativo ( es decir, especifican como va

quedar, sí .como, .exe, que colores va allegar de fondo, donde van a quedar las diversas barras

en el aplicativo, por ejemplo la barra de herramientas, barra de estado, etc., además de esto se

encargan de hacer encajar cada una de las herramientas y/u opciones que tenga el aplicativo,

dentro del entorno a usar, una vez tenga una propuesta, esta es presentada, al cliente y con base

en los cambios y/o sugerencias que este decida, se hacen las correcciones hasta que este diseño

quede aprobado por el cliente, una vez aprobado, si pasa al equipo de desarrolladores, que son
los encargados de plasmar lo que hicieron los dos equipos anteriores al código fuente, del

lenguaje de programación seleccionado para tal fin, cuidando que todos los aspectos de los dos

pasos ates mencionados se cumplan tal como están aprobaos, y además de esto teniendo la

titánica tarea, de hacer que lo hecho en estos grupos separados se fusionen y trabajen bien en un

solo "producto", una vez codificado, se pasa a la etapa de implementación, en la cual se monta el

aplicativo desarrollado, y se le hace un seguimiento para comprobar que todo esté bien, en caso

contrario se procede a realizar los respectivos ajustes, si estos son leves, se procede a realizar el

arreglo directamente donde el cliente, si es una falla masiva, se procede a devolver a los equipos

anteriores para que analicen lo sucedido, y determinen los pasos a seguir para dar una solución

rápida y efectiva, como podemos ver esos son dos pasos muy distintos en el desarrollo de un

aplicativo

2. ¿Cómo se evalúa la calidad del diseño del software?

Cuando se examina un elemento sus características mensurables se pueden encontrar dos

tipos de calidad:

Calidad de diseño; la calidad de diseño se refiere a las características que los diseñadores

especifican para un elemento.

Calidad de concordancia; la calidad de concordancia es el grado en el que las

especificaciones de diseño se aplican durante la fabricación.

En el desarrollo de software la calidad del diseño incluye requisitos, especificaciones y el

diseño del sistema. La calidad de concordancia es un tema enfocado principalmente a la


implementación. Si el diseño y el sistema resultante satisfacen los requisitos y metas de

desempeño, la calidad de concordancia es alta. Glass (1998), argumenta que es conveniente

generar una relación más intuitiva.

Satisfacción del usuario = producto manejable + buena calidad + entrega dentro del

presupuesto y tiempo.

estos procesos se realizan mediante la estandarización de ciertas normas internaciones como

por ejemplo las ISO, IEEE, estas entidades, sacan constante normas que permiten medir ciertos

aspectos de casi cualquier cosa, en este caso específico, buscamos medir la calidad del software,

para lo cual hay varias metodologías una de ellas la RUP

Cuando se examina un elemento sus características mensurables se pueden encontrar dos

tipos de calidad:

Calidad de diseño; la calidad de diseño se refiere a las características que los diseñadores

especifican para un elemento.

Calidad de concordancia; la calidad de concordancia es el grado en el que las

especificaciones de diseño se aplican durante la fabricación.

En el desarrollo de software la calidad del diseño incluye requisitos, especificaciones y el

diseño del sistema. La calidad de concordancia es un tema enfocado principalmente a la

implementación. Si el diseño y el sistema resultante satisfacen los requisitos y metas de

desempeño, la calidad de concordancia es alta. Glass (1998), argumenta que es conveniente

generar una relación más intuitiva.


Satisfacción del usuario = producto manejable + buena calidad + entrega dentro del

presupuesto y tiempo.

También encontramos la norma ISO 25000, La calidad del producto, junto con la calidad del

proceso, es uno de los aspectos más importantes actualmente en el desarrollo de Software

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 “proyector” 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 proyector, ubicar y presionar el botón de

encendido/apagado.

Ejemplo 2: Abstracción de datos “pistola” con sus atributos color, el modelo o la marca con

su abstracción de procedimiento “Disparar” que implica una secuencia de pasos del

procedimiento como caminar hacia la pistola, llegar, levantarla, cerciorarse que este cargada,

quitar el seguro, apuntar y accionar el gatillo.

Ejemplo 3: Abstracción de datos “celular” con sus atributos color, el modelo, la marca,

características, etc. con su abstracción de procedimiento “llamar”, que implica una secuencia de

pasos del procedimiento como caminar hacia el celular, llegar, levantarlo, cerciorarse que este
desbloqueado, o desbloquearlo, seleccionar la función de llamadas, digitar el número y dar en

llamar

4. Describa con sus propias palabras la arquitectura de software.

La arquitectura de software es un conjunto de patrones que proporcionan un marco de

referencia necesario para guiar la construcción de un software, permitiendo a los programadores,

analistas y todo el conjunto de desarrolladores del software compartir una misma línea de trabajo

y cubrir todos los objetivos y restricciones de la aplicación

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 automóviles, Su objetivo principal es transportar tanto personas

como la diversa carga a través de las vías que interconectan nuestras ciudades.

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.

el concepto de portabilidad en el software, tiene que ver con que sea fácilmente

implementarse en otra plataforma, por ejemplo que sea fácilmente implementarle de Windows a

Linux,, para que esto sea posible debe tener unos ciertas características mínimas (acoplamientos

mínimos aceptables), en la cual la relación entre los diversos módulos (o componentes del

software), tengan una variabilidad mínima. Los sistemas operativos monolíticos se caracterizan

por implementar en el núcleo los cuatro componentes fundamentales del sistema operativo, que

son la planificación de procesos, la administración de la memoria principal, la administración de

ficheros y la gestión de los dispositivos de entrada/salida.

Los sistemas operativos de propósito general son predominantemente monolíticos hoy día,

algunos ejemplos son: el sistema


Sistemas operativos UNIX, tales como FreeBSD, NetBSD y OpenBSD.

Sistemas operativos GNU/Linux, y por tanto, Android también.

DOS, tales como MS-DOS y DR-DOS.

Como inconveniente, este tipo de sistemas de operativo dispone de un alto número de líneas

de código ejecutándose en modo privilegiado. Por ello, un error de programación en el núcleo

puede provocar un kernel panic. Además, el hecho de añadir nuevas funcionalidades provocaría

una nueva recompilación del núcleo llevando a reiniciar el sistema para que se apliquen los

nuevos cambios. Por ejemplo, un bug en el núcleo de un sistema operativo monolítico obliga a

tener que reiniciar el sistema. En un sistema operativo monolítico, el código del núcleo se

incluye en un único fichero binario que se carga en memoria principal en tiempo de arranque,

por tanto, si se instala una nueva imagen, es necesario reiniciar el sistema operativo para que se

inicie con la nueva versión que incluye la imagen actualizada.

Como principal ventaja, los sistemas operativos monolíticos ofrecen un alto rendimiento

puesto que las peticiones entre los diferentes componentes se reducen a invocaciones de

funciones por lo que estos son portables 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.


Diseño de datos: Transforma el modelo del dominio obtenido del análisis, en estructuras de

datos, objetos, relaciones, etc. Por ejemplo un diagrama de entidad relación.

Diseño arquitectónico: Define la relación entre los componentes más importantes del

software para lograr los requisitos del sistema. La información puede derivarse de la

especificación, del modelo de análisis y de la interacción de los subsistemas definidos.

Diseño a nivel de componentes: Transforma los elementos estructurales de la arquitectura en

una descripción procedimental de los componentes del software. La información obtenida del

diseño de datos, sirven como base.

Diseño de interface: Describe la forma de comunicación dentro del mismo sistema, con otros

sistemas y con las personas. Una interface implica flujo de información (datos o control) y

comportamiento.

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?

Cuando se piensa en la arquitectura de una construcción, llegan a la mente muchos atributos

distintos. En el nivel más sencillo, se considera la forma general de la estructura física. Pero, en

realidad, la arquitectura es mucho más que eso. Es la manera en la que los distintos componentes
del edificio se integran para formar un todo cohesivo. Es la forma en la que la construcción se

adapta a su ambiente y se integra a los demás edificios en la vecindad. Es el grado en el que el

edificio cumple con su propósito y en el que satisface las necesidades del propietario. Es la

sensación estética de la estructura —el efecto visual de la edificación— y el modo en el que se

combinan texturas, colores y materiales para crear la fachada en el exterior y el “ambiente de

vida” en el interior. Es los pequeños detalles: diseño de las lámparas, tipo de piso, color de las

cortinas… la lista es casi interminable. Y, finalmente, es arte.

La arquitectura del software de un programa o sistema de cómputo es la estructura o

estructuras del sistema, lo que comprende a los componentes del software, sus propiedades

externas visibles y las relaciones entre ellos

Las diferencias entre ambas, está en que ambas arquitecturas buscan la mejor cohesión de

cada uno de sus componentes, la principal diferencia, que la arquitectura clásica es muy

fácilmente observable, y no tiene que ser experto para poder apreciarla, mientras que la

arquitectura de software, es esencial en la realización de un programa o SI, pero no todos pueden

entenderla ni apreciarla

10. De ejemplos de:

● Arquitecturas centradas en los datos.

Modelos estructurales.

Representan la arquitectura como una colección organizada de componentes.


Modelo de Frameworks.

Identifican patrones de diseño arquitectónico repetibles que se encuentran en aplicaciones

similares.

Modelos Dinámicos.

Muestra los aspectos de comportamiento dinámico de la arquitectura indicando como la

estructura o la configuración puede cambiar en base a eventos externos.

Modelos de Procesos.

Se enfocan en diseño del proceso del negocio que sistema debe soportar.

Modelos funcionales.

Pueden utilizarse para representar la jerarquía funcional del sistema.

● Arquitecturas de flujo de datos.

- Se basa en un patrón tuberías y filtros. Este consta de un conjunto de componentes

denominados “filtros” conectados entre sí por “tuberías” que transmiten los datos desde un

componente al siguiente. Cada filtro trabaja de manera independiente de los componentes que se

encuentren situados antes o después de ella. Se diseñan de tal modo que esperan que un conjunto

de datos en un determinado formato. Y obtiene como resultado datos de salida en un formato

especifico
Arquitectura llamada y respuesta.

Permite a los diseñadores de software conseguir estructuras relativamente fáciles de

modificar y escalar. Podemos encontrar diferentes estilos dentro de este tipo.

Programa principal subprograma. Descompone las funciones en una jerarquía de control

donde el programa principal invoca a programas subordinados los cuales a su vez invocan a

otros.

Llamada a procedimiento remoto. Los componentes de la arquitectura son distribuidos entre

diferentes ordenadores de la red

o Arquitecturas orientadas a objetos

Los componentes del sistema encapsulan datos y operaciones que deben de utilizarse para

manipular dichos datos.

-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.

Se definen como un conjunto de niveles o capas cada nivel interno que se atraviesa se

aproxima más al nivel del conjunto de instrucciones maquina. Sistemas en capas puros. Cada

capa solo puede comunicarse con las vecinas. Esta solución aunque menos eficiente facilita la

portabilidad en los diseños

-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.

Arquitectura basada en atributos.

Que se establecen como una extensión de la noción de estilo arquitectónico, mediante la

asociación de modelos analíticos de atributos de calidad. En este sentido, los autores proponen

que estos estilos incluyen un razonamiento cualitativo o cuantitativo, basado en modelos

específicos de atributos de calidad.

Arquitecturas orientadas a servicios.

Una SOA es una arquitectura Es “independiente” de tecnologías. Es una arquitectura de una

aplicación donde las funcionalidades se definen como servicios independientes, con interfaces

invocables bien definidas, que pueden ser llamadas en secuencias dadas para formar procesos 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 NO jerárquicos

Arquitectura en capaz 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 software1 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)

COHESIÓ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).

COHESIÓ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 LÓGICA: (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).

COHESIÓ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 PATOLÓGICO: 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/interpre

tado

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 Lenguaje compilado

objeto

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 Cálculos matemáticos Lenguaje

matemáticos interpretado

LISP Inteligencia artificial Lenguaje

intermediario

Pascal Educación Lenguaje compilado

PHP Desarrollo de sitios web dinámicos Lenguaje

interpretado

Inteligencia Inteligencia artificial Lenguaje

artificial interpretado

Perl Procesamiento de cadenas de Lenguaje

caracteres 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 Muestras PCM Cuantificación Bitstream


Empaquetado
de audio y codificado codificado
v

Modelo
Psicoacustico

Tabla de decisiones

Decisión SI NO

Codificador de video x

Codificador de audio x

Codificador de x

documentos

Codificador de videos x

largos.

Codificador de audios x

cortos
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

Luego de haber hecho la presente actividad he podido concluir:

En la realización del presente trabajo, y la respectiva investigación para poder realizarlo,

pide adentrarme en el tema de la ingeniería de software, donde puedo observar la importancia

que esta tiene en mi futura labor como ingeniero, sobre todo si espero ser un profesional

productivo y que este a la vanguardia, generando constantemente nuevos conocimientos y

soluciones a los problemas conocidos


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/sharepoint-

2010/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_compone

ntsofwebapplications.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=11002046&

tm=1499805437434
 Lidia Fuentes, José 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

UNAD (2017). Requirements Enginnering and management. [Video file]. Recovered from:

http://hdl.handle.net/10596/12732

Potrebbero piacerti anche