(openPR) Coverity, Inc., führend bei der automatischen Optimierung von Softwarequalität und -sicherheit in C/C++ und Java, gibt die Verfügbarkeit des neuen Coverity Thread Analyzer (CTA) für Java bekannt. Der Thread Analyzer, ein Stand-alone Produkt, ist das erste dynamische Analysetool für Multi-Threaded-Anwendungen, das automatisch Gleichzeitigkeitsdefekte erkennt, die Ursache für beschädigte Daten und Fehlfunktionen in Anwendungen sein können. Im Einsatz mit Coverity Prevent, dem führenden statischen Analysetool, bildet der Coverity Thread Analyzer eine leistungsstarke Lösung zur Sicherung der Softwarequalität, mit der Entwickler die komplexen Aspekte beim Schreiben von Multi-Threaded-Anwendungen besser kontrollieren können.
Der Coverity Thread Analyzer für Java vereinfacht das Testen komplexer Multi-Threaded-Anwendungen, die parallele Operationen ausführen. Für Entwickler bietet dies mehrere Vorteile:
• Automatische Fehler-Erkennung: Die einzigartige Thread-Analyse erkennt Gleichzeitigkeitsdefekte wie Race Conditions und Deadlocks automatisch
• Geringe Systembelastung: Ausgefeilte Technologie ermöglicht den Einsatz des Tools mit deutlich geringerer Belastung für Arbeitsspeicher und Systemperformance wie bei vergleichbaren Werkzeugen
• Integration der Eclipse-IDE: Das sofortige Auffinden und Korrigieren von Gleichzeitigkeitsdefekten in der Entwicklungsphase beschleunigt die Gesamtentwicklung von Software
• Verzahnung mit Coverity Prevent: Die Coverity-Produkte für die statische und die dynamische Analyse lassen sich zu einer wirkungsvollen Lösung für die Gewährleistung hoher Softwarequalität kombinieren
Der Coverity Thread Analyzer läuft auf folgenden Plattformen: Linux (32-Bit & 64-Bit), Solaris Sparc, Solaris X86, Windows XP und Server 2003, Mac OS X. Das Produkt unterstützt Sun JDK 1.5, IBM 1.5 JVM und BEA JRockit 5.
„Wegen der steigenden Nachfrage nach Multi-Core Prozessoren müssen Entwicklungsteams an die Programmierung von Multi-Threaded Anwendungen machen, unabhängig davon, ob sie darauf vorbereitet sind oder nicht“, so Michael Monticello, Security and Risk Analyst bei Enterprise Management Associates. „Zur erfolgreichen Beseitigung der mit Multi-Threaded Anwendungen einhergehenden Gleichzeitigkeitsfehler benötigt man fortschrittliche neue Tools, die diese schwer auffindbaren Defekte genau lokalisieren. Das ist eine Voraussetzung, damit Entwickler sichere und zuverlässige neue Produkte auf den Markt bringen können.“
Der Coverity Thread Analyzer für Java beobachtet den Code während seiner Ausführung automatisch und ermittelt dabei vorhersagbare Race Conditions und Deadlocks. Er ist im Bereich der dynamischen Analyse das einzige Werkzeug dieser Art, weil er neben den Problemen, die in limitierten Test¬¬umgebungen auftreten, auch Fehler erkennt, die mit einiger Wahr¬scheinlichkeit bei längeren Operationen im praktischen Einsatz auftreten. Diese Unterscheidung ist besonders für Multi-Threaded-Anwendungen von zentraler Bedeutung: Bedingt durch ihre Komplexität können sie extrem lange ohne jede Fehlfunktion laufen, bevor das unglückliche parallele Auftreten mehrerer Systemereignisse einen Gleichzeitigkeitsdefekt auslöst. So war beispielsweise der Stromausfall, der im Jahr 2003 Teile der USA und Kanada von der Stromversorgung abschnitt, die Folge einer Race Condition. Diese trat auf, nachdem das System bereits 3 Millionen Stunden unterbrechungsfrei gelaufen war.
Es ist die erste dynamische Analyselösung, die auch das Risiko, das mit der Überführung komplexer Single-Threaded-Codebasen in Multi-Core-Umgebungen einhergeht, verringert. Dazu meldet das Tool dem Nutzer Daten, die von mehreren Threads verwendet werden, und verweist auf Stellen, für die Sperrregeln zu formulieren sind. Dadurch können Entwickler pro-aktiv vorhandene und potentielle Gleichzeitigkeits¬probleme ermitteln und diese beseitigen, bevor sie Schaden anrichten.
Das Stand-alone-Tool Coverity Thread Analyzer lässt sich mit Coverity Prevent, dem führenden statischen Analysetool für C/C++ und Java, kombinieren. So entsteht eine inhaltsreiche Analyselösung, die Java-Entwicklern bislang unerreichte Möglichkeiten zum Ermitteln und Beseitigen von Gleichzeitigkeits- und anderen kritischen Defekten im Code bietet, die eine verlangsamte Programmausführung, Fehlfunktionen und Abstürze bewirken können. Die beiden Coverity-Produkte vereinen statische und dynamische Analyse¬funktionen auf besondere und einander ergänzende Weise - die Stärken der einen Technik optimiert die jeweils andere. So beschleunigt die kombinierte Lösung insbesondere die dynamische Analyse und senkt die mit ihr einhergehende Belastung für die Systeme. Zugleich steigt die Genauigkeit der statischen Analyse durch Eliminierung der „False Positive“ Ergebnisse.
Im Gegensatz zu anderen dynamischen Analysetools, die für die analysierten Systeme zwischen 10 und 100 Mal mehr Speicher und/oder Laufzeit benötigen, arbeitet der Coverity Thread Analyzer bei den meisten Programmen lediglich mit doppeltem Speicher- und Laufzeitbedarf. Dadurch lässt er sich in ausgewählten Produktionsumgebungen einsetzen, die interaktive Anwendungen sowie Applikationen mit strengen Timing-Vorgaben einschließen.
