Schlechtes Software-Design trägt dazu bei
Leider ist das Konzept der schlechten Softwarequalität nahezu unausweichlich. Nichtsdestotrotz haben wir Zugang zu allen Ursachen, die zum Aufkommen von schlechtem Softwaredesign beitragen können, und dies kann hilfreich sein, wenn wir den Beginn von Softwarequalitätsproblemen kontrollieren und vorhersagen wollen (Salonek, 2013). Insbesondere sollte man sich mit schlechter Softwarequalität befassen, da sie eng mit den primären Geschäftsrisiken verbunden ist.
Der erste Faktor, der zur Entwicklung schlechter Software führen kann, ist der Mangel an spezifischem Wissen (Merkow & Raghavan, 2010). Hier besteht das Problem darin, dass die Mehrheit der Entwickler nichts mit der geschäftlichen Seite von Software zu tun hat (unabhängig von der Geschäftsdomäne, die sie interessiert). Diese Entwickler werden im Laufe der Entwicklung und des Designs von Software mehr über den betreffenden Bereich lernen, aber sie müssen auch alle Fehler korrigieren, die aufgrund eines falschen Verständnisses der funktionalen Anforderungen auftreten (Lee, 2017). Die einzige Möglichkeit, diesen Beitrag abzumildern, besteht darin, den Entwicklern Schulungen anzubieten und das System mit Hilfe von Experten auf dem Gebiet zu überprüfen.
Der zweite Faktor, der zu schlechter Softwarequalität beiträgt, ist der Mangel an technologischem Wissen (Merkow & Raghavan, 2010). Natürlich beherrschen die meisten Entwickler eine ganze Reihe von Programmiersprachen und verfügen über Fachwissen im Bereich IT und Hardware. Dennoch erfordern die bestehenden Geschäftsanwendungen, dass sie über den Tellerrand hinausschauen, um komplexe mehrschichtige Software zu pflegen, die als eine Kombination von Softwareplattformen und Programmiersprachen verstanden werden sollte (Wiegers & Beatty, 2015). Dieser Aspekt der Softwareentwicklung steht in direktem Zusammenhang mit der Datenverwaltung und der Geschäftslogik, weshalb es von entscheidender Bedeutung ist, die technischen Mängel des Systems aufzuzeigen und sie so schnell wie möglich zu beheben.
Der dritte Faktor, der zu schlechter Softwarequalität beiträgt, ist das Fehlen einer realistischen Zeitplanung (Merkow & Raghavan, 2010). Dies ist ein wichtiger Aspekt, da die Entwickler aufgrund strenger Fristen oft gezwungen sind, den Entwicklungsprozess zu beschleunigen. Dies hat erhebliche Auswirkungen auf ihre Softwareentwicklungspraktiken, und sie müssen den positiven Output zugunsten der rechtzeitigen Bereitstellung der endgültigen Version der Softwareanwendung opfern (Wiegers, 2013). Der Grund für diese negativen Ergebnisse ist eine große Anzahl von Fehlern und Bugs, die aufgrund des hohen Entwicklungstempos nicht behoben werden können. Die einzige Möglichkeit, den Mangel an realistischer Zeitplanung abzumildern, besteht in der Anwendung solider Projektmanagementpraktiken. Dies ermöglicht es dem Team, Probleme zu verfolgen und zu identifizieren und die Anforderungen erfolgreich einzuhalten, während es gleichzeitig vom Manager effizient kontrolliert wird.
Funktionale und nichtfunktionale Softwareanforderungen
Funktionale und nicht-funktionale Anforderungen spielen während des gesamten Prozesses der Softwareentwicklung eine wichtige Rolle. Um positive Ergebnisse zu erzielen, müssen wir uns sorgfältig mit dem Kontext des jeweiligen Projekts befassen und jedem Teammitglied die Ziele des Projekts mitteilen. Eine funktionale Anforderung ist ein spezifischer Begriff, der die Vorgänge und Methoden definiert, die das System implementieren und pflegen muss (Yamada, 2014). Mit anderen Worten, wir können eine funktionale Anforderung auch als eine bestimmte Funktion des Systems definieren, die nur verfügbar ist, wenn alle erforderlichen Bedingungen erfüllt sind. Zum Beispiel kann das System eine Begrüßungs-E-Mail an einen neuen Kunden senden, der sich gerade für das Registrierungsformular angemeldet hat. Zahlreiche typische funktionale Anforderungen müssen im System vorhanden sein, damit dieses korrekt funktioniert. Die wichtigsten funktionalen Anforderungen sind Geschäftsregeln und die Pflege und Anpassung von Transaktionen (Yamada, 2014). Das System sollte außerdem in verschiedene Berechtigungsstufen unterteilt sein und einen robusten Authentifizierungsmechanismus bieten, der das System vor unberechtigtem Zugriff schützt. Weitere funktionale Anforderungen sind Zertifizierung, Kompatibilität mit externen Schnittstellen und historische Daten. Zu den sekundären funktionalen Anforderungen gehören Berichte, behördliche Anforderungen und historische Daten.
Auf der anderen Seite gibt es nichtfunktionale Anforderungen, die die Art und Weise der Ausführung einer bestimmten Funktion darstellen, die innerhalb des Systems skizziert wurde. Diese Anforderungen können auch als Leitlinien für das Verhalten des Systems und seine letztendlichen Grenzen beschrieben werden (Adams, 2016). Mit anderen Worten: Nicht-funktionale Anforderungen legen besonderes Augenmerk auf die Eigenschaften des Systems und seine Qualitätsmerkmale. So kann es beispielsweise eine nichtfunktionale Anforderung im System geben, die besagt, dass die geänderten Daten innerhalb von drei Sekunden für alle Endbenutzer, die Zugriff darauf haben, aktualisiert werden müssen. Ähnlich wie ihre funktionalen Gegenstücke spielen auch die nichtfunktionalen Anforderungen eine wichtige Rolle im Rahmen jeder Softwareanwendung.
Zu den wichtigsten Anforderungen gehören Leistung, Skalierbarkeit und Verfügbarkeit. Nach der nichtfunktionalen Sichtweise von Software sollte eine Anwendung standardmäßig zuverlässig und wiederherstellbar sein (Pandey & Goyal, 2013). Die Konzepte der Sicherheit und der Wartung sind ebenfalls von zentraler Bedeutung für eine anständige Software. Um die grundlegenden Richtlinien der Softwareentwicklung einzuhalten, müssen die Entwickler besonders auf die Benutzerfreundlichkeit und die Datenintegrität innerhalb der Anwendung achten. Der Kerngedanke hinter den nichtfunktionalen Anforderungen ist, dass sie aufgrund ihrer Verbindung mit der Benutzererfahrung mit Bedacht angegangen werden müssen. Um keine wichtigen nicht-funktionalen Anforderungen zu übersehen, sollte man eine Liste der wichtigsten Anforderungen erstellen und diese nacheinander umsetzen.
Referenzen
Adams, K. (2016). Non-functional requirements in systems analysis and design. New York, NY: Springer.
Lee, R. Y. (2017). Software Engineering: A hands-on approach. Hauppauge, NY: Nova Science.
Merkow, M. S., & Raghavan, L. (2010). Sichere und widerstandsfähige Softwareentwicklung. Boca Raton, FL: CRC Press.
Pandey, A., & Goyal, N. (2013). Frühe Vorhersage der Software-Zuverlässigkeit: A fuzzy logic approach. New Delhi, India: Springer.
Salonek, T. (2013). Die 15 schlimmsten Computer-Software-Fehler. Web.
Wiegers, K. (2013). Die Schaffung einer Software-Engineering-Kultur. Boston, MA: Addison-Wesley Professional.
Wiegers, K., & Beatty, J. (2015). Software requirements. Redmond, WA: Microsoft Press.
Yamada, S. (2014). Software reliability modeling: Fundamentals and applications. Tokyo, Japan: Springer.