Entwicklung, Qualität

Die 12 wichtigsten Fragen bevor Sie Software entwickeln (oder entwickeln lassen)

Alexander Wagner

Softwareentwicklung ist durchaus komplex und birgt einige Risiken. Um diese zu minimieren, sollten versierte Software Engineers bzw. deren Auftraggeber frühzeitig einige wichtige Fragen beantworten. Denn diese Erkenntnisse können große Auswirkungen auf den späteren Verlauf eines Software-Projekts haben.

Egal ob es sich um klassische Software, eine App oder komplexe Website handelt: Neben den üblichen Fragen nach der eigentlichen Funktionalität sollten Sie sich selbst bzw. Ihr Entwickler noch zusätzlich die folgenden Fragen stellen. Diese sind für fast jedes Projekt relevant und helfen dabei, zu einem möglichst frühen Zeitpunkt gute Entscheidungen im Hinblick auf Ihre Software treffen zu können.

Wenn Sie die Software entwickeln lassen, können Sie Ihrem Umsetzungspartner damit einen schnellen Einstieg in deren wichtigste Aspekte ermöglichen. Wenn Sie selbst als Entwickler tätig sind, haben Sie hier einen praxisorientierten Fragenkatalog, um früh kritische Aspekte des Projekts herausarbeiten zu können.

1. Welche (geschäftlichen) Ziele werden mit der Software verfolgt, und was ist ihr Scope?

Bevor eine Software entwickelt wird, sollten sich alle Beteiligten darüber im Klaren sein, welche übergeordnete Zwecke sie erfüllen soll. Dient sie dazu, neue Kunden zu gewinnen? Soll sie das Service-Angebot für bestehende Kunden erweitern? Soll sie interne Unternehmensprozesse optimieren? Diese Ziele zu kennen ist enorm wichtig, da diese maßgeblichen Einfluss auf die zu entwickelnde Software haben.

Sind die Ziele bekannt, sollte der Scope der Anwendung abgesteckt werden: Dabei wird grob definiert, was die Software leisten, und vor allem auch was diese nicht leisten soll. Diese klaren Grenzen geben den Rahmen vor, innerhalb dessen die weitere Entwicklung erfolgt.

2. Auf welchen Plattformen soll die Software genutzt werden können?

Eine ganz wichtige Frage, da sie große Auswirkungen auf die verwendeten Technologien hat, die nach Beginn der Entwicklung meist nur mit großem Aufwand getauscht werden können.

Bei einer App sollte geklärt werden, auf welchen Geräten sie in Betrieb genommen wird. Android und/oder iOS? Welche Gerätetypen und -größen sollen unterstützt werden? Sollen auch ältere Versionen der Betriebssysteme unterstützt werden?

Bei einer Webapplikation stellt sich die Frage nach der Browserkompatibilität: Welche Browser in welchen Versionen werden die Anwendung voraussichtlich aufrufen?

Und selbstverständlich muss auch für jede andere Art von Software geklärt werden, auf welchen Plattformen diese betrieben wird, sei es eine Applikation für Windows oder ein Embedded System.

3. Mit welchen anderen Systemen soll die Software zusammenarbeiten?

Gibt es beispielsweise Cloud-Services, die genutzt werden müssen oder sollen? Muss sich die neue Anwendung in ein Ökosystem von bestehenden Legacy-Systemen einfügen, und mit diesen zusammenarbeiten? Gibt es bereits eine bestehende Datenbank, auf die auch die neue Software zugreifen muss, bzw. deren Daten dorthin migriert werden müssen?

4. Welche ungefähren Mengengerüste bestimmen die Software?

Hier muss z.B. geklärt werden, wie viele Nutzer die Applikation gleichzeitig nutzen werden. Wie viele Downloads einer App werden für einen bestimmten Zeitraum angepeilt? Gibt es typische Peaks, in denen besonders viele Nutzer gleichzeitig aktiv sind (z.B. vor Weihnachten)? Aus welchen geographischen Regionen kommen die Nutzer? Sind diese hauptsächlich lokal vor Ort, oder global verteilt?

Neben den Nutzern sind auch interne Mengengerüste relevant: Wie viele Datensätze werden täglich erzeugt? Wie viele MB müssen in einem bestimmten Zeitraum verarbeitet werden?

Diese Mengengerüste müssen nur ganz grob geschätzt werden, oft sind genaue Zahlen ja noch unbekannt. Doch auch grobe Schätzungen sind hier sehr wertvoll, denn eine Software mit Hunderten von Nutzern hat andere Anforderungen als eine mit Millionen von Nutzern.

Vor allem für die Performance der Software sind diese Daten sehr wichtig. Bei großen, geschätzten Zahlen sollten früh Maßnahmen ergriffen werden, damit diese auch tatsächlich gestemmt werden können.

5. Gibt es spezielle Anforderungen hinsichtlich der Benutzbarkeit?

Es ist jedem klar, dass eine Software möglichst gut zu bedienen sein soll. Doch kann es in einigen Fällen darüber hinaus besondere Erfordernisse geben: Soll die Software möglichst barrierefrei sein, bzw. eine bestimmte Konformitätsstufe erfüllen?

Welche Art von Hilfestellungen soll der Benutzer erhalten (z.B. Anleitungen, Tooltips, interaktives Tutorial, …)? Wie verhält sich das System bei Fehleingaben? Gibt es spezielle Animationen und Effekte, die die Software attraktiver machen sollen?

Für Webapplikationen wichtig: Soll die Navigation durch die Anwendung oder andere Aktionen des Benutzers immer ein komplettes Neuladen der Seite auslösen? Gibt es bestimmte Bereiche die davon ausgenommen sein sollen? (diese funktionieren dann mittels AJAX)

Oder soll sogar die gesamte Webapplikation nach dem ersten Laden kein vollständiges Neuladen mehr erfordern? (dies wäre dann eine SPA, also „Single Page Application“)

6. Wer stellt die inhaltlichen Ressourcen zur Verfügung?

Wer erstellt das Grafikdesign für die User Interfaces der Anwendung? Werden alle benötigten Icons und Bilder zur Verfügung gestellt? Sind diese bereits zugeschnitten und komprimiert, oder muss dies vom Entwickler vorgenommen werden? Wer erstellt Animationen und sonstige Effekte?

Und ganz wichtig: Werden alle Texte geliefert? Dies betrifft sowohl die inhaltlichen Texte, als auch die Texte des UI, wie z.B. Beschriftungen und Erklärungen. Werden auch die zugehörigen Font-Dateien zur Verfügung gestellt?

Im Zusammenhang mit den Texten sollte auch die Frage der Mehrsprachigkeit bzw. allgemeinen Lokalisierung geklärt werden: In welchen Sprachen sollen diese angezeigt werden? Kann diese Sprache zur Laufzeit umgeschaltet werden? Gibt es noch andere Aspekte als Texte, die lokalisiert werden müssen (z.B. Währungen)?

7. Wie soll sich die Software unter besonderen Bedingungen verhalten, wie z.B. wenn offline?

Ein großer Teil der heutigen Software kommuniziert offensichtlich oder nur im Hintergrund mit einem oder mehreren Servern, um mit diesen Daten auszutauschen. Wie soll sich solch eine Software verhalten, wenn diese Verbindung ausfällt? Verweigert sie dem Benutzer den weiteren Dienst oder arbeitet sie mit dem letzten Stand weiter?

Auch für Webapplikationen wird diese Frage zunehmend interessant, denn mit modernen Technologien kann sogar solch eine Applikation in gewissem Umfang auch offline weiterhin benutzt werden.

Gibt es noch andere besondere Bedingungen, unter denen die Software operieren muss?
Wie z.B. auf exotischer Hardware, für sehr lange Laufzeit, unter sehr großer Last, …

8. Wie sollen Updates der Software erfolgen?

Eine Software ist nach ihrer ersten Auslieferung meist noch nicht am Ende Ihres Lebenszyklus angelangt. Sie wird um neue Features erweitert, Fehler werden behoben und sie muss an geänderte Rahmenbedingungen angepasst werden. Daher sollte gleich bei der Entwicklung eine Strategie angedacht werden, wie Updates durchgeführt werden können.

Apps bieten hier über Stores bereits einen ausgereiften Mechanismus, und auch Webapplikationen können meist einfach aktualisiert werden.

Doch auch in solchen Fällen sollte man einige Szenarien vorab durchdenken: Wie geht man mit Benutzern um, die das Update auf ihren Geräten noch nicht durchgeführt haben? Sollen diese keine Daten in neuer Version erhalten, oder werden für diese noch die Daten in alter Version ausgeliefert? Müssen lokal gespeicherte Daten von Benutzern aktualisiert werden? Wie sollen zwei Benutzer mit unterschiedlichen Versionen der Software interagieren können?

Und auch organisatorisch sollte ungefähr geplant werden, wie häufig und für welche Benutzergruppen Updates erfolgen sollen.

9. Wer ist für den Betrieb der Software verantwortlich?

Eine Software muss nicht nur erstellt, sondern auch betrieben werden. Vor allem Webapplikationen benötigen eine entsprechende Serverinfrastruktur, auf denen sie gehostet werden. Doch auch für Apps und andere Anwendungen ist es oft erforderlich, Server zu betreiben, mit denen diese kommunizieren.

Während der Entwicklung sollte auch schon die Umgebung berücksichtigt werden, in denen die Software betrieben wird, um böse Überraschungen nach einem Deployment zu vermeiden. Hier ist es sinnvoll, wenn das Entwickler- und Betriebsteam in engem Kontakt miteinander stehen. Wenn gar dasselbe Team für Entwicklung und Betrieb verantwortlich ist, dann ist dies ohnehin gegeben. Idealerweise wird (gemeinsam) eine Entwicklungs- und Testumgebung aufgesetzt, die weitgehend der späteren Produktivumgebung entspricht.

10. Gibt es spezielle Anforderungen in Bezug auf Sicherheit und Datenschutz?

Ein hohes Maß an Sicherheit ist für fast jede Art von Software gewünscht und wichtig. Doch sollten auch hier die kritischen Bereiche der Software besprochen werden: Gibt es besonders sensible Daten die verarbeitet oder gespeichert werden? Sollen Zahlungen getätigt werden? Welche Arten von Eingaben kann ein Benutzer vornehmen, und welche Auswirkungen haben diese auf das System? Gibt es eine Strategie, um Backups zu erstellen und wiederherzustellen?

Jede Neuentwicklung sollte heutzutage auch die Erfordernisse der DSGVO in Betracht ziehen. Dazu muss analysiert werden, welche persönlichen Daten die Software verarbeitet und welche Rechtsgrundlage hierfür besteht. Lesen Sie dazu auch unseren Artikel: „10 Fragen zur Datenschutzgrundverordnung (DSGVO)“

11. Gibt es besondere rechtliche Rahmenbedingungen?

Bestehen beispielsweise in der Branche, in der die Software betrieben werden soll, etwaige Gesetzesvorschriften, die unbedingt beachtet werden müssen? Gibt es laufende Verträge, die die Applikation beeinflussen? Sind alle benötigten Lizenzen vorhanden?

Könnte die Software ein bestehendes Patent oder andere Interessen Dritter verletzen?

12. Wie lauten der Zeitrahmen und das Budget für die Entwicklung der Software?

Spätestens am Ende sollte immer die Frage nach dem Zeitrahmen erfolgen: Wieviel Zeit ist für die Entwicklung veranschlagt, wann soll die Software in Betrieb gehen?

Auch wenn sie nicht immer gerne beantwortet wird, ist auch die Frage nach dem vorhandenen Budget für die Software sinnvoll.

Denn nachdem man all diese Fragen durchgearbeitet hat, lässt sich oft schon abschätzen, ob das vorhandene Budget und der geplante Zeitrahmen mit den Erfordernissen für die Software zusammenpassen oder stark auseinander driften. Somit können unrealistische Erwartungen früh besprochen und gemeinsame Lösungen gefunden werden.

 

Dieser Fragenkatalog kann sowohl Auftraggebern als auch Entwicklern eine wertvolle Hilfestellung dabei leisten!