miércoles, 7 de mayo de 2014

Una vuelta de 360


Una vuelta de 360 implica volver al punto de partida. Pero también esos 360 grados nos hablan de una experiencia totalmente abarcativa como fue el caso de IBM con el proyecto SYSTEM/360 que en 7 de Abril del 2014 cumplió 50 años. Si, lo sé, ya casi pasó un mes del acontecimiento, pero luego de algunas situaciones de traspapelado y otra ocupaciones, veamos qué sucedió en la década del 60.

En 1960 IBM presentó el sistema 1401, consolidándose como el más importante fabricante de computadoras dejando atrás a sus competidores UNIVAC, RCA, General Electric, Honeywell, CDC, Burroughs y NCR. El sistema contaba con la impresora de cadena IBM 403, que capaz de imprimir 600 líneas por minuto frente los 150 promedio de las impresoras de la época. En aquel entonces muchas empresas aún prefería el uso de máquinas tabuladoras electromecánicas como la IBM 407, pero frente a un alquiler mensual de 2500 dólares del nuevo equipo, o de su adquisición por 150.000, equivalentes al precio de dos máquinas tabuladoras como la IBM 407, se empezó a optar por el nuevo sistema que cuadruplicaba el rendimiento de una tabuladora y además contaba con la posibilidad de efectuar procesamiento de datos.

No obstante, la posición favorable de IBM afrontaba un obstáculo propiciado por los productos que la propia empresa había desarrollado. A principios de 1960 IBM contaba con distintas series de computadoras orientadas a distintos ámbitos como el ejército, el comercio y la investigación científica. Como ejemplo sirven las series IBM 700 e IBM 7000 con arquitectura valvular las primeras y transistorizadas las segundas siendo el un único punto en común la incompatibilidad de las arquitecturas.

Para IBM esto significaba que cada plataforma contaba con sus propios componentes y circuitos así como cadenas de montaje, equipos de venta, soporte y programación. Para una empresa en proceso expansión, significaba la necesidad de migrar de computadora, periféricos y peor aún, todo el software de usuario debía ser nuevamente escrito. El caso del software fue la luz que alertó a IBM sobre próximas complicaciones debido a la gran cartera de clientes y las diversas aplicaciones ofrecidas a éstos, dando lugar a situaciones en las cuales, por ejemplo, un mismo sistema debía ser reescrito en distintos idiomas, para las sucursales de cualquier empresa multinacional.

La idea de lograr cohesión entre productos sobrevolaba la compañía que encontraba dificultades causadas, paradójicamente, por los propios logros de IBM. Por un lado, la resistencia de funcionarios como el presidente de la división de productos generales, John Haanstra, que se aferraba al éxito de la IBM 1401 y que no estaba dispuesto a sacrificar . Por otra parte todo el espectro de los clientes debía ser abarcado por la nueva generación de equipos y lo más importante, correr todo tipos de aplicaciones sin necesidad de cambios.

SPREAD

La sensibilidad y complejidad del nuevo planteo requirió de un exhaustivo análisis del rumbo a tomar, la vicepresidencia de IBM encomendó la tarea al grupo SPREAD -acrónimo de System Programming, Research, Engineering and Development-, formado en Octubre de 1961 por doce profesionales de la ingeniería, programación y marketing que incluyó a Haanstra. El avance del grupo desde el punto de vista del vicepresidente de la compañía Vincent Learson, era terriblemente lento, por lo cual en Noviembre del mismo año, SPREAD recibió instrucciones del propio Learson de pasar todo el tiempo que fuese necesario dentro del New Englander Motor Hotel en Stanford, el lugar donde solían efectuar sus reuniones, hasta que no tuviesen una propuesta del camino a tomar por parte de IBM.

El borrador presentado el 28 de Diciembre de 1961 contenía lineamientos acerca de la creación de una nueva línea de computadoras compatibles entre sí en niveles de hardware y software.

El reporte expuesto en la jornada completa del 4 de Enero de 1962 ante un auditorio compuesto por los principales ejecutivos de IBM, causó decepción y estupor en el público. La dimensión del proyecto NPL -New Product Line- requería esfuerzo laboral y financiero; por ejemplo se estimaban 125 millones de dólares para la creación del nuevo software básico que contrastaba con los actuales 10 millones consumidos en tareas de programación anualmente para todas las líneas de computadoras. A esto se sumaba el factor riesgo implicado por una apuesta por algo jamás creado que sustituiría a todos los productos construidos. Se trataba, en cierto modo, de un salto al vacío en busca de fundar nuevamente IBM.

Pero la decisión de avanzar con el proyecto estuvo tomada al cierre de la jornada, cuando Watson concluyó la conferencia diciendo “Muy bien, lo haremos...”. A mediados de 1962 el proyecto inició construyendo cinco computadoras, en las plantas de Poughkeepsie y Endicott en New York y Hursley, en Inglaterra. Estas instalaciones estaban comunicadas por líneas contratadas exclusivamente, incluyendo conexiones trasatlánticas. Por otra parte, para abaratar costos, IBM adquirió la capacidad de fabricar semiconductores convirtiéndose en la empresa más grande en el rubro a nivel mundial.

Hacia fines de 1963 el proyecto adoptó el nombre de System/360 que daba a entender la universalidad de su esencia, mientras se definía la estrategia de presentación de la línea de modelos desarrollados. Durante este período, Honeywell, una de las competencias de IBM presentó su modelo Honeywell 200 compatible con el hardware de la IBM 1401 y mediante la ejecución de un programa llamado Liberator, podía ejecutar aplicaciones nativas de la 1401 al doble de la velocidad real. Las 400 ordenes en la primera semana de lanzamiento de la 200, pusieron en duda la liberación del nuevo sistema de IBM o de culminar una versión bajo desarrollo de la 1401. Pero ocurrió que el grupo de programación de Poughkeepsie , que experimentaba con la posibilidad de simular otras computadoras, tuvo la oportunidad de incorporar microcódigo en la unidad de control para interpretar instrucciones de IBM 1401, dando lugar al modo emulación 1401 del System/360 que habilitó la ejecución de aplicaciones de dicho modelo con el cuadruple de velocidad que la computadora original.

El 7 de Abril de 1964 en una conferencia de prensa simultánea en sesenta y tres ciudades de los Estados Unidos y en catorce varios ciudades de otros países, tuvo lugar la presentación pública del System/360 de IBM, la noticia más importante en la historia de compañía, según palabras de su presidente Thomas Watson Jr. El esfuerzo en conjunto de una empresa que había sido apostada, según palabras de algunos directivos, empezó a dar frutos desde las primeras cuatro semanas en las que se ordenaron 1000 unidades de la nueva línea. Los siguientes tres años arrojaron ganancias cercanas a los 5.000 millones de dólares y la compañía debió duplicar la cantidad de trabajadores en sus plantas. System/360 fue el impulsor del crecimiento de IBM de los siguientes treinta años, no por nada se dijo que System/360 fue el sistema que construyó IBM y que construyó a IBM.

El hardware

System/360 contó inicialmente con seis modelos de computadoras compatibles denominados 30, 40, 50, 60, 62 y 70, variando su capacidad de memoria RAM entre 8Kb y 64Kb para el primer modelo y entre 256Kb y 1Mb para el último. La familia de periféricos estaba formada por cuarenta dispositivos entre los que se incluyeron unidades de disco, cintas magnéticas, lectoras y perforadoras de tarjetas, impresoras y displays que podían ser alquilados o adquiridos.

Algunas de las características más importantes descritas a continuación, se convirtieron en estándares de facto:

  • Uso de componentes de lógica en estado sólido (hardwired)

  • Microcodificación de las intrucciones de CPU

  • Unidad de información manejada por el sistema definida como un paquete de ocho bits denominado byte.
  • Dieciseis registros con tamaño de palabra de cuatro bytes (32 bits)
  • Cuatro registros de punto flotante de dos palabras (64 bits)

  • Direccionamiento de memoria de 24 bits, otorgando un máximo de 16Mb

  • Multiprocesamiento mediante la Interconexión de CPUs a través de unidades de control, canales y almacenamientos compartidos (página 18 del doc de IBM)

  • Uso del juego de caracteres EBCDIC




El software

Una etapa crucial durante el desarrollo del proyecto System/360 IBM fue la planificación de la construcción de software necesario para explotar las características de las nueva familia de equipos. Esta tarea que se vislumbraba como compleja y costosa tuvo un presupuesto asignado de 125 millones de dólares. El objetivo era lograr la implementación de OS/360, un sistema operativo timesharing que debido a su magnitud, complejidad y limitaciones de algunos equipos, tuvo que ser inicialmente reemplazado por tres sistemas orientados a cada distintas escalas dentro de la familia System/360. Así se crearon BOS/360 -Basic Operating System-, para la gama baja con 8Kb de memoria; DOS/360 y TOS/360 -Disk Operating System y Tape Operating System- para máquinas con al menos 16Kb de memoria y unidades de disco y cinta respectivamente.

El desarrollo del OS/360 planteó la construcción un sistema de dimensiones desconocidas hasta el momento que derivó en un punto de inflexión para las metodologías de construcción de grandes sistemas y sentó las bases de la Ingeniería de Software. El director del proyecto fue Fred Brooks, un discípulo de Howard Aiken quien escribiría el libro clásico de la materia “The Mythical Month-Man”, en el cual se sinceró y analizó las fallas que llevaron al retraso de la construcción del OS/360 y todo el conjunto de defectos y errores. Fundamentalmente planteó la necesidad de nuevas metodologías para administrar los recursos de programación disponibles, en lugar de simplemente introducir nuevo personal en un estado avanzado del proyecto, que solo conlleva a un detrimento del mismo. Esta problemática está muy bien sintetizada en una frase del autor: “Una madre necesita nueve meses para producir un bebé, pero nueve madres no lo producirán en un mes

Para cerrar la idea, el proyecto System/360 introdujo directa o indirectamente muchos de los conceptos que usamos hoy día como la unidad del byte, el concepto de compatibilidad entre distintas computadoras gracias a una microcodificación de instrucciones de CPU uniforme, el multiprocesamiento, el procesamiento remoto que en esencia, ayer ocurría con una terminal conectada a un mainframe y hoy ocurre con una notebook conectada a un servidor web, la virtualización de equipos, tan incipiente en estos días y para finalizar, pero no menos importante, la ingeniería de software que vino planteada como una necesidad para administrar el ciclo de vida del desarrollo del sistemas de grandes escalas.




LINKS






El proceso estratégico: conceptos, contextos y casos







OS/360