jueves, 21 de febrero de 2019

About this blog

Hi!

In this blog, you will find summaries about the programming classes I have been taking during my high school along with a video I made about "KobraManagement", a team project in where I performed the lead role and which objective as to we help a gymnastics club to automate the process of registration to state gymnastics competitions. 

martes, 8 de marzo de 2016

Animación


A continuación presentamos una animación donde explicamos el origen de nuestro proyecto:




jueves, 3 de marzo de 2016

Historias de Usuario

Altas Usuario




Cambios Usuario




Bajas Usuario


Altas Material



Consultas Material




Cambios Material 




domingo, 28 de febrero de 2016

Programación Extrema


Problemática

La empresa el Pato Volador en la que usted labora ha sido contratada por una Agencia Espacial para desarrollar el software de un  satélite que  se desarrollará en 3 meses como máximo, ya que es el tiempo en que será el lanzamiento del satélite para ponerlo en órbita. El satélite auxiliará el retorno de una las naves espaciales que regresan  a la tierra.
La Agencia Espacial ha puesto a su disposición a los ingenieros encargados de proporcionar los requerimientos del software de tiempo completo, así como los recursos  e instalaciones necesarios para lograr el desarrollo del software en el tiempo establecido.
El Pato Volador  ha propuesto a los directivos de la Agencia Espacial la metodología de Programación Extrema (XP por sus siglas en ingles) para la realización del software, ya que es indispensable terminar en tiempo el proyecto.  

Usted debe utilizar la metodología XP para organizar a su equipo de trabajo y a los ingenieros de la Agencia, explicándoles la metodología XP y las funciones que deben realizar en las diferentes fases del proceso de desarrollo del software.

    1.¿Qué es la Programación Extrema?
La programación extrema se basa en una serie de reglas y principios los cuales se complementan para minimizar los tópicos problemas que pueden surgir en todo desarrollo de proyectos software. Como dice el el autor de la XP, Kent Beck:
"Todo en el software cambia. Los requisitos cambian. El diseño cambia. El negocio cambia. La tecnología cambia. El equipo cambia. Los miembros del equipo cambian. El problema no es el cambio en sí mismo, puesto que sabemos que el cambio va a suceder; el problema es la incapacidad de adaptarnos a dicho cambio cuando éste tiene lugar"
Por lo tanto, uno de los objetivos de la programación extrema es responder rápidamente a las necesidades del cliente, aunque realice cambios en fases avanzadas del proyecto pero también buscando involucrar a todo el equipo en el desarrollo.
    2.¿Cuáles son los valores y principios de la  Programación Extrema?
Para garantizar el éxito de un proyecto, los autores de XP han considerado como fundamentales cuatro valores:
  • Comunicación. Debido a que uno de los objetivos de la XP es el trabajo en equipo, este valor es fundamental para evitar problemas entre los integrantes del grupo de trabajo: jefes de proyecto, clientes y desarrolladores.
  • Sencillez. Los programas deben ser los más sencillos posibles y tener la funcionalidad necesaria que se indican en los requisitos. No hay que añadir algo que no se necesite hoy.
  • Retroalimentación. Las pruebas que se le realizan al software nos mantiene informados del grado de fiabilidad del sistema.
  • Valentía. Asumir retos, ser valientes ante los problemas y afrontarlos. El intentar mejorar algo que ya funciona,
Los principios fundamentales se apoyan en los valores y también son cuatro. 
Se busca. 
  • Realimentación veloz: Como lo mencionamos las pruebas son importantes, pero hay que tener en cuenta que éstas se deben estar realizando constantemente.
  • Modificaciones incrementales: De los objetivos más importantes de la programación extrema está en dar al cliente lo que quiere y cuando quiere, así que es importante no detener el desarrollo del proyecto.
  • Trabajo de calidad: Esencial para satisfacer las necesidades de los clientes
  • Asunción de simplicidad: Como lo mencionamos, el proyecto debe ser lo más 
  
  3.¿Cuáles son las actividades, recursos y prácticas de la Programación Extrema? 
12 son las prácticas de la XP:
  • El juego de la planificación: De vital importancia ya que, si no se piensa previamente lo que se quiere hacer, nuestro equipo estará confundido y posiblemente ni siquiera conozca el objetivo del proyecto.
  • Pequeñas entregas Cada versión debe de ser tan pequeña como fuera posible, conteniendo los requisitos de negocios más importantes para que de esta manera nuestro cliente pueda apreciar los avances.
  • Metáfora Una metáfora es una historia que todo el mundo puede contar acerca de cómo funciona el sistema, lo cual sirve de mucho para que el equipo puede entender de una manera sencilla lo que se pretende hacer.
  • Diseño sencillo: Es importante no perder de vista que en un proyecto el objetivo siempre va a ser cumplir una necesidad por lo que está demás el buscar un diseño elaborado.
  • Pruebas. Muy importantes pues no debe existir ninguna característica en el programa que no haya sido probada para así obtener un programa seguro que conforme pasa el tiempo es capaz de aceptar nuevos cambios.
  • Refactorización: Es el proceso de hacer nuestro programa lo más simple posible sin perder la funcionalidad.
  • Programación por parejas Todo el código de producción lo escriben dos personas frente al ordenador, con un sólo ratón y un sólo teclado. Cada miembro de la pareja juega su papel: uno codifica en el ordenador y piensa la mejor manera de hacerlo, el otro piensa más estratégicamente
  • Propiedad colectiva Cualquiera que crea que puede aportar valor al código en cualquier parcela puede hacerlo, ningún miembro del equipo es propietario del código. Si alguien quiere hacer cambios en el código puede hacerlo.
  • Integración continua El código se debe integrar como mínimo una vez al día, y realizar las pruebas sobre la totalidad del sistema.
  • 40 horas semanales: Es importante el descanso por lo que la programación extrema propone que sólo se trabajen 40 horas a la semana.
  • Cliente en casa: Es una buena práctica el buscar que el cliente nos ceda una persona que conozca el negocio para que se integre en el equipo ya que normalmente estos elementos son muy valiosos, pero debemos de hacerles ver que será mejor para su negocio tener un software pronto en funcionamiento, y esto no implica que el cliente no pueda realizar cualquier otro trabajo.
  • Estándares de codificación Si los programadores van a estar tocando partes distintas del sistema, intercambiando compañeros, haciendo refactoring, debemos de establecer un estándar de codificación aceptado e implantado por todo el equipo.
También hay cuatro actividades básicas que son:
  1. Codificar
  2. Hacer pruebas
  3. Escuchar
  4. Diseñar
Por último los recursos de la programación extrema son:
  • Tiempo: es necesario dedicar suficiente tiempo a la terminación de un proyecto sin embargo el tiempo se asigna a actividades separadas. Se debe buscar tiempo para escuchar al cliente, tiempo para diseñar, tiempo para codificar y tiempo para probar.
  • Costo: el costo es la segunda variable que podemos ajustar a las actividades de codificar, diseñar, probar y escuchar están sobrecargando el proyecto y los recursos que pusimos en tiempo alcance y calidad no son suficientes para equilibrar el proyecto, a pesar de haber asignado una cantidad al costo.
    4.¿Cuál son las fases del proceso de desarrollo de XP?
El ciclo de vida ideal de XP consiste de seis fases:

Fase I: Exploración
En esta fase, los clientes plantean a grandes rasgos las historias de usuario que son de interés para la primera entrega del producto. Al mismo tiempo el equipo de desarrollo se familiariza con las herramientas, tecnologías y prácticas que se utilizarán en el proyecto. (:..) La fase de exploración toma de pocas semanas a pocos meses, dependiendo del tamaño y familiaridad que tengan los programadores con la tecnología.

Fase II: Planificación de la Entrega
En esta fase el cliente establece la prioridad de cada historia de usuario, y correspondientemente, los programadores realizan una estimación del esfuerzo necesario de cada una de ellas. Se determina un cronograma en conjunto con el cliente. Una entrega debería obtenerse en no más de tres meses. Esta fase dura unos pocos días.

Fase III: Iteraciones
Esta fase incluye varias iteraciones sobre el sistema antes de ser entregado. El Plan de Entrega está compuesto por iteraciones de no más de tres semanas. Al final de la última iteración el sistema estará listo para entrar en producción.
Los elementos que deben tomarse en cuenta durante la elaboración del Plan de la Iteración son: historias de usuario no abordadas, velocidad del proyecto, pruebas de aceptación no superadas en la iteración anterior y tareas no terminadas en la iteración anterior. Todo el trabajo de la iteración es expresado en tareas de programación, cada una de ellas es asignada a un programador como responsable, pero llevadas a cabo por parejas de programadores. Wake en proporciona algunas guías útiles para realizar la planificación de la entrega y de cada iteración.

Fase IV: Producción
La fase de producción requiere de pruebas adicionales y revisiones de rendimiento antes de que el sistema sea trasladado al entorno del cliente. Al mismo tiempo, se deben tomar decisiones sobre la inclusión de nuevas características a la versión actual, debido a cambios durante esta fase.

Fase V: Mantenimiento
Mientras la primera versión se encuentra en producción, el proyecto XP debe mantener el sistema en funcionamiento al mismo tiempo que desarrolla nuevas iteraciones. Para realizar esto se requiere de tareas de soporte para el cliente.

Fase VI: Muerte del Proyecto
Es cuando el cliente no tiene más historias para ser incluidas en el sistema. Esto requiere que se satisfagan las necesidades del cliente en otros aspectos como rendimiento y confiabilidad del sistema. Se genera la documentación final del sistema y no se realizan más cambios en la arquitectura. La muerte del proyecto también ocurre cuando el sistema no genera los beneficios esperados por el cliente o cuando no hay presupuesto para mantenerlo.

    5. ¿Qué es una historia de usuario?
Las historias de usuario son la técnica utilizada en XP para especificar los requisitos del software. Se trata de tarjetas de papel en las cuales el cliente describe brevemente las características que el sistema debe poseer. En cualquier momento historias de usuario pueden romperse, reemplazarse por otras más específicas o generales, añadirse nuevas o ser modificadas y cada historia de usuario es lo suficientemente comprensible y delimitada para que los programadores puedan implementarla en unas semanas.

Beck en su libro presenta un ejemplo de ficha en la cual pueden reconocerse los siguientes contenidos: fecha, tipo de actividad, prueba funcional, número de historia, prioridad técnica y del cliente, referencia a otra historia previa, riesgo, estimación técnica, descripción, notas y una lista de seguimiento con la fecha, estado cosas por terminar y comentarios.


A continuación presentamos un mapa conceptual que representa todo lo que presentamos anteriormente:



Por último mostramos una presentación donde damos una solución al problema 


Bibliography

Penadés, P. L.-M. (n.d.). Métodologías ágiles para el desarrollo de software: eXtreme Programming (XP). Retrieved from Cyta: http://www.cyta.com.ar/ta0502/v5n2a1.htm
Robles, G. (2002, Octubre 10). Programación eXtrema y Software Libre. Retrieved from http://es.tldp.org/Presentaciones/200211hispalinux/ferrer/robles-ferrer-ponencia-hispalinux-2002.html
Silverio, E. E. (2008, Julio 13). Programacion Extrema. Retrieved from SlideShare: http://es.slideshare.net/edgarespinoza/programacion-extrema
Valverde, D. (n.d.). Introdución a la Programación Extrema. Retrieved from http://www.davidvalverde.com/blog/introduccion-a-la-programacion-extrema-xp/


viernes, 26 de febrero de 2016

Método de la Ruta Crítica

El método CPM o Ruta Crítica es frecuentemente utilizado en el desarrollo y control de proyectos. El objetivo principal es determinar la duración de un proyecto, entendiendo éste como una secuencia de actividades relacionadas entre sí, donde cada una de las actividades tiene una duración estimada.
EJEMPLO: A continuación se presenta un resumen de las actividades que requiere un proyecto para completarse. El tiempo de duración de cada actividad en semanas es fijo. Se solicita que estime la duración total del proyecto a través del método CPM.
A continuación se presenta el diagrama:
Caminos que se pueden seguir:



Por lo tanto, en nuestro ejemplo la ruta crítica (única) esta conformada por las actividades A-C-G-I-K-M-P-R-T con una duración total de horas.

El análisis de un proyecto


Requerimientos funcionales

MODULO 1: REGISTRO

Submódulo: Registro Administrador
Al inicio el software registrará un único administrador requiriendo los siguientes datos:
  1.  Nombre
  2.  Correo
  3.  Contraseña
Con estos datos, el sistema dará de alta al administrador y le proporcionará su ID, el cual no se podrá cambiar pero si lo desea podrá cambiar sus datos accediendo al submódulo cambio de información.

Submódulo: Registro de Clubs
El administrador podrá registrar a todos los clubs y para ello se pedirán los siguientes datos:
  1. Nombre del club
  2. Dirección  club
  3. Nombre del entrenador principal
  4. Correo
  5. Contraseña
Submódulo: Registro de Jueces
Se crearán cuentas para los jueces pidiendo los siguientes datos:
  1. Nombre
  2. Contraseña
Submódulo: Registro tesorero
El administrador registrará al  tesorero con los siguientes datos:
  1. Nombre
  2. Dirección
  3. Teléfono
  4. Correo
  5. Contraseña

MODULO 2: COMPETENCIAS

Submódulo: Registro de competencias
El administrador registrará las competencias con los siguientes datos:
  1. Nombre de la competencia
  2. Lugar
  3. Jueces que calificarán
Submódulo: Registro participantes
Cada club registrará a sus participantes con los siguientes datos:
  1. Apellido paterno
  2. Apellido materno
  3. Nombre
  4. Fecha de nacimiento
  5. Clase (nivel)
El sistema determinará automáticamente su clasificación

MODULO 3: CALIFICACIONES

Submódulo:  Asignación de calificaciones
Cada juez deberá ir guardando la calificación de cada participante en los siguientes aparatos: Piso, viga, barras, salto.

Submódulo: Suma total de calificaciones (All Around)
El sistema sumará las calificaciones de todas las participantes

Submódulo: Obtención de primeros lugares
El sistema, de acuerdo a como se especifique obtendrá los primeros 6 lugares ya sea por aparato o sólo por el (All around)

Submódulo; Impresión de las memorias


Requerimientos no funcionales

Para un mejor manejo, entendimiento y calidad de Kobra Management se tienen que tener en cuenta los siguientes puntos:
  • Se debe capacitar al cliente acerca del funcionamiento del sistema para un mejor entendimiento del mismo
  • El sistema debe contar con un manual de usuario para la consulta de las funciones del sistema así como de su manejo
  • El sistema debe de ejecutarse en  todos los navegadores, tanto para dispositivos móviles o computadoras
  • Debe de tener un entorno gráfico adecuado al ambiente del gimnasio
  • Su uso debe de ser lo más sencillo posible para los usuarios
  • Debe de almacenar, consultar, actualizar la información que se requiera sin que se afecte el tiempo de respuesta
  • Debe  estar disponible en cualquier momento que se le solicite en el periodo de tiempo en el que el gimnasio esté abierto
Requerimientos de sistema

Para la instalación de Kobra Management se necesitará de un computador con las siguientes especificaciones
  • Sistema operativo indistinto
  • Procesador de 64 bits
  • Memoria RAM 2.00 GB
  • Memoria de disco libre: 50 MB
  • Navegador Google® Chrome™ Versión 45.0.2454.101 m
  • NetBeans IDE 8.0.2
  • MYSQL® Server Versión 5.6
  • Java Virtual Machine
  • JDK 1.8.0_60
  • Java EE 7
  • Servidor Apache Tomcat 8.0.15.0 o GlassFish 4.1

Asimismo, para su instalación en dispositivos móviles se requerirá de:
  • Sistema operativo Android® LoliPop
  • Procesador Dual Core
  • Memoria de disco Disponible: 15 MB
  • Memoria interna: 4 GB EMMC + 512 MB RAM

Justificación

Hemos decidido realizar este proyecto debido a que podemos terminarlo con éxito y calidad, además, estamos trabajando para una institución gubernamental que hasta ahora no cuenta con un eficiente sistema de administración para controlar el registro de sus afiliados,  así como sus registros de campeonatos y calificaciones.
Objetivo General

Optimizar el proceso que se lleva a cabo en las competencias así como facilitar el proceso de la obtención de los primeros lugares evitando así que los capturistas cometan errores.

Objetivos específicos
  1. Cada club podrá inscribir a sus participantes para tener un mayor control sobre los registros
  2. Se creará una sección para que los jueces puedan ir enviando las calificaciones de cada participante.
  3. El sistema obtendrá los primeros lugares de acuerdo a cómo se especifique.
Alcance
MODULO 1: REGISTRO
  • Registro Administrador
  • Registro Jueces
  • Registro de clubs
  • Registro tesorero
MODULO 2: COMPETENCIAS
  • Registro de competencias
  • Registro de participantes
  • Aceptación de las participantes
  • Designación de Jueces
MODULO 3: CALIFICACIONES
  • Asignación de calificaciones
  • Suma total de calificaciones (All Around).
  • Obtención de primeros lugares
  • Impresión de las memorias

Proceso de negocio


sábado, 20 de febrero de 2016

Proceso de Software

Introducción:

Aunque los procesos de software nos guiarán en nuestro camino hacia la creación de un producto de software, realmente no existe un proceso del software ideal ya que algunos sistemas como los críticos requerirán un desarrollo muy estructurado, mientras los sistemas de negocio con requerimientos rápidamente cambiantes se necesitará un proceso flexible y ágil.

El proceso de Software 

A continuación, presentamos un mapa conceptual en el que se muestra brevemente lo que es un proceso de software, de lo que se compone y algunos ejemplos de los métodos que existen.





Como se muestra en el mapa, existen actividades básicas que se deben aplicar en el proceso de software, a continuación explicaremos a lo que se refiere cada una:
  • Especificación de software: Se debe definir la funcionalidad de software y las restricciones de operación. 
  • Diseño e implementación del software: Se debe validar el software que cumpla su especificación. 
  • Validación del software: Se debe validar el software para asegurar que hace lo que el cliente desea. 
  • Evolución del software: El software debe evolucionar para cubrir las necesidades cambiantes del cliente.
En la siguiente presentación podrán encontrar más información sobre algunos de los modelos del proceso de software.


Modelos del proceso del software from Samara Ruiz Sandoval

Preguntas

1.    ¿Qué es el proceso del software?
a)    Es la recopilación de los requerimientos del software.
b)    Es la generación de programas y códigos en un lenguaje específico.
c)    Son las actividades que guían la elaboración del software
d)    Es la metodología en el generación de código
e)    Es la aplicación del modelo vista controlador del desarrollo de software

2.    Los modelos de  proceso del software:
a)   Muestran las necesidades del cliente
b)    Son una abstracción del proceso del software
c)    Se utilizan en proyectos extensos de más de 6 meses
d)    Son un modelo ágil de programación
e)    Son diagramas que muestran el proceso de la ingeniería.

3.    No es una actividad común en el proceso del software
a)    Especificación de software
b)    Diseño e implementación del software.
c)    Validación del software.
d)    Soporte de software
e)    Evolución del software

4.    Son considerados modelos iterativos
a)    Modelo de cascada.
b)    Incremental
c)    Ingeniería de software basada en componentes
d)    Desarrollo en Espiral
e)    Incisos b y d
f)     Ninguno de los anteriores

5.    Utiliza  o adapta software comercial de ser posible
a)    Modelo de cascada.
b)    Incremental
c)    Desarrollo Evolutivo.
d)    Ingeniería de software basada en componentes
e)    Desarrollo en Espiral

6.    Modelo que tiene que finalizar una etapa para poder acceder a otra
a)    Modelo de cascada.
b)    Incremental
c)    Desarrollo Evolutivo.
d)    Ingeniería de software basada en componentes
e)    Desarrollo en Espiral

7.    Son desarrollos evolutivos
a)    Modelo de cascada.
b)    Desarrollo Exploratorio.
c)    Prototipos desechables
d)    Incisos a y b
e)    Incisos  b y c

f)     Ninguno de los anteriores