Está en la página 1de 9

FORMATO PARA PRACTICAS DE LABORATORIO

PROCESO: GESTIÓN DE RECURSOS, INFRAESTRUCTURA Y


LABORATORIOS

LA-FM-007 Versión: 4 Fecha: 15/07/2020 Página 1 de 9

INFORMACIÓN BÁSICA
PRÁCTICA No.: 03
NOMBRE DE LA PRÁCTICA:
PATRONES DE CONCURRENCIA
ASIGNATURA: TALLER DE PROGRAMACION

TEMA DE LA PRÁCTICA:
Patrones de Diseño de Concurrencia – Hilos

LABORATORIO A UTILIZAR: Asistido por computador / Laboratorio de Informática


TIEMPO: 2 (horas) : TRABAJO GRUPAL: TRABAJO INDIVIDUAL:
x
CONTENIDO DE LA GUÍA
(Para elaborar por el Docente)
COMPETENCIAS DISCIPLINARES.
Aplica correctamente los patrones de concurrencia en un contexto dado
COMPETENCIAS INVESTIGATIVAS.
- Consulta bibliográfica en bases de datos digitales.
- Elaboración de un estado del arte acerca del proyecto de investigación.
- Búsqueda de información sobre novedades en programación.

MARCO TEORICO.

Cuando se habla de un Patrón de Software se define según [ CITATION Pre10 \l 9226 ]


como: “Una regla de tres partes que expresa una relación entre cierto contexto, un problema y
una solución” Partiendo de ese concepto se propone tratar patrones relacionados con el tema
de concurrencia: por ejemplo el Patrón Thread Pool que permite solucionar problemas de
concurrencia a la hora de ejecutar procesos dentro de un computador.

Cuando se trata de Patrones de Diseño de software un libro guía es “Design Patterns:


Elements of Reusable Object-Oriented Software1”[ CITATION Eri94 \l 9226 ] sus autores
son conocidos como la pandilla de los cuatro, y aunque es un texto clásico es considerado un
referente en este tema, en este libro se clasifican los patrones en:
1. Patrones Creacionales, son los utilizados para crear instancias de clases en tiempo

1
Material del libro disponible en Internet es < http://wiki.c2.com/?DesignPatternsBook >
FORMATO PARA PRACTICAS DE LABORATORIO

PROCESO: GESTIÓN DE RECURSOS, INFRAESTRUCTURA Y


LABORATORIOS

LA-FM-007 Versión: 4 Fecha: 15/07/2020 Página 2 de 9

de ejecución cuando así se requiere. Por ejemplo: el patrón Abstract Factory (Fabrica
abstracta).
2. Patrones Estructurales: Que definen la estructura del proyecto por ejemplo el
patrón Facade (Fachada) propone que exista una clase que reciba peticiones de
servicio y delegue responsabilidades a las otras clases.

Otro patrón muy conocido que define la estructura de la aplicación es el patrón


(MVC): Model (clases del modelo del mundo), View (Clases que manejan la vista o
interfaz), Controller (clases del controlador o manipulación de datos.).

3. Patrones de Comportamiento: que facilitan la implementación de comportamientos


específicos que se desean simular en nuestras aplicaciones por ejemplo el patrón
Command (Comando) que facilita el hecho de encapsular en comandos los métodos
que se pueden ejecutar, deshacer o rehacer; por ejemplo, cuando se desarrolla un
editor de texto similar a Word.

Sin embargo, no es esta la única clasificación disponible existe por ejemplo otra clase llamada
Patrones de Diseño de Concurrencia [ CITATION Mic20 \l 9226 ] estos patrones nos
ayudan a crear y mejorar una interfaz entre objetos, sincronizar la memoria compartida entre
hilos, hacer que los datos sean seguros, monitorear el progreso y administrar hilos y eventos.

Muchas aplicaciones de servidor, como servidores web, servidores de bases de datos,


servidores de archivos o servidores de correo, están orientadas a procesar una gran cantidad de
tareas cortas que llegan de alguna fuente remota. Una solicitud llega al servidor de alguna
manera, que podría ser a través de un protocolo de red (como HTTP, FTP o POP), a través de
una cola JMS, o tal vez sondeando una base de datos. Independientemente de cómo llegue la
solicitud, a menudo sucede en aplicaciones de servidor que el procesamiento de cada tarea
individual es de corta duración y el número de solicitudes es grande.[ CITATION IBM02 \l 9226
].

Un modelo simplista para crear una aplicación de servidor sería crear un nuevo hilo cada vez
que llega una solicitud y atender la solicitud en el nuevo hilo. Sin embargo, existe el problema de
la sobrecarga de: crear y destruir subprocesos, los subprocesos activos consumen recursos del
FORMATO PARA PRACTICAS DE LABORATORIO

PROCESO: GESTIÓN DE RECURSOS, INFRAESTRUCTURA Y


LABORATORIOS

LA-FM-007 Versión: 4 Fecha: 15/07/2020 Página 3 de 9

sistema. Crear demasiados subprocesos en una JVM puede hacer que el sistema se quede sin
memoria o se bloquee debido al consumo excesivo de memoria. Para evitar la pérdida de
recursos, las aplicaciones del servidor necesitan algunos medios para limitar cuántas solicitudes
se procesan en un momento dado.

CONSULTA PREVIA.
1. Defina el concepto de patrón de software

Los patrones de software son maneras de resolver problemas que se presentan comúnmente
en el desarrollo de software, estas soluciones son generales y reutilizables a diferentes
problemas, proporcionan soluciones apropiadas a dificultades a las que se han enfrentado
desarrolladores a lo largo del tiempo.

2. Explique con sus propias palabras en qué consiste el principio de alta cohesión y bajo
acoplamiento.

En primera medida hablamos de cohesión, cuando una clase o componente realiza


únicamente la tarea para la cual fue diseñada y hablamos de acoplamiento a la medida en la
cual un componente o clase depende de otro, en esto se base el principio de alta cohesión y
bajo acoplamiento, es decir, tener un alto nivel de coherencia en la creación e
implementación de las clases y un bajo nivel de dependencia entre estas.

3. Enuncie las características de debe cumplir todo buen componente reusable. Se le


recomienda realizar la lectura del artículo “Principios SOLID”. disponible en Internet desde:
<https://apiumhub.com/es/tech-blog-barcelona/principios-solid/> [Consultado: 19/07/2020]

Completamente documentado.
Probado a fondo
Debe ser robusto, comprobando la validez de las entradas.
Debe ser capaz de pasar mensajes de error apropiados.
Diseñado pensando en que será usado de maneras imprevistas.

4. Enuncie y explique 5 patrones de concurrencia


Patrón Balking: Es un patrón de diseño que solo ejecuta una acción sobre un objeto cuando
el objeto está en un estado particular.
Patrón active object: El objetivo del patrón active object es separar la llamada al método de
la ejecución del método. Es como un camarero en un restaurante, que simplemente entrega
los pedidos de los clientes al chef.
Patrón binding properties: El patrón de propiedades de enlace combina varios
observadores para forzar que las propiedades en diferentes objetos se sincronicen o
coordinen de alguna manera.
Patrón Double-checked locking: Este patrón reduce la cantidad de adquisiciones de
bloqueo simplemente verificando la condición de bloqueo de antemano. Como resultado de
FORMATO PARA PRACTICAS DE LABORATORIO

PROCESO: GESTIÓN DE RECURSOS, INFRAESTRUCTURA Y


LABORATORIOS

LA-FM-007 Versión: 4 Fecha: 15/07/2020 Página 4 de 9

esto, generalmente hay un aumento de rendimiento.


Patrón monitor object: El patrón de objeto de monitor es otro patrón de diseño de
simultaneidad que ayuda en la ejecución de programas multiproceso. Es un patrón de diseño
implementado para asegurar que en un solo intervalo de tiempo, solo un método se ejecute
en un solo objeto, y para este propósito, sincroniza la ejecución concurrente del método.

5. ¿Por qué se puede afirmar que patrón Thread Pool es un patrón de concurrencia?
Este patrón logra la concurrencia en la ejecución de un programa, mantiene varios
subprocesos esperando a que el programa de supervisión asigne tareas para su
ejecución simultánea, de esta manera al mantener un grupo de subprocesos el
rendimiento aumenta debido a la frecuencia creación y destrucción de subprocesos para
tareas de corta duración.

PALABRAS CLAVE *
• PATRONES DE CONCURRENCIA
METODOLOGÍA.

 El taller es individual.
 Cada estudiante debe ubicarse en un equipo y asegurarse de tener instaladas las
aplicaciones requeridas.
 En el laboratorio el estudiante debe proceder a realizar la práctica y posteriormente puede
enviar la solución del taller para ser revisada por el profesor.
 El estudiante puede formular inquietudes al profesor durante el desarrollo de la práctica.

MATERIALES, EQUIPOS Y REACTIVOS A UTILIZAR


Materiales y Equipos Reactivos Materiales Estudiante
Computador, internet, diademas N/A Almacenamiento en la
nube.
Software: Netbeans, Pluging EasyUML N/A N/A
dentro de Netbeans, Word, Power Point,
Enterprise Architect N/A N/A

PRECAUCIONES Y MANEJO DE MATERIALES Y EQUIPOS. CONSULTA DE EQUIPO


ESPECIALIZADO.
El factor de riesgo para este laboratorio está clasificado como BAJO, debido a que la eficacia del
conjunto de las medidas preventivas existentes es alta.
En otras palabras, el riesgo está controlado

 El material desarrollado por cada estudiante es de su responsabilidad y debe efectuar las


copias o backups necesarios.
 Los riesgos existen y hacen referencia a que es posible que la información o el trabajo
realizado se pierdan por caída del sistema, por lo tanto, se deben realizar copias de
FORMATO PARA PRACTICAS DE LABORATORIO

PROCESO: GESTIÓN DE RECURSOS, INFRAESTRUCTURA Y


LABORATORIOS

LA-FM-007 Versión: 4 Fecha: 15/07/2020 Página 5 de 9

 No consumir alimentos ni bebidas de ningún tipo dentro del laboratorio.


 No entrar al laboratorio bajo el efecto de substancias psicoactivas o alcohólicas.
 No entrar a internet sin autorización del docente
 No ejecutar programas sin autorización del docente.
 No instalar en los equipos Software de ninguna índole
 No trasladar equipos de cómputo de su módulo sin autorización del personal del área.
 Cuidar sus objetos personales
 El material desarrollado por cada estudiante es de su responsabilidad y debe efectuar las
copias o backups necesarios.
 No des configurar las herramientas de programación ni los sistemas operativos.
 Observar todas las normas de comportamiento en los laboratorios de sistemas.

PROCEDIMIENTO A UTILIZAR.

Se le solicita desarrollar un juego que pueda ejecutarse como applet


 El applet debe implementar la interfaz Runnable
 Cada entidad del juego puede ser controlada por un hilo de ejecución separado:
• Para la interfaz con de usuario
• Jugadores
• Supervisión del juego

Este sirve como su proyecto de semestre para esto debe tener claridad del proyecto
propuesto; elaboré un enunciado similar al siguiente ejemplo. Realizar

Explique teóricamente la aplicación dentro del proyecto de la siguiente manera y desarrolle el


juego propuesto en el laboratorio:

Ejemplo aplicación: proyecto Sencillo videojuego


BIBLIOGRAFÍA RECOMENDADA.
Se implementará un sencillo videojuego consistente en una nave que le dispara a dos
ErichGamma,naves
R. R. enemigas. El jugador
(1994). Design manipula
Patterns: la nave
Elements of que dispara,
Reusable pudiendo moverla
Object-Oriented de
Software. USA:
izquierda
AddisonWesley .a derecha y disparar a voluntad.

1. Cree un nuevo
IBM (Brian Goetz). (7proyecto llamada Videojuego.
de 2002). Thread pools and work queues. Obtenido de
2. Implemente el siguiente diagrama de clases:
https://www.ibm.com/developerworks/java/library/j-jtp0730/index.html

Microsoft. (27 de 02 de 2020). Concurrency Design Pattern. Obtenido de


https://social.technet.microsoft.com/wiki/contents/articles/13210.concurrency-design-
pattern.aspx

Pressman, R. (2010). Ingeniería de Software, un enfoque práctico. (Séptima. ed.). New York, NY.:
Mc Graw Hill.
FORMATO PARA PRACTICAS DE LABORATORIO

PROCESO: GESTIÓN DE RECURSOS, INFRAESTRUCTURA Y


LABORATORIOS

LA-FM-007 Versión: 4 Fecha: 15/07/2020 Página 6 de 9

Sznajdleder, Pablo Augusto, (2017) Programación orientada a objetos y estructura de datos a fondo:
implementación de algoritmos en Java, 1er edición. Ed. Alfaomega Cloud. (Colección biblioteca
UMB).

Deitel, Paul J., (2016) Java cómo programar, Décima edición, Ed.Pearson Education. Cáp. 3
(Colección biblioteca UMB).

Joyanes. (2014). Programación en C/C JAVA y UML . (Vol. 2a. ed.). México: McGraw-Hill
Interamericana. Recuperado el 6 de 7 de 2020, de http://ebooks7-24.com.proxy.umb.edu.co/?
il=291&pg=403 (colección base de datos digital ebook - UMB).

Weitzenfeld, Alfredo.(2005).Ingeniería de software orientada a objetos con UML, Java e Internet.


México : International Thomson Editores(Colección Biblioteca UMB).

D. Yang, S. Zhu, S. Zhou, J. Wang and A. Cai, "The Design and Implement of Web MIS of Students
Based on Servlet+JDBC," 2009 First International Workshop on Education Technology and
Computer Science, Wuhan, Hubei, 2009, pp. 1022-1025, doi: 10.1109/ETCS.2009.233.. (colección
base de datos digital IEEE Explore - UMB)..

Documentación oficial de Apache Netbeans, disponible en Internet desde:


https://netbeans.apache.org/kb/docs/platform/index.html [Consultado: 19 de julio 2020]

Hernández E. El Lenguaje Unificado de Modelado (UML), disponible en Internet desde:


http://www.disca.upv.es/enheror/pdf/ActaUML.PDF. [Consultado: 19 de julio 2020].

¿Cuál es la diferencia entre un proceso y un hilo?, disponible en Internet desde:


https://www.it-swarm.dev/es/multithreading/cual-es-la-diferencia-entre-un-proceso-y-un-
hilo/958476889/ [Consultado: 19 de julio 2020].

ELABORÓ REVISÓ APROBÓ

Grupo o Programa de: Director de Programa de:


Ingeniería de Software. Ingeniería de Software Jefatura de Laboratorios

Docente: Docentes Ing. Ing. Carlos Sánchez Fecha: Julio de 2020


Software
Fecha: Julio de 2020
Fecha: Julio de 2020

INFORME DE LABORATORIO
FORMATO PARA PRACTICAS DE LABORATORIO

PROCESO: GESTIÓN DE RECURSOS, INFRAESTRUCTURA Y


LABORATORIOS

LA-FM-007 Versión: 4 Fecha: 15/07/2020 Página 7 de 9

(Para elaborar por el Estudiante)


ASIGNATURA:
ESTUDIANTES:
1. Nombres_Apellidos
GRUPO:
2. Nombres_Apellidos

NOTA:

CARRERA: TRABAJO GRUPAL: TRABAJO INDIVIDUAL:


X

CUESTIONARIO.

Responda las siguientes preguntas:

1. ¿Formalmente qué es un proceso y en qué se diferencia de un hilo?

Un proceso es una entidad de ejecución de un programa, al cual le corresponden unas


direcciones de memoria en los que el proceso puede ejecutarse, mientras que el hilo es
una entidad que vive dentro de un proceso, es un subproceso ya que se ejecuta dentro
de los recursos del proceso.

2. Explique todos los posibles estados y transiciones de estado en un hilo.

Estado nuevo: En este estado el hilo ha sido creado, mas no ha sido ejecutado, en esta
instancia el hilo es solo es un objeto Thread vacío, ya que el sistema no ha destinado
ningún recurso para él.
Estado ejecutable: La aplicación del método .start () asignara los recursos para que el hilo
pueda ejecutarse, en este estado toda la lógica dentro del método .run() del hilo se
ejecutara secuencialmente.
Estado bloqueado o parado: El hilo entre en este estado con el método .suspend(), el hilo
espera que otro elimine el bloqueo. Un hilo bloqueado puede estar dormido con el
método .sleep() o esperando con el método .wait()
Estado muerto: El hilo puede terminar de dos maneras, una es cuando ejecuta toda su
lógica dentro del run o bien detenerlo con el método .stop() que envía un objeto
ThreadDeath y muere al recibir este objeto.

3. ¿Qué es la programación multihilos?

Se basa en definir varias tareas que se ejecutan a la vez en una misma aplicación, no
siempre significa que se vaya a tener un mejor rendimiento, pero en algunos casos si es
conveniente ya que permite la ejecución de varios procesos de manera concurrente, en
pocas palabras la programación multihilos se puede ver como la manera de ejecutar una
multitarea en una misma aplicación.

4. ¿Qué es la sincronización de hilos?

Cuando se tienen varios hilos ejecutándose a la vez, puede que al querer acceder dos o mas
FORMATO PARA PRACTICAS DE LABORATORIO

PROCESO: GESTIÓN DE RECURSOS, INFRAESTRUCTURA Y


LABORATORIOS

LA-FM-007 Versión: 4 Fecha: 15/07/2020 Página 8 de 9

a una misma variable, arreglo, archivo, se interrumpan entre sí, para evitar este tipo de
problemas se deben sincronizar los hilos, para la sincronización en java se utiliza el concepto de
monitor el cual bloquea un objeto, es decir, cuando un hilo está bloqueado por un hilo, ningún otro
puede ingresar a este objeto. La sincronización en java se da por la palabra reservada
synchronized, entonces cuando se llama a este método, el hilo entra al monitor del objeto y
bloque al objeto, para que otros hilos puedan acceder a el momentáneamente.

BIBLIOGRAFIA UTILIZADA.
¿Cuál es la diferencia entre un proceso y un hilo?, disponible en Internet desde:
https://www.it-swarm.dev/es/multithreading/cual-es-la-diferencia-entre-un-proceso-y-un-
hilo/958476889/ [Consultado: 19 de julio 2020].

ANEXOS. En este espacio presente los anexos si la práctica lo requiere

RUBRICA DE EVALUACIÓN TALLER DE PROGRAMACIÓN


Se anexa la rúbrica en la siguiente página de la guía de laboratorio

CRITERIOS DE EVALUACIÓN
HABILIDAD INDIVIDUAL O GRUPAL
0 – 1,5 1,6 - 2,9 3,0 - 3,9 4,0 - 4,5 4,6 - 5,0 NOTA
competencia

Utiliza
herramientas
(aprende Procedim
r a hacer) ental

CASE y aplica Se limita a la Infiere la


Hace relaciones Analiza la
POO para recopilación Hace referencia a la información
básicas de la información
aumentar la de la información en la
información con relacionada con
obtenida y la N1
productividad en información práctica relaciona con
la práctica la práctica
los procesos de solicitada su realidad
desarrollo de
software
Reconoce y
Reconoce los No reconoce pone en
conocer (aprenCogniti

conceptos y los conceptos práctica los


der a va

Reconoce los Reconoce las


técnicas que y técnicas que Reconoce algunos conceptos y
conceptos que técnicas que
utiliza Taller De utiliza Taller conceptos que Taller técnicas que
utiliza Taller De utiliza Taller De
programación De De programación
programación programación
utiliza Taller N2
para la solución programación para la solución de De
para la solución para la solución
de problemas para la problemas programación
de problemas de problemas
)

solución de para la
problemas solución de
problemas
Desarrolla
habilidades de Participa
Hace parte del Participa en el
trabajo en activamente el
trabajo trabajo
equipo, No hace parte Parcialmente hace trabajo
propuesto por el propuesto por el
priorizando la del trabajo parte del trabajo propuesto por
(aprender a ser)Socio afectiva

equipo de equipo de N3
toma de propuesto por propuesto por el el equipo de
acuerdo a manera
decisiones y la el equipo equipo manera
parámetros responsable y
escucha de responsable y
básicos puntual
diferentes puntual
propuestas
Frecuentemen Muestra una
te reprocha el Muestra una sobresaliente
Cuida, respeta y A veces muestra una Muestra una
trabajo de sus actitud favorable actitud frente
exige respeto actitud favorable buena actitud
pares y frente a la clase e a la clase e
frente a la frente a la clase y se frente a la clase e
interacción con
docente, y
limita a responder
interactúa
interactúa con
interactúa N4
justifica sus ocasionalmente frecuentemen
sus pares y por las condiciones sus pares y
carencias en el con sus pares y te con sus
docentes básicas del trabajo docente
trabajo en docente pares y
grupo docente
icaunmCo

Utiliza lenguaje No hace uso Ocasionalmente Hace uso de un Hace un buen uso Hace un uso N5
técnico para de un lenguaje hace uso de un lenguaje técnico del lenguaje sobresaliente
referirse a los técnico lenguaje técnico apropiado para la técnico apropiado del lenguaje
diferentes apropiado apropiado para la práctica de para la práctica técnico
tiv
a
FORMATO PARA PRACTICAS DE LABORATORIO

PROCESO: GESTIÓN DE RECURSOS, INFRAESTRUCTURA Y


LABORATORIOS

LA-FM-007 Versión: 4 Fecha: 15/07/2020 Página 9 de 9


(aprender a

conceptos que apropiado


convivir)

para la
relaciona en la práctica de para la
práctica de laboratorio de laboratorio
práctica laboratorio práctica de
laboratorio
experimental laboratorio
Realiza la
búsqueda Las fuentes de
bibliográfica en información Las fuentes de
Las fuentes de
fuentes son pocas o Las fuentes de Las fuentes de información
información son
confiables que ausentes. Si información son información son son variadas y
restringidas o con
permitan dar las usa son relevantes e variadas e pertinentes.
poca diversidad.
Investi
gativa

respuesta a las poco informativas. informativas. Además, están


Además, no están N6
situaciones confiables y Presenta los Adicionalmente actualizadas y
actualizadas y
problema no parámetros son fiables y contienen
contienen
evidenciados en contribuyen a aceptables por el contribuyen al información
información poco
la consulta la docente tema relevante al
relevante
previa y en el construcción tema
informe de del eje central
laboratorio.
NOTA
Nota Definitiva PROMEDIO (N1, N2, N3,N4, N5, N6)
###

También podría gustarte