Pregunta

Parece que el hierro viejo es roca sólida de software. ¿Porqué es eso? ¿Es porque el software es tan maduro, que todos los errores se han elaborado? ¿O es porque la gente ha acostumbrado tanto a los errores que ni siquiera se reconozcan y funcionen a su alrededor? Eran las especificaciones de software perfecta desde el primer día y una vez que el software fue escrito, todo lo que acaba de trabajar? Estoy tratando de entender cómo hemos llegado desde los días de computadoras centrales de la que ahora todo el mundo propugna como se acaba de trabajo para TDD sensación de que ahora es el camino a seguir.

¿Fue útil?

Solución

¿Por qué en la Tierra ¿cree que no tienen errores?

IBM tiene un vastas de infraestructura de apoyo para informar del fallo y la resolución (PMR, APAR y PTF), que se utiliza en gran medida.

software de la unidad central, que no ha sido tocado por muchos años, sin duda será bien entendido (por lo menos en términos de su idiosincrasia) y es probable que han tenido muchos errores, ya sea fijo o trabajado alrededor. Todas las cosas nuevas se están desarrollando en la actualidad en realidad los planes para un cierto número de errores y parches de GA (disponibilidad general) a por lo menos GA + 36 meses. De hecho, un ex jefe mío en IBM utiliza para resisten a ser obligados a proporcionar cifras para los insectos planificadas con la línea:. "No estamos planificación a tiene virus"

La unidad central se adhiere a los principios de RAS (fiabilidad, disponibilidad y servicio) más allá de lo que la mayoría del hardware y el software de escritorio nunca podrían aspirar a - eso es sólo mi opinión por supuesto, pero estoy justo: -)

Esto se debe a IBM sabe muy bien que el costo de corregir errores aumenta mucho mientras se mueve a través del ciclo de desarrollo - es mucho más barato para corregir un error en la unidad de pruebas de lo que es para fijar una en la producción, en términos tanto de dinero y reputación.

Hay una gran cantidad de esfuerzo y costo invertido sólo en la liberación de un software sin errores, pero incluso ellos no lo entienden bien todo el tiempo.

Otros consejos

No hay errores en el software de marco principal, sólo presenta.

Yo solía trabajar en aplicaciones de mainframe. Las aplicaciones anteriores no tenían muchos errores porque no hacen mucho. Escribimos cientos, si no miles de líneas de FORTRAN para hacer lo que haría con un par de fórmulas en Excel ahora. Pero cuando fuimos de los programas que obtuvieron su entrada al poner un valor en las columnas 12-26 de la tarjeta 1, y otro valor en las columnas 1-5 de la tarjeta 2, etc., a los que se llevaron a la entrada de una pantalla interactiva ISPF o una luz pluma y salida en un plóter Calcomp 1012 o un terminal Tektronix 4107, el número de bugs subió.

Hay asre MONTÓN de errores en el software de la unidad central, no son más que no publisized tanto debido a la relativamente pequeño grupo de desarrolladores afectados. Sólo hay que preguntar a alguien que hace el desarrollo de mainframe cuántos Abends que ven a diario!

He aprendido a utilizar depuradores y analizar volcados de memoria en grandes ordenadores centrales de hierro. Confía en mí que sólo se produjo a causa de errores. Usted es simplemente errónea.

Sin embargo arquitecturas centrales se han diseñado para la estabilidad a alta tensión (bien en comparación con los sistemas no decir de mainframe) así que tal vez se puede argumentar que son mejores de esa manera. Pero el código prudente? Nah fallo todavía están allí ...

Mi experiencia con el software de aplicación de sistema (a diferencia de los sistemas operativos) es bastante fuera de fecha, pero lo que recuerdo es que la mayoría de las aplicaciones son aplicaciones de lotes que son, lógicamente, muy simple:

a) Leer un archivo de entrada
b) Procesar cada registro (si se siente atrevida, actualizar una base de datos)
c) Escribir un archivo de salida

No hay eventos de entrada de usuario que preocuparse, un equipo de operadores cualificados para supervisar la tarea mientras se ejecuta, poca interacción con sistemas externos, etc, etc.

Ahora la lógica de negocio puede ser compleja (especialmente si está escrito en COBOL 68 y la base de datos no es relacional), pero si eso es todo lo que tiene que concentrarse, es más fácil de hacer que el software fiable.

Nunca he trabajado en software para ordenadores centrales, pero mi padre era un programador de COBOL en la década de 1970.

Cuando escribió el software en aquellos días, la búsqueda de errores no era tan simple como compilar el código fuente y mirando a los mensajes de error del compilador escupe de vuelta a usted o ejecutar su programa y mirando a lo que estaba haciendo mal. Una mecanógrafa tenía que perforar el programa en tarjetas perforadas, que luego se lee en el ordenador, lo que imprima los resultados de su programa.

Mi padre me dijo que un día alguien llegó con un carro lleno de cajas de papel y las puso junto a la puerta de la habitación en la que estaba trabajando. Él preguntó: "¿Qué es eso ?!", y el chico le dijo: "Esa es la salida de su programa". Mi padre cometió un error que causó el programa para imprimir una gran cantidad de jerga en una pila de papel que podría haber utilizado un árbol entero.

Se aprende de sus errores rápidamente de esa manera ...

Oh, definitivamente, tienen errores - ver thedailywtf.com para algunos ejemplos más entretenidos. Dicho esto, la mayoría de las aplicaciones de mainframe "" uno ve hoy en día han tenido 30 años para obtener todos los problemillas funcionó, por lo que tienen un poco de ventaja sobre la mayoría de las aplicaciones creadas en los últimos años.

Si bien no tengo experiencia con ordenadores centrales, yo supongo que es el primer punto que usted hizo: el software ha existido durante décadas. La mayoría de los errores restantes se han resuelto.

Además, no se olvide de fiascos como el Y2K. Todos los errores personas han tropezado con los ha resuelto, y en 20 años probablemente habrá producido la mayoría de las situaciones. Pero de vez en cuando, una nueva situación hace Administrar a venir que hace incluso 20 años de edad, dejan de funcionar el software.

(Otro ejemplo interesante de esto es el insecto que se encuentra en, creo, BSD Unix. Se encontró un año o así que hace, y que ha estado presente desde hace 20 años sin que nadie se ejecuta en él).

Creo que la programación era sólo un campo avanzado que los ingenieros sólo escogidos podrían trabajar en ella. El mundo de la programación actual es mucho más grande con las barreras de entrada más bajos en todos los aspectos.

Creo que es un par de cosas. En primer lugar es que el ciclo de FIX-A-bug-recompilación era más caro en ordenadores centrales por lo general. Esto significaba que el programador no podía hacer desbordar fuera de código y "ver si funciona". Haciendo de compilación y tiempo de ejecución de simulaciones en-su-cabeza puede detectar más errores de dejar que el compilador las capturas.

En segundo lugar, todo el mundo y su hermano no era un "programador". Eran especialistas por lo general altamente capacitados. Ahora los programas provienen de tipos sentados en su sótano con un diploma de secundaria. ¡¡¡Nada de malo con eso!!! pero sí tienden a tener más errores que el ingeniero que lo ha practicado profesionalmente durante 20 años.

En tercer lugar, los programas de mainframe tienden a tener menos interacción con sus vecinos. En Windows, por ejemplo, una mala aplicación puede bloquearse el uno al lado de él o de todo el sistema. En mainframes que por lo general han segmentado de memoria para todo lo que puede accidente es en sí misma. Teniendo en cuenta las toneladas de cosas que se ejecutan en su sistema de escritorio típico de todo tipo de fuentes marginalmente fiables que tiende a hacer cualquier programa escamosa en algún grado.

La madurez es sin duda un factor. Un programa de procesamiento de tarjetas de crédito COBOL que fue escrito hace 20 años y se ha refinado una y otra vez para eliminar insectos es menos probable que tenga un problema que una versión 0.1 de cualquier programa. Por supuesto, existe el problema de que estos viejos programas infinitas veces reescritos por lo general terminan código espagueti que es casi imposible de mantener.

Como todo, depende sobre todo en el programador (s) y su metodología. Es lo que hacen las pruebas unitarias? ¿Se documentan y escribir código limpio? ¿Se limitan a slop y soltar código en el compilador para ver si hay algún error (con la esperanza de que el compilador puede atraparlos a todos)?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top