15 Sekunden, um einen Zeigerfehler in mehr als 500,000 Codezeilen zu finden
Von Parasoft
21. März 2013
5 min lesen
Hier ist die Geschichte, wie 15 Sekunden Analyse einen Absturz verursachenden Fehler aufgedeckt haben, der 40 Stunden manueller Inspektion entgangen ist
BITTT Unternehmen ist auf Geschäftsprozesse spezialisiert und bietet strategische Geschäftslösungen für das Informationsmanagement. BITTT hilft seinen Kunden, interne Technologiesysteme zu verbessern und die Effizienz und Produktivität für ein gesünderes Geschäftsergebnis zu steigern.
Timothy W. Okrey, Managing Partner, ist verantwortlich für die Entwicklung bei BITTT. Tatsächlich ist er der Mastermind hinter dem Code, den BITTT schreibt. Vor kurzem hat Okrey ein laufendes Projekt weiterentwickelt, das seit einigen Jahren in Arbeit ist. Das Programm befand sich in der virtuellen Produktion, als es plötzlich abstürzte. Die Situation ließ Okrey völlig verblüfft zurück.
Nachdem Okrey versucht hatte, das Problem selbst zu lösen und in alle Richtungen gegen Ziegelwände zu stoßen, entdeckte er Parasofts Lösung für die C / C ++ - Laufzeitanalyse und Fehlererkennung. Parasoft Insure ++ Okrey half nicht nur bei der Lösung des vorliegenden Problems, sondern ermöglichte ihm auch, gleichzeitig und effektiv ein Dutzend separate Projekte zu verbessern.
Auftreten eines kritischen Zeigerfehlers
Das von Okrey entwickelte Produkt war stabil und lief in einem virtuellen Produktionsmodus. Das Programm schlug jedoch nach einem kürzlich erstellten Build fehl, um eine Reihe von vom Kunden angeforderten Verbesserungen zu beheben.
BITTT hatte zwei Jahre in das Produkt investiert, eine Lösung für die Lohn- und Gehaltsabrechnung, die dem Kunden helfen soll, die wöchentlich investierten 60 bis 70 Mannstunden zu senken, um die Lohn- und Gehaltsabrechnung für 1000 Mitarbeiter in 14 Bundesstaaten manuell abzuschließen. Aufgrund der Arbeit von BITTT wurde die Gehaltsabrechnung der Kunden nun automatisiert, sodass sie jede Woche weniger als 12 Mannstunden dafür aufwenden konnten. Leider hat der Show-Stop-Fehler, der beim letzten Build aufgetreten ist, dazu geführt, dass der Kunde von BITTT wieder zu seinem manuellen Abrechnungsprozess zurückgekehrt ist.
Aufgrund seiner mehr als 20-jährigen Entwicklungserfahrung weiß Okrey, dass es an der Zeit ist, das gesamte Projekt auf eine andere Art und Weise zu wiederholen, wenn Sie auf eine Mauer stoßen. Leider war dies in dieser Situation nicht einmal eine Option, da „es keine rauchende Waffe oder sogar einen nachvollziehbaren Fehler gab“. Okrey erklärt weiter: „Dies war keine Neuentwicklung. Wir haben auch nicht versucht, Teile des Codes zusammenzuführen, damit er funktioniert. Dieses spezielle Programm wurde von Grund auf neu geschrieben, wobei ein Toolkit als Backend für die Details verwendet wurde. “
Das Toolkit wurde 1993 von Okrey erstellt. Es ermöglicht ihm, Arbeitsfunktionen in den Rohquellcode zu ziehen oder sie als Bibliothek für jedes Projekt zu verwenden. Das Toolkit bietet eine stabile Grundlage für alle seine Projekte und verringert die Notwendigkeit, Code immer wieder neu zu schreiben. Dieses Toolkit ist auf weit über 500,000 Codezeilen angewachsen, die mit größter Sorgfalt geschrieben wurden. Okrey hält sich strikt an die Regeln der strukturierten Programmierung und achtet darauf, seinen Code sauber zu halten. Er hatte noch nie ein Tool eines Drittanbieters verwendet, um seinen Code zu analysieren, und hatte nie die Notwendigkeit dazu.
Reduzierung der Länge und der Kosten nachgelagerter Entwicklungsprozesse
Über eine Woche lang versuchte Okrey, verschiedene Teile der Klasse, die Probleme verursachten, neu zu konstruieren.
Seine Versuche, das Problem zu beheben, führten jedoch nur dazu, dass einige der Interna so geändert wurden, dass der Fehlerpunkt an einer anderen Stelle auftrat. „Ich habe mehr als 40 Stunden damit verbracht, meinen gesamten Code mit einem feinen Zahnkamm und einer Lupe durchzugehen, wie ich es normalerweise tue. Ich konnte das Problem nicht finden. Ich konnte sehen, was los war; Ich konnte einfach nicht sehen, warum es passierte “, sagte Okrey.
Zu diesem Zeitpunkt begann seine Suche nach Hilfe. Er fand nur eine Handvoll Werkzeuge, die tun konnten, was er wollte. Von dieser Handvoll erlaubten die meisten Produkte lediglich eine statische Überprüfung des Codes. Parasoft war das einzige Produkt, das auch dynamische Analysen durchführte. "Parasoft gibt mir die Möglichkeit, meine Inhalte in der Umgebung zu analysieren, in der sie ausgeführt werden, anstatt nur den Code auf Papier zu betrachten", sagte Okrey.
Nach der Einrichtung und Ausführung durchlief Parasoft den ersten Build von Okreys Quellcode - alle über 500,000 Zeilen. Innerhalb von 15 Sekunden nach dem Start tauchte Parasoft abgestanden auf Zeiger Error. "Wenn ich Parasoft nicht gefunden hätte, hätte dies zu sehr drastischen Anforderungen des Kunden geführt", sagte Okrey, als er über den schnellen Return on Investment nachdachte. Er fügte hinzu: „Der Wechsel von einer funktionierenden Version des Programms zu einer nicht funktionierenden Version allein aufgrund eines Upgrades hätte zu einer Umkehrung des Fortschritts und zu erzwungenen finanziellen Zugeständnissen geführt, die ich nicht einmal in Betracht ziehen möchte. Es war eine hässliche Situation. “
Steigerung der Codequalität, -stabilität und -konformität
Mit Parasoft konnte Okrey den Toolkit-Quellcode vollständig überarbeiten. speziell zur Verbesserung der Handhabung von Saiten. Die Verbesserung breitete sich auf andere Projekte aus. Okrey hat Dutzende anderer Programme für verschiedene Kunden, die dasselbe Backend-Toolkit verwenden, sodass alle diese Programme die Vorteile nutzen konnten. Okrey erklärt: „Ich kann Ihnen nicht einmal alle Programme erzählen, die vom Backend-Toolkit abhängig sind. Aufgrund der Verbesserungen, die Parasoft mir ermöglicht hat, sind sie umso stabiler und konformer. “
Okrey sagte, dass die Parasoft-Lösung ihm die Möglichkeit gab, seine hohen Codierungsstandards zu implementieren und durchzusetzen. "Parasoft zwingt Sie zu überprüfen, ob die verwendeten Standards und Praktiken absolut makellos sind", sagte Okrey. „Eine der Herausforderungen als Projektleiter - oder geschäftsführender Gesellschafter wie ich - besteht darin, zu bestätigen, dass Ihr Team Code schreibt, der hohen Standards entspricht. Parasoft kann mir dabei helfen, zu überprüfen, ob mein Team Code schreibt, der meinen Standards entspricht, und es mir ermöglichen, Ergebnisse zu garantieren. Darüber bin ich sehr aufgeregt. “
Nutzen aus der Lösung von Parasoft ziehen
Okrey ist zufrieden mit der Qualität, die Parasoft schnell in seinen Anwendungsentwicklungsprozess integriert hat. Er konnte nicht nur ein Problem für einen geschätzten Kunden beheben, sondern auch die Qualität von Dutzenden von Programmen für andere Kunden verbessern.
Okrey sagt: „Ich bin sehr speziell in Bezug auf Produkte, die ich unterstütze. Die Mehrheit der weltweit geschriebenen Software funktioniert aus verschiedenen Gründen einfach nicht so, wie sie funktionieren soll. Möglicherweise ist es schlecht konzipiert, so dass es langsam läuft, oder die Systemanforderungen sind nicht realistisch. Die Liste geht weiter.
„Es gibt jedoch einige Produkte, die ich wirklich mag. Eines davon ist ein Systemsoftwareprodukt, auf das ich mich verlassen habe. Ich habe noch nie einen GPF damit erlebt. Noch nie. Als ich erfuhr, dass der Anbieter dieses Produkts ein Parasoft-Kunde war, war es das. Das hat mich dazu bewogen, Parasoft auszuprobieren, und ich bin sehr froh, dass ich es getan habe. “