Wenn man Software professionell entwickeln lässt, kann es vorkommen, dass man mit technischen Begriffen und Abkürzungen konfrontiert wird. In diesem Blogpost möchte ich Ihnen einen Überblick über einige Fachbegriffe geben, welche während der Anforderungsanalyse und Implementationsphase gerne von Softwareentwicklern verwendet werden.
Architektur
Dieser Begriff wird wahrscheinlich am Häufigsten verwendet, wenn es darum geht, neue Software zu entwickeln, oder auch bestehende Programme zu erweitern. Doch was genau ist damit eigentlich gemeint, man will ja kein Haus bauen? Tatsächlich ist die Softwarearchitektur gar nicht so weit von der «realen» Architektur entfernt. Wenn ein Architekt ein Haus entwirft, ist das Ziel immer dasselbe: Ein Gebäude bauen. Dieses Gebäude hat ein oder mehrere Türen, Fenster und Räume, welche mit Mauern und Dächern begrenzt werden. Klingt prinzipiell sehr einfach, allerdings steckt in diesem Konstrukt natürlich sehr viel mehr drin: Wie genau sind die Räume ausgelegt, wo sind die Türen platziert, wie ist der Grundriss, wie gut ist alles isoliert, usw. Diese Auflistung kann man schier unendlich weiterführen bis zum Schliessmechanismus eines Fensters.
Ähnlich ist es bei der Softwareentwicklung. Das Produkt ist immer dasselbe: ein Computerprogramm. Nur gibt es unendlich viele Varianten, wie man ein spezifisches Programm entwickelt, wie es sich verhält, wie es die Daten speichert, wie es Benutzereingaben entgegen nimmt. Viele Varianten sind allerdings in der Realität nicht tauglich, da sie ineffizient sind oder fehleranfällig. Desweiteren kommt dazu, dass Software weiterentwickelt wird, anders als bei einem Haus, weshalb die Architektur auch flexibel sein muss.
Deswegen ist es sehr wichtig, eine solide Architektur schon von Beginn auf zu wählen. Die nachfolgenden Methoden unterstützen den Entwickler dabei.
GRASP
Diese Abkürzung steht für General Responsibility Assignment Software Patterns und umschreibt eine Menge von grundlegenden Prinzipien, welche in der Softwareentwicklung verwendet werden und als Orientierung dienen. Anders als beispielsweise die GoF (Gang of Four) Design Patterns, welche spezifische Entwurfsmuster formulieren, bezeichnet GRASP allerdings nur Grundsätze und Prinzipien.
Diese Muster haben dabei das Ziel, Software möglichst lesbar und wartbar zu machen, in dem man den Quellcode klar strukturiert, Aufgaben eindeutig zuweist, Abhängigkeiten auf ein Minimum reduziert und Seiteneffekte vermeidet.
TDD, BDD
Diese Abkürzungen bezeichnen zwei Implementationsstrategien. TDD steht dabei für Test-Driven Development und BDD für Behavior-Driven Development.
TDD bezeichnet dabei die Strategie, dass man zuerst automatisierte Tests schreibt, bevor man ein Bauteil des Programms selbst einbaut. Dies hat den Vorteil, dass man sich zuerst Gedanken darüber macht, wie dieses Bauteil sich verhalten soll und man fängt mögliche Edge-Cases schon früh ab, bevor das Programm überhaupt veröffentlicht wird. Dies ist unter anderem auch der Grund, warum wir diese Strategie bei der Entwicklung von Programmen verfolgen. Erfahre mehr zu dieser Methode in unserem seperaten Blogbeitrag über TDD.
BDD bezeichnet die Test-Strategie, dass man automatisierte Tests aus Benutzersicht schreibt, am besten durch einen Business-Analysten, welcher Experte in der Domäne ist und dementsprechend die Rahmenbedingungen am besten kennt.
Des weiteren gibt es noch die Code-Driven Development Strategie, bei welcher man zuerst ein Bauteil implementiert und dies erst danach testet. Das wirkt zwar auch den ersten Blick intuitiv, kann aber fehleranfällig sein und auch dazu verleiten, den Code zu duplizieren.
Schnittstellen
Eine Schnittstelle ist in der Informatik eine Anbindung von einem Baustein an einen beliebig anderen Baustein. Eine der wohl bekanntesten Schnittstellen-Typen ist wahrscheinlich die REST-API (Representational State Transfer Application Programming Interface) von einem Client (bspw. dem Browser) zu einem Server. Bei dieser Schnittstelle stellt der Server ein Bereich zur Verfügung, mit welchem sich der Browser oder bspw. eine Mobile-App verbinden kann, um Daten zu erhalten und zu modifizieren sowie Prozesse anzustossen. Es gibt allerdings weitaus mehr Schnittstellen, welche überall verwendet werden können, um ein in sich abgeschlossenes System von aussen zu bedienen. Dies kann auch auf dem selben Computer geschehen, wenn z.B. der Server mit der Datenbank, welche auf dem selben Rechner läuft, kommuniziert.
MVC
Diese Abkürzung steht für «Model View Controller» und bezeichnet ein Modell zur Abstrahierung eines Programms in drei Komponenten. Das Datenmodell (Model), die Präsentation (View) und die Steuerung (Controller). Dieses Pattern wird in der Praxis relativ häufig verwendet, unter anderem auch in Ruby on Rails.