The Real World

--Originally published at cerros27

Este fue un tema que considero muy muy importante. Ya que después de 4 capítulos del libro por fin tocamos el tema del código en el mundo real. Ya que a lo largo de la carrera son pocas las veces que en verdad enfrentamos nuestro código a la vida real. A lo factores que pueden arruinar nuestro código por completo; eso sin importar lo bien que funcionara en el laboratorio de pruebas. Y la mejor arma que tenemos para hacer de nuestro código un código funcional son los casos de uso.

Los casos de uso nos permiten desarrollar todos los posibles factores que a los que nuestro código se puede enfrentar. Y una vez que identifiquemos cuales son las circunstancias posibles podemos empezar a “proteger” nuestro código para que sepan como responder ante las posibles variables y cambios del mundo real.the-real-world.jpg

Mastery 14 – OO and Agile

--Originally published at cerros27

Para esta entrada voy a dar una pequeña introducción al uso de Essential Scrum. Una metodología Agile muy útil para programación orientada a objetos.

Pero ¿qué es Essential Scrum? Tal como menciona Kenneth S. Rubin en su libro Essential Scrum: A Practical Guide to the Most Popular Agile Process

Scrum is based on a small set of core values, principles, and practices (collectively the Scrum framework). Organizations using Scrum should embrace the Scrum framework in its entirety, perhaps not through the entire organization all at once, but certainly within the initial teams that will use Scrum. Embracing all of Scrum does not mean, however, that organizations must implement Scrum according to some cookiecutter, one-size-fits-all formula. Rather, it means that organizations should always stay true to the Scrum framework while choosing an appropriate blend of approaches for their Scrum implementations.

Se puede decir que Essential Scrum combina los valores, principios y prácticas de Scrum con un conjunto de enfoques probados y eficaces que son consistentes. Algunos de estos enfoques serán apropiados para su situación; otros no lo serán. Cualquier enfoque deberá ser inspeccionado y adaptado a sus circunstancias. Y es muy importante tener esto en mente. Scrum no será exactamente igual para todos los problemas. Pero si podemos ajustarlo y adaptarlo a nuestras circunstancian y así poder desarrollar de la manera más eficaz nuestro código.51oKcyzlfBL.jpg

Aunque en lo personal nunca he tenido la oportunidad de trabajar con scrum por lo tanto desconozco como es la experiencia de desarrollar código con este enfoque, pero eso no cambian el hecho de que sea una de las metodologías más utilizadas en el mundo del desarrollo de software.

Mastery 13 – Test Driven Development

--Originally published at cerros27

Test-driven development (TDD), o Desarrollo guiado por pruebas de software es una práctica de programación que consiste en escribir primero las pruebas (generalmente unitarias), después escribir el código fuente que pase la prueba satisfactoriamente y, por último, refactorizar el código escrito.

El primer objetivo que se busca con esta técnica es reducir la cantidad de bugs presentes en el programa, ya que los bugs se traducen en mayor costo de desarrollo y mantenimiento.

El segundo objetivo (el cual en lo personal considero mas importante) es reducir y eliminar la presencia de código innecesario.

El TDD fue creado por Kent Beck (quien también inventó Extreme Programming y JUnit), y en esencia, es un proceso a seguir, lo cual ya lo hace diferente a un simple enfoque de pruebas primero.

1_tZSwCigaTaJdovyWlp5uBQ.jpeg

A continuación se muestra un diagrama de como quedaría la mitología ágil, obtenido de la página paradigma digital 

Captura.PNG

Y me gustaría terminar añadiendo un pequeño video que resume de manera concisa en que consisten las bases de método TDD.

Course Evaluation

--Originally published at cerros27

Esta es mi evaluación personal del curso a aparte de la ya realizada ECOA.

En lo personal me gusto mucho la materia. El profesor Ken me parece uno de los mejores profesores que he tenido. Me gusta que haga la clase tan dinámica. Por cuestiones personales tuve mas faltas en la materia de lo que me hubiera gustado. Me gustaría que la clase fuera mas temprano, pero me imagino que eso es cuestión administrativa. Lo único más relacionado a la clase que no me gusto fue la parte de los blogs. Pero eso es de manera muy personal, ya que no soy muy fan de escribir. Fuera de eso me pareció un excelente curso.

Mastery 12 – Testing in OO

--Originally published at cerros27

Hacer las pruebas a nuestro código en busca de bugs o fallos en la lógica es algo esencial para obtener un código eficaz y robusto. Sin embargo, hay un problema. Y es que hacer esto de forma manual trae consigo dos problemas. El primero y mas obvio es que nos va a llevar mucho tiempo, ya que entre mas complejo sea nuestro código son mas las variables que debemos tomar en cuenta. El segundo es que deja abierta la puerta para el error humano o no haber revisado ciertas variables o pasarlas por alto. Y es ahí donde entra Junit.

junit5-banner.png

Yo he trabajado en lo personal condicha aplicacion para mis programas escritos en java implementado el frameworks de Junit en eclipse. Es una herramienta genial, ademas de ser gratuita y open-source.

JUnit se puede definir como

un Framework Open Source para la automatización de las pruebas (tanto unitarias, como de integración) en los proyectos Software. El framework provee al usuario de herramientas, clases y métodos que le facilitan la tarea de realizar pruebas en su sistema y así asegurar su consistencia y funcionalidad.

Segun la definicion de la pagina web de la junta de andalucia

Por último, los dejo con pequeño tutorial sobre JUnit en uno de sus ejemplos más básicos, es testeo de un código para implementar un calculadora básica.

 

Mastery 11 – Verification and Validation

--Originally published at cerros27

La verificación y validación de software (V&V) es una parte esencial del ciclo de vida del desarrollo de software. El Institute of Electrical and Electronics Engineers (IEEE) lo tiene categorizado como V&V IEEE 1012. Y en su página web podemos encontrar una definición muy puntual de lo que implica la verificación y validación.

This verification and validation (V&V) standard is a process standard that addresses all system, software, and hardware life cycle processes including the Agreement, Organizational Project-Enabling, Project, Technical, Software Implementation, Software Support, and Software Reuse process groups. This standard is compatible with all life cycle models (e.g., system, software, and hardware); however, not all life cycle models use all of the processes listed in this standard. V&V processes determine whether the development products of a given activity conform to the requirements of that activity and whether the product satisfies its intended use and user needs. This determination may include the analysis, evaluation, review, inspection, assessment, and testing of products and processes.

1200px-IEEE_logo.svg.png

Cabe mencionar que contrario a lo que se pueda pensar verificación y validación son dos cosas diferentes. La verificación es el proceso, para asegurarnos de que estamos construyendo el producto correctamente, es decir, verificar los requisitos que tenemos y verificar si estamos desarrollando el producto en consecuencia o no.

Mientras que la validación es el proceso, ya sea que estemos construyendo el producto correcto, es decir, validar el producto que hemos desarrollado es correcto o no.

css.php