jueves, noviembre 15, 2007

Problema de Definiciones

Últimamente he tenido un par de problemitas con definiciones de Ingeniería de Software.

El primer problema surgió cuando estaba discutiendo sobre si Linux era o no usable. Yo sostenía que Linux era bastante usable, era claro de entender, simple y demás. "Fácil de usar" era mi definición pero luego la persona con la que estaba hablando empezó a asociar a usabilidad cosas como "intuitivo " y "fácil de aprender a usar".

Yo todavía me quedo con mi definición.

La otra y más traumática fue con la definición de Transparencia. Para mi transparencia tenía mucho que ver con lo que mencioné en otra entrada.

Para mi básicamente era simplicidad y ocultación. Mi definición incluía muchas cosas... para hacerme entender esta digamos RMI, RMI es un mecanismo de invocacion remota de objetos en Java. Esto permite que si ud tiene un objeto en una máquina pueda llamar métodos de este desde otra de manera Simple y Ocultando toda la complejidad de abajo (Sockets, Marshaling y otras cosas). Es decir RMI era para mi un método transparente de invocación remota de objetos.

Ahora bien, Leyendo "The Art of Unix Programming" Me di cuenta que existe una definición totalmente diferente. Para Eric Raymond Transparencia tiene que ver con la facilidad de entrar en el código, de ver su funcionamiento. El habla de "discoverability" algo así como "la habilidad de descubrir".

Eric Raymond menciona por ejemplo, como una opción --verbose que diga todo lo que hace un programa, hace de éste mas transparente.

Pensemos por ejemplo en un reloj... imaginémoslo ahora transparente. Todos los engranajes se ven y el funcionamiento es fácil de descubrir.

La pregunta que me surge es... ¿De donde salió la definición que tenía inicialmente?

1 comentario:

febuiles dijo...

Creo que "Fácil de usar" está _muy_ ligado a lo "Intuitivo" de un programa. Si un programa no es intuitivo te va a tocar usar un manual para aprender a hacerlo, y habrás perdido lo de "fácil de usar" (compara el bloc de notas contra LyX o cualquier herramienta de LaTeX).

Por otro lado, tu primera definición de transparencia es correcta (RMI), o al menos, en ese contexto se usa normalmente (casi siempre, con ejemplos de software sobre redes).

Creo que el ejemplo de ESR va más por el lado de un "diseño trasparente [al programador" que de software o funcionalidades transparentes en sí.