<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rene Escalante</title>
    <description>The latest articles on DEV Community by Rene Escalante (@esrene99).</description>
    <link>https://dev.to/esrene99</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F501145%2F6145374e-615e-4929-80a6-be1932139f75.jpg</url>
      <title>DEV Community: Rene Escalante</title>
      <link>https://dev.to/esrene99</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/esrene99"/>
    <language>en</language>
    <item>
      <title>La evaluación de productos, procesos y recursos</title>
      <dc:creator>Rene Escalante</dc:creator>
      <pubDate>Mon, 08 Nov 2021 05:40:07 +0000</pubDate>
      <link>https://dev.to/esrene99/la-evaluacion-de-productos-procesos-y-recursos-5bp</link>
      <guid>https://dev.to/esrene99/la-evaluacion-de-productos-procesos-y-recursos-5bp</guid>
      <description>&lt;p&gt;Esta infografía fue creada para una tarea de la Universidad Francisco Gavidia, video de referencia: &lt;a href="https://www.youtube.com/watch?v=j1QHt7Xx4z4"&gt;https://www.youtube.com/watch?v=j1QHt7Xx4z4&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dVCLdUqO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7xv9ukd6e97ipiekjwml.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dVCLdUqO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7xv9ukd6e97ipiekjwml.png" alt="Infografia de procesos y recursos" width="800" height="2000"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>5 Aspectos claves del mantenimiento de un sistema</title>
      <dc:creator>Rene Escalante</dc:creator>
      <pubDate>Mon, 01 Nov 2021 03:02:16 +0000</pubDate>
      <link>https://dev.to/esrene99/5-aspectos-claves-del-mantenimiento-de-un-sistema-3d1m</link>
      <guid>https://dev.to/esrene99/5-aspectos-claves-del-mantenimiento-de-un-sistema-3d1m</guid>
      <description>&lt;p&gt;Este artículo fue creado para una tarea de la Universidad Francisco Gavidia utilizando como base el capítulo 9 del libro "Ingeniería de Software un enfoque práctico" de Roger Pressman.&lt;/p&gt;

&lt;h1&gt;
  
  
  1. La evolución del software
&lt;/h1&gt;

&lt;p&gt;Es de aceptar en la empresa que un software evoluciona por los cambios por ejemplo cuando se corrigen errores o se adaptan a un nuevo entorno o nuevas funcionalidades solicitadas por el cliente, Manny Lehman junto a colaboradores desarrollaron una teoría unificada de la evolución del software, que contiene leyes subyacentes como la ley del cambio continuo, ley de complejidad creciente, ley de autorregulación, ley de crecimiento continuo, etc. Estas leyes son una parte fundamental para entender el propósito de la reingeniería de software. &lt;/p&gt;

&lt;h1&gt;
  
  
  2. RPE (Reingeniería de procesos de empresa)
&lt;/h1&gt;

&lt;p&gt;Los procesos empresariales son tareas lógicamente relacionadas que tienen un cliente definido que recibe el resultado, la mayoría de RPE se enfoca en procesos o subprocesos individuales. Consta de estas actividades&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mVPx6EAN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9jhp57m0bdrq416yo9lj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mVPx6EAN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9jhp57m0bdrq416yo9lj.png" alt="Diagrama de Procesos Empresariales" width="616" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  3. Reingeniería de Software
&lt;/h1&gt;

&lt;p&gt;A diferencia de RPE, en la reingeniería de software se contempla un modelo de proceso de ingeniería para reconstruir partes de la aplicación existente. Esta puede contar de los siguientes procesos:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OzAczla0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o1flnckaua3n512bynm1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OzAczla0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o1flnckaua3n512bynm1.png" alt="Procesos de la reingeniería de software" width="824" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  4. Ingeniería inversa
&lt;/h1&gt;

&lt;p&gt;Ingeniería inversa extra información de como funciona un programa existente esto puede suponer la reestructuración de código que supone la reestructuración de módulos sospechosos, y la reestructuración de datos que es una reestructuración a gran escala, ya que se reestructuran los modelos de datos muchas partes del código pueden cambiar, esto se muestra en el siguiente proceso:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CfQJxId2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/npcj6c952ujo0pfrwfr6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CfQJxId2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/npcj6c952ujo0pfrwfr6.png" alt="Proceso de Ingeniería Inversa" width="407" height="621"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  5. La economía de la reingeniería
&lt;/h1&gt;

&lt;p&gt;Es un análisis por medio de fórmulas para verificar si vale la pena someter a una aplicación existente a una reingeniería midiendo su costo-beneficio de manera cuantitativa, esto es de mucha importancia para determinar si vale la pena invertir en este mantenimiento del sistema. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CdlPGy3Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/exuqw9dy3l85bpwfvpac.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CdlPGy3Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/exuqw9dy3l85bpwfvpac.png" alt="Fórmulas de la economía de la reingeniería" width="845" height="681"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>El mantenimiento del sistema.</title>
      <dc:creator>Rene Escalante</dc:creator>
      <pubDate>Sun, 24 Oct 2021 23:59:23 +0000</pubDate>
      <link>https://dev.to/esrene99/el-mantenimiento-del-sistema-46o8</link>
      <guid>https://dev.to/esrene99/el-mantenimiento-del-sistema-46o8</guid>
      <description>&lt;p&gt;Este artículo fue creado para una tarea de la Universidad Francisco Gavidia.&lt;/p&gt;

&lt;h1&gt;
  
  
  Mapa conceptual
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hu6sC70Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qzkzb0uejefvs90mn83s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hu6sC70Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qzkzb0uejefvs90mn83s.png" alt="Mapa conceptual del diagrama de sistema"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Respuestas a las preguntas de clase
&lt;/h1&gt;

&lt;h2&gt;
  
  
  ¿Por qué resulta necesario realizar mantenimiento del software?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;El mantenimiento del software es vital debido a que a medida que los verdaderos usuarios ocupan el software, se encuentran con defectos aun cuando se hace una muy buena inspección del software esto es posible.&lt;/li&gt;
&lt;li&gt;Además por cada cambio que se realiza al producto original es más probable que surjan defectos y se deba realizar mantenimiento.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ¿Qué le pasa usualmente a un software que no se mantiene?
&lt;/h2&gt;

&lt;p&gt;Si el software no se le realizan mas cambios, con el tiempo puede convertirse en un codigo legacy, ya que las tecnologías van cambiando frecuentemente, y se volvería anticuado, si se le realizan cambios, surgirán una gran cantidad de defectos que forzara hacer mantenimiento.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Cómo es posible clasificar los tipos de mantenimiento en función de sus objetivos?
&lt;/h2&gt;

&lt;p&gt;En el mapa conceptual se presentan los siguientes tipos basados en la clase:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Correctivo: Arregla un defecto.&lt;/li&gt;
&lt;li&gt;Adaptivo: Se enfoca en la escalabilidad y los cambios que pueden surgir.&lt;/li&gt;
&lt;li&gt;Perfectivo: Se centra en hacer una funcionalidad mas legible y con mayor rendimiento.&lt;/li&gt;
&lt;li&gt;Preventivo: Previene problemas de seguridad y que se originen mas defectos.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ¿Qué problemas plantea el mantenimiento?
&lt;/h2&gt;

&lt;p&gt;De que se cree un efecto domino, se degrade la calidad con los nuevos cambios, y que si no se sigue una metodología adecuada se cree codigo legacy.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué necesidades conflictivas aparecen durante el mantenimiento?
&lt;/h2&gt;

&lt;p&gt;Discusiones entre las implementaciones de los desarrolladores para no afectar y que sea escalable el código y además implementar lo que sea necesario y beneficioso para el cliente esto puede llevar a conflictos, pero es necesario que se lleven a cabo y se compartan opiniones y soluciones para obtener el mejor software.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué hay que hacer para que los atributos de calidad del software no se degraden durante el mantenimiento?
&lt;/h2&gt;

&lt;p&gt;Se debe mantener una documentación adecuada tanto interna como externa y se debe poner de acuerdo al equipo de desarrollo con metodologías de cambio.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Aspectos necesarios en la entrega de un sistema</title>
      <dc:creator>Rene Escalante</dc:creator>
      <pubDate>Sun, 17 Oct 2021 16:13:01 +0000</pubDate>
      <link>https://dev.to/esrene99/aspectos-necesarios-en-la-entrega-de-un-sistema-4m52</link>
      <guid>https://dev.to/esrene99/aspectos-necesarios-en-la-entrega-de-un-sistema-4m52</guid>
      <description>&lt;h1&gt;
  
  
  Introducción
&lt;/h1&gt;

&lt;p&gt;La entrega o también conocido como liberación del sistema, es cuando el sistema de software se entrega en el ambiente que los usuarios van a utilizar, por ejemplo este puede ser un ambiente en producción en línea o puede ser que se entregue el descargable y se publique en una tienda de apps móviles para que los usuarios puedan descargarla, esto varía según la naturaleza del software. &lt;/p&gt;

&lt;h1&gt;
  
  
  Aspectos a considerar
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Entrenamiento
&lt;/h2&gt;

&lt;p&gt;Se debe tener una buena preparación y un equipo entrenado para prevenir problemas al entregar el software&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Quiénes se deben entrenar?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Usuarios Finales: Se les debe mostrar que hace el sistema y como utilizarlo, una buena UI y UX entrena en el momento que se utiliza el sistema y es lo ideal.&lt;/li&gt;
&lt;li&gt;Administradores: Se deben dividir las funciones de soporte y quienes tienen las habilidades apropiadas para realizar esta función y explicar internamente como funciona el sistema.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Revisión
&lt;/h3&gt;

&lt;p&gt;Cada rol tiene diferentes necesidades, se debe evaluar basado en las características y estilos de trabajo personales y presiones de la organización lo siguiente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Grado de uso del sistema.&lt;/li&gt;
&lt;li&gt;Eficiencia en el uso.&lt;/li&gt;
&lt;li&gt;Cumplimiento de objetivos.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Ayudas
&lt;/h3&gt;

&lt;p&gt;De las más sencillas podemos tener:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Guías, teniendo en cuenta el costo beneficio de tener mucho que leer o muy poco, debe mostrar lo esencial, debe haber guías rápidas con las funciones más vitales.&lt;/li&gt;
&lt;li&gt;Documentación y referencia, deberían mostrar a más detalle.&lt;/li&gt;
&lt;li&gt;Demostraciones, parte importante de la validación.
De las más complejas sin embargo efectivas son:&lt;/li&gt;
&lt;li&gt;Talleres, igualmente son importante para la validación.&lt;/li&gt;
&lt;li&gt;Apoyo de usuarios expertos como entrenadores.
¿Cuándo deberíamos hacer estas ayudas más complejas?
Es cuando existan conflictos por disponibilidad, validación temprana, olvido por desuso, etc. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esencialmente debe haber ayuda en línea y asistencia activa para dar la mejor ayuda posible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Documentación
&lt;/h2&gt;

&lt;p&gt;Como se mencionó en Ayudas para el entrenamiento, la documentación es parte muy importante para asegurar un entregable efectivo  y resolver problemas, asegurarse de la calidad de la documentación conlleva los siguientes aspectos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Legibilidad&lt;/li&gt;
&lt;li&gt;Estructura&lt;/li&gt;
&lt;li&gt;Tamaño&lt;/li&gt;
&lt;li&gt;Ilustraciones&lt;/li&gt;
&lt;li&gt;Facilidad para ubicar información relevante.&lt;/li&gt;
&lt;li&gt;Completo&lt;/li&gt;
&lt;li&gt;Correcto&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para el administrador es muy importante, ya que debe indicar las configuraciones por ejemplo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Autorizar accesos&lt;/li&gt;
&lt;li&gt;Agregar o suprimir equipos&lt;/li&gt;
&lt;li&gt;Generar respaldos&lt;/li&gt;
&lt;li&gt;Solucionar problemas
En el aspecto de solucionar problemas debe haber guías para lidiar con mensajes de error y solucionarlos.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Implementación
&lt;/h2&gt;

&lt;p&gt;Esta podría ser de 2 diferentes naturalezas: &lt;/p&gt;

&lt;h3&gt;
  
  
  Conversión
&lt;/h3&gt;

&lt;p&gt;Se sustituye un sistema anterior por uno nuevo, esto se puede realizar de manera manual o automatizada.&lt;br&gt;
Para esto hay diferentes estrategias como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Big-bang&lt;/li&gt;
&lt;li&gt;Paulatina ya sea de convivencia o ajuste de procedimientos&lt;/li&gt;
&lt;li&gt;Procesamiento en paralelo, e.g. uno en producción y otro en prueba/control.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Instalación
&lt;/h3&gt;

&lt;p&gt;Se instala el software para que quede disponible y operativo  a los usuarios, la complejidad puede variar dependiendo de:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tecnología utilizada.&lt;/li&gt;
&lt;li&gt;Restricciones funcionales.&lt;/li&gt;
&lt;li&gt;Requerimientos de disponibilidad.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Este artículo fue creado para una tarea de la Universidad Francisco Gavidia, video de referencia: &lt;a href="https://www.youtube.com/watch?v=DnXSz-dhqrI"&gt;https://www.youtube.com/watch?v=DnXSz-dhqrI&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>El proceso de prueba de un sistema</title>
      <dc:creator>Rene Escalante</dc:creator>
      <pubDate>Sun, 10 Oct 2021 19:01:40 +0000</pubDate>
      <link>https://dev.to/esrene99/el-proceso-de-prueba-de-un-sistema-4c9g</link>
      <guid>https://dev.to/esrene99/el-proceso-de-prueba-de-un-sistema-4c9g</guid>
      <description>&lt;p&gt;Este artículo fue creado para una tarea de la Universidad Francisco Gavidia, video de referencia: &lt;a href="https://www.youtube.com/watch?v=wfgFcwh_EkM"&gt;https://www.youtube.com/watch?v=wfgFcwh_EkM&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;El principio fundamental de una prueba de sistema es: "Asegurar que el sistema hace lo que él cliente quiere que haga"&lt;/p&gt;

&lt;p&gt;El proceso de la prueba de un sistema se lleva a cabo con el siguiente orden de pruebas: &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2xsfclDT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pbz89j5eirxv4f34papl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2xsfclDT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pbz89j5eirxv4f34papl.png" alt="Diagrama de pruebas"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Analizaremos cada una de las pruebas para conocer más sobre que se espera al utilizarlas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prueba de Función
&lt;/h2&gt;

&lt;p&gt;Siguiendo un esquema de caja negra, se evalúan las funcionalidades de los requerimientos funcionales ignorando la estructura del sistema, pruebas eficaces de este tipo tienen una alta probabilidad de descubrir un defecto, cuando son bien realizadas se hace prueba de una función por vez, para así evitar hacer pruebas tan grandes de múltiples funciones y no encontrar exactamente en que funcionalidad ocurrió el error. &lt;/p&gt;

&lt;h2&gt;
  
  
  Prueba de Desempeño
&lt;/h2&gt;

&lt;p&gt;También conocida como de rendimiento, esta solo se debería realizar una vez te tenga la certeza que el sistema realiza las funciones que se mencionan en los requerimientos, estas se basan sobre todo en los requerimientos no funcionales y los Ings. de Hardware pueden involucrarse debido a que es necesario validar rendimiento tanto en hardware y software. &lt;/p&gt;

&lt;p&gt;Tienen muchos tipos de prueba como de:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Estrés&lt;/li&gt;
&lt;li&gt;Volumen &lt;/li&gt;
&lt;li&gt;Configuración&lt;/li&gt;
&lt;li&gt;Compatibilidad &lt;/li&gt;
&lt;li&gt;Configuración&lt;/li&gt;
&lt;li&gt;Regresión&lt;/li&gt;
&lt;li&gt;Seguridad&lt;/li&gt;
&lt;li&gt;Temporización&lt;/li&gt;
&lt;li&gt;Medio Ambiente&lt;/li&gt;
&lt;li&gt;Calidad&lt;/li&gt;
&lt;li&gt;Recuperación &lt;/li&gt;
&lt;li&gt;Mantenimiento&lt;/li&gt;
&lt;li&gt;Documentación&lt;/li&gt;
&lt;li&gt;Factores Humanos&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prueba de Aceptación
&lt;/h2&gt;

&lt;p&gt;Con los resultados de las pruebas el cliente debe revisar que lo que se ha hecho es lo correcto, independientemente de la forma que lo verifique ya sea en un sitio web o instalado en el hardware de los usuarios, la aceptación es que el cliente acepte lo que el sistema está realizando. &lt;/p&gt;

&lt;h2&gt;
  
  
  Prueba de Instalación
&lt;/h2&gt;

&lt;p&gt;Se instala el sistema a los usuarios y se verifica que funcione correctamente, se considera completo una vez el cliente está satisfecho con los resultados.&lt;br&gt;
Puede que no sea necesario si la prueba de aceptación se ha realizado en el sitio. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Prueba de los programas</title>
      <dc:creator>Rene Escalante</dc:creator>
      <pubDate>Mon, 04 Oct 2021 03:24:58 +0000</pubDate>
      <link>https://dev.to/esrene99/prueba-de-los-programas-34o2</link>
      <guid>https://dev.to/esrene99/prueba-de-los-programas-34o2</guid>
      <description>&lt;p&gt;Este artículo fue creado para una tarea de la Universidad Francisco Gavidia, las imágenes las extraje de &lt;a href="https://community.pega.com"&gt;Pega Community&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Experiencia propia creando prueba de los programas
&lt;/h1&gt;

&lt;p&gt;En mi trabajo he desarrollado pruebas para escenarios completos del sistema así como pruebas unitarias, debido a que utilizo una herramienta low-code conocida como &lt;a href="https://www.pega.com/"&gt;Pega&lt;/a&gt; esto es bastante sencillo.&lt;/p&gt;

&lt;p&gt;En Pega ya se tienen configuraciones como plantillas que se pueden programar que se les llama rule, para hacer pruebas unitarias utilizamos una "Test Case" rule, donde básicamente se escribe un resultado esperado de otra rule que puede setear información por ejemplo: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kYQGmeF4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xhas7u7e6t458h5ui3o4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kYQGmeF4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xhas7u7e6t458h5ui3o4.png" alt="Ejemplo de Test Case"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En este caso se espera que para la Data Page Customer, cuando se le pase un parametro de ID = Cust-1, que corra en menos o igual de 0.01 segundos y que tenga un output donde la Data Page se le setee el ID a "Cust-1" y el name a "AmCo".&lt;/p&gt;

&lt;p&gt;Se puede tener varios test cases en un proceso para hacer distintas pruebas unitarias.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ETkHSo5i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1apzc7ccr4w1zmqjc2rn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ETkHSo5i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1apzc7ccr4w1zmqjc2rn.png" alt="Como se ven los test case de una rule"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para probar un escenario completo utilizamos otra rule llamada "Scenario Test Case" que hacen una prueba completa de un escenario con la UI, &lt;a href="https://www.youtube.com/watch?v=z_Cs8RbTFYE"&gt;vínculo un video para una demostración&lt;/a&gt; es una funcionalidad parecida a Cypress, pero que ya está integrada en el sistema. &lt;/p&gt;

&lt;h1&gt;
  
  
  Tipo de prueba que no he probado anteriormente
&lt;/h1&gt;

&lt;p&gt;Basado en el &lt;a href="https://dev.to/esrene99/aspectos-a-considerar-en-la-prueba-de-un-programa-3m9b"&gt;anterior articulo.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Una prueba de instalación es algo que no he realizado antes, al menos con la intención de hacer la prueba propiamente descrita, imagino que este tipo de prueba las hace más frecuentemente IT, y me pareciera bastante interesante si equipos de IT corren un script para validar todos los programas funcionen de la manera esperada en un equipo para evitar hacer pruebas manuales en los equipos de todos los clientes. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Aspectos a considerar en las pruebas de un programa</title>
      <dc:creator>Rene Escalante</dc:creator>
      <pubDate>Sun, 26 Sep 2021 23:53:22 +0000</pubDate>
      <link>https://dev.to/esrene99/aspectos-a-considerar-en-la-prueba-de-un-programa-3m9b</link>
      <guid>https://dev.to/esrene99/aspectos-a-considerar-en-la-prueba-de-un-programa-3m9b</guid>
      <description>&lt;p&gt;Este artículo fue creado para una tarea de la Universidad Francisco Gavidia, &lt;a href="https://www.youtube.com/watch?v=P29Sldm4QK0"&gt;video de referencia.&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Objetivo de hacer pruebas
&lt;/h1&gt;

&lt;p&gt;Antes de entregar,  debemos hacer pruebas de los programas, &lt;em&gt;debido a que nos permiten descubrir problemas.&lt;/em&gt;&lt;br&gt;
La etapa de prueba se centra en la búsqueda de defectos, cosas que debemos corregir para la entrega del usuario, &lt;em&gt;antes de la entrega.&lt;/em&gt;&lt;br&gt;
Revisiones de requerimiento y diseño contribuyen en descubrir problemas.&lt;/p&gt;

&lt;p&gt;Es de recordar que el propósito de las pruebas es demostrar la existencia de un defecto, no en sí que los programas operan correctamente, sino buscar defectos. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Por eso la prueba es destructivo.

&lt;ul&gt;
&lt;li&gt;Para identificar origines de las fallas&lt;/li&gt;
&lt;li&gt;Y corregir.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ¿Que significa que el software falla?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;No hace lo que especifica los requerimientos.

&lt;ul&gt;
&lt;li&gt;Pudo haberse omitido algo.&lt;/li&gt;
&lt;li&gt;Algo imposible de implementar con el software y hardware prescrito.&lt;/li&gt;
&lt;li&gt;El diseño del sistema o del programa puede contener un defecto.&lt;/li&gt;
&lt;li&gt;El código del programa puede estar errado.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Tipos de defectos
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Algorítmicos

&lt;ul&gt;
&lt;li&gt;La lógica desarrollada no se produce la salida apropiada, debido a algún paso está mal en el procesamiento.&lt;/li&gt;
&lt;li&gt;Incluyen:

&lt;ul&gt;
&lt;li&gt;Condición errónea, por ejemplo no poner notas negativas.&lt;/li&gt;
&lt;li&gt;Olvidar inicializar una variable.&lt;/li&gt;
&lt;li&gt;Comparar variables de tipos de datos inapropiados.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Sintaxis:
Se realiza cuando no se ha utilizado correctamente las estructuras del lenguaje de programación.&lt;/li&gt;
&lt;li&gt;Computación y de precisión:

&lt;ul&gt;
&lt;li&gt;Flotantes o enteros inesperados, cuando la implementación de la forma no llega al grado de exactitud esperado, por ejemplo en planillas esto es vital.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Documentación

&lt;ul&gt;
&lt;li&gt;No corresponde con lo que el programa realmente hace, se tiene a confiar en la documentación y si por ejemplo se hizo un cambio en el código y no sé hizo cambio en la documentación se da el problema.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Defectos por estrés o sobrecarga

&lt;ul&gt;
&lt;li&gt;Cuando una  estructura como por ejemplo tamaño de almacenamiento, se sobrecarga en el sistema hasta sobrepasar su capacidad especificada.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Capacidad o de límites

&lt;ul&gt;
&lt;li&gt;Se vuelve inaceptable la actividad debido al límite del sistema, por ejemplo tratar de correr un programa de 64 bits en uno de 32 bits.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Desempeño

&lt;ul&gt;
&lt;li&gt;Sistema no opera a la velocidad prescrita por los requerimientos.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Sincronización o de coordinación

&lt;ul&gt;
&lt;li&gt;Se produce cuando se coordina dichos eventos es inadecuados&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Recuperación

&lt;ul&gt;
&lt;li&gt;Cuando hay una falla, ocurre cuando no se comporta como el cliente quiere para notificar la falla.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Hardware y Software

&lt;ul&gt;
&lt;li&gt;Cuando hardware y/o software no trabajan realmente de acuerdo con las condiciones operativas y documentaciones, por ejemplo una impresora que se realizó todas las configuraciones indicadas e igualmente falla.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Estándares y procedimientos.

&lt;ul&gt;
&lt;li&gt;Si no se está siguiendo en el código los estándares mínimos que se han establecido en la empresa.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Tipos de prueba:
&lt;/h1&gt;

&lt;p&gt;Son los siguientes: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unitaria&lt;/li&gt;
&lt;li&gt;Integración&lt;/li&gt;
&lt;li&gt;Función&lt;/li&gt;
&lt;li&gt;Desempeño&lt;/li&gt;
&lt;li&gt;Aceptación&lt;/li&gt;
&lt;li&gt;Instalación
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--py6PF-3w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dtzj64armszrl9q0s8dt.png" alt="Diagrama con tipos de prueba"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Pruebas de integración a más detalle:
&lt;/h2&gt;

&lt;p&gt;Las pruebas integración se planean y coordinan para que al producirse una falla, se pueda tener alguna idea de lo que le ha dado origen.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tipos:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Ascendente (bottom - up): Desde los componentes elementales a los más generales.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--B3Ulig0r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/45gkz9hk355xprjfh877.png" alt="Diagrama de ejemplo prueba ascendente"&gt;
&lt;/li&gt;
&lt;li&gt;Descendente (top - bottom)
Lo contrario, desde los más generales a los más elementales
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CKKpoeM1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9jixhtdcl25yxm3zziwc.png" alt="Diagrama de ejemplo prueba descendente"&gt;
&lt;/li&gt;
&lt;li&gt;Big - Bang: No es práctico para grandes sistemas, pero muchos programadores lo ocupan para pequeños, mezclar juntos a todos los componentes como un sistema final y ver si funciona la primera vez. El problema es que es más difícil identificar cuál fue la causa de una falla.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UN8o9l20--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d9p8hunkrknpimge7xh6.png" alt="Diagrama de ejemplo prueba big bang"&gt;
&lt;/li&gt;
&lt;li&gt;Intercalada: Mezcla los métodos ascendente y descendentes por medio de 3 capas, en el medio la capa objetivo, los niveles por encima del objetivo, y los niveles por debajo del objetivo.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ecx8fzxh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mb4yhh354iitqksl9ycl.png" alt="Diagrama de ejemplo prueba intercalada"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  ¿Quién realiza las pruebas?
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Para evitar las opiniones personales del equipo de desarrollo es buena práctica contar con un equipo de prueba independiente, conocido como QAs.&lt;/li&gt;
&lt;li&gt;De esta forma igualmente se puede llevar la codificación y las pruebas concurrentemente.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Visión de los objetos de prueba:
&lt;/h1&gt;

&lt;p&gt;La propia visión que se tiene del objeto de prueba, ya sea un componente, sistema, subsistema, etc. afectara la forma que se lleva a cabo la prueba.&lt;br&gt;
Este puede ser:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Caja negra: Si se ve desde afuera y el contenido, o sea sé el código se desconoce, solo es de tomar entradas y anotar las salidas que produce y verificar que es la esperada.
Ejemplo: Debido a que este tipo de prueba es libre de las restricciones impuestas por la estructura interna o lógica, solo es de verificarlas con casos de uso de la lógica de negocio.
Método más usado:

&lt;ul&gt;
&lt;li&gt;Particionamiento de Equivalencias&lt;/li&gt;
&lt;li&gt;Análisis de Valores Fronteras&lt;/li&gt;
&lt;li&gt;Adivinanza de defectos&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Caja blanca: Se utiliza la estructura interna del objeto para probarlo de diferentes maneras
Ejemplo: Se pueden ejecutar casos de prueba que ejecuten toas las instrucciones y caminos de control que existen del objeto.
Método más usado:

&lt;ul&gt;
&lt;li&gt;Pruebas de Cobertura (Instrucción, Decisión, Condición, Decisión/Condición, Múltiples Condiciones, De Caminos).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Caja estructurada: Cuando se utilizan tantas pruebas de caja cerrada en un extremo y en el otro de caja abierta en un programa.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Proceso para encontrar defectos:
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Examinar el código.&lt;/li&gt;
&lt;li&gt;Comparar el código con las especificaciones&lt;/li&gt;
&lt;li&gt;Desarrollar casos de prueba (test case) para demostrar que las entradas tienen salidas esperadas.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Examen de código
&lt;/h2&gt;

&lt;p&gt;Para hacer un examen del código hay de 2 tipos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recorridas: Programador lidera la discusión y se presenta a un equipo de revisión, es informal.&lt;/li&gt;
&lt;li&gt;Inspecciones: Es más formal, el equipo se reúne para hacer una revisión general y se preparan individualmente para una segunda reunión de grupo, cada inspector estudia el código y documentos relacionados.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ¿Qué determina un buen test case?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Aquel que tiene una alta probabilidad de encontrar un defecto no descubierto.&lt;/li&gt;
&lt;li&gt;No es redundante, ni muy simple, ni muy complejo, idealmente, el mejor de su clase. &lt;/li&gt;
&lt;li&gt;Un exitoso test case es aquel que descubre un defecto no descubierto.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Mapa conceptual sobre aspectos generales de la programación</title>
      <dc:creator>Rene Escalante</dc:creator>
      <pubDate>Mon, 20 Sep 2021 04:35:19 +0000</pubDate>
      <link>https://dev.to/esrene99/mapa-conceptual-sobre-aspectos-generales-de-la-programacion-3olp</link>
      <guid>https://dev.to/esrene99/mapa-conceptual-sobre-aspectos-generales-de-la-programacion-3olp</guid>
      <description>&lt;p&gt;Este mapa mental fue creado para una tarea de la Universidad Francisco Gavidia, utilizando Lucidchart y tomando como referencia el siguiente video:&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=_jnRi7NF-qc"&gt;https://www.youtube.com/watch?v=_jnRi7NF-qc&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FMKfpEvq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1h55x84xyb8i6bd5g2wv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FMKfpEvq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1h55x84xyb8i6bd5g2wv.png" alt="Mapa mental"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>La importancia de la utilización de objetos en el diseño de un sistema</title>
      <dc:creator>Rene Escalante</dc:creator>
      <pubDate>Thu, 09 Sep 2021 03:20:59 +0000</pubDate>
      <link>https://dev.to/esrene99/la-importancia-de-la-utilizacion-de-objetos-en-el-diseno-de-un-sistema-4mfo</link>
      <guid>https://dev.to/esrene99/la-importancia-de-la-utilizacion-de-objetos-en-el-diseno-de-un-sistema-4mfo</guid>
      <description>&lt;h1&gt;
  
  
  ¿Qué es POO?
&lt;/h1&gt;

&lt;p&gt;Programación Orientada a Objetos (POO) es una forma de pensar acerca del software basado en abstracciones del mundo real, orientación por objeto, significa que diseñamos software como una colección de objetos distintos. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9kB9Q0oU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f76vh11toy1yukgbe49c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9kB9Q0oU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f76vh11toy1yukgbe49c.png" alt="Diagrama comparando el sistema orientado a Objetos con Sistema Convencional"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Importancias de POO
&lt;/h1&gt;

&lt;p&gt;Una de las características más importantes de un código que sigue POO es que logra encapsulamiento de sus funcionalidades, este es el paradigma fundamental de la POO, debido a que hace sistemas mucho más seguros, ya que separa el código que debería ser accesible para los desarrolladores que quieren implementarlo como una API, y el que no que es código interno de la clase y no debería hacerlo accesible, este modelo también ayuda para la seguridad en sí del sistema con el usuario. &lt;/p&gt;

&lt;h1&gt;
  
  
  Sobre los objetos
&lt;/h1&gt;

&lt;p&gt;Cada objeto debe tener su propia identidad en un sistema bien construido, como un registro en una base de datos, siguiendo con esta comparación, se podría decir que una clase es los atributos que un registro de una tabla de base de datos debe llevar, y el objeto es el registro en sí.&lt;/p&gt;

&lt;p&gt;Siguiendo POO, cuando un objeto se transforma, consta de interfaz, estructura de datos privada, y métodos que son los únicos que pueden transformar legítimamente la estructura de datos del, en otras palabras, no se altera directamente, se debe alterar con métodos/funciones dependiendo del lenguaje.&lt;/p&gt;

&lt;h1&gt;
  
  
  Ventajas de sistemas POO
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Es de gran ayuda al dominio y entendimiento del diseño.&lt;/li&gt;
&lt;li&gt;Es más sencillo hacer cambios en un sistema que utiliza POO.&lt;/li&gt;
&lt;li&gt;Facilita la reutilización de código.&lt;/li&gt;
&lt;li&gt;Es más natural, además como las metodologías ágiles de Scrum, POO es un estándar en la industria.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Metodología de diseños de sistemas
&lt;/h1&gt;

&lt;p&gt;Debe considerarse que la metodología de diseño es algo bastante creativo, esta es una generalidad, pero usualmente para POO se tiene como metodología:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dividir el sistema en subsistemas.&lt;/li&gt;
&lt;li&gt;Producir un diseño OOP de los subsistemas.&lt;/li&gt;
&lt;li&gt;Una POO completa es tal que en la implementación solo se agregan detalles y lo más importante ya se diseñó.

&lt;ul&gt;
&lt;li&gt;La mayoría de las clases y sus relaciones se identifican con el diseño.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3 Claves para el diseño
&lt;/h2&gt;

&lt;p&gt;Estas claves facilitan un diseño que sigue POO:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Acoplamiento:&lt;br&gt;
Mientras más acoplado más dependientes son los módulos entre sí y por tanto más complejo de entender el programa y más difícil de modificar. Hay de tipo Interacción y Componente.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cohesión:&lt;br&gt;
Analiza Porque los elementos de un módulo están juntos en ese módulo, tiene tipo a nivel método, clase y herencia.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Abierto-Cerrado: &lt;br&gt;
Se basa fuertemente en herencia para evitar la modificación de una clase, básicamente habrá módulos abiertos a la modificación y módulos cerrados a la modificación que solamente deberían ser expandidos.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Mi metodología de diseños de sistemas
&lt;/h1&gt;

&lt;p&gt;Entrando a más detalle en como personalmente diseño un sistema, usualmente escribo en alto nivel los objetos y las clases que el sistema planeara utilizar, por ejemplo recientemente he estado trabajando en un proyecto de Tic Tac Toe en JavaScript para &lt;a href="https://www.theodinproject.com/paths/full-stack-javascript/courses/javascript/lessons/tic-tac-toe"&gt;The Odin Project&lt;/a&gt; un currículum que sigo, y escribí esta arquitectura de alto nivel de los módulos como parte de pensar como la estructura del código será en el momento de la implementación. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c3Tvl7Gh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hlbhn4qdbnjt7ob0ey0v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c3Tvl7Gh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hlbhn4qdbnjt7ob0ey0v.png" alt="Arquitectura de alto nivel"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Usualmente sigo la metodología tradicional de dividir en subsistemas, hacer una arquitectura a alto nivel y luego implementar, en ese caso es un sistema bastante pequeño, pero en un sistema más grande lo segmento.&lt;/p&gt;

&lt;p&gt;Nota - Este artículo fue realizado como parte de una tarea de la Universidad Francisco Gavidia tomando como fuente el siguiente video:&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=UrvQLx73xXY"&gt;https://www.youtube.com/watch?v=UrvQLx73xXY&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Infografía: Aspectos importantes/generales del diseño de un sistema </title>
      <dc:creator>Rene Escalante</dc:creator>
      <pubDate>Mon, 06 Sep 2021 00:43:03 +0000</pubDate>
      <link>https://dev.to/esrene99/infografia-aspectos-importantes-del-diseno-de-un-sistema-35j7</link>
      <guid>https://dev.to/esrene99/infografia-aspectos-importantes-del-diseno-de-un-sistema-35j7</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LlhnX-3V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m6s752kis0txnxdlhqp5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LlhnX-3V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m6s752kis0txnxdlhqp5.png" alt="Imagen de Infografía de aspectos importantes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Este mapa mental fue creado para una tarea de la Universidad Francisco Gavidia, imagenes extraidas de Wikipedia y del video fuente:&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=EQ24JCOVCVg"&gt;https://www.youtube.com/watch?v=EQ24JCOVCVg&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Claves del desarrollo de la planificación y la gestión de proyecto</title>
      <dc:creator>Rene Escalante</dc:creator>
      <pubDate>Sun, 22 Aug 2021 14:50:09 +0000</pubDate>
      <link>https://dev.to/esrene99/claves-del-desarrollo-de-la-planificacion-y-la-gestion-de-proyecto-4mnb</link>
      <guid>https://dev.to/esrene99/claves-del-desarrollo-de-la-planificacion-y-la-gestion-de-proyecto-4mnb</guid>
      <description>&lt;p&gt;El propósito de planificar proyectos es poder llegar a un compromiso con el cliente para cumplir una meta basado en &lt;br&gt;
planificación y estimación. &lt;/p&gt;

&lt;h2&gt;
  
  
  Planificación y Estimación.
&lt;/h2&gt;

&lt;p&gt;Para cumplir el objetivo de negocio deseado se debe basar en una predicción de cuando estaría el producto, esto debe tomar en cuenta: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Esfuerzo&lt;/li&gt;
&lt;li&gt;Costo &lt;/li&gt;
&lt;li&gt;Duración
Sin embargo planificación y estimación son definiciones distintas.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ¿Qué es la planificación?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Es el proceso parcial que procura una meta, favoreciendo esta meta en específico y tiene como objetivo un resultado en particular.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ¿Qué es la estimación?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Es la predicción, imparcial y analítica, ya que no favorece a ninguna meta en específico, y tiene como objetivo la exactitud.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Estimación del tamaño
&lt;/h4&gt;

&lt;p&gt;Estimar el tamaño de un proyecto permite estimar su esfuerzo y duración, medir calidad, y productividad. Estos son algunos de los atributos más importantes para la estimación de tamaño: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LOCs (Toma en cuenta lenguajes, criterios para contar líneas, con o sin comentarios, etc.) la mayoría de herramientas de estimación se basan en LOC (Lines of Code)&lt;/li&gt;
&lt;li&gt;Requisitos.&lt;/li&gt;
&lt;li&gt;Historias de usuario, casos de uso, puntos de función, etc. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para proyectos pequeños se puede tomar que esfuerzo/productividad = tamaño.&lt;/p&gt;

&lt;p&gt;Sin embargo, es de reconocer que no es sencillo estimar el tamaño debido a que:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Las estimaciones iniciales de la definición son imprecisas.&lt;/li&gt;
&lt;li&gt;El software a desarrollar a menudo se ejecuta en entornos desconocidos.&lt;/li&gt;
&lt;li&gt;Las habilidades de las personas son desconocidas.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ¿Qué puede afectar el proyecto?
&lt;/h2&gt;

&lt;p&gt;Según la incertidumbre de Heisenberg "Al observar algo cambia", en el caso de proyectos esto es debido a que medida vamos analizándolo más, dificultades imprevistas aparecen, las razones que afectan los proyectos son:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cambio de asunciones, el proyecto no es lo mismo que fue estimado.&lt;/li&gt;
&lt;li&gt;Eventos externos imprevistos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esto puede ser prevenido tomando más decisiones, debido a que mientras más decisiones se tome, menor es la incertidumbre, en esto se basa el cono de la incertidumbre:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--guJ7PJZP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/chf70qp66x2p64yu26rw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--guJ7PJZP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/chf70qp66x2p64yu26rw.png" alt="Diagrama del cono de la incertidumbre"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mientras menos converge el proyecto en este diagrama, es más probable que el proyecto sea caótico y no se cumpla el compromiso con el cliente.&lt;/p&gt;

&lt;h2&gt;
  
  
  Consideraciones sobre el personal del proyecto
&lt;/h2&gt;

&lt;p&gt;El personal es clave para la gestión de proyectos, ellos harán el proyecto una realidad.&lt;br&gt;
Cada miembro de un equipo tiene su propia personalidad, debe haber un equilibrio entre sus personalidades:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Personalidad orientada a la tarea: Es ideal que el jefe del proyecto tenga esta personalidad, debe demostrar lealtad, proteger al grupo de demandas poco realistas, toma de decisiones, etc. Su motivación es el trabajo en sí.&lt;/li&gt;
&lt;li&gt;Personalidad orientada a las relaciones: La motivación viene de su trabajo en equipo, si el grupo fuera constituido por una sola persona, solo funcionaria bien con esta personalidad.&lt;/li&gt;
&lt;li&gt;Personalidad orientada a sí misma: La motivación es el éxito personal.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Este grupo de personas, deben crear un equipo, teniendo una comunicación efectiva entre todos y lealtad entre ellos y su trabajo en conjunto, debido a esto la interacción es la parte más importante de todo equipo y es lo que normalmente debería llevar más tiempo:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kmTF-Owk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xi8gup1j9wntkuv5kgbr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kmTF-Owk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xi8gup1j9wntkuv5kgbr.png" alt="Gráfico de pastel mostrando que interacción con otras personas es el 50% de la distribución en tiempo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Además el ambiente laboral para formar un equipo debe satisfacer sus necesidades como la jerarquía de Maslow, satisfaciendo su  reconocimiento, afiliación con el grupo, realización personal y motivando al grupo.&lt;/p&gt;

&lt;p&gt;Nota - Este artículo fue realizado como parte de una tarea de la Universidad Francisco Gavidia tomando como fuente el siguiente video: &lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=VbCRO0PsL6E"&gt;https://www.youtube.com/watch?v=VbCRO0PsL6E&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Mapa mental planificacion de proyectos</title>
      <dc:creator>Rene Escalante</dc:creator>
      <pubDate>Mon, 16 Aug 2021 04:58:19 +0000</pubDate>
      <link>https://dev.to/esrene99/mapa-mental-planificacion-de-proyectos-3ifd</link>
      <guid>https://dev.to/esrene99/mapa-mental-planificacion-de-proyectos-3ifd</guid>
      <description>&lt;p&gt;Este mapa mental fue creado para una tarea de la Universidad Francisco Gavidia, imagenes extraidas de Wikipedia, creado con draw.io&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ks14oMrz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qhqjjijwdgverulp2o2j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ks14oMrz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qhqjjijwdgverulp2o2j.png" alt="sq26s7l2cz3gpcssecn5"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
