Rapid Application Development Moderne Bausteine der Softwareentwicklung

Ein Gastbeitrag von Dr. Veikko Krypczyk |

Anbieter zum Thema

In der modernen Softwareentwicklung wird ein Anwendungssystem aus vielen Einzelkomponenten zusammengesetzt. Die Verarbeitung erfolgt idealerweise in der integrierten Entwicklungsumgebung. Im Artikel blicken wir auf Komponenten-basierte Softwareentwicklung und stellen heraus, was zu beachten ist.

Komponenten kapseln eine bestimmte Funktionalität und stellen diese über definierte Schnittstellen den Anwendungen zur Verfügung.
Komponenten kapseln eine bestimmte Funktionalität und stellen diese über definierte Schnittstellen den Anwendungen zur Verfügung.
(Bild: PIRO / Pixabay)

Komponenten spielen eine wichtige Rolle bei der Entwicklung von Software. Es sind Bausteine, aus welchen die Anwendungssysteme zusammengesetzt werden. Die Komponenten kapseln eine bestimmte Funktionalität und stellen diese über definierte Schnittstellen den Anwendungen zur Verfügung.

Arten und Rolle von Softwarekomponenten bei der Erstellung von Anwendungssystemen.
Arten und Rolle von Softwarekomponenten bei der Erstellung von Anwendungssystemen.
(Bild: Dr. Krypczyk)

Das Prinzip gilt weitgehend unabhängig davon, welche Art von Software (Desktop, Mobile, Web) und mit welchen Werkzeugen, Framework und Programmiersprachen diese entwickelt wird. Ein Anwendungssystem besteht i.d.R. aus mehreren Arten von Softwarekomponenten, wie vorne zu sehen-.

Zum einem handelt es sich um Standardkomponenten, das sind zum Beispiel Komponenten für die Gestaltung des User Interfaces. Hierunter fallen Komponenten, welche in den Applikationen immer wieder zum Einsatz kommen, wie Buttons, Texteingabefelder, Labels usw. Von diesen Komponenten können weitere Komponenten durch Vererbung abgeleitet werden. Dabei wird vorhandene Funktionalität übernommen, angepasst und erweitert.

Ebenso können für bestimmte Programmfunktionen eigene Komponenten – mit dem Ziel der mehrfachen Verwendung – erstellt und eingesetzt werden. Auf diese Weise entstehen komplette Bibliotheken von Softwarebausteinen, aus welchen bei Bedarf ausgewählt werden kann. Die Komponenten werden mit weiteren individuellen Softwarebestandteilen kombiniert und zu einer neuen Anwendung zusammengefügt.

Eine Komponente ist somit ein Teil der Software, welche eine sinnvolle Funktionalität bietet, mit eindeutig definierten Schnittstellen ausgestattet ist und mit anderen Komponenten kombiniert werden kann. Typische Anforderungen an eine Komponente sind in der folgenden Tabelle zusammengefasst.

Wiederverwendung:
Die Komponente soll so gestaltet sein, dass man diese universell einsetzen kann. Man möchte sie in den unterschiedlichsten Anwendungen und Nutzerszenarien verwenden.
Konfigurierbar:
Komponenten sollen gut an unterschiedliche Aufgaben angepasst werden können, ohne dass man in die Komponente selbst eingreifen muss. Die Konfiguration der Komponente erfolgt über Parameter der Schnittstelle.
Zweck:
Eine Komponente soll auf eine bestimmte Aufgabe abzielen und einem definierten Zweck dienen. Dabei sollte der Funktionsumfang auf die Aufgabe beschränkt und spezialisiert sein.
Robust:
Die Komponente soll robust sein und zuverlässig funktionieren. Umfangreiche und sorgfältige Tests sind Voraussetzung dafür. Meist kann man keine Änderungen an fertigen Komponenten vornehmen, da man nicht über den Quellcode der Komponente verfügt.
Universelle Nutzung:
Die Rahmenbedingungen, wie Programmiersprache, Plattform und Entwicklungsumgebung sollten beim Komponenteneinsatz möglichst keine Rolle spielen. Die relevanten Merkmale einer Komponente sollen in der Schnittstelle definiert werden.
Dokumentation:
Eine Komponente sollte vollständig dokumentiert werden. Anhand von Beispielen sollte deren Verwendung in typischen Szenarien gezeigt werden.

Die Möglichkeit der Wiederverwendbarkeit ist entscheidend bei der Nutzung von Komponenten. Die Ziele sind eine Reduktion des Aufwands und der Kosten der Entwicklung. Dadurch kann die Entwicklungszeit des Gesamtsystems i.d.R. deutlich verkürzt werden. Der Einsatz von vielfältig genutzten Komponenten führt meist auch zu einer Steigerung der Qualität des Anwendungssystems. Fehler können vermieden werden und die Wartung der Komponente übernimmt der Hersteller.

Bei der Nutzung von Komponenten als Bausteine zur Gestaltung des User Interfaces kommt es darauf an, dass man ein einheitliches Design erreicht, daher sollten dafür Komponenten mit einem identischen Designansatz verwendet werden. Die Entwicklung von Komponenten mit einer möglichst universellen Nutzbarkeit führt zunächst zu einem höheren Aufwand, zum Beispiel durch die Implementierung einer generisch zu verwendenden Schnittstelle, das Erstellen einer Dokumentation und einem größeren Aufwand beim Testen. Wird die Komponente jedoch mehrfach eingesetzt, dann wird sich diese Investition schnell rentieren.

Anhand der Wiederverwendungsform können Komponenten in drei Modelle aufgeteilt werden:

  • Blackbox: Die Komponente stellt eine in sich abgeschlossene Einheit dar. Sie wird in das System aufgenommen und kann nicht verändert werden. Die Verwendung erfolgt über eine definierte Schnittstelle. Über den Aufbau und die innere Funktionsweise kann keine Aussage gemacht werden. Fehler in der Komponente schließen deren Verwendung aus, da die innere Codierung nicht bekannt und auch nicht angepasst werden kann.
  • Whitebox: Diese Form von Komponenten sind als offene Einheit zu betrachten. Der Quellcode ist zugänglich und kann beliebig entsprechend den neuen Anforderungen modifiziert werden. Der interne Aufbau ist einsehbar und anpassbar.
  • Greybox: Es handelt sich um eine Zwischenform von Black- und Whitebox, d.h. im Regelfall wird die Komponente so eingesetzt, wie diese vorliegt. Erfordert jedoch ein besonderes Nutzungsszenario eine individuelle Anpassung, dann ist diese möglich. Man kann beispielsweise den Quellcode der Komponente zusätzlich erwerben.

Die meisten Komponenten – welche man von Drittanbietern erwirbt – liegen in Form einer Blackbox vor. Der Einsatzzweck, zum Beispiel für den Aufbau einer Benutzeroberfläche, ist genau umschrieben. Eine weitere Anpassung der Komponente ist i.d.R. jedoch nicht vorgesehen.

Der Quellcode der Komponente gehört auch nicht zum Lieferumfang, d.h. man erwirbt nur ein Nutzungsrecht. Funktionalität und Verhalten einer Komponente müssen klar definiert sein. Beispielhaft betrachten wir den Einsatz von Komponenten in der Entwicklungsumgebung RAD Studio, bestehend aus den Einzelprodukten Delphi und C++ Builder.

Komponenten in Delphi

RAD Studio ist eine integrierte Entwicklungsumgebung, welche das Erstellen von Anwendungen für die unterschiedlichen Systeme erlaubt. Dabei kann zwischen den Programmiersprachen Delphi und C++ gewählt werden. Beiden gemeinsam ist der Einsatz von Komponenten. Es wird zwischen visuellen und nicht visuellen Komponenten unterschieden.

Visuelle Komponenten werden zum Erstellen der Benutzeroberfläche im grafischen Designer der Entwicklungsumgebung genutzt. Nicht visuelle Komponenten stellen weitere häufig benötigte Funktionalität bereit. In Bezug auf das verwendete Grafikframework von RAD Studio können wir folgende Arten von visuellen Komponenten unterscheiden:

  • Komponenten für die Visual Component Library (VCL): Diese können in Applikationen für das Betriebssystem Windows eingesetzt werden.
  • Komponenten für FireMonkey (FMX): Sie finden Verwendung in geräteübergreifenden Anwendungen für die Systeme Windows, macOS, Linux (Desktop) bzw. iOS und Android (Mobile).

Basiskomponenten von RAD Studio. aus der IDE.
Basiskomponenten von RAD Studio. aus der IDE.
(Screenshot : Dr. Krypczyk)

Neben den Basiskomponenten hat der Entwickler die Möglichkeit Komponenten von Drittanbietern einzusetzen. Die Basiskomponenten decken dabei bereits einen Großteil der typischen Anforderungen einer Applikation ab. Für RAD Studio sind es beispielsweise grundlegende Komponenten für die Gestaltung der Benutzeroberfläche, nicht visuelle Komponenten für den Zugriff auf Datenbanken oder weitere visuelle Komponenten für das Design der Anwendung (Effekte).

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Komponenten von Drittanbietern erweitern zum einem die Funktionen der Basiskomponenten bzw. sie stellen weitere häufig genutzte Funktionen bereit. Hier gibt es je nach Entwicklungssystem eine große Vielfalt. Das Angebot reicht von einzelnen, als Open Source, angebotenen Komponenten mit Quellcode, bis hin zu umfassenden kommerziellen Komponentensuiten der bekannten Hersteller. Bei der Auswahl einer oder mehrere Komponenten sind die folgenden Kriterien von Relevanz:

  • Funktionalität: Das ist das entscheidende Kriterium. Die ausgesuchte Komponente muss die gewünschte Funktion in den geforderten Umfang unterstützen. Dabei gilt jedoch auch, dass ein „Overload“ an Funktionsvielfalt nicht wünschenswert ist, denn dann steigt die Komplexität.
  • Kompatibilität: Die Komponente muss mit dem Programmiersystem in allen Belangen, beispielsweise zur Version der Programmiersprache und der Entwicklungsumgebung kompatibel sein.
  • Lizenz: Einige Komponenten stehen als Open Source zur Verfügung. Bei Komponenten von kommerziellen Anbietern ist neben den Kosten auf die weiteren Leistungen zu achten, zum Beispiel das Lizenzmodell, Support, Pflege, Dokumentation, Zugriff auf Quellcode usw.
  • Weiterentwicklung: Es ist wichtig, dass die Komponente stetig weiterentwickelt wird, beispielsweise an Systemaktualisierungen angepasst wird.
  • Dokumentation: Eine Komponente wird i.d.R. als Blackbox eingesetzt. Nutzung und Datenaustausch erfolgen über die Schnittstellen der Komponente. Dazu müssen diese vollständig, ausführlich und am besten mit Hilfe von Beispielen dokumentiert sein. Eine gute Dokumentation umfasst Hinweise zur Installation bzw. Setup der Komponente; der Einsatz wird anhand von typischen Beispielen gezeigt; es gibt eine Beschreibung aller Features und Konfigurationsmöglichkeiten und eine Auflistung von typischen Fragen, Antworten und Best Practice.
  • Case Studies: Wie gut eine Komponente einsetzbar ist, zeigt sich bei der Verwendung in der Produktion sich befindenden Projekten. Ein typisches Beispiel ist die erreichte Performance bei einer datengetriebenen Komponente. In einem Testprogramm mit wenigen Datensätzen gibt es i.d.R. keine Probleme mit der Geschwindigkeit. Doch wie verhält es sich, wenn mehr als 10.000 Datensätze über die Komponente angezeigt werden sollen? Ist das Scrolling flüssig? Arbeitet die Komponente mit einer internen Anzeige-Virtualisierung? Vertrauen bezüglich der Eignung der Komponente schaffen Berichte über den Einsatz in der Praxis.
  • Support: Bietet der Anbieter einen Support bei Problemen bzw. bei konkreten Fragen der Verwendung? Unterstützung kann beispielsweise bei durch Releasewechsel hervorgerufenen Problemen notwendig sein. Ein guter Support zeichnet sich durch eine direkte Kommunikation mit der Entwicklungsabteilung der Komponentenbibliothek aus.
  • Quellcode: Es gibt Szenarien, da ist ein Rückgriff auf den Quellcode notwendig. Das kann beispielsweise der Fall sein, wenn dringende Anpassungen notwendig sind, zum Beispiel auf Grund eines Updates des Systems. Ebenfalls können Applikationen in sicherheitskritischen Bereichen ein Review des Quellcodes (Inspektion) für Zwecke der Qualitätssicherung erfordern.

Businessdiagramme mit Hilfe der Chart-Komponente von TMS Software.
Businessdiagramme mit Hilfe der Chart-Komponente von TMS Software.
(Bild: TMS Software)

Betrachten wir beispielhaft einige Komponentensammlungen für die Verwendung in der integrierten Entwicklungsumgebung RAD Studio. Von dem Unternehmen TMS Software werden sowohl eine große Anzahl von visuellen Komponenten (VCL, FMX), als auch rein funktionale Komponenten angeboten. Ein Beispiel ist die im vorangestellten Bild gezeigte Komponente TMS FNC Chart, mit welcher sich grafisch reichhaltige Businessdiagramme erstellen lassen.

Kartendarstellungen (OpenStreetMap) mit Hilfe der Komponente VCL Map Control von DevExpress.
Kartendarstellungen (OpenStreetMap) mit Hilfe der Komponente VCL Map Control von DevExpress.
(Bild: DevExpress)

Weitere Komponenten stammen beispielsweise von DevExpress zu den Bereichen Office, Daten Editoren, Layout, Analytics, Navigation, Dialoge und für weitere Funktionen. Ein Beispiel ist hier die Komponente VCL Map Control, welche es ermöglicht Unternehmensdaten in Karten darzustellen. Über Layer können einzelne Ebenen eingeblendet werden. Es können Routen oder andere Daten in der Karte angezeigt werden. Ebenso können typische Anforderungen aus dem Bereich Business Itelligence realisiert werden.

Die Unternehmensdaten (Produktverkäufe, Umsätze usw.) stammen aus der Datenbank der betriebswirtschaftlichen Anwendung und werden mit Hilfe von Geodaten kombiniert und dann in Karten visuell abgebildet. Ebenfalls für die visuelle Präsentation von Daten sind die Komponenten von Steema geeignet. Sie bieten umfassende Darstellungsvarianten (Charts) für Daten in Kombination mit mathematischen, statistischen und finanzmathematischen Operationen.

Um Daten für wiederkehrende Auswertungen aufzubereiten, nutzt man i.d.R. so genannte Report Builder. Die Daten stammen aus einer relationalen Datenbank und werden über SQL-Abfragen extrahiert. Dabei werden für typische und zyklische Anfragen standardisierte Reports erstellt, zum Beispiel für die Monatsauswertung der Verkaufszahlen einer Filiale und aller Produktgruppen.

Um in einer Business-Applikation ein solches Feature zur Verfügung zu stellen, verwendet man i.d.R. auch fertige Softwarebausteine. Beispiele sind die Softwarekomponenten Report Builder des Unternehmens Digital Metaphors und FastReport VCL des Unternehmens Fast Report. Neben sehr universell eingesetzten Komponenten umfasst das Angebot der Softwareindustrie auch Komponenten für spezialisierte Aufgabenbereiche.

Fazit

Softwarekomponenten sind ein wichtiger Bestandteil, um ein komplexes Anwendungssystem zu modularisieren und damit die Komplexität zur reduzieren. In nahezu allen Entwicklungsansätzen kommen Softwarekomponenten zum Einsatz. Das Spektrum ist weitreichend und umfasst Bausteine für den Aufbau von grafischen Benutzeroberflächen und auch vielfältige weitere Funktionen. Dabei können Komponenten für eine Wiederverwendung selbst erstellt werden oder man kann diese von Drittanbietern käuflich erwerben.

Hier gibt es besonders für die Gestaltung von grafischen Benutzeroberflächen eine große Auswahl an Komponenten, wie der kompakte Marktüberblick für die integrierte Entwicklungsumgebung RAD Studio (Delphi, C++ Builder) gezeigt hat. Für andere Entwicklungsansätze und Systeme ergibt sich ein ähnliches Bild.

Zusammenfassend kann man daher sagen: Eine sorgfältige Recherche, ob es bereits eine Komponente für eine konkrete Anforderung des Entwicklungsvorhabens gibt, kann den Weg zur Lösung deutlich verkürzen, vereinfachen und letztendlich auch Kosten einsparen. In vielen Fällen ermöglicht die Verwendung von Komponenten auch die Nutzung von Funktionen, deren eigene Entwicklung sehr aufwändig oder in Eigenregie auch kaum zu bewerkstelligen wäre.

(ID:48830052)