Frage

Es scheint, wie Alteisen Rock ist solide Software. Warum ist das so? Ist es, weil die Software so ausgereift ist, dass alle Bugs gearbeitet worden sind? Oder ist es, weil die Menschen haben so den Fehler daran gewöhnt, dass sie nicht einmal erkennen und um sie herum zu arbeiten? Waren perfekt die Software-Spezifikationen vom ersten Tag an und sobald die Software geschrieben wurde, alles gerade gearbeitet? Ich versuche zu verstehen, wie wir von Mainframe-Computing-Tage gekommen sind, die jeder espouses jetzt als gerade arbeiten, dass TDD zu fühlen ist nun der Weg zu gehen.

War es hilfreich?

Lösung

Warum auf der Erde Sie tun denken, sie haben keine Fehler?

IBM hat eine große Support-Infrastruktur für Bug-Reporting und Auflösung (PMRs, APARs und PTFs), die stark genutzt wird.

Mainframe-Software, die seit vielen Jahren nicht berührt hat, wird sicherlich gut (zumindest in Bezug auf seine Idiosynkrasien) verstanden werden und wird wahrscheinlich viele Fehler entweder fest oder um gearbeitet hatte. Alle neuen Sachen sind heutzutage tatsächlich Pläne für eine bestimmte Anzahl von Bugs und Patches von GA (allgemeine Verfügbarkeit) mindestens GA + 36 Monaten entwickelt. In der Tat, verwendet ein Ex-Chef von mir bei IBM an gezwungen baulk wird mit der Linie Zahlen geplant Fehler zu bieten. „Wir sind nicht Planung alle Bugs haben“

Der Mainframe espouses RAS Prinzipien (Zuverlässigkeit, Verfügbarkeit und Wartungsfreundlichkeit) über das, was die meisten Desktop-Hardware und Software könnte jemals streben - das ist nur meine Meinung natürlich, aber ich bin recht: -)

Das ist, weil IBM all zu gut, dass die Kosten für die Behebung von Fehlern weiß sehr viel erhöht, wie Sie durch den Entwicklungszyklus zu bewegen - es ist viel billiger, einen Fehler in Unit-Tests zu beheben, als es ein beheben in der Produktion ist, in Bezug auf sowohl Geld und Ruf.

Es gibt viel Aufwand und Kosten aufgewendet auf nur fehlerfreie Software Freigabe aber auch sie es nicht tun es richtig die ganze Zeit.

Andere Tipps

Es gibt keine Bugs in Hauptrahmen-Software, ausschließlich.

Ich habe auf Mainframe-Anwendungen zu arbeiten. Die früheren Anwendungen haben nicht viele Fehler, weil sie nicht viel zu tun. Wir schrieben Hunderte, wenn nicht Tausende von Zeilen von FORTRAN zu tun, was Sie jetzt mit ein paar Formeln in Excel tun würde. Aber wenn wir von Programmen ging, die ihren Eingang bekam um einen Wert setzen in Spalten 12-26 der Karte 1 und einen anderen Wert in den Spalten 1-5 der Karte 2, usw., um diejenigen, die Eingabe von einem interaktiven Bildschirm ISPF nahm oder ein Licht Stift und Ausgabe auf einem Calcomp 1012 Plotter oder einem Tektronix 4107 Terminal ging die Anzahl der Fehler auf.

Es ASRE VIEL der Fehler auf Mainframe-Software, werden sie einfach nicht so viel publisized aufgrund der relativ kleinen Gruppe von Entwicklern betroffen. Nur jemand fragen, der Mainframe-Entwicklung tut, wie viele ABENDS sie auf einer täglichen Basis zu sehen!

Ich habe gelernt, Debugger zu verwenden und analysieren Kern auf großen Eisen Großrechner Dumps. Vertrauen Sie mir, sie kamen nur wegen der Bugs. Sie sind einfach falsch.

Allerdings Mainframe-Architekturen für Stabilität unter hohen Belastung (auch im Vergleich zu sagen, nicht Mainframe-Systemen), so vielleicht können Sie argumentieren, sie sind besser auf diese Weise ausgelegt. Aber Code weise? Nö Fehler sind immer noch da ...

Meine Erfahrung mit Mainframe-Anwendungssoftware (im Gegensatz zu Betriebssystemen gegen) ist ziemlich veraltet, aber meine Erinnerung ist, dass die Mehrzahl der Anwendungen Batch-Anwendungen sind, die logischerweise sehr einfach:

a) Lesen Sie eine Eingabedatei
b) Verarbeiten jeden Datensatz (wenn Sie gewagte fühlen, aktualisieren Sie eine Datenbank)
c) Schreiben Sie eine Ausgabedatei

Es wird keine Benutzereingabeereignisse zu befürchten, ein Team von qualifizierten Bedienern die Arbeit zu überwachen, wie es läuft, wenig Interaktion mit externen Systemen, etc, etc.

Nun kann die Business-Logik komplex sein (vor allem, wenn es in COBOL 68 geschrieben und die Datenbank ist nicht relational), aber wenn das alles ist man auf dem konzentrieren hat, ist es einfacher, zuverlässige Software zu machen.

Ich habe nie gearbeitet für Großrechner auf Software selbst, aber mein Vater war ein COBOL-Programmierer in den 1970er Jahren.

Wenn Sie Software in diesen Tagen schrieb, Bugs zu finden, war nicht so einfach, wie Sie Ihren Quellcode kompilieren und Blick auf den Fehlermeldungen der Compiler an Sie spuckt zurück oder Ihr Programm läuft und schauen, was es war falsch. Eine Stenotypistin hatte das Programm in Lochkarten stanzen, die dann in den Computer eingelesen werden würde, die die Ergebnisse des Programms drucken würde.

Mein Vater hat mir gesagt, dass ein Tag jemand mit einem Wagen voller Schachteln aus Papier kommt und legte sie neben der Tür des Raumes, wo er arbeitet. Er fragte: „Was ist das ?!“, und der Mann sagte ihm, „dass die Ausgabe des Programms ist“. Mein Vater hat einen Fehler gemacht, das das Programm verursachte auf einem Stapel von Papier eine riesige Menge an Kauderwelsch zu drucken, das einen ganzen Baum verwendet haben könnte.

Sie aus Ihren Fehlern lernen schnell, dass die Art und Weise ...

Oh, haben sie auf jeden Fall Fehler - siehe thedailywtf.com für einige unterhaltsame Beispiele. Das heißt, die meisten der „Mainframe“ -Anwendungen man heute sieht, sind 30 Jahre hatte alle Knicke zu bekommen ausgearbeitet, so dass sie ein bisschen ein Vorteil gegenüber den meisten Anwendungen in den letzten Jahren geschaffen.

Während ich habe Erfahrung nicht mit Mainframes, ich vermute, es ist der erste Punkt, den Sie gemacht: Die Software gibt es schon seit Jahrzehnten. Die meisten verbleibenden Bugs wurden, werden ausgearbeitet.

Außerdem vergessen Sie nicht Fiaskos wie Y2K. Alle von den Bugs Menschen wahrscheinlich aufgetreten gearbeitet haben, und die meisten Situationen in 20 Jahren gestolpert wurden. Aber jeder einmal in einer Weile, eine neue Situation funktioniert verwalten zu kommen, das macht auch die 20-jährige Software nicht mehr funktioniert.

(Ein weiteres interessantes Beispiel hierfür ist der Fehler gefunden, glaube ich, BSD Unix. Es wurde vor einem Jahr oder so gefunden, und es ist um seit 20 Jahren, ohne dass jemand in sie ausgeführt wird).

Ich denke, Programmierung war nur ein fortschrittliches Feld, das nur ausgewählte Ingenieure in ihm funktionieren könnten. Die Welt der Programmierung ist jetzt viel viel größer mit niedrigeren Eintrittsbarrieren in jeder Hinsicht.

Ich denke, es ist ein paar Dinge. Erste ist, dass der Zyklus des fix-a-bug-recompile in Großrechnern teurer war in der Regel. Das bedeutete, der Programmierer könnte nicht nur Code Slop und „sehen, ob es funktioniert“. in-your-head Kompilierung und Laufzeitsimulationen Dadurch können Sie mehr Fehler als ließ der Compiler erkennen sie fangen.

Zweitens, jeder und ihr Bruder war kein „Programmierer“. Sie waren in der Regel gut ausgebildete Spezialisten. Jetzt kommen Programme von Jungs in ihrem Keller mit einem High-School-Diplom sitzen. Nichts falsch mit dem !!! aber es ist in der Regel mehr Fehler haben, dass der Ingenieur, der seit 20 Jahren ist schon professionell zu tun.

Drittens neigen Mainframe-Programme weniger Interaktion haben mit ihren Nachbarn. In Windows, kann beispielsweise eine schlechte App die man daneben oder das gesamte System zum Absturz bringen. Auf Großrechner haben Speicher sie in der Regel segmentiert, so dass alle kann es zum Absturz selbst ist. In Anbetracht der Tonnen Dinge laufen auf Ihrem typisches Desktop-System von allen Arten von marginal zuverlässigen Quellen jedes Programm flockig zu einem gewissen Grad zu machen tendiert.

Reif ist definitiv ein Faktor. Ein COBOL Kreditkartenverarbeitungsprogramm, das vor 20 Jahren geschrieben wurde und wurde verfeinert und immer Fehler zu beseitigen ist weniger wahrscheinlich, dass ein Problem als eine 0,1-Version eines Programms haben. Natürlich gibt es das Problem, dass diese alten rewritten unendlich oft Programme in der Regel Spaghetti-Code am Ende, das zu halten, fast unmöglich ist.

Wie alles, es hängt vor allem von dem Programmierer (n) und deren Methodik. Tun sie Unit-Tests? Haben sie zu dokumentieren und sauberen Code schreiben? Sie Slop-and-Drop sie nur Code in den Compiler, um zu sehen, ob es irgendwelche Fehler (in der Hoffnung, den Compiler können sie alle fangen) sind?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top