TU Wien Codegeneration with Ruby on Rails
Total Page:16
File Type:pdf, Size:1020Kb
Die approbierte Originalversion dieser Diplom-/Masterarbeit ist an der Hauptbibliothek der Technischen Universität Wien aufgestellt (http://www.ub.tuwien.ac.at). The approved original version of this diploma or master thesis is available at the main library of the Vienna University of Technology (http://www.ub.tuwien.ac.at/englweb/). TU Wien Business Informatics Group Institut für Softwaretechnik und Interaktive Systeme Codegeneration with Ruby on Rails Bridging the Gap between Design and Implementation Diplomarbeit zur Erlangung des akademischen Grades eines Magister der Sozial- und Wirtschaftswissenschaften Magister rerum socialium oeconomicarumque (Mag. rer. soc. oec.) eingereicht bei o. Univ.-Prof. Mag. Dipl.-Ing. Dr. Gerti Kappel mitbetreuender Assistent: Mag. Manuel Wimmer Alexander Dick Wien, 15. November 2006 Eidesstattliche Erklärung Ich erkläre an Eides statt, dass ich die vorliegende Arbeit selbständig und ohne fremde Hilfe verfasst, andere als die angegebenen Quellen nicht benützt und die den benutzten Quellen wörtlich oder inhaltlich entnommenen Stellen als solche kenntlich gemacht habe. Wien, 15. November 2006 Alexander Dick Danksagung Zu allererst möchte ich von ganzem Herzen meinen Eltern Ida und Leo Dick für ihre besondere Unterstützung meine Dankbarkeit ausdrücken. Zum einen ließen sie mir freie Hand bei der Wahl meines Studiums und zum anderen waren sie während mei- ner Studienzeit die finanzielle und moralische Stütze, ohne die ein positiver Ab- schluss des Diplomstudiums Wirtschaftsinformatik meinerseits nicht möglich gewe- sen wäre. Ein ganz besonderer Dank gilt meiner Freundin Birgit König und meinen Brüdern Peter und Christoph Dick, die besonders durch ihre Motivation und Unterstützung zu einer erfolgreichen Beendigung meines Studiums und Verfassung dieser Arbeit bei- getragen haben. Natürlich möchte ich mich auch herzlich bei meinem Diplomarbeitsbetreuer Mag. Manuel Wimmer bedanken, der mir mit seiner fachlichen Kompetenz zur Seite stand und mir durch seine Betreuung den Weg zum positiven Abschluss dieser Arbeit und damit des Studiums gewiesen hat. Bedanken möchte ich mich auch bei Familie Landrock, die mich kurz vor Beendi- gung meines Studiums in ihr Unternehmen aufgenommen hat, und besonders bei meinem Chef, Herrn Dr. Georg Landrock, der mir durch eine flexible Zeiteinteilung die rasche Ausarbeitung dieser Diplomarbeit ermöglicht hat. Last but not least möchte ich noch all jenen ein herzliches Dankeschön aussprechen, die mich während meines Studiums als Kollegen begleitet und mir dadurch eine schöne Zeit bereitet haben, an die ich mich sehr gerne zurück erinnere. Kurzfassung Durch die Veränderung des World Wide Web von einem statischen Informationsme- dium hin zu einem dynamischen Anwendungsmedium ist der Bedarf an Webanwen- dungen, die für die Bereitstellung von Diensten über das Web verantwortlich sind, so hoch wie nie. Es haben sich bereits sehr viele Technologien etabliert, mit Hilfe derer es möglich ist, Webanwendungen zu entwickeln. Die Anforderungen an solche Web- anwendungen sind sehr vielfältig und mit einer oft kürzeren Entwicklungszeit, die für die Erzeugung der Anwendung zur Verfügung steht, geht eine meist höhere Komplexität der benötigten Funktionalität einher. Um es den Entwicklern zu ermöglichen, sich mit dem eigentlichen Problem ausein- ander zu setzen und nicht für jede Webanwendung das Rad neu erfinden zu müssen, werden für die verschiedenen Technologien Frameworks geschaffen, die den Pro- grammierer mit Hilfe integrierter Funktionalitäten bei der Implementierung unter- stützen sollen. Eines dieser Frameworks, das sich erst seit kurzer Zeit im Web etabliert, ist Ruby on Rails. Es bietet Funktionalitäten, die es dem Entwickler ermöglichen rasch einen ersten, funktionstüchtigen Prototyp einer Webanwendung zu generieren, mit Hilfe dessen sofort Feedback vom Benutzer eingeholt werden kann. Wie es bei vielen Anwendungen im Web der Fall ist, basieren auch die Applikationen, die mit Ruby on Rails erstellt werden auf einem relationalen Datenbanksystem. Der Prototyp, der mit Hilfe eines in Rails integrierten Codegenerators erzeugt wird, bietet jedoch nur eingeschränkte Funktionalität und es wäre wünschenswert einerseits diese zu erwei- tern und andererseits die Anwendung ausgehend von einem Modell, das die Daten- bank beschreibt, generieren zu können. Diese Arbeit versucht in einem ersten Schritt den von Ruby on Rails bereitgestellten Scaffold-Generator so zu erweitern, dass der Prototyp auch Validierungsfunktionali- tät beherrscht. Dies geschieht mit Hilfe zweier zusätzlicher Datenbanktabellen, die Regeln für die Validierung bereitstellen sollen. Weiters soll die Abbildung von Be- ziehungen zwischen Datenbanktabellen automatisch in die Modellklassen der Web- anwendung eingebunden werden. Im zweiten Schritt wird ein grafischer Editor erstellt, der für die Erstellung von logi- schen Datenbankmodellen herangezogen werden kann. Schließlich soll am Ende ein Framework entstehen, das zuerst zur Modellierung von ER-Diagrammen dient, danach aus dem Modell über einen Zwischenschritt der Co- degeneration die Struktur der Datenbank erstellt und zum Abschluss mit Hilfe des erweiterten Ruby-Generators den Prototyp einer datenintensiven Webanwendung erstellt. Aufgrund der Kombination von Modellierung und dem Einsatz von Ruby on Rails wird dieses Framework Models on Rails genannt. Abstract Because the World Wide Web is changing from a static medium for information in- terchange into a dynamic application medium, the need for these applications, which are responsible for providing services over the Web, is higher than ever. In the last few years a very high number of technologies has emerged, which make it possible to develop such web-applications. There is s large variety of requirements these ap- plications have to fulfill and often a shorter time developers have for developing them goes hand in hand with a higher complexity of their necessary features. To make it possible for the developers to concentrate on the main problem and not to invent the wheel again and again a large amount of frameworks has been created according to the different technologies, which tend to support the developers by their implementation work with integrated functionalities. Only a short time ago one of these frameworks started it’s presence on the web, n- amely Ruby on Rails. It offers functionality that makes it possible for developers to easily and quickly generate a first prototype of a web-application. With this proto- type the developer is able to get feedback from the user after a short development time. Like many other web-applications the applications built with Ruby on Rails are based on a relational database-system. Unfortunately the functionality the generated prototype offers is limited and it would be desirable on the one hand to extend the functionality and on the other hand to automatically generate the web-application out of shaped models which describe the structure of the underlying database. This thesis tries in a first step to extend the Scaffold-Generator, which comes with Ruby on Rails, so that the generated prototype integrates validation-functionality. To achieve this goal, two additional tables are inserted into the database, which are re- sponsible for saving the validation rules and mapping the table-attributes on these rules. Additionally the relationships between the database-tables should automati- cally be added to the classes of the models. In the second step a graphical editor is built which supports the creation of logical database models. These models should be the starting point for generating a web- application. The final goal of this thesis is to establish a framework for generating web- applications. At the beginning it should give the developer the ability to create ER- Models. After that comes an intermediate code-generation step for building the data- base. And finally the extended Rails-Generator constructs the prototype of a data intensive web-application with enhanced functionality. Because of the combination of modeling and using Ruby on Rails the framework is named Models on Rails. Inhaltsverzeichnis 1 EINLEITUNG..............................................................................................................................1 1.1 MOTIVATION, PROBLEMSTELLUNG UND ZIELSETZUNG ........................................................1 1.2 VERWANDTE ARBEITEN.......................................................................................................3 1.3 AUFBAU DER ARBEIT ...........................................................................................................4 2 ALLGEMEINES ZU WEBAPPLIKATIONEN .......................................................................6 2.1 SOFTWARE ENGINEERING ....................................................................................................6 2.2 WEB ENGINEERING ..............................................................................................................8 2.3 AGILE SOFTWAREENTWICKLUNG.........................................................................................9 2.4 KATEGORISIERUNG VON WEBAPPLIKATIONEN...................................................................11 2.4.1 Dokumentzentrierte Websites .......................................................................................11 2.4.2 Interaktive Webanwendungen ......................................................................................11 2.4.3 Transaktionale Webanwendungen ...............................................................................11