Zum Inhalt springen

Suchen...

Software Analyse

Was passiert, wenn ein Drittel des übernommenen Codes nur als Blackbox vorliegt? Wie agiles Mindset und Ehrlichkeit ein Ticketshop-Projekt retten.

7 Min. Lesezeit
Cover für Software Analyse

Software-Qualitätsanalyse bei der Übernahme einer unbekannten Codebasis bezeichnet das strukturierte Vorgehen, um in kurzer Zeit den Zustand einer fremden Software zu bewerten. Statische Analyse-Werkzeuge wie SonarQube liefern dabei erste Einblicke zu Wartbarkeit, Robustheit und Sicherheit. Fehlende Dokumentation und unvollständig übergebene Komponenten zählen zu den häufigsten Risiken solcher Übernahmen.

Das Wichtigste in Kürze

  • Wer Testing als erstes aus dem Budget streicht, macht Projekte teurer und komplizierter, nicht günstiger, weil fehlende Qualitätssicherung Probleme nur verzögert, nicht verhindert.
  • Eine vollzeitige Testmanagerin im Entwicklungsteam ist unüblich, bringt aber strukturelle Klarheit, die alle anderen Disziplinen direkt entlastet.
  • Offenheit über Projektrisiken muss früh kommen: Wer schlechte Nachrichten zurückhält, bekommt sie zu einem ungünstigeren Zeitpunkt zurück.
  • Agiles Mindset bedeutet hier konkret, das Team-Setup mitten im Projekt umzubauen, als sich die Anforderungen verschoben haben, zum Beispiel einen zweiten Architekten statt Entwickler einzusetzen.
  • Eine Migration ohne Downtime gelingt zuverlässiger, wenn sie drei Wochen vorher mit echten Live-Daten vollständig geprobt wird.

Eine fremde Software übernehmen heißt, mit Überraschungen rechnen

Wer eine bestehende Software kauft, übernimmt selten ein sauber dokumentiertes Paket. Häufiger ist es ein Überraschungsei: Man weiß nicht genau, was drinsteckt, wie es um die Qualität steht und ob das System überhaupt wartbar ist.

Genau diese Ausgangslage hatte ein Anbieter für öffentliche Mobilität bei der Übernahme eines bestehenden Ticketshops. Es ging nicht nur um Nutzungsrechte, sondern um das ganze Produkt. Vor dem Kauf war unklar, welche Komponenten mitkommen, wie gut der Code ist und ob sich die Übernahme lohnt.

Sonja Trimmel und Helmut Nitsch begleiteten dieses Projekt. Ihre Erfahrung zeigt, worauf es ankommt, wenn man eine unbekannte Codebasis übernimmt und in einen tragfähigen Zustand bringt.

Wie bewertet man eine fremde Codebasis in kurzer Zeit?

Eine erste Einschätzung gelingt auch unter Zeitdruck, wenn man statische Analyse einsetzt. Für die initiale Bewertung standen nur eineinhalb Tage zur Verfügung, bei mehreren tausend Zeilen Code zu wenig für eine manuelle Vollprüfung.

Werkzeuge zur statischen Analyse, etwa SonarQube, liefern in dieser Situation einen brauchbaren Eindruck. Sie machen Aussagen über Wartbarkeit, Robustheit und Sicherheitsaspekte, ohne dass ein lauffähiges System nötig ist.

Gerade bei einem Ticketshop zählt der Sicherheitsblick. Ein solches System hat einen hohen Touchpoint nach außen und wird mit viel Frequenz genutzt. Diese Eigenschaften lassen sich automatisiert gut betrachten.

In diesem Fall lag kein lauffähiges System vor. Der Ticketshop war online sichtbar, geprüft wurde nur ein Stück des bereitgestellten Codes, mit statischer Analyse und manueller Durchsicht. Für eine erste Abschätzung reicht das, um daraus konkrete Vorschläge abzuleiten.

Der Code war nicht das Problem, die fehlenden Teile waren es

Bei der Übernahme einer Software ist oft nicht der Code die größte Hürde, sondern das, was nicht mitgeliefert wird. Der geprüfte Code selbst war ordentlich, keine gravierenden Mängel.

Schwieriger waren die Lücken rundherum. Durch wechselnde Verantwortlichkeiten kamen manche Komponenten erst spät. Die Dokumentation entsprach nicht dem Umfang, den ein professionelles Team als Standard ansetzt.

Während der Einarbeitung zeigte sich der eigentliche Knackpunkt: Ein Teil der Software lag nur als Blackbox vor, als Kompilat ohne Quellcode. Rund zwei Drittel der Software waren im Code verfügbar, ein Drittel nicht.

Dieser Moment markiert den Punkt, an dem aus einer planbaren Übernahme ein Überraschungsei wird. Plötzlich steht die Frage im Raum, wie man mit fehlendem Quellcode weiterarbeitet.

Warum ein agiles Mindset bei Software-Übernahmen den Unterschied macht

Wer eine unbekannte Software übernimmt, braucht die Fähigkeit, den Plan unterwegs zu ändern. Die ursprüngliche Idee war: Code analysieren, ein Refactoring machen, einige Funktionen ergänzen, Bugs beheben und Dokumentation nachziehen.

Tatsächlich verschob sich der Fokus. Sehr viel Zeit floss in die Analyse, weil man das System komplett verstehen, alle Teile finden und für die Weiterverwendung aufbereiten musste. Aus der reinen Refactoring-Idee wurde die Frage, was der Kunde im ersten Schritt wirklich braucht.

Das Team-Setup wurde entsprechend umgebaut. Statt mit der anfänglichen Besetzung weiterzumachen, nahm man einige Entwickler heraus und holte einen zweiten Architekten ins Projekt. Insgesamt standen fünf Monate, zwei Architekten und zwei Entwickler zur Verfügung.

Helmut Nitsch betont, dass es dabei nicht um Agilität als Etikett geht.

Da rede ich nicht von dem, was man gepredigt bekommt, sondern davon, ein agiles Mindset zu haben, um auf gewisse Dinge flexibel reagieren zu können. Das ist essentiell gewesen. — Helmut Nitsch

Diese Flexibilität, gepaart mit dem Vertrauensvorschuss des Auftraggebers, war ein Erfolgsfaktor auf beiden Seiten.

Wie plant man eine Migration ohne Downtime?

Eine Migration ohne erlaubte Downtime gelingt durch wiederholtes Proben mit echten Daten. Bei einem Ticketshop darf das System nicht ausfallen, der Wechsel muss praktisch von jetzt auf gleich funktionieren.

Drei Wochen vor dem Termin wurde die Migration mit allen Live-Daten geprobt und vollständig vorbereitet. Dieser Trockenlauf deckt Fehlerquellen auf, bevor sie im Ernstfall zuschlagen.

Erschwerend kam der Zeitpunkt hinzu. Durch Verschiebungen fiel die Migration in die Urlaubszeit, und der Chefarchitekt war in den entscheidenden drei Wochen abwesend. Eine Migration in der Hitze und in der Urlaubszeit erhöht das Risiko menschlicher Fehler.

Die Lösung lag in der Vorbereitung. Der zweite Architekt und der Chefentwickler probten die Migration und bereiteten alles vor. Nach Rückkehr des Architekten ging das Team alles erneut gemeinsam durch.

Auch der Termin war nicht zufällig. Gewählt wurde ein Dienstagmittag, statistisch der Zeitpunkt mit den wenigsten Nutzern im Ticketshop. Das Ergebnis: Die eigentliche Migration dauerte fünf Minuten, danach lief alles.

Die unterschätzten Faktoren am Migrationstag

Neben Technik und Planung zählen die weichen Faktoren. Am Migrationstag saßen alle Entwickler in einem klimatisierten Raum, früh am Start, mit bereitgestelltem Essen und Trinken.

Versorgung und Stimmung sind keine Nebensache. Wer am kritischen Tag für ein gutes Arbeitsumfeld sorgt, senkt Stress und damit die Fehlerwahrscheinlichkeit. Die Faustregel dahinter ist einfach: zweimal planen, einmal machen.

Ehrlichkeit und Kommunikation tragen das Projekt

Sobald Überraschungen auftauchen, entscheidet die Kommunikation über den Ausgang. Am Projekt waren vier Unternehmen beteiligt, entsprechend eng war die Abstimmung nötig.

Das Vorgehen war konsequent: Jede neue Erkenntnis wurde sofort an alle Beteiligten gemeldet. Man rief das Team zusammen, schrieb Szenarien auf, in einem Fall vier oder fünf, und jeder steuerte seine Einschätzung bei.

Entscheidungen wurden aktiv erzwungen. In Meetings galt die Regel, den Raum nicht zu verlassen, bevor eine Entscheidung steht, weil Verzögerung nur Geld kostet. Hartes Priorisieren gehört dazu.

Die kritischste Phase kam fast am Anfang. Fehlende Dokumentation, noch nicht gelieferter Code und die Erkenntnis, dass sich Zeit und Budget so nicht ausgehen, brachten echten Druck, zumal weitere Projekte daran hingen.

In dieser Lage half nur Offenheit. Statt Probleme zu verschweigen, legte man die Szenarien offen auf den Tisch: Mit diesem Vorgehen kommt man bis hierher, mit jenem bis dorthin, und nur mit diesem bis zum Ende. Information-Hiding bringt nichts, denn das verschwiegene Problem taucht später auf, meist im ungünstigsten Moment.

Commitment des Kunden ist mehr als Budget

Ein starkes Commitment des Auftraggebers zeigt sich darin, dass er das ganze Team auf eine gemeinsame Sprache vorbereitet. Vor Projektstart schickte der Kunde das gesamte Team in einen Scrum-Kurs.

Das Ziel war nicht reine Wissensvermittlung, sondern reibungsloser Austausch. Wenn alle Beteiligten dieselben Begriffe verstehen, entsteht beim Abstimmen kein Reibungsverlust.

Der Effekt war spürbar. Wenn das Team etwas sagte, wusste die Gegenseite genau, was gemeint war. Solches Engagement unterscheidet sich deutlich vom verbreiteten Muster, bei dem der Kunde “macht mal” sagt und nur mit ein paar Halbtagskräften unterstützt.

Beim Sparen wird zuerst das Testen gestrichen, und das rächt sich

Eine Konstante zieht sich durch über zwanzig Jahre Testing: Beim Sparen trifft es zuerst das Testen. Das macht ein Projekt nicht günstiger, sondern komplizierter und teurer.

Entwicklung bedeutet nicht nur Coding. Ein Entwicklungsteam braucht weitere Disziplinen, von Requirements Engineering bis Testing. Diese Disziplinen bringen mehr, als sie kosten, und helfen, ein Projekt erfolgreich abzuschließen.

In diesem Projekt war eine Vollzeit-Testmanagerin dabei, was bei Entwicklungsprojekten eher unüblich ist. Üblicher ist die halbe Stelle, die nebenbei testet. Die Vollzeit-Besetzung gab dem Vorgehen strukturell viel vor.

Welche Lehren bleiben für die nächste Software-Übernahme?

Die wichtigste Lehre lautet: Stelle das Team-Setup von Anfang an divers auf, auch wenn du glaubst zu wissen, wie das Projekt verläuft. Im Projekt musste das Team mehrfach umgebaut werden, sobald sich die Richtung änderte.

Ein interdisziplinäres Team kann eine Kompetenz durch eine andere ersetzen, wenn das Projekt sich dreht. Genau dieses Umstufen war ein Erfolgsfaktor. Vorhanden waren unter anderem App-Entwicklung, verschiedene Cloud-Technologien und Know-how aus Testing, Projektmanagement und Automatisierung, gebündelt auf vergleichbarem Niveau.

Für die Praxis lassen sich die tragenden Faktoren so zusammenfassen:

FaktorWirkung im Projekt
Statische Analyse vorabSchnelle Qualitätseinschätzung auch ohne lauffähiges System
Agiles MindsetPlan und Team-Setup unterwegs anpassen, wenn neue Lücken auftauchen
Migration mehrfach probenFehlerquellen vor dem Ernstfall finden, fünf Minuten echter Cutover
Offene KommunikationProbleme früh auf den Tisch, Entscheidungen aktiv erzwingen
Kunden-CommitmentGemeinsamer Scrum-Kurs senkt Reibungsverluste
Vollzeit-TestingStrukturelle Vorgaben statt Sparen an der falschen Stelle

Eine fremde Software zu übernehmen bleibt ein Risiko. Wer aber Analyse, Flexibilität, ehrliche Kommunikation und ein breit aufgestelltes Team zusammenbringt, kann selbst aus einem Überraschungsei ein tragfähiges Produkt machen.

Häufig gestellte Fragen

Die häufigsten Herausforderungen bei der Software Analyse sind unklare Anforderungen, Kommunikationsprobleme und technologische Komplexität. Unklare Anforderungen können durch regelmäßige Meetings mit Stakeholdern und klar dokumentierte Ziele verbessert werden. Kommunikationsprobleme lassen sich durch den Einsatz von Zusammenarbeitstools und transparente Prozesse minimieren. Technologische Komplexität kann durch gezielte Schulungen und die Nutzung bewährter Tools und Frameworks bewältigt werden. Effektive Software Analyse erfordert daher einen strukturierten Ansatz und offene Kommunikation zwischen allen Beteiligten.

Um Software Analyse effektiv in den Softwareentwicklungsprozess zu integrieren, sollte sie frühzeitig beginnen, idealerweise in der Planungsphase. Regelmäßige Analysen während der gesamten Entwicklung helfen, Anforderungen klar zu definieren und potenzielle Probleme frühzeitig zu identifizieren. Zudem sind Feedbackschleifen mit Nutzern wichtig, um die Software kontinuierlich zu verbessern. Die Nutzung von Tools zur statistischen Analyse und Code-Reviews unterstützt den Prozess zusätzlich. Durch diese Maßnahmen wird die Software Analyse zu einem integralen Bestandteil, der Qualität und Effizienz steigert.

Für die Software Analyse sind Tools wie SonarQube, Visual Studio, und Eclipse besonders geeignet. SonarQube hilft dabei, Codequalität und Sicherheitsprobleme zu identifizieren. Visual Studio bietet integrierte Analysefunktionen zur Verbesserung des Codes. Eclipse hat zahlreiche Plugins, die die Software Analyse unterstützen. Diese Tools erleichtern die Erkennung von Fehlern und die Optimierung des Codes, was zu einer besseren Softwareentwicklung führt. Sie sind sowohl für individuelle Entwickler als auch für Teams nützlich.

Software Analyse verbessert die Qualitätssicherung in der Softwareentwicklung, indem sie Fehler frühzeitig identifiziert und systematische Probleme aufdeckt. Durch die gründliche Untersuchung von Anforderungen, Design und Code wird sichergestellt, dass die Software den Erwartungen entspricht. Diese Analyse fördert zudem eine klare Dokumentation und Kommunikation im Team, was Missverständnisse minimiert. Letztlich führt die Software Analyse zu stabileren und zuverlässigeren Produkten, die den Bedürfnissen der Benutzer besser gerecht werden.

Die Modellierung verbessert die Software Analyse, indem sie komplexe Systeme visuell darstellt, was das Verständnis und die Kommunikation fördert. Durch Diagramme und Modelle können Beziehungen und Abläufe klarer erkannt werden, was Fehler und Inkonsistenzen früher sichtbar macht. Zudem ermöglicht die Modellierung die Simulation von Szenarien, um mögliche Probleme proaktiv zu identifizieren. Insgesamt sorgt sie dafür, dass die Software Analyse gezielter, effizienter und fehlerfreier abläuft.

Use Cases verbessern die Software Analyse, indem sie klare Szenarien zur Benutzerinteraktion darstellen. Sie helfen, Anforderungen verständlich zu konkretisieren und Fokussierung auf die wichtigsten Funktionen zu gewährleisten. Durch die Visualisierung von Abläufen und Benutzerbedürfnissen erleichtern Use Cases die Identifikation von Fehlern und Verbesserungspotenzialen in der Software. Außerdem fördern sie die Kommunikation zwischen Entwicklern und Stakeholdern, was zu einer besseren Implementierung der gewünschten Funktionen führt. In der Software Analyse sind sie somit ein zentrales Werkzeug zur Steigerung der Qualität und Benutzerfreundlichkeit der Software.

Die Anforderungsanalyse ist entscheidend für die Software Analyse, da sie sicherstellt, dass die entwickelten Lösungen den tatsächlichen Bedürfnissen der Nutzer entsprechen. Durch die präzise Identifizierung und Dokumentation von Anforderungen können Missverständnisse und kostspielige Änderungen in späteren Phasen vermieden werden. Zudem bildet sie die Grundlage für das Design, die Implementierung und das Testen der Software, wodurch die Qualität und Funktionalität des Endprodukts gewährleistet werden. Ein effektiver Anforderungsprozess fördert außerdem die Kommunikation zwischen Stakeholdern und Entwicklern.

Die Hauptunterschiede zwischen IST-Analyse und SOLL-Analyse in der Software Analyse liegen im Fokus: Die IST-Analyse untersucht den aktuellen Zustand eines Systems, seine Schwächen und Probleme. Im Gegensatz dazu definiert die SOLL-Analyse die gewünschten Ziele und Anforderungen für die Zukunft. Während die IST-Analyse eine Bestandsaufnahme bietet, legt die SOLL-Analyse die Grundlage für Verbesserungen und neue Entwicklungen. Beide Methoden sind essenziell für erfolgreiche Softwareprojekte, da sie eine klare Grundlage für die Planung und Umsetzung bieten.

Die effektivsten Methoden der Software Analyse in der Softwareentwicklung sind die statische und dynamische Analyse. Statische Analyse überprüft den Quellcode auf Fehler bevor die Software ausgeführt wird, während dynamische Analyse das Verhalten der Software während der Ausführung evaluiert. Beide Methoden helfen, Sicherheitslücken und Bugs frühzeitig zu identifizieren, was die Qualität der Software erhöht. Zusätzlich sind Anforderungsanalyse und Benutzerfeedback essentiell, um die Software genau auf die Bedürfnisse der Anwender abzustimmen. Diese Ansätze zusammen verbessern die Software Analyse und fördern eine erfolgreiche Entwicklung.

Software Analyse ist der Prozess, der Informationen über ein Software-System sammelt, um dessen Anforderungen, Struktur und Funktionalität zu verstehen. Zu den Methoden der Software Analyse gehören die funktionale Analyse, die Datenflussanalyse, die objektorientierte Analyse und die UML-Modellierung. Diese Methoden helfen dabei, die Software zu dokumentieren, Fehler zu identifizieren und Verbesserungspotenziale zu erkennen. Eine fundierte Software Analyse ist entscheidend für die Qualität und den Erfolg von Softwareprojekten.

Diese Seite teilen

Ähnliche Beiträge