gratiszona

Erase una vez, en un reino no muy lejano, un rey que convoco a dos

Erase una vez, en un reino no muy lejano, un rey que convoco a dos
de sus consejeros para una prueba. Les mostro a ambos una caja
metalica brillante con dos ranuras en la parte superior, un boton de
control y una palanca.
'?Que pensais que es eso?', les pregunto.
Uno de los consejeros, que era ingeniero, contesto el primero. 'Es una
tostadora', dijo.
El rey le pregunto '?Como le disenariais un ordenador incorporado?'.
El ingeniero respondio: 'Muy facil. Utilizando un controlador de
cuatro bits, escribiria un sencillo programa que leyera el boton de
control de la tostadora y cuantificaria su posicion a uno de los 16
diferentes niveles de tostado, desde el blanco nieve al negro
carbon. El programa utilizaria el nivel de tostado como un indice a
una tabla de 16 elementos con los valores iniciales del
temporizador. Luego conectaria los elementos calefactores y pondria en
marcha el temporizador con el tiempo inicial seleccionado en la tabla
anterior. Al finalizar dicho tiempo, desconectaria los calefactores y
haria saltar las tostadas. Vuelva la semana que viene y le mostrare un
prototipo funcionando'.
El segundo consejero, un cientifico informatico, reconocio
inmediatamente el peligro de un razonamiento tan corto de vista y
dijo: 'Las tostadoras no solo transforman el pan en tostada, tambien
se utilizan para calentar reposteria congelada. Lo que su majestad ve
delante suyo es, en realidad, un preparador de comida para
desayunos. A medida que los subditos de su reino se vuelvan mas
sofisticados, pediran mas funcionalidad. Necesitaran un preparador de
desayunos que tambien pueda cocinar salchichas, freir bacon y hacer
huevos revueltos. Una tostadora que haga solo tostadas, pronto se
convertira en algo obsoleto. Si no miramos al futuro, tendremos que
redisenar la tostadora completamente en poco tiempo'.
'Con esto en mente', prosiguio el consejero, 'podemos formular una
solucion mas inteligente al problema. Primero, crearemos el conjunto
de comidas para desayuno: Especializando este conjunto en subclases:
grano, cerdo y producto avicola. El proceso de especializacion
continuaria con el grano dividido en tostadas, bollos, tortas y
bizcochos; el cerdo dividido en salchichas, bacon y longanizas; y los
productos avicolas en huevos revueltos, huevos duros, huevos fritos y
varias clases de tortillas'.
'La clase de tortilla de jamon y queso, merece especial atencion
porque debe heredar caracteristicas de los conjuntos: cerdo, productos
lacteos y avicolas. Vemos por tanto, que el problema no puede ser
resuelto adecuadamente sin herencias multiples. En tiempo de
ejecucion, el programa debe crear el objeto adecuado y enviarle un
mensaje que diga: ! Cocinate!. La semantica del mensaje depende
evidentemente, de la clase de objeto de manera que tenga un
significado diferente para el objeto tostada que para el objeto huevos
revueltos'.
'Revisando el proceso hasta ahora, vemos que la fase de analisis ha
revelado que el requisito principal es cocinar cualquier
clase de comida para desayuno. En la fase de diseno, hemos descubierto
algunos requisitos derivados. Especificamente, necesitamos un lenguaje
orientado al objeto con herencia multiple. Es evidente, que los
usuarios no desean que se les enfrien los huevos mientras se cocina el
bacon, por tanto tambien se requiere la capacidad de poder tener
procesos concurrentes'.
'No debemos olvidar la interface con el usuario. La palanca para
introducir la comida no tiene versatilidad y el boton de control es
confuso. Los usuarios no compraran el producto a menos que tenga una
interfase grafica amigable. Cuando el preparador de desayunos se
enchufe, los usuarios veran una bota de vaquero en la pantalla. El
usuario la apuntara con el raton y el mensaje 'Arrancando ULTRIX (tm)
V 8.3' aparecera en la pantalla. (Por cierto, la version 8.3 de ULTRIX
deberia de salir antes de que el producto aparezca al
mercado). Entonces el usuario apuntaria con el raton en un menu tipo
Pull-Down aquellos alimentos que desea cocinar'.
'Habiendo tomado la sabia decision de especificar primero el software
en la fase de diseno, todo lo que queda es escoger una plataforma
hardware adecuada para la fase de implementacion. Una VAXStation 7000
con 48 Mb de memoria, 300 Mb de disco duro y un monitor VT2000 deberia
ser suficiente. Si se selecciona un lenguaje multitarea, orientado al
objeto, que soporte herencia multiple con un GUI (Graphical User
Interface) incorporado, la escritura del programa se arma en un visto
y no visto.'
Y remato la faena diciendo, 'Imaginese S.M. La dificultad que
habriamos tenido si hubieramos adoptado alocadamente una estrategia
con diseno previo del hardware que nos habria condenado a un
microcontrolador de 4 bits'.
Una vez escuchados sus consejeros, el rey manda arrojar al cientifico
informatico a los cocodrilos. Y vivieron felices y comieron perdices
(y tostadas).
Anterior: ingenieros software
Siguiente: msdos