
Product-Line Development for Mobile Device Applications with Attribute Supported Containers Vom Fachbereich Informatik der Technischen Universit¨at Darmstadt zur Erlangung des akademischen Grades eines Doktor-Ingenieurs (Dr.-Ing.) genehmigte Dissertation von Diplom-Ingenieur Vasian Cepa aus Kor¸ca Referent: Prof. Dr. Mira Mezini Korreferent: Prof. Dr. Uwe Aßmann Tag der Einreichung: September 19, 2005 Tag der m¨undlichen Pr¨ufung: Oktober 31, 2005 Darmstadt D17 Erklarung:¨ Hiermit erklare¨ ich, daß ich die vorliegende Arbeit selbststandig¨ und unter ausschlielicher Verwendung der angegebenen Quellen und Hilfs- mittel angefertigt habe. Darmstadt, den September 19, 2005 Abstract I would have made the book shorter, but I did not have any more time. E. H. Connell, Elements of Abstract and Linear Algebra, 1999 Mobile device software applications play an ever increasing role in the interaction with ubiqui- tous computing environments. More and larger mobile applications need to be implemented and more code needs to be debugged. This brings the need for automated product-lines to develop mobile applications. To grow the acceptance of the mobile product-lines among the developers, the technology used to implement them should be easy to implement and introduce. There are many variability mechanisms that have been proposed over the years to deal with the organization of the common domain functionality in a product-line. Some of these mechanisms, e.g., component libraries, are easy to implement, but introduce a lot of acciden- tal complexity in an application. Other variability mechanisms, such as, code generation based on visual models, support a more abstract representation of a domain, but do not preserve the architecture of the domain abstractions in the application code. Other mechanisms, e.g., domain- specific languages (DSL), are both declarative and preserve well the architecture of the product- line in the source code. Despite the work done in the previous years, DSL remain expensive to introduce and maintain. The variability mechanisms for mobile product-lines should be declar- ative, easy to introduce, and enable various domains-specific optimizations. This dissertation addresses mobile product-line development related issues in three di- mensions. First, based on the success of the software container component technology for server-side enterprise applications, a software container abstraction for mobile applications, called a mobile container, is introduced to organize the common functionality of mobile product- lines. Mobile containers serve as a central point to organize the functionality needed by the mobile applications. A mobile container is defined as a hybrid client- and server-side container. i A mobile application communicates with the rest of a ubiquitous computing environment as a client of one or more server-side services. Mobile containers organize the common functionality of a mobile product-line as a set of services used by mobile clients, and by server-side appli- cations. Server-side applications contain mobile client specific code to adapt the data and the services requested by the mobile clients based on the limitations that exist in mobile devices, e.g., low screen resolution. Second, attributes are used to model the container services declaratively in the source code. Attributes are known from technologies, such as .NET and Java, where they are used to decorate the program elements of the language, e.g., classes and methods. Attributes extend the language without having to maintain its compiler and are used to emulate domain-specific abstractions (DSA). Attribute families are used as a means to model the domain variability. A lightweight language extension is created that enables accessing and manipulating the annotated code. Languages that contain attribute transformation support, as part of their core functionality, will be called Generalized and Annotated Abstract Syntax Tree (GAAST) languages. GAAST- languages enable better language support for the code transformations applied in the context of the Model-Driven Architecture (MDA). Third, a structured modularization of attribute-driven transformers is introduced to ease the interpretation of attribute-based DSA. Specialized attribute transformers connect the attribute- based DSA with the container services, exposed as object-oriented (OO) libraries. Attribute- driven transformers are horizontally modularized based on the characteristics of the modeled domain. The semantics of the domain assets, expressed as attribute families, are used to deter- mine the transformation workflow. A uniform composition model for transformers based on the inner attributes is developed. Transformers state their dependencies declaratively by decorating the processed elements with arbitrary information in the form of inner attributes. This informa- tion is used to coordinate the code processing by successor transformers. The hardwired OO language meta-model is utilized to introduce a vertical modularization of the attribute-driven transformers. The transformation strategy is structured according to the nesting of the structural elements found in the language meta-model. The layering strategy is enforced by operations, specialized for every supported element of the language meta-model. These operations form a specialized language for attribute-driven transformations. Common attribute operations, such as, checking for attribute dependencies, are declaratively specified and factored out of the indi- vidual transformers by using meta-attributes. Meta-attribute enable the decoration of attributes themselves with arbitrary semantics that can be automatically processed. The proposed technology is evaluated by an extensible mobile container framework for Mobile Information Device Profile (MIDP) applications of the Java 2 Mobile Edition (J2ME), that run in small mobile devices. Several technical MIDP concerns are addressed, e.g., data persistence, session and screen management, and networking, resulting in a simpler and more declarative programming model, that preserves the architecture of the domain in the individual applications. Zusammenfassung Anwendungen fur¨ mobile Gerate¨ spielen eine zunehmende Rolle in ubiquitous computing Umge- bungen. Mehr und großere¨ Anwendungen mussen¨ entwickelt und mehr Code muss von Fehlern befreit werden. Dies erhoht¨ den Bedarf fur¨ automatisierte Produktlinien, um mobile Anwendun- gen zu entwickeln. Um die Akzeptanz fur¨ mobile Produktlinien unter Entwicklern zu fordern,¨ sollte die fur¨ die Entwicklung verwendete Technologie schnell und einfach einzufuhren¨ sein. Uber¨ die Jahre wurde eine Vielzahl von Variabilitatsmechanismem¨ vorgeschlagen, um in der Lage zu sein, Funktionalitat¨ innerhalb einer Domane¨ in Produktlinien zu organisieren. Einige dieser Mechanismen, z.B. Komponentenbibliotheken sind einfach und schnell einzufuhren,¨ brin- gen aber unbeabsichtigte Komplexitat¨ in die Anwendung. Andere Mechanismen die Variabilitat¨ bieten, z.B. Code Generierung basierend auf visuellen Modellen, unterstutzen¨ zwar eine bessere abstraktere Darstellung der Domane,¨ behalten aber die Abstraktionen des Designs nicht im Code bei. Wieder andere Mechanismen, z.B. domanenspezifische¨ Sprachen (domain specific lan- guages, DSL) sind deklarativ und erhalten die Architektur der Produktlinie im Quellcode der An- wendung. Trotz der Arbeit der vergangen Jahre bleiben DSLs aber mit hohen Einfuhrungskosten¨ und Wartungskosten verbunden. Der Variabilitatsmechanismus¨ fur¨ mobile Produktlinien sollte deklarativ sein, einfach einzufuhren¨ sein und domanenspezifische¨ Optimierungen unterstutzen.¨ Diese Dissertation befasst sich mit den Problemen der Entwicklung mobiler Produktli- nien in dreierlei Hinsicht: Erstens, basierend auf dem Erfolg Container basierter Komponenten- technologien fur¨ serverseitig Unternehmensanwendungen wurden mobile Container definiert. Mobile Container werden genutzt, um das gemeinsame Verhalten von mobilen Produktlinien zu organisieren. Mobile Container dienen als zentraler Punkt, um das von mobilen Anwendu- ngen benotigte¨ Verhalten zu organisieren und als Container Dienste den Anwendungen trans- parent zur Verfugung¨ zu stellen. Mobile Anwendungen mussen¨ mit dem Rest einer ubiquitous computing Umgebung als Client mehrerer Serverdienste kommunizieren. Serverseitige Dienste benotigen¨ allerdings spezifischen Code fur¨ die mobilen Clients, um die Daten an die begrenzten Fahigkeiten¨ der mobilen Endgerate¨ anzupassen. Ein mobiler Container ist deswegen eine hy- iii bride Einheit, welche aus einem clientseitigen und einem serverseitigen Komponente besteht. Er organisiert das gemeinsame Verhalten, das von Anwendungen auf mobilen Geraten¨ benotigt¨ wird, als Dienste, die auf dem mobilen Gerat¨ oder auf Serverseite ausgefuhrt¨ werden. Zweitens, Attribute bieten eine einfache Moglichkeit,¨ um Containerdienste deklarativ im Quellcode anzufordern. Attribute sind aus Technologien wie .NET und Java bekannt, wo sie genutzt werden, um Elemente im Code zu dekorieren, z.B. Klasen und Methoden. Mit Attri- buten kann eine Sprache erweitert werden, ohne dass der Compiler angepasst werden muss. Attribute werden verwendet, um die Semantik von domanespezifischen¨ Abstraktionen (DSA) zu emulieren. Attributfamilien werden in dieser Arbeit verwendet, um Domainvariablitat¨ zu unterstutzen.¨ Eine leichtgewichtige Spracherweiterung wird vorgeschlagen, die Abfragen und Manipulation von attributiertem Code erlaubt. Diese Sprachen werden Generalized and Anno- tated Abstract
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages215 Page
-
File Size-