Examensjobb 2020
Här följer ett urval på examensarbeten (högskole/kandidat/magister-examen) som lämnats in under 2020.
Sök själv i DiVA efter äldre examensjobb.
#Högskoleexamen
Inställning till testning och vad räknas som testning: Intervju och survey riktad till företag och utvecklare inom webbutveckling
Testning görs för att se till att vår kod fungerar som den ska och upptäcka eventuella fel som gjorts under utvecklingen. Målet med undersökningen är att ta reda på om det finns några skillnader på hur företag ser på testning och hur utvecklare ser på testning. Vilket värde har testning för företag och utvecklare? Arbetet undersöker också om utforskande testning räknas som en giltig metod för testning inom webbutveckling bland företag och utvecklare.
I undersökningen utfördes en intervjuundersökning på två företag av olika storlekar och brancher. Intervjuerna tog reda på hur de företagen såg på testning och hur de utförde sin testning. En enkät skapades utifrån svaren från de två intervjuerna som sedan skickades ut till utvecklare. 41 webbutvecklare svarade på enkäten och resultaten från enkäten visar att det finns skillnader på hur företag testar sin kod. Det som skiljde dem åt mest var om de har en policy eller inte för hur testning ska göras. Resultaten visade även på att det finns skillnader på hur utvecklare använder testning, nämligen till vilken grad de gör testning på arbetsrelaterade och privata projekt. Det alla har gemensamt, företag och utvecklare är att de har en positiv syn på testning. Det värde testning har för både företag och utvecklare är att det gör en utvecklare mer bekväm i sin utveckling. Det gör även koden mer strukturerad, de berättar också att testning är en fundamental del i utvecklingsprocessen. Resultaten gällande utforskande testning visar att den metoden av testning är en giltig metod för testning inom webbutveckling. Det finns fortfarande utvecklare som anser att utforskande tester inte är en giltig metod för testning.
Resultatet från undersökningen ger en insyn i hur företag och utvecklare ser på testning och vilka åsikter de har angående testning. Den berättar också vilket värde testning har för både företag och utvecklare och att utforskande testning är ett värdefullt verktyg inom webbutveckling.
Jimmy Andersson (URN)
Handledare: Kennet Henningsson
Laravel vs Symfony: Frid till ramverksfejden
Att välja ramverk till sitt första projekt är en utmaning, och många artiklar har olika åsikter om vilket ramverk som är mest lämpligt. Målet med den här studien är att undersöka vilket av ramverken Laravel och Symfony som är populärast, för- och nackdelar skall jämföras, samt vilket av ramverken som är lättare eller svårare att komma igång med, utifrån tid och smidighet.
Två olika metoder användes i det här arbetet. Med hjälp av dokumentationer, rapporter, undersökningar, en enkät och ett flertal artiklar så genomfördes en litteraturundersökning för att svara på popularitet samt få reda på för- och nackdelar. För att sedan undersöka vilket av ramverken som är lättare eller svårare att komma igång med så skapades två applikationer, ett i respektive ramverk.
Resultatet av detta projekt är att Laravel är det mest populära ramverket av de två ramverk som har undersökts. För- och nackdelar har jämförts och det är konstaterat att många egenskaper i ramverken liknar varandra. Skillnaderna är hur koden är strukturerad och hur användarvänliga ramverken är. Det är renare och enklare kodning att arbeta mot en databas i Laravel, och Symfony har bättre debuggings-verktyg. Efter de två applikationer som skapades så visade det sig vara Symfony som var enklare att komma igång med, eftersom Symfony erbjuder tjänsten ”Symfony Screencast” samt att man kan ta hjälp av dess debugging-verktyg.
Lydia Cocozza (URN)
Handledare: Niklas Andersson
A closer look at WebAssembly
WebAssembly is a new emerging technology for the web which offers a low-level bytecode format for other languages to compile to. The aim of the technology is to effectively speed up the performance of the web, as well as to offer a way for developers to port existing libraries and code that were written in static languages such as C/C++ or Rust. The technology is currently supported in all the major browsers of today.This study takes a closer look at how the technology works and how it is compiled and executed across two of the major browsers as compared to JavaScript. Furthermore, a smaller experiment was conducted where AssemblyScript was used to compile to WebAssembly, with AssemblyScript being a typescript-to-WebAssembly compiler. The two technologies were then tested in terms of runtime performance and consistency across two browsers, operating systems as well as with different optimizations.The study showed that the technology goes through ahead-of-time-compilation and optimization through a compiler toolchain that depends on the language used as opposed to JavaScript which makes use of just-in-time-compilation. Furthermore, the fundamental structure for WebAssembly proved to be limited in order to be able to better link directly to machine code and through this offer performance benefits. The experiment conducted showed that WebAssembly performed better when it came to pure calculations but fell behind JavaScript when performing operations on an array. The reason is most likely due to the overhead of passing data structures between the two technologies. The experiment further showed that WebAssembly was able to offer a more consistent and predictable performance than JavaScript.
Denis Eleskovic (URN)
Handledare: Andreas Arnesson
Interface for displaying transactions in PEPPOL
The purpose of this study is to show how transaction data from PEPPOL can bedisplayed in an effective way. PEPPOL is used to exchange e-documents betweenpublic and private entities worldwide. When there are many transactions comingthrough every day it is important to highlight the ones that have failed, and to beable to filter the transactions.
This is done with Angular 9, and because Angular is being upgraded frequentlythis study also focuses on making maintainable and readable code which will helpfuture developers. Angular Materials table is being used, to display the transactions,as it provides a simple but modern table, and above the table there is a search barwhich helps us find specific transactions.
Comments are added to the code, so it is easy to tell what each code block doesand the MVC pattern is used to split up the components, models and views.
Emelie Åslund (URN)
Handledare: Kenneth Lewenhagen
En jämförelse mellan versioner av användargränssnitt - Användbarhets testning och auktoriter
Christian Fanell (URN)
Handledare: Niklas Andersson
Trovärdighet för webbsidor – en jämförelse mellan hälso-/sjukvårdswebbsidor och webbutiker
Alice Forsman (URN)
USING SIMULATION AS AN ADVANCED TESTING METHOD: A study to improve a transportation service of an event-based system.
Today in a modern society the pace is high and the need for flexibility and mobilityis big. Despite the increasing access and great digital solutions for online-meetings,the need for short distance transportation remains. With an increasing number ofeasy-to-use mobile applications, the many offered solutions for personal transporta-tion have in the last few years expanded. Besides the effect of an increasing pressureof road space, the pressure on the transportation solutions has escalated.
This is the current situation of the company we came in contact with. Their currenttravel service provides on-demand transportation in small electric, emission free andchauffeur driven vehicles they call pods. As a step of claiming their space in thetransportation sector they are developing their application letting customers planand book a transport.
For the ability to test their new booking solution this project took form. With asimulation it would be possible to test the various probabilities of a travel outcome.The aim was to develop a simulation software, simulating the events of multipletravels taking place in the system. With the simulation it would be possible to eval-uate the configuration for the booking feature, analyse how it works with the rest ofthe system and to help the company to predict how the intensity of customers in re-lations to the number of available drivers would affect the outcome of a travel request.
The project covered the study of how to interpret the factors, that a transportationdirectly depends on, into events in the system and how to use historical events tocreate probabilities of the simulation outcome. The simulator software was not suc-cessful with simulating multiple rides as intended, but parts of the software could beevaluated in relation to historical events. Statistical models were built using aggre-gated events from the system. When comparing the average result of the statisticalmodels with the historical event count of the system, it resulted in an outcomewithin an acceptable range. This shows that it was possible to use aggregated his-torical events to create probabilities and that these probabilities were reliable.
Tomie J. Lee och Elliot Nordin (URN)
Handledare: Patrik Arlos, Tek., Dr.
Webbteknologier i skolmiljön - Digitalisering av det fysiska klassrummet
Paul Moreland (URN)
Handledare: Andreas Arnesson
Building a front-end framework with Web Components: A study about the next generation of front-end frameworks
Context: As most modern browsers fully support the new set of APIs called Web Components, it is crucial to investigate how developers could use them to enhance the performance and developer experience of web development. When considering this, it is fitting to investigate both the technical and practical differences between modern libraries powered by the APIs, versus traditional libraries which do not.
Objectives: In this study, traditional libraries using Virtual DOM got investigated to find out which differences exist when compared to modern ones using Web Components. To find out how this next generation of front-end libraries could utilize these new APIs to improve the build process of websites. If the APIs offer alternative ways for developers to achieve better performance and developer experience.
Realization: In order to fulfill the objectives, an empirical study and a literature review were conducted. In the literature review, we investigated how a set of well-known front-end libraries technically compares to new and aspiring Web Components based libraries. In the empirical study, a new Web Components library was built from the ground up with inspiration from Vuejs. With the help of modern code styles to achieve a fresh developer experience.
Results: The results of the study show that Web Components based libraries tend to be quite powerful and offer excellent all-around performance. The created library, Kirei, reflected this as it became a powerful all-around library that offers a great developer experience. It also performed equally well or even better than Vue on most benchmarks. However, Vue was better at creating new elements while Kirei excelled at updating elements. In a way, the libraries excitingly contrasted with each other.
Conclusions: While Vue and React are fundamentally different from Lit-Element, Heresy, and Kirei, they are alike in some sense. Most of the differences come from how the libraries apply updates to the DOM. While Web Components based libraries patch only the dynamic parts, Virtual DOM has to diff both the dynamic and static parts. Moreover, Kirei proved to be a robust framework that could compete with Vue and React. In some benchmarks, it proved to have an upper edge in performance.
Christian Norrman (URN)
Handledare: Emil Folino
PWAMP - Combine technology for faster loading and improved user experience
Progressive Web Applications are becoming more advanced and have increased user activity year after year, especially on mobile platforms. But still the standard of performance does not in most cases meet what we expect in relation to the time it takes to load these. Technologies are evolving as an attempt to change this, and one that has gained a lot of attention in recent years is Google AMP (Accelerated Mobile Pages). A technology that initially aimed at very simple content, but which has recently become more advanced but has its main focus on performance. An entire application does not need to be developed with this technology, but a noted method is to use it as an entry-point to another application as an attempt to reduce the initial load time for the user and enhance the experience in later navigations.
This report investigates with an experiment how the AMP technology stands against another technology focused on speed, in this case the JavaScript framework Gatsby. This is done with the frameworks as a combination using AMP as an entry-point and also developed separately, all with enhanced Progressive Web App features. To make development easier and understand the difference of applications included in the study, a literature study was also done with focus on this aspect.
At the point when the applications became published and available through Google search and measurements for the applications were made, it was discovered that their metrics load time, start render and speed index all had major performance improvements for the AMP applications on the first load with a mobile device utilizing Google cache CDN, but the effect was not as great on desktop. The implementation process differs some in the frameworks included, and turned out to be more restricted with AMP with the desired effect of increasing performance. While the second framework Gatsby is developed more flexible and could be seen as a more modern way of developing.
It shows a positive opportunity to combine technologies to serve content to a user faster on mobile devices, which could be an action to speed up the web and maintain the user experience.
Jesper Nyhlén (URN)
Handledare: Kenneth Lewenhagen
GraphQL vs REST-API – En jämförelse
Robin Nylin Blixter (URN)
Handledare: Emil Folino
Jämförelseanalys av GUI testverktyg: Avseende prestanda vid testexekvering och underhållbarhet
I dagens utveckling av webbapplikationer, vilka blir alltmer komplexa, är det viktigt att testa sina webbapplikationer grundligt. En kort exekveringstid av testerna är särskilt viktigt, då de komplexa webbapplikationerna tar allt längre tid att testa manuellt. Det är angeläget att använda automatiserade GUI tester, för att stödja Agila arbetssätt med korta tider för leverans av nya versioner. För att säkerställa att de kan användas vid varje hopslagning av grenar i utvecklingsspåren inför en leverans av den kommande versionen. Ett problem med automatiserade GUI tester är att det alltid har varit svårt att underhålla testfallen när webbapplikationen har ändrats. Därför är det viktigt att det är lätt att underhålla testfallen i testverktygen.
I den här studien har två testverktyg för automatiserade GUI tester utvärderats avseende underhållbarhet och exekveringstid. Fördelar och utmaningar med att introducerade automatiserade GUI tester har även de lyfts fram och analyserats.
För att undersöka vilka fördelar och utmaningar som finns med att introducera automatiserade GUI tester utfördes en litteraturstudie på tidigare studier. Ett antal fördelar och utmaningar med automatiserade GUI tester har lyfts fram. Den genomgående största utmaningen med automatiserade GUI tester är underhållbarheten av testfallen. När webbapplikationen vidareutvecklas och framförallt i ett tidigt stadium i dess livscykel när mycket ändrar sig är det kostsamt att underhålla testfallen. Det är även en utmaning att implementera testfallen på ett sådant sätt att det blir lätta att underhålla. Vad gäller fördelar är den absolut främsta tidsvinsten i exekveringstid av testfall samt ökad kvalitet genom att tester utförs oftare.
Det första experimentet som har utförts var att jämföra exekveringstiden mellan Cypress och Selenium Webdriver. Ett antal testfall har skapats som återspeglar hur webbapplikationen används. Experimentet visar att Selenium Webdriver presterar bättre än Cypress när det exekveras på en utvecklingsdator. Ytterligare jämförelse av prestandan i en CI miljö bör utföras för att se hur Cypress presterar med parallell exekvering av testfall.
Det andra experimentet som utförts jämför underhållbarhet mellan Cypress och Selenium Webdriver. Resultatet av det här experimentet har visat att det finns fördelar och nackdelar med båda testverktygen och hur testfallen är skrivna. Cypress är i det här fallet något mer robust när strukturen på sidan ändras. Cypress klarade av ändringen utan några uppdateringar i testkoden. Selenium Webdriver visades vara lite bättre på att hantera när texten på elementen ändras. Det här beror primärt på hur testfallen är skrivna.
Experimentet ger ingen tydlig indikation på vilket testverktyg som är bäst. Det visar mest hur olika svårt det är att skriva testfallen och att komma igång med dem i de båda testverktygen. Problemet med underhållbarhet finns fortfarande kvar. Cypress som ett nytt testverktyg lyckas inte lösa det fullständigt.
Resultatet av experimentet visar att det inte finns ett testverktyg som kan klassas som bäst. Däremot har Cypress en lovande framtid som ett testverktyg, det är lättare att komma igång med och har bra verktyg vilket underlättar arbetet som testare.
Elena Perers (URN)
Handledare: Michel Nass, Doktorand
Utveckling och optimering av röststyrning med JavaScript Web Speech API
Witold Urbas (URN)
Handledare: Kenneth Lewenhagen
#Kandidatarbeten
Differences between DockerizedContainers and Virtual Machines: A performance analysis for hosting web-applications in a virtualized environment
This is a bachelor thesis regarding the performance differences for hosting a web-application in a virtualized environment. We compare virtual machines against containers and observe their resource usage in categories such as CPU, RAM and disk storage in idle state and perform a range of computation experiments in which response times are measured from a series of request intervals. Response times are measured with the help of a web-application created in Python. The experiments are performed under both normal and stressed conditions to give a better indication in to which virtualized environment outperform the other during different scenarios.
The results show that virtual machines and containers remained close to each other in response times during the first request interval, but the containers outperformed virtual machines in terms of resource usages while in idle state, they had less of a burden on the host computer. They were also significantly more rapid in terms of response times. This is also most noticeable during stressed conditions in which the virtual machine almost doubled its sluggishness.
Al burhan, Mohammad (URN)
Handledare: Kennet Henningsson
Response time analysis on indexing inrelational databases and their impact
This is a bachelor thesis concerning the response time and CPU effects of indexing in relational databases. Analyzing two popular databases, PostgreSQL and MariaDB with a real-world database structure using randomized entries. The experiment was conducted over Docker and its command-line interface without cached values to ensure fair outcomes. The procedure was done throughout seven different CRUD queries with multiple volumes of database entries to discover their strengths and weaknesses when utilizing indexes. The result chapter shows indicators that indexing has an overall enhancing effect on almost all of the queries. It is found that join, update and delete operations benefits the most from non-clustered indexing. PostgreSQL gains the most from indexes while MariaDB has a minuscule improvement in the response time reduction. A greater usage of CPU resources does not seem to correlate with quicker response times.
Martin Borg och Sam Pettersson (URN)
Mikael Svahnberg, Associate Professor
The crucial parts of text classification with TensorFlow.js and categorisation of news articles
Text classification is a subset of machine learning which is used to classify texts such as tweets, email, news headlines or articles, with tags or categories. As news publishing can have uncertainty in their categorisations, text classification could categorise articles autonomously and distinguish unclear categorisations. The library TensorFlow helps with operations and tools for the machine learning workflow.
This paper takes focus on the crucial parts of working with machine learning using TensorFlow.js and to what extent this model can categorise a news article. The authors evaluates different models to analyse how optimising the settings will affect the accuracy of the model.
Results of this paper was researched with a literature study of official documentations and peer reviewed reports. An empirical experiment where machine learning models were trained in TensorFlow.js was also performed.
The results showed that the model with the highest accuracy with 87.17% accuracy was trained with 1000 articles using Relu and Softmax activation functions and the Mean squared error loss function. While the model with lowest accuracy had 75.5% using Sigmoid activation functions and Categorical cross-entropy on the 5000 articles training set. Crucial parts for this development were: optimizer function, loss function, batch size, activation functions, training data and test data with labels, normalise function, shapes of layers and computing power.
There are several parts and functions to take in consideration when developing a machine learning model with text classification in TensorFlow.js. The training process needs to be performed multiple times as there are many parameters which has an affect on the model results. The model results can be improved by optimising and finding the best combination between different functions and parameters.
Gustav Nordberg (URN)
Handledare: Michel Nass
A Comparison of Performance and Looks Between Flutter and Native Applications: When to prefer Flutter over native in mobile application development
A mobile application has to be able to keep up with heavy demands to compete with all the new applications that are developed each day. Good performance and nice visuals are base requirements for the development of mobile applications. There are many options for tools when developing and one of these choices is a native application, which is said to have better performance and suitability to the mobile environment. Another choice is a tool which requires only one code base for multiple platforms and is therefore easier to maintain. Flutter is an open-source User Interface (UI) toolkit created by Google that can create cross-platform applications with one code base while said to maintain the aspects of looking native.
This paper explores how Flutter compares to native applications, which are currently seen as superior in mobile behaviour and performance. An experiment was conducted to test how Flutter as a cross-compiler compared to two native applications made of kotlin and Android studio and swift and XCode, in terms of CPU performance. A survey was created to see if there was a difference in the perception of users with regards to appearance and animations. A literature study was conducted to strengthen the results from the experiment and survey and to give a background to the subject.
Flutter is a new tool and it continues to grow incredibly fast. Conclusions are drawn that a Flutter application can compete with a native application when it comes to CPU performance, but is not as developed in the animation area. Flutter does not require complex code for creating a simple application and uses significantly less lines of code in development compared to native. The final conclusion is that Flutter is best to use when building smaller to medium-sized applications, but has a potential to grow to overcome its current drawbacks in the animation department. Further examination of the areas examined in this paper is needed in order to ensure and strengthen the results.
Matilda Olsson (URN)
Handledare: Andreas Arnesson
JavaScript DOM Manipulation Performance: Comparing Vanilla JavaScript and Leading JavaScript Front-end Frameworks
Background. Websites of 2020 are often feature rich and highly interactive applications. JavaScript is a popular programming language for the web, with many frameworks available. A common denominator for highly interactive web applications is the need for efficient methods of manipulating the Document Object Model to enable a solid user experience.
Objectives. This study compares Vanilla JavaScript and the JavaScript frameworks Angular, React and Vue.js in regards to DOM performance, DOM manipulation methodology and application size.
Methods. A literature study was conducted to compare the DOM manipulation methodologies of Vanilla JavaScript and the selected frameworks. An experiment was conducted where test applications was created using Vanilla JavaScript and the selected frameworks. These applications were used as base for comparing application size and for comparison tests of DOM performance related metrics using Google Chrome and Firefox.
Results. In regards to DOM manipulation methodology, there is a distinct difference between Vanilla JavaScript and the selected frameworks. In Vanilla JavaScript DOM manipulation is handled by direct interaction with the DOM interface. When using the selected frameworks the actual interaction with the DOM interface is abstracted away from the developer and handled by the framework. While React and Vue.js both have implemented a Virtual DOM to optimize DOM interactions, Angular has implemented Incremental DOM. Vanilla JavaScript had the best DOM performance in all tests and the smallest application size. Amongst the frameworks React had the best DOM performance, Angular performed close to React in nearly all test, and Vue.js was slightly slower in most tests. In nearly all tests the applications performed better in Google Chrome.
Conclusions. Vanilla JavaScript and the selected frameworks, and thereby their DOM manipulation methodologies, are all feasible alternatives for creating interactive web applications with high DOM performance. Tests indicate that Vanilla JavaScript and the selected frameworks achieves better DOM performance in Google Chrome compared to Firefox.
Morgan Persson (URN)
Handledare: Emil Folino
#Revision history
- 2021-02-04: (A, efo) Första utgåvan i samband med kursomgång 2021.