Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
TUTOR:
MOISES DE JESUS RODRIGUEZ
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
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
manejan estos sistemas, esto ha provocado que la programación vaya evolucionado a lo largo de
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
del producto.
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
tipos de calidad:
Calidad de diseño; la calidad de diseño se refiere a las características que los diseñadores
Satisfacción del usuario = producto manejable + buena calidad + entrega dentro del
presupuesto y tiempo.
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,
tipos de calidad:
Calidad de diseño; la calidad de diseño se refiere a las características que los diseñadores
presupuesto y tiempo.
También encontramos la norma ISO 25000, La calidad del producto, junto con la calidad del
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
encendido/apagado.
Ejemplo 2: Abstracción de datos “pistola” con sus atributos color, el modelo o la marca con
procedimiento como caminar hacia la pistola, llegar, levantarla, cerciorarse que este cargada,
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
analistas y todo el conjunto de desarrolladores del software compartir una misma línea de trabajo
5. Sugiera un patrón de diseño que encuentre en una categoría de objetos cotidianos (por
breve.
como la diversa carga a través de las vías que interconectan nuestras ciudades.
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
acceso de datos en un solo programa de una plataforma única. Como justificación para
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
Los sistemas operativos de propósito general son predominantemente monolíticos hoy día,
Como inconveniente, este tipo de sistemas de operativo dispone de un alto número de líneas
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
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
8. Describa en breves palabras cada uno de los cuatro elementos del modelo del diseño.
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
una descripción procedimental de los componentes del software. La información obtenida del
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.
comparaciones con la arquitectura del software. ¿En qué se parecen las disciplinas de la
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
edificio cumple con su propósito y en el que satisface las necesidades del propietario. Es la
vida” en el interior. Es los pequeños detalles: diseño de las lámparas, tipo de piso, color de las
estructuras del sistema, lo que comprende a los componentes del software, sus propiedades
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
entenderla ni apreciarla
Modelos estructurales.
similares.
Modelos Dinámicos.
Modelos de Procesos.
Se enfocan en diseño del proceso del negocio que sistema debe soportar.
Modelos funcionales.
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
especifico
Arquitectura llamada y respuesta.
donde el programa principal invoca a programas subordinados los cuales a su vez invocan a
otros.
Los componentes del sistema encapsulan datos y operaciones que deben de utilizarse para
-De composición de procesos: que define el proceso en términos del negocio y sus
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
gente.
asociación de modelos analíticos de atributos de calidad. En este sentido, los autores proponen
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
Esta se aplica cuando los datos de entrada son transformados a través de una serie de
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
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
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
como tal. Un patrón arquitectónico es más un concepto que captura elementos esenciales de una
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
Uno de los aspectos más importantes de los patrones arquitectónicos es que encarnan
problemas de rendimiento y otros pueden ser utilizados con éxito en sistemas de alta
control distinta?
Datos. ¿Cómo se comunican los datos entre los componentes? ¿El flujo de datos es continuo
El modelo de objetos.
La cola de documentos.
Se comunican mediante sub sistemas que intercambian la información de las acciones que se
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
DEFINICIÓN DECOMPONENTE
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
El software orientado a objetos se compone, como su nombre indica, de objetos. Los objetos
El estado está compuesto de datos o informaciones; serán uno o varios atributos a los que se
El comportamiento está definido por los métodos a los que responde dicho objeto, es decir,
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
conjunto de los componentes lógicos necesarios que hacen posible la realización de tareas
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
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
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
Asimismo, tampoco tiene en cuenta los factores de mercadotecnia necesarios en un mundo real,
A partir de estas ideas nace la programación orientada a componentes (POC) como una
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
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-
COHESIÓN
un parámetro: el flujo de control del modulo es lo único que une a las operaciones que lo
forman).
ACOPLAMIENTO
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
en general, este tipo de acoplamiento no es deseable porque la conexión existente entre los
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
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
arquitectura de varios niveles. Además de servidores de bases de datos, otros componentes del
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
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
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
Programa Java que responde a las solicitudes de cliente y genera respuestas dinámicamente.
EJB
Servicios Web
consumidor de recursos de aplicaciones. Puede leer más sobre servicios web más adelante en
esta información.
tado
interpretado
objeto
intermediario
interpretado
matemáticos interpretado
intermediario
interpretado
artificial interpretado
caracteres interpretado
19. Seleccione un pequeño componente codificado e ilustrado con 1) un diagrama de
estándares de codificación de audio y vídeo normalizados por el grupo MPEG (Moving Picture
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 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?
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
que esta tiene en mi futura labor como ingeniero, sobre todo si espero ser un profesional
https://www.ecured.cu/Estilos_arquitect%C3%B3nicos
https://es.wikipedia.org/wiki/Patrones_de_arquitectura
https://sistemasumma.com/2011/03/14/elementos-del-diseno/
https://es.slideshare.net/jonathanlopezmedina/estilos-arquitectnicos-22444434
https://indalics.com/consultoria-informatica-estrategia-digital/software-orientado-objetos
Wikipedia(14-may.2018).software. Recuperado de:
https://es.wikipedia.org/wiki/Software
https://docs.microsoft.com/es-es/previous-versions/office/developer/sharepoint-
2010/ee556832(v%3Doffice.14)
https://elvex.ugr.es/decsai/java/pdf/4D-cohesion.pdf
https://www.ibm.com/support/knowledgecenter/es/SSEPEK_10.0.0/intro/src/tpc/db2z_compone
ntsofwebapplications.html
https://es.ccm.net/contents/304-lenguajes-de-programacion
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