Architecting Component Based Web Applications with Dependency Injection - Lehto, Peter (fi=Turun yliopisto|en=University of Turku|, 2016)
The topic of this research is how an architecture of an enterprise grade web application based on component abstraction can be formed when using Dependency Injection (DI) together with object oriented design best practices known as the SOLID principles. A strong focus is around Vaadin web application framework and how to utilise it within a DI environment. The technical background information for this thesis is mainly gathered from Java Enterprise Edition (Java EE) specifications as well as from The Book of Vaadin which is the open source project’s main documentation. The main concepts of the theoretical part regarding SOLID principles are acquired from various articles and books by Robert C. Martin who has coined the SOLID term. This study consists of three various parts. Firstly how SOLID principles affect the Dependency Injection is observed with a research question: ● How to utilise Dependency Injection with SOLID principles? Second research question looks into how SOLID principles together with DI affect the User Interface (UI) level design paradigms such as Model View Presenter (MVP): ● Are SOLID principles applicable when DI together with User Interface level Model View Presenter pattern is used? Finally the effect of SOLID principles and DI is evaluated as a whole on the architectural level of the application with the final research question: ● How will SOLID principles affect the web application’s architecture? The research will attempt to provide a reference architecture based on SOLID, DI, MVP and Vaadin Framework for building enterprise applications with minor overhead.

Tämän tutkimuksen kohteena on komponenttipohjaisten yritysverkkosovellusten arkkitehtuuri ympäristössä, jossa sovellusten sisäiset riippuvuudet hallitaan Java Enterprise Editionin (Java EE) Context and Dependency Injection (CDI) spesifikaatioon perustuen. Riippuvuuksien hallintaan pyritään yhdistämään olio-ohjelmoinnin hyviä perusperiaatteita tukevat SOLID suunnitteluperiaatteet, joiden soveltuvuutta ja käytännöllisyyttä CDI ympäristössä arvioidaan eri tutkimuskysymysten kautta. Tutkimuksen peruslähteinä käytetään Java EE spesifikaatioita soveltuvilta osin sekä Vaadin ohjelmistokehyksen Book of Vaadin -teosta, joka on avoimeen lähdekoodiin perustuvan sovelluskehyksen virallinen dokumentaatio. Teoreettisten SOLID -periaatteiden taustamateriaalina käytetään Robert C Martinin artikkeleita ja kirjallisuutta. Tämä tutkimus koostuu kolmesta tutkimuskysymyksestä, jotka lähestyvät ohjelmistoarkkitehtuurin muodostusta hieman eri lähtökohdista: ● Ensimmäinen tutkimuskysymys selvittää kuinka CDI perustaista riippuvuuksien hallintaa tulisi käyttää SOLID suunnitteluperiaatteiden kanssa. ● Toinen tutkimuskysymys keskittyy käyttöliittymäkerrokseen ja siihen miten CDI yhdistettynä tunnettuihin käyttöliittymän suunnitteluparadigmoihin, kuten Model View Presenteriin (MVP) toteutuu riippuvuuksien hallinan näkökulmasta. ● Kolmas tutkimuskysymys keskittyy riippuvuuksien hallinnan ja SOLID periaatteiden käyttökelpoisuuden arviointiin koko arkkitehtuurin näkökulmasta. Tämän tutkimuksen tuloksena pyritään muodostamaan referenssiarkkitehtuuri, joka perustuu SOLID, CDI sekä MVP tekniikoihin ja Vaadin sovelluskehykseen.