Anzeige
Anzeige
UX & Design
Artikel merken

Rapid-Prototyping und Rails: Wie man schnell von A nach B kommt, ohne neue Buchstaben zu erfinden

Moderne Software-Entwicklung und schlankes Projektmanagement machen es möglich, Projekte in einem kürzeren Zeitrahmen durchzuführen. Dabei müssen Auftraggeber und Entwicklerteam umdenken und sich der neuen Herausforderung stellen. Rapid-Prototyping ist der Versuch, Projektziele schneller zu erreichen. Ruby on Rails ist für dieses Vorhaben ideal geeignet.

7 Min. Lesezeit
Anzeige
Anzeige

Software-Entwicklung ist nach wie vor für viele Beteiligte an Projekten eine Black-Box. Vielen Kunden missfällt es, sich voll und ganz in die Hände der Entwickler zu begeben. Um Vertrauen zu schaffen und sicherzustellen, dass das Endergebnis für alle Seiten akzeptabel ist, werden deshalb Features und Akzeptanzkriterien erhoben und Wireframes [1] angefertigt. Bei vielen Projekten fehlt aber die Zeit für solch aufwendige und langwierige Planungen. Rapid-Prototyping soll Projektgruppen schneller und effizienter an ihr Ziel bringen. Ruby on Rails ist für solche Szenarien besonders geeignet und bestimmte Tools können die Entwicklungsgeschwindigkeit und -produktivität im Rails-Umfeld noch weiter verstärken.

Was ist Rapid-Prototyping?

Anzeige
Anzeige

Unter Rapid-Prototyping werden im eigentlichen Sinne Fertigungsverfahren aus dem Produktionsbereich verstanden, die CAD-Daten ohne große Umwege in Werkstücke umsetzen [2]. Ein Beispiel dafür ist das von dem Mass-Customization Startup „Fabidoo“ praktizierte 3D-Drucken, mit dem kleine Plastik-Figuren hergestellt werden, die der Nutzer vorher selbst konfiguriert hat.

Bei der Übertragung des Begriffs auf den Bereich der Software-Entwicklung ergeben sich zwei Interpretationsmöglichkeiten: Einerseits führt die direkte Übertragung des Begriffs zum Themenfeld der modellgetriebenen Software-Entwicklung (MDA), bei der Modelle über eine Modell-zu-Modell-Transformation in Code umgesetzt werden. Andererseits lässt er sich mit dem aus der agilen Entwicklung bekannten ‚Prototyping‘ oder auch als ‚Proof of Concept‘ interpretieren. Hier geht es vielmehr darum, die Akzeptanz einer Idee zu testen. Dabei soll die Idee genug Entwicklungsspielraum haben, um sich noch während der Umsetzung verändern zu können. Zentraler Dreh- und Angelpunkt ist die Tatsache, dass mit der möglichst schnellen Bereitstellung eines Prototypen der Kunde auch früher Feedback geben kann und die Prototypen sich so schnell und im Interesse des Kunden weiterentwickeln. Da die modellgetriebene Vorgehensweise im Vorfeld der Entwicklung einen hohen Grad an konzeptioneller Arbeit erfordert und die MDA eher weniger für ihre Agilität bekannt ist, wird im Kontext dieses Artikels die zweite Begriffsklärungsvariante gewählt.

Anzeige
Anzeige

Vorgehen und Nutzen des Rapid-Prototyping

Um ein Entwicklungsprojekt ad-hoc starten zu können, muss der Kunde eine konkrete Idee haben, die umgesetzt werden soll. Das ‚Wie‘ bzw. die einzelnen Bestandteile der Spezifikation können in einem Workshop mit allen Projektbeteiligten ausgearbeitet werden – so entwickeln Entwickler und Kunde eine gemeinsame Idee von dem umzusetzenden Projekt. Das dabei entstehende ‚Wir‘-Gefühl führt zu einer kreativen Arbeitsatmosphäre und verrringert die Distanz zwischen Auftraggeber und -nehmer.

Anzeige
Anzeige
Es müssen nicht immer direkt Wireframes sein [1].

Es müssen nicht immer direkt Wireframes sein [1].

Um etwaige Verständnisprobleme aufzudecken, sollten die Ergebnisse des Workshops in einem Grobkonzept festgehalten werden, welches auch vom Entwicklerteam erstellt werden kann. Der Kunde profitiert vom Domänenwissen der Entwickler. Auf Entwicklerseite führt die positive Atmosphäre zu höherer Motivation und Produktivität, weil er sein Wissen einbringen und an der Gestaltung der Idee partizipieren kann.

Der Erstellung des ersten Prototypen sollte beim Projektstart die höchste Priorität zugewiesen werden. Die nachfolgenden Entwicklungsiterationen werden kurz gehalten und nach Prinzipien des Getting-Real [3] durchgeführt. Da nach jedem Entwicklungszyklus eine Integration der erstellten Funktionalitäten vorgenommen wird, kann der Kunde direkt Feedback geben und so verhindern, dass sich das Projekt von seinen Zielen entfernt. Außerdem sollte jede Woche ein Abstimmungsmeeting durchgeführt werden. Der Entwickler bekommt so ein Gefühl davon, was dem Kunden wichtig ist und kann dieses Wissen im Laufe des Projektes einfließen lassen. Die Erfahrungen bei dieser Vorgehensweise zeigen, dass das Team mit der Zeit immer eingespielter wird und sich die Entwicklungsgeschwindigkeit von Iteration zu Iteration erhöht.

Anzeige
Anzeige

Mit der fortlaufenden Integration der Teillösungen können neben der Akzeptanzkontrolle zusätzlich Architekturtests durchgeführt werden, um Rückschlüsse zu erhalten, ob die gewählte Architektur die gegebene Problemstellung löst. Somit werden Entwurfsfehler früher aufgedeckt, als es in klassischen Vorgehensmodellen der Fall ist.

Ruby on Rails und Rapid-Prototyping

Das Webentwicklungs-Framework Ruby on Rails ermöglicht schnelle Ergebnisse und befreit den Entwickler von viel Overhead. Der produzierte Code ist schlank und aufgrund der Ausdrucksstärke der Programmiersprache Ruby und des regen Gebrauchs von domänenspezifischen Sprachen (DSL) sehr gut lesbar. Der Entwickler kann sich so auf den kreativen Teil seiner Arbeit konzentrieren und sich verstärkt konzeptionellen Aspekten widmen. Entwickler und Kunde können eng an einer Lösung zusammenarbeiten und den Prototypen gleich in Form von Quellcode erstellen, ohne dabei große Abstriche in Bezug auf Code-Qualität und Anpassbarkeit für zukünftige Erweiterungen zu machen. Diese Eigenschaften machen Ruby on Rails interessant für Rapid-Prototyping.

Häufig wird das Scaffolding als erster Ansatzpunkt von Rapid-Prototyping mit Rails angesehen. Scaffold-Generatoren ermöglichen die Erstellung eines kompletten Applikationsstacks bestehend aus Model, Controller und zugehöriger View inklusive aller notwendigen CRUD-Operationen für Datenzugriff und -manipulation. Ganzheitlich lassen sich allerdings drei Ansatzpunkte für Rapid-Prototyping bei Rails sehen: Rapid-Prototyping bei der Erstellung der Rails-Anwendung, bei der Erstellung von Klassen und beim Schreiben von Code.

Anzeige
Anzeige

„Basis-Apps“ und Application Templates

Der schnellste Weg zu einem vorzeigbaren Ergebnis ist die Verwendung einer fertigen „Basis-App“, die bereits über grundlegende Funktionalität verfügt und nur noch angepasst und erweitert werden muss. Hilfreich sind hier „Baseapp“ bzw. die diversen Forks [4], um die Kombination aus Nutzerauthentifizierung, Profilen und Basis-Layout nicht selber machen zu müssen, aber vor allem „Saasy“ [5]. Saasy enthält neben der Nutzerauthentifizierung auch eine Payment-Integration, die Subscription-Modelle, Rechnungserstellung und vieles mehr umfasst. Leider werden bisher noch nicht viele Payment-Gateways unterstützt. Wichtig bei der Auswahl einer Basis-App ist, dass sie vom Entwicklungsteam stetig aktualisiert wird. Bei Baseapp sollte man sich den Network-Graphen von Github ansehen, um einen Fork auszuwählen, der bereits die aktuellste Rails-Version unterstützt.

Die Application Templates von App Lego sind modulartig aufgebaut.

Die Application Templates von App Lego sind modulartig aufgebaut.

Application Templates sind ein neues Feature von Rails 2.3. Standardmäßig erzeugt man mit dem Konsolen-Befehl „rails [projektname]“ ein neues Rails-Projekt. Auf diese Weise werden dem Entwickler sämtliche Ordnerstrukturen, Konfigurationsdateien und Skripte zur Verfügung gestellt, um mit seinem Projekt durchstarten zu können. Application Templates bieten die Möglichkeit, die Erzeugung der Rails-Applikation zu erweitern. Da es sich bei den Templates um einfache Ruby-Dateien handelt, stellen sich dem Entwickler nahezu unendliche Möglichkeiten. Es können Dateien gelöscht, verschoben, Plugins/Gems installiert oder Dialoge erstellt werden.

Die Erstellung von Templates ist sehr leicht. Eine gute und umfangreiche Einführung in die Thematik findet man bei Pratik Naik [6]. Für den Anfang reicht es auch, wenn man mit den zahlreich vorhandenen Templates herumspielt, die andere Rails-Entwickler ins Netz gestellt haben. Die Suche nach „rails templates“ bei Github führt bereits zu 160 Treffern. Als Grundlage für eigene Weiterentwicklungen eignen sich die Templates von Jeremy McAnally [7], Ryan B. [8], App Lego [9] und Rails Boost [10]. Bei letzterem kann man sich sein Template über ein Web-Interface zusammenklicken.

Anzeige
Anzeige

Scaffold-Generatoren

Nachdem man eine Rails-Applikation mit diversen Plugins und Gems initialisiert hat, geht es an die Entwicklung der einzelnen Funktionalitäten. Hier kommen traditionell die Generatoren zum Einsatz, die Rails mitliefert. Der Aufruf „script/generate model [modelname] [datenbankfeld:typ] [datenbankfeld:typ] …“ erzeugt ein Model mit den definierten Datenbankfeldern und eine zusätzliche Migrations-Datei, um die Datenbank zu aktualisieren. Für diese Generatoren gibt es ebenfalls Erweiterungen. Der Railscasts-Macher Ryan Bates bietet zum Beispiel seine Nifty-Generatoren zum Download an [11]. Mit diesen lassen sich darüberhinaus Konfigurationsdateien erzeugen. Praktisch sind auch Generatoren, die bei Test-Tools wie RSpec mitgeliefert werden und Specs anstatt von Tests erzeugen.

Gems und Plugins

Zu guter Letzt gibt es Plugins und Gems, die das Schreiben von Code bzw. die Erstellung von Funktionalität beschleunigen, wie beispielsweise make_resourceful [12]. Mit diesem Plugin lassen sich für Controller mittels eines einzigen Methodenaufrufs alle RESTful-Actions dynamisch zur Laufzeit erzeugen. Dies hat den Vorteil, dass kaum Schreibaufwand anfällt und die Controller schön schlank bleiben. Trotzdem lassen sich, wie das Beispiel zeigt, noch zusätzliche Anpassungen vornehmen.

Make_resourceful ist für das Rapid Prototyping hervorragend geeignet, zumal das Ziel, einen funktionsfähigen Controller mit minimalen Aufwand zu erstellen, erfüllt wird.

Anzeige
Anzeige
RUBY – foo_controller.rb
class FooController < ApplicationController
	make_resourceful do  # Aufruf von make_resourceful
		actions :all # Generierung der RESTful-Actions (index, show, create, update, delete) sowie new und edit
		before :show, :index do # before_filter für show und index
			@page_title = "Awesome!"
		end
		# Festlegung der Formate der Antwort
		response_for :index, :new, :edit do |format|
		format.html
			format.js do
				render :update do |page|
				page.replace_html 'id', :partial => 'partial'
				end
			end
		end
	end
end

Listing 1

Andere Gems, die zu einer Beschleunigung der Entwicklung führen, sind „haml“ und „sass“, welche die Standard-Template-Engine von Rails ersetzen und die Entwicklung von Web-Frontends „ruby-mäßiger“ machen.

Die Verwendung von zahlreichen erstklassigen Plugins und Gems ermöglichen dem Rails-Entwickler, dass er das Rad nicht ständig neu erfinden muss und führen zu massiven Zeitersparnissen. Außerdem helfen Tools und IDEs bei der konkreten Entwicklungsarbeit. Hier ist besonders Textmate für den Mac hervorzuheben, welches sich mittels Bundles erweitern lässt. Das Rails-Bundle enthält für nahezu alles, was man beim Schreiben von Code braucht, einen Kurzbefehl, egal ob es sich um Ruby-Strukturen wie Blöcke und Methoden oder Rails-spezifische Aspekte wie die Erzeugung von Partials handelt [13]. Zudem lassen sich für Textmate relativ einfach eigene Macros erstellen.

Grenzen des Rapid Prototyping und Fazit

Rapid-Prototyping und Extreme-Programming (XP) weisen erhebliche Ähnlichkeiten auf. Wenn man so will, kann man Rapid-Prototyping auch als Teilmenge von XP verstehen. Charakterisierend für Rapid-Prototyping ist, dass jede Tätigkeit auf die Erstellung des Prototypen ausgerichtet ist und somit der geringste formale Aufwand angestrebt wird. Rapid-Prototyping ist eine sinnvolle und zukunftsfähige Vorgehensweise. Sicherlich gibt es auch Grenzen des Ansatzes – zum Beispiel nimmt die Ineffizienz von Abstimmungsprozessen mit der Teamgröße zu.

Anzeige
Anzeige

Durch die hohe Entwicklungsgeschwindigkeit eines Rails-Teams eignet sich Rails besonders für Rapid-Prototyping und man kommt auch mit kleinen Teams zu beachtlichen Ergebnissen.

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Ein Kommentar
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Martin

Spannend, vielen Dank!

Antworten

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige