Bienvenidos sean a este post, hoy veremos otra seccion de como desarrollar proyectos.
En el post anterior mencionamos que uno de los pasos mas cruciales es la reunion de la informacion para el proyecto. El diseño y planeo del testing tambien puede ser considerado como un paso tan crucial como el anterior citado. Si inicias un proyecto sin diseñarlo primero, esto puede tornarse en casi imposible. Si bien existen citas donde dicen que nada es imposible, en la vida real esto no es asi porque hay algunas cosas imposibles y una de ellas es trabajar en un proyecto sin diseñarlo primero.
Esto hace que el proceso de diseño sea uno de los pasos mas interesantes, porque esto nos fuerza a pensar, dibujar, pensar nuevamente, limpiar todo, y comenzar nuevamente. Esto hace que muchas caracteristicas del proyecto son descubiertas con el diseño. Para diseñar un proyecto, deberiamos iniciar desde arriba. Primero de todo, listaremos todas las entidades y procesos que de alguna forma esten involucrados. Tomemos nuevamente como ejemplo a nuestro proyecto de e-commerce, hagamos el siguiente listado:
- Usuarios
- Registro y autorizacion
- Productos
- Transacciones
- Galpones (contiene los productos)
- Envio
Esto se considera como un diseño de nivel alto, un punto de inicio para moverse hasta su diseño final. Por el momento nos centraremos mas en el diseño pero tambien veremos como se realiza el testing.
Con nuestra lista creada, el siguiente paso es decomponerlas en mas detalladas entidades para luego poder transformarla en clases. Por ejemplo, para esto podemos crear un diagrama de flujo donde representaremos a cada uno de ellos y los iremos interconectando. Veamos un ejemplo de como puede ser:

Como pueden presentir, el fino arte de descomponer entidades y procesos en clases y sus respectivas intercomunicaciones requiere de mucha paciencia y consistencia. Tomemos como ejemplo a la entidad Usuarios. Comencemos agregando algunos detalles, el usuario que se registra debe proveer algunos datos como: la direccion de domicilio o entrega, la direccion de e-mail, asi como tambien sus datos de tarjeta de credito. En un vistazo clasico, se genera una clase donde los datos son de tipo privado y de tipo String. En la parte publica tenemos los metodos para modificarlos y recuperarlos. Pero este no puede quedar como tipo String porque mas tarde o mas temprano debemos trabajar con ellos de forma especifica. Supongamos que deseamos poder ordenar alfabeticamente las direcciones de domicilio para facilitar el envio de los productos. No ayuda directamente al usuario pero si a la empresa encargada de los envios, porque podria ordenar las direcciones y saber cuales son los domicilios mas cercanos a cada galpon. Vamos a ver este tema con una representacion basica:
class Usuario
{
public:
// Metodos y contenido de la clase
private:
std::string domicilio_;
// mas codigo para esta clase
};
Como dijimos esta puede ser una mirada simple y clasica para almacenar los datos del usuario. Pero que sucede cuando ocurra lo comentado anteriormente? o peor aun, que sucede con usuarios fuera del pais donde esta el sitio? Podemos crear mas propiedades para almacenar la informacion pero eso haria muy compleja a nuestra clase. Una solucion intuitiva seria convertir al dato de direccion del usuario en un dato complejo, y para ello podemos usar un struct como el siguiente:
struct Domicilio
{
std::string pais;
std::string ciudad;
std::string calle;
int numero;
float latitud{};
float longitud{};
};
Bajo la identificacion de domicilio almcenamos distintos datos como son el pais, la ciudad, la calle, su numero y para algunos casos la latitud y longitud para lugares que no tengan una direccion de domicilio. Con nuestro nuevo struct podemos modificar la clase anterior de la siguiente manera:
class Usuario
{
public:
// Metodos y contenido de la clase
private:
Domicilio domicilio_;
// mas codigo para esta clase
};
Esto facilita mucho las tareas, pero esto no termina aca porque muy probablemente deberemos volver a los primeros pasos y repetir nuevamente. Esto siempre es recomendable hacerlo en esta etapa de diseño porque hacerlo en el momento que trabajemos con el codigo puede llevarnos a grandes demoras.
Sabemos que tanto este diseño como el testing son partes fundamentales y el planeamiento es parte del testing tambien. Porque gracias a este tenemos una idea de como se comporta la aplicacion al final y esta sera las distintas conductas que verificaremos con el testing. En la etapa de testing verificaremos varias conductas, tanto el correcto ingreso de informacion como incorrectas y asi evaluar las conductas de la plataforma, esto ultimo pensado principalmente para evitar ataques maliciosos y hackeos en este.
En resumen, hoy hemos visto el diseño y planeo del testing, una nocion muy basica de que se trata, asi como algunos temas a tener en cuenta. Espero les haya resultado de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
