miércoles, 1 de junio de 2016

Programación Extrema o Extremme Programming (XP) como una herramienta automatizada


Nombre: Gustavo Adolfo Carbajal Peña
Boleta: 2013602335
Materia: Herramientas automatizadas
Secuencia: 2CM40







Proyecto de vida: Terminar de estudiar la carrera y descubrir muchos cursos e información que me puedan dar sabiduría para poder emplearla en beneficio de mío y de la humanidad. Tener un trabajo estable y bien pagado, tener muchas propiedades y muchos amigos.








HERRAMIENTAS AUTOMATIZADAS CASE

Una herramienta automatizada también conocida como herramienta CASE (Computer Aided Software Engineering ó Ingenieria de Software Asistida por Computadora) es una herramienta que sirve con el fin de ayudar y facilitar la automatización para que así los programas puedan desarrollarse y funcionar de un modo mas fácil, entendible, optimo, y funcional.

MAPA CONCEPTUAL CASE:




_________________________________________________________________________________


**********HISTORIA DE LA COMPUTACIÓN**********

Aquí explico la historia de la computación con una linea del tiempo y sobre todo como surgieron los lenguajes de programación, en que fechas explicando los lenguajes desde primera generación hasta cuarta generación y los autores que los crearon.





_________________________________________________________________________________

Herramientas automatizadas y sus metodologías mas importantes

Existen muchas herramientas automatizadas, todas ellas son construidas con ayuda de una o mas metodologías para su correcto funcionamiento y facilitar su construcción y aplicación por parte del usuario. Estas metodologías son:

Método de cascada
Método incremental
Método prototipal
Método programación extrema

NOTA:
En base a lo del curso en lo que respecta a mi equipo vimos y expusimos la programación extrema como metodología en cuanto a la materia de herramientas automatizadas. Esta información se vera mas abajo.

_________________________________________________________________________________

Programación Extrema o Extremme Programming (XP)

La programación extrema es una metodología en la materia de herramientas automatizadas que como el nombre de la materia lo dice sirve para automatizar o facilitar la automatización de diferentes herramientas para que por si solas puedan realizar un funcionamiento autónomo sin que una persona intervenga en el proceso. Hay que mencionar que durante la construcción de un programa es necesaria la intervención de los programadores y diseñadores para su construcción, ya estando construido el programa es cuando deberá funcionar automáticamente sin la intervención de un ente externo demostrando con eficacia la automatización del programa.

La programación extrema es una metodología de desarrollo ágil. En esencia se puede definir como un conjunto de pasos de diversas metodologías. Esta metodología agarra lo mejor de cada metodología de las muchas que hay, para así trabajar con las mejores conformando una sola, todo esto para un desarrollo mas agradable y sencillo.
El autor principal de esta metodología es Kent Beck, quien eligió algunas características de otras metodologías y las relacionó de forma que cada una complementara a la otra.
Esta metodología tiene como base la simplicidad y como objetivo principal la satisfacción del cliente; para lograrlo se deben tener en cuenta cuatro valores fundamentales: comunicación, simplicidad, retroalimentación y coraje.


  • Comunicación: Esto se refiere a tener constante comunicación con el equipo de trabajo, de esta forma se reducen los cambios inesperados.
  • Simplicidad: Se refiere que ante todo y sin importar que funcionalidad requiera el usuario en su sistema, este debe ser fácil. El diseño debe ser sencillo y amigable al usuario, el código debe ser simple y entendible, programando solo lo necesario y lo que se utilizara.
  • Retroalimentación: Es la comunicación constante entre el desarrollador y el usuario.
  • Coraje: Se refiere a la valentía que se requiere al modificar o eliminar el código que se realizó con tanto esfuerzo.


Dentro de la programación extrema se tienen 12 principios que llevan o guían el desarrollo con esta metodología:


  1. El principio de pruebas.
  2. Proceso de planificación.
  3. El cliente en el lugar.
  4. Programación en parejas.
  5. Integración continua.
  6. Refactorización.
  7. Entregas pequeñas.
  8. Diseño simple.
  9. Metáfora.
  10. Propiedad colectiva del código.
  11. Estándar de codificación.
  12. La semana de 40 horas.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  1. El principio de pruebas: Establecer un periodo de pruebas de aceptación del programa, en el cual se definirán las entradas y salidas del programa. Aquí se define básicamente lo que debe hacer el software desarrollado.
  2. Proceso de planificación: el cliente o su representante escribirá sus necesidades para definir concretamente las actividades que el sistema debe realizar. En esta fase se creará un documento que contendrá historias de usuario que forman el plan de liberación, el cual define los tiempos de entrega de la aplicación para poder recibir feedback del cliente.
  3. El cliente en el lugar: Se le dará poder para poder determinar los requisitos de la aplicación, definir la funcionalidad y dar prioridad a determinadas cosas. Se le dará poder para determinar los requisitos de la aplicación, definir la funcionalidad y dar prioridad a determinadas cosas. Gracias a esto, habrá una fuerte interacción con los programadores, disminuyendo así el tiempo de comunicación y la cantidad de documentación a redactar. El cliente estará con el equipo durante todo el proceso de desarrollo del proyecto.
  4. Programación en parejas: Consiste en escribir código en parejas compartiendo una sola máquina. Según los experimentos ya realizados sobre este método, se producen mejores y más consistentes aplicaciones a igual o menor coste.
  5. Integración continua: Consiste en implementar progresivamente las nuevas características del software.
  6. Refactorización: Mediante la constante eliminación de código duplicado y/o ineficiente los equipos de programación mejoran el diseño del sistema. El código se evalúa continuamente para ofrecer la mayor calidad posible.
  7. Entregas pequeñas: El producto es evaluado en un ambiente real mediante la colocación de un sistema sencillo en producción el cual se actualizará rápidamente, es decir, cada 2 semanas (3 como máximo) el software será puesto en producción.
  8. Diseño simple: el mejor programa será aquel que cumpla con los requisitos y sea más simple. Es importante proporcionar un software que cubra las necesidades de un cliente. Ni más ni menos.
  9. Metáfora: Expresa la visión evolutiva del proyecto y define los objetivos del sistema mediante una historia.
  10. Propiedad colectiva del código: el código tiene propiedad compartida. Nadie es propietario de nada, ni siquiera de lo que ha desarrollado. Todos los programadores son “dueños” de todo el código. Según esta metodología, cuantos más programadores haya trabajando en una parte de código, menos errores tendrá.
  11. Estándar de codificación: define las reglas para escribir y documentar código, además de cómo se comunican las diferentes piezas de código desarrolladas por diferentes equipos. El objetivo de esto es que parezca que el código ha sido escrito por una única persona.
  12. La semana de 40 horas: los programadores cansados escriben peor código .Es importante minimizar las horas extras y mantener a los programadores frescos y descansados. De esta manera, se generará mejor código. Si es necesario hacer horas extras, quiere decir que el proyecto está mal planificado.
_________________________________________________________________________________

PROYECTO

En base a lo visto en el curso mi equipo y yo decidimos crear una aplicación relacionada con la herramienta XP Extremme Programming ó Programación extrema utilizando el "Lenguaje de Modelado Unificado UML" para detectar los errores en cuestión de los casos de uso, también fue usado para documentar el proceso de desarrollo de la aplicación.

Lo que nosotros tratamos de hacer es crear un nuevo SAES. El SAES  se encuentra en la pagina de UPIICSA (Unidad Profesional Interdisciplinaria de Ingeniería y Ciencias Sociales y Administrativas) escuela del Instituto Politécnico Nacional (IPN). El SAES es donde los alumnos de la UPIICSA estamos inscritos y donde podemos consultar nuestras calificaciones, además de calificar a nuestros maestros y realizar tramites académicos.
Actualmente los errores que vimos en la pagina del SAES son los siguientes:


  • Horario: A veces no muestra el horario, dice que no se ha realizado la reinscripción.
  • Comprobante: No aparece el horario o no aparece el botón de comprobante.
  • Expedición de constancia: No lleva nada.
  • Expedición de boleta: No muestra nada.
  • Kardex: A veces no muestra nada.
  • Cita de reinscripción: Muestra años anteriores o fechas incorrectas.
  • Horario de clase: Tarda en mostrar horarios disponibles o a veces no carga la pagina.
  • Mapa curricular: No muestra nada en ocaciones.


¿Que lenguaje o interpretes se usaron para el desarrollo de la aplicación?
Se han programado ficheros web en PHP para poder correrlo en servidores, estructurado en HTML y maquetado con CSS, también PHP ha sido el vinculo entre los ficheros dinámicos y la base de datos, esta base de datos está en MySQL y las variables son extraídas por JavaScript para diferenciar las cuentas de los alumnos.





Aquí muestro la codificación de una de las interfaces del proyecto, lo que vendría siendo la interfaz principal ya estando dentro de la cuenta de usuario:

Aquí está la base de datos en MySQL de lo que vendría a conformar la pagina del SAES hecha por el equipo:


Aquí la interfaz del SAES original pidiendo clave y contraseña:

Aquí la interfaz del SAES hecha por nosotros para reemplazo de la pagina principal por esta:
-Si nos damos cuenta ahora para ingresar nombre y password para entrar a la cuenta de alumno tenemos que ingresar desde arriba los datos, todo con el resto de modificaciones que queremos implementar quedaría mejor y diferente de lo que es hoy en día.


Siempre cuando tratamos de acceder a una de las paginas del SAES nos aburrimos de esperar, para eso tenemos interfaces de carga donde en el futuro tendrán noticias del politécnico mientras esperamos a acceder a las diferentes paginas:

Ya estando dentro de la cuenta de usuario esta es la pagina que nos aparecería para mostrarnos nuestra información:

Para la responsabilidad hemos adaptado los ficheros para que se puedan manejar en cualquier dispositivo, esto gracias a las reglas de negocio las cuales dictan un pixelaje máximo y un porcentaje activo en todo momento y en todos los atributos.
La comodidad de usar la aplicación es parte de las reglas de negocio establecida en UML y parte de la programación extrema ya que el código está relativamente ordenado, por lo que otros desarrolladores pueden darle seguimiento.

Vista responsiva desde un dispositivo móvil: