Frases informáticas

El código sin pruebas no es código.

sábado, 31 de julio de 2021

Definición: Estructurado

Algo se considera estructurado cuando sus partes están anidadas dentro, y todo proceso que comience dentro de una estructura termina dentro, en ningún momento salta fuera.

No hay cabida por ejemplo para gotos que permitían pasar de una estructura a otra.

JSON, YAML o XML son estructurados. A mitad de un JSON no puede empezar otro JSON diferente, ni terminar fuera del original.


Diagramas de componentes vs diagramas de paquetes

El diagrama de paquetes sirve basicamente para agrupar y tener jerarquizado y accesible conjuntos de elementos preferentemente del mismo tipo. Puedes agrupar dentro del mismo paquete un conjunto de casos de uso similares, o de nodos de hardware, o de clases, o de cualquier tipo de elemento.

Un componente indica elementos y conjuntos desplegables en una maquina. Una librería de clases sería un componente, pero no lo serían niveles por debajo como clase, métodos,etc porque no son elementos desplegables.

Un conjunto de clases de un paquete que forman un programa ejecutable, si sería un componente, porque ese paquete formaría parte del componente.

Pero no hay una relación entre componentes y paquetes como para compararlos.

Abstracción vs Modelo

Se define modelo a la obtención a través de la abstracción de la esencia o de lo fundamental de algo que es objeto de nuestro interés. 

La abstracción es el proceso mediante el cual extraemos la esencia de algo, siendo el modelo la consecuencia de ello.

Mediante un proceso de abstracción se obtiene un conjunto de conceptos (el modelo) a partir del cual estudiar el problema.

Un modelo de un partido de fútbol, se podría generar, organizando las extracciones útiles mediante la abstracciones fundamentales que podrían ser: Jugador, Equipo, Balón...

Colaboración vs Relación

Hay que atender aquí a que tratan sobre elementos diferentes. Unos sobre clases y otros sobre objetos instanciados de clases.

Se llama colaboración cuando los objetos de una clase lanzan mensajes a objetos de otra clase. Se dice simplificando que un objeto colabora con otro objeto.

El término relación se aplica para definir las relaciones entre clases, por ejemplo Composición, agregación, asociación...etc

Siguiendo el ejemplo de composición, cuando un objeto es parte de un todo, es una colaboración porque esa estructura se creó precisamente para poder lanzar esos mensajes. 


Definición: Efecto lateral

Es un problema típico en la programación estructurada que fue afrontado por el paradigma funcional. Se basa en el problema de utilizar variables globales que serán modificadas por uno o más métodos. 

int x=0;
function foo(int y)
{
    x++;
    return x+y;
}

Esto implica que llamar a un método varias veces, con los mismos parámetros de entrada, provocará resultados diferentes.

foo(3) = 3
foo(3) = 4
foo(3) = 5

Esto no sucede en el paradigma funcional que tiene como premisa la transparencia referencial.

Definición: Transparencia referencial

Es un término clave del paradigma de programación funcional. Indica que una función solo utilizará los parámetros de entrada para generar un resultado.
No utiliza ningún valor externo, ni variables globales.

int x=0;
function foo(int y)
{
x++;
return x+y;
}


Esta variable X y este tipo de uso no debe existir en el paradigma funcional ya que provocaría efecto lateral.

Ver glosario

Definición: Cosificar

En software, convertir acciones (verbos) en objetos.

Nombrar una clase con un nombre de objeto es mas autoexplicativo que usar un verbo principalmente porque hemos elevado su nivel quedando el verbo original comprendido en un conjunto superior.

En un diagrama de análisis sobre un juego que mueva fichas, se convierte Mover bien, en Movimiento correcto, y Mover mal, en Movimiento incorrecto.

Los verbos solo son una parte del objeto. Cosificar, es transformar lo que solo es una acción, en un objeto que contenga esa propia acción, más otras acciones y características y relaciones.

Un objeto Movimiento aparte de incluir el verbo Mover, entre sus métodos, incluirá otros métodos, atributos y relaciones. 

Definición: Software

Hay varias definiciones. Sin entrar en temas demasiado técnicos, serían estas dos, de las mas aceptadas: "Es la información que le sumi...