An Approach to Achieve DBMS Vendor Independence for Ides AB s Platform

Size: px
Start display at page:

Download "An Approach to Achieve DBMS Vendor Independence for Ides AB s Platform"

Transcription

1 Linköping University Department of Computer Science Bachelor thesis, 16 ECTS Datateknik 2017 LIU-IDA/LITH-EX-G--17/008--SE An Approach to Achieve DBMS Vendor Independence for Ides AB s Platform Niklas Blomqvist Philip Johansson Examiner : Olaf Hartig External supervisor : Kristian Sjöström Linköpings universitet SE Linköping ,

2 Upphovsrätt Detta dokument hålls tillgängligt på Internet eller dess framtida ersättare under 25 år från publiceringsdatum under förutsättning att inga extraordinära omständigheter uppstår. Tillgång till dokumentet innebär tillstånd för var och en att läsa, ladda ner, skriva ut enstaka kopior för enskilt bruk och att använda det oförändrat för ickekommersiell forskning och för undervisning. Överföring av upphovsrätten vid en senare tidpunkt kan inte upphäva detta tillstånd. All annan användning av dokumentet kräver upphovsmannens medgivande. För att garantera äktheten, säkerheten och tillgängligheten finns lösningar av teknisk och administrativ art. Upphovsmannens ideella rätt innefattar rätt att bli nämnd som upphovsman i den omfattning som god sed kräver vid användning av dokumentet på ovan beskrivna sätt samt skydd mot att dokumentet ändras eller presenteras i sådan form eller i sådant sammanhang som är kränkande för upphovsmannenslitterära eller konstnärliga anseende eller egenart. För ytterligare information om Linköping University Electronic Press se förlagets hemsida Copyright The publishers will keep this document online on the Internet or its possible replacement for a period of 25 years starting from the date of publication barring exceptional circumstances. The online availability of the document implies permanent permission for anyone to read, to download, or to print out single copies for his/hers own use and to use it unchanged for non-commercial research and educational purpose. Subsequent transfers of copyright cannot revoke this permission. All other uses of the document are conditional upon the consent of the copyright owner. The publisher has taken technical and administrative measures to assure authenticity, security and accessibility. According to intellectual property law the author has the right to be mentioned when his/her work is accessed as described above and to be protected against infringement. For additional information about the Linköping University Electronic Press and its procedures for publication and for assurance of document integrity, please refer to its www home page: c Niklas Blomqvist Philip Johansson

3 Abstract Software that is developed with few integration capabilities to different user interfaces or database vendors might lose market share in the long run. To stay competitive, companies that find themselves in situations like these might need to look at options to increase their alternatives. This thesis aims to present and evaluate how Ides AB could achieve vendor independence as it relates to database integration. The proposed solution is based on pre-existing code from an existing product and thus includes theory about the methods and details how one can read, understand and analyse code. The outcome is presented with code examples to give the reader a clear and concise understanding. In the evaluation phase, we take other related work into consideration as it relates to our thesis focus. The proposed approach presented consists of a class to represent different database vendors. It also consists of abstract functions handling the interaction between different databases. Which database the class interacts with is determined by the connection established. The approach also includes what is possible to make database agnostic verified by an evaluation.

4 Acknowledgments We would like to thank Ides AB for giving us the opportunity to do this thesis. Thanks to everyone at Ides for behind very helpful and inviting. Special thanks go to Kristian Sjöström who has been our supervisor at Ides. Also thanks to Olaf Hartig who has been our examinator and supervisor. Olaf provided us with feedback and guidelines to make this thesis possible. iv

5 Contents Abstract Acknowledgments Contents List of Figures iii iv v vii 1 Introduction Motivation Aim Research questions Background Delimitations Theory Reading, understanding, and analyzing code Software development models Maintainability Refactoring code Database management systems Layer architecture Object-relational mapping Software testing Method Pre-study Implementation Software verification Results Background Implementation Analysis of the layer architecture Evaluation Stored procedure Remote comparison Local comparison Discussion Method Results v

6 6.3 Source criticism Conclusion 44 Bibliography 46

7 List of Figures 2.1 Code example of refactoring with the extract method Code example of refactoring with the inline method Architecture of a database Example of a table in a database Relations in a table Result from query Three-layer architecture ORM architecture List over IDbConnection interface properties and methods Example of parameters in the IDbCommand interface Call to the database using Oracle.DataAccess.Client Enumeration representing database types. Could be extended further The constructor of the implemented class The overwritten CommandText property for the IDbCommand interface The character different DBMSs use for parameters Accessing Oracle s parameter character Snippet from the ConvertStatement function that translate the parameter character Example of writing a standard SQL statement Statement with the unique Oracle functions decode and dbms_lob.get_length Command with separate statements for different DBMSs List over functions to be translated Implementation after implementing parse functions Function header of helper function GetStatement Statement supported by multiple DBMSs Statement expected to execute on all DBMSs Function for adding a parameter to a statement Functions for reading binary data in Oracle and SQL Server Function for reading binary data Function for reading data Call to the database using the new implementation Example of a statement in the user interface Example of application logic in the user interface Snippet from a stored procedure Snippet from a stored procedure written in C# Chart of stored procedure Chart of the memory usage evaluation on a remote server Chart of CPU evaluation on a remote server Chart of the execution time evaluation of the statement 1 on a remote server Chart of the execution time evaluation of the statement 2 on a remote server Chart of the execution time evaluation of the statement 3 on a remote server vii

8 5.9 Chart of the execution time evaluation of the statement 4 on a remote server Chart of the execution time evaluation of the statement 5 on a remote server Chart of the memory usage evaluation on a local server Chart of CPU evaluation on a local server Chart of the execution time evaluation of the statement 1 on a local server Chart of the execution time evaluation of the statement 2 on a local server Chart of the execution time evaluation of the statement 3 on a local server Chart of the execution time evaluation of the statement 4 on a local server Chart of the execution time evaluation of the statement 5 on a local server

9 1 Introduction 1.1 Motivation The ability to choose and customize your software has become something that customers take for granted. Companies that have developed software which was originally designed to only have narrow options are now in a critical phase where they are losing potential customers. How the process to store data from the software should be done is often seen as one of the parts that the customer wants to choose. Databases are one way of handling data. Developers of software are facing a choice in where they must choose which database management system (DBMS) to interact with. But every customer has their own individual situation with a unique solution that possibly cannot be adapted to another customer. Keeping up with the market and being able to deliver what the customers demand is an essential key in developing software. One way of extending the flexibility is to make the software database-agnostic Aim The purpose of this thesis project is to investigate and to evaluate the most appropriate way to make Ides AB s software platform database-agnostic without sacrificing performance. 1.3 Research questions 1. In what way, could Ides become independent of database provider without affecting the current functionality? How could this be implemented without affecting the performance of execution time, CPU or memory by more than 10%? 2. How should Ides keep working with their current layer architecture, with respect to multiple database providers? 1 In an information technology context, agnostic refers to something that is generalized so that it is compatible among various systems [3]. 1

10 1.4. Background 1.4 Background Ides AB is developing a platform for version control of engineering data, CAD integrations, applications and Microsoft office documents. The name of the product is MasterConcept and more about it can be read at Today, Ides AB can exclusively offer their platform to run with Oracles database management system. To increase their flexibility to customers, Ides would like to make their software platform functional with different database managers. The reason is that they have lost procurements, and thereby market shares because they cannot offer another DBMS. 1.5 Delimitations Ides is developing their software in a.net environment with the language C#, therefore this thesis will focus on alternatives relevant for the.net Framework. Our part on MasterConcept will be focusing on documents. 2

11 2 Theory This chapter presents theory and related work used writing this thesis. 2.1 Reading, understanding, and analyzing code This section is relevant in the sense that MasterConcept is 30+ years old. Over the years it has grown very large in terms of code base. Understanding is a key factor in contribution. "As the amount of code in a project grows, it gradually surpasses understanding" [5]. There are methods to help get the fundamental understanding that one need to contribute in an effective manner. Feathers [5], explains three methods, Notes/Sketching, Listing markup, and Breakpoints, all presented below. Notes/Sketching When reading code repeatedly it can become confusing. One way to get further understanding could be to write notes and draw sketches. Start by writing down names of the most important thing, classes or functions, continuing with the second most important thing. If there is a relation between the two, draw a line between them. The sketches do not have to be formal, like a full UML diagram. This method could help see things from a different perspective, since drawing things out tend to do that [5]. Listing markup Another method Feathers [5] presents for code understanding is Listing Markup. Mark up a listing to get deeper understanding of its purpose and print out the code. Depending on if you want to further understand dependencies or method structure, apply one of the following techniques: Separating responsibilities Use a marker to group things. If things belong together, mark them with a special symbol next to them so it is possible to identify parts that belong together. 3

12 2.2. Software development models Understanding method structure Line up the code in blocks since bad indentation in long methods can make them very difficult to read. Draw lines from the beginning of the blocks to the end of the blocks. Look over the different blocks and see if there exists complicated logic that could be split up into separate functions using a refactoring method described in section 2.4. Breakpoints This method requires an Integrated Development Environment 1 (IDE). Find the entrance of some logic to deepen knowledge about. Set a breakpoint on the first line and step the code line by line. This technique will traverse every function call made from the point of break and can help to see how the code is interrelated. 2.2 Software development models This section presents different software development models. developing. Models that were considered when When it comes to software development and development models, Patton [18] describes the four most frequently used models. Patton [18] says that each model has its own advantages and disadvantages, and when testing and trying to understand code, one will most likely encounter them all. The models that Patton [18] describes are the following: Big-bang model The big-bang model originates from the theory that the universe was created in a single huge explosion. In software development, this principle is applied in a similar manner. A very large amount of both people and money are put together to develop a software. The development is very fast paced and testing is not considered. This results in a large program that might or might not work perfectly because the way of working was very rushed forward. The resulting structure is in most cases not optimal. Testing and understanding a product that was developed with the big-bang model is very difficult. This is because it is very hard to go back and fix things that are broken since there is no real structure in the code. Code-and-fix model The code-and-fix model is a step up from the big-bang model. The idea is that the development team is starting out with a simple design of what they want. This later proceeds into a long repeating cycle of testing, fixing bugs and developing new features. Finally, at some point the software is released. Testing and understanding a product developed with the code-and-fix model is easier than with the bing-bang model. This is because under the development cycle there is a part for testing and thus the released software is easier to maintain due to improved code quality. Waterfall model The waterfall model builds upon a series of steps starting from an initial idea to a final product. After each step the development team reviews if they are ready or not to move on 1 An IDE is a software application that provides comprehensive facilities to computer programmers for software development. 4

13 2.3. Maintainability to the next step in the model. If not, the team stays at their current level until they are ready to move on. This model requires well-done product definition and design specification. The coding phase is usually only a single block and when moved from one block to another there is no turning back in the waterfall model. Testing and understanding a product developed with the waterfall model is easy because every single step in the development cycle is very well and thoroughly specified. Spiral model The spiral model addresses many of the problems with the previous models described while contributing with additional features. The general idea behind the spiral model is to start small with defining the most important features. Try them out and get feedback from customers and then move on to the next level. This is repeated until the final product is achieved. Every cycle in the spiral model involves: 1. Determine objectives, alternatives, and constraints. 2. Identify and resolve risks. 3. Evaluate alternatives. 4. Develop and test the current level. 5. Plan the next level. 6. Decide on the approach for the next level. The overall view of the spiral model is seen as a bit of both waterfall and code-and-fix. Waterfall because of the phases of analyzing, designing, developing, and testing. Code-andfix because of each cycle around the spiral working model is very similar. Strictly following the spiral model ends up with a code base with high quality and allows for easier understanding by future developers [18]. 2.3 Maintainability This section contains information to be applied both when writing code and understanding existing code and design decisions. Maintainability is the ease of which a system could undergo changes. Changes could impact components, services, features, and interfaces by fixing errors or to meet new requirements from customers [13]. Maintainability is a function of the overall quality. The most common things that affect maintainability include the following [13]: Excessive dependencies between layers. The different layers, classes, or functions in the applications are very dependent on each other, they are tightly coupled to each other. This makes it very hard to swap one class with another without having to change a lot of other code. Affects: Prevents easy replacements, updates, and changes. Possible solution: A typical approach to prevent this is to design systems as welldefined layers with clear layout, as mentioned in

14 2.4. Refactoring code Direct communication. This applies to components and layers located on different physical servers. In general, when designing for communication between such components, there is a choice between direct communication and message-based communication. Affects: Prevents changes to physical deployment of components and layers. Possible solution: Choosing an appropriate communication model and designing a pluggable architecture that allows for easy maintenance could avoid this. Relying on custom implementations. Writing and relying on custom implementations for things such as authentication. Affects: Prevents reuse and hinders maintenance. Possible solution: Instead use the built-in platform functions and features where possible. Code logic of components is not cohesive. Cohesion refers to the degree to which the elements inside a component belong together. If components are not cohesive there exists code that do not belong to the component. Affects: Prevents the ease to maintain and replace. Also causes unnecessary dependencies. Possible solution: Design components with high cohesion and low coupling. Code base is large and complex. Large amounts of code written without a proper structure. Affects: Makes changes very unmanageable, fragile and burdensome. Possible solution: Again, having clear and structured layers and perhaps using a business workflow could avoid these situations. Lack of documentation. There is a lack of documentation regarding either comments in code or manuals over how to use the program and its features. Affects: Hinders usage, management, and future upgrades. Possible solution: Make sure to document each function with comments and to use explanatory variable names. 2.4 Refactoring code This section contains information about how to refactor code. We used refactoring to get better understanding of how the code worked. Software that consists of a lot of code that is constantly changed by different developers can be difficult to keep clean and uniform. Usually in software development, there is a code design to maintain a standard, but development of both code language and development technology is ongoing. It may therefore be useful to maintain the existing code with new technologies so that the whole software is coherent [14]. Refactoring code is a technique for developers to improve the code. It is also a technique to improve the understanding of how the code is interrelated. The main goal of refactoring is to improve the code after being developed, as both new features get added to the programming 6

15 2.4. Refactoring code language and philosophies for software development change [6]. The Extract method is one useful technique, the core of the extract method is to break methods into smaller methods [6]. Extract method The extract method has seven steps to follow to achieve the desired effect: 1. Find the code you want to refactor and comment it out. 2. Come up with a name that describe what it does it is important to distinguish between what it does and how it does it, the name should be related to the first. 3. Place a call to the new method inside the old method. 4. Copy the code that you want to refactor into the new method. 5. Adjust the method declaration to accommodate the parameters and return value (if any). 6. Run tests to validate that it works. 7. Remove the commented code from the first step. Figure 2.1 shows an example of the extract method. public void printowing(customer Customer, List<Order> Orders) double outstanding = 0.0; //Print banner Console.WriteLine(" "); Console.WriteLine("-- Customer Owes --"); Console.WriteLine(" "); //Calculate outstanding foreach( Order order in Orders ) outstanding += order.getamount(); //Print details Console.WriteLine(String.Format("Name: 0", Customer.GetName())); Console.WriteLine(String.Format("Amount: 0", outstanding)); ŕ ő 7

16 2.4. Refactoring code public void printowing(customer Customer, List<Order> Orders) double outstanding = 0.0; printbanner(); //Calculate outstanding foreach( Order order in Orders ) outstanding += order.getamount(); //Print details Console.WriteLine(String.Format("Name: 0", Customer.GetName())); Console.WriteLine(String.Format("Amount: 0", outstanding)); private void printbanner() //Print banner Console.WriteLine(" "); Console.WriteLine("-- Customer Owes --"); Console.WriteLine(" "); Figure 2.1: Code example of refactoring with the extract method. When using the extract method, local variables may become a problem. There are guidelines to follow both to avoid and to handle local variables. The first thing is if the variable is read but not changed, then it is just to pass them as a parameter. The real problem occurs when a local variable is to be assigned. If it is only one variable that is assigned, the method can return that value. If there are several values that is to be assigned, it is possible to encapsulate it into a wrapper class. This may not be optimal considering that the initial purpose was, clear and easy code. If the latter would happen, Fowler et al. [6] state that the refactoring may be avoided or written in another way [6, 14]. Inline method The inline method is the opposite of the extract method. When there is no longer easy to understand the code or if it is badly factored, the inline method is used. The inline method has five steps to follow to achieve the desired effect: 1. Check that the method is not polymorphic. If so, do not inline if subclasses override the method; they cannot override a method that is not there. 2. Find all calls to the method. 3. Replace each call with the method body. 4. Compile and test. 5. Remove the method definition. Figure 2.2 shows an example of the inline method. 8

17 2.5. Database management systems public int getrating() return (morethanfivelatedeliveries())? 2 : 1; private bool morethanfivelatedeliveries() return _numberoflatedeliveries > 5; public int getrating() return (_numberoflatedeliveries > 5)? 2 : 1; ŕ ő Figure 2.2: Code example of refactoring with the inline method. 2.5 Database management systems MasterConcept is using a DBMS for storing and retrieving data. This section gives relevant information about DBMSs. A database is a structured collection of data, usually very large. Relational databases structure data in tables consisting of rows and columns. Each column has a column name, which is used access that particular column [4]. Databases are structured using database schemas. A database schema represents the logical view of the entire database. It defines how the data is organized within the database as well as the relation between the data. A database schema can be divided into two categories, both listed below. Logical database schema Defines the logical constraints that need to be applied when data is stored. A constraint could be column data type such as numbers (integers) or text (strings). Physical database schema The actual storage of data and its form of storage, like files. It defines how the data will be stored in a secondary storage device. Figure 2.3: Architecture of a database. 9

18 2.5. Database management systems Database systems contain a lot of data in addition to the actual data to be saved. This data is known as metadata, data about data, which helps to locate and retrieve data in an easy way. Similar to the database schema, data independence follows a layered architecture, listed below. Logical data independence If changes occur to the format of a table, the data on disk should not be affected. Physical data independence If changes occur to the physical data the schema or logical data should not be affected. To keep data independence, efficient access, and to allow for administration, databases are managed by a database management system (DBMS) [19]. A database management system is a software application that interacts with both the user and the database itself to capture and analyze data [4]. Persons ID Firstname Lastname 1 Niklas Blomqvist 2 Philip Johansson Figure 2.4: Example of a table in a database. Figure 2.4 shows an example of a possible table in a database. This is a table about persons and consists of three columns. The first column, ID, is only there to uniquely identify each person. This is because two people could have the same name. The second and third column name is Firstname/Lastname and stores the name of each person. Relations in databases A relation is a set of tuples 2 (d 1, d 2,..., d n ) where each element d i is a member of a data domain D i 3 [2]. Each element is termed an attribute value [2]. An attribute is a name paired with a data type [2]. An attribute value is an attribute paired together with an element of that attributes domain [2]. A tuple is a set of attribute values in which no two distinct elements have the same attribute name [2]. Figure 2.5 shows relation, tuple and attribute represented as table, row and column respectively. SQL Term Relational database term Description Row Tuple (or record) A dataset representing a single item. Column Attribute (or field) A labeled element of a tuple (ex. Firstname) Table Relation A set of tuples sharing the same attributes; a set of columns and rows. Figure 2.5: Relations in a table. 2 A tuple is a finite ordered list of elements. 3 A data domain refers to all the values which a data element may contain. 10

19 2.5. Database management systems Structured Query Language A database management system allows users to create, read, update and delete (CRUD) data in a database [4]. This is achieved by interacting with the DBMS through the Structured Query Language (SQL) [4]. SQL allows users to manage databases by deleting/creating tables and inserting/updating/deleting of data within the tables [19]. Communication between the DBMS and users is done via a Statement. The fundamental statements are the following [4]: SELECT INSERT UPDATE DELETE For retrieving data from a table. For inserting data in a table. For updating existing data in a table. For deleting data in a table. A statement that retrieves data is called a query and is built upon a SELECT-FROM- WHERE structure [4]. SELECT < a t t r i b u t e l i s t > FROM < t a b l e l i s t > WHERE <condition > <attribute list> - names of columns whose values are to be retrieved by the query. <table list> - relation names required to process the query. <condition> - conditional expression that identifies the data to be retrieved. By using figure 2.4 as an example, a query for retrieving persons whose first name is Niklas would look like: SELECT Firstname, Lastname FROM Persons WHERE Firstname =" Niklas " This query would produce the following result: Firstname Niklas Lastname Blomqvist Figure 2.6: Result from query. Similar expressions can be used with UPDATE/INSERT/DELETE to modify data in tables. 11

20 2.6. Layer architecture Stored procedures Most DBMSs (including Oracle and SQL Server) support stored procedures. A stored procedure is a subroutine which can consolidate and centralize logic which originally was implemented in applications. Very extensive or complex processing which would require the execution of multiple SQL statements could instead be implemented as a stored procedure to save both time and memory [4]. Different DBMSs utilize different dialects of SQL. This means a procedure written for Oracle s DBMS would possibly not be functional in SQL Server [16, 17]. Stored procedures are registered in the DBMS and not in the application code. Triggers A trigger is a procedural code in a DBMS that automatically executes at certain events. Possible events differs from DBMS to DBMS but the following are sort of standard for the most well-known ones (including Oracle and SQL Server) [4]: BEFORE UPDATE/DELETE/INSERT Execute code before updating/deleting/inserting data into a table. AFTER UPDATE/DELETE/INSERT Execute code after updating/deleting/inserting data into a table. Triggers are bound to specific tables and are automatically executed when any of the bound events occur. Oracle For stored procedures and triggers, Oracle utilizes Procedural Language/SQL (PL/SQL) [17] which is an extension of SQL. One of the main differences between PL/SQL and other SQL dialects, for expressing stored procedures, is the ability to group procedures into packages. Packages declare the types, variables, constants, exceptions, cursors, and subprograms that can be referenced from outside the package. It contains information about the content of the package but excludes the code for the subprograms. PL/SQL also has a lot of unique built-in functions. SQL Server For stored procedures and triggers, SQL Server utilizes Transact-SQL (T-SQL)[16] which also is an extension of SQL. The main difference between PL/SQL and T-SQL is how they handle variables, stored procedures, and built-in functions [16, 17]. 2.6 Layer architecture This section contains information to understand how code is structured and to understand our result of how Ides should keep working with their layer architecture in the future. Like any other complex structure, software should be structured in some way. There are different approaches when it comes to structuring the software, but the primary goal is the same, keep the software alive and updatable. Without some structure, it would be hard to debug and expand the software. Software should be structured in a way that the user, system, software and business goals are being considered [13]. Questions that come up when designing a system might be: How will the user interact with the system? 12

21 2.6. Layer architecture How can the software be designed so it can flexibly be updated? What is that next phase of the software? (i.e. features, platform etc.) At the highest level, software can be decomposed into 3 layers. These three levels are presented below. Presentation This layer takes care of the interaction with the user. It receives what to render and might also take input and pass it to the business layer. This layer is normally the traditional application or the Web-based application [22]. Business This layer takes care of the business logic of the application, it is working like a bridge between the presentation and data layers. Data This layer takes care of the data access and the persistent data store. Figure 2.7: Three-layer architecture. Layers are taking care of the logical representation and do not care about the location of the physical hardware. There can be different tiers of layers, but layers can also reside on the same tier. The primary goal of having individual layers is to make each of the layers independent of each other. By doing that, the developer can replace and update one layer without having to make a lot of changes to the others [10, 20, 21]. When designing an application, the first thing to focus on is the highest level of abstraction. Start by collecting functionality into different layers. There is a granularity between too few or too many layers. This balance is important to keep in mind to avoid unnecessary complexity. When grouping functionality into layers, the interaction between the layers must be taken into concern. Meier et al. [13] are specifying three rules, top-down interaction, strict interaction and loose interaction, for the layers to interact with each other. Interacting in this context is the same as to communicate with each other. These three rules are to be followed in the whole code to avoid circular dependency. Circular dependency is a relation with two or more components being directly or indirectly dependent on each other to function properly. Top-down interaction. Higher level layers can interact with layers below. This accompanies that lower layer never can interact with the ones above. It is possible to use events to make components in the higher layers aware of changes in the lower layers [13]. 13

22 2.7. Object-relational mapping Strict interaction. Each layer must interact with only the layer directly below. This rule will enforce strict separation where each layer only knows about the layer directly above. If the software is to be modified over time, this is the approach to choose. The reason behind that is that modifications will only affect the layer directly above [13]. Loose interaction. Higher level layers can bypass layers to interact with lower layers directly. This may improve the performance, but can also affect the dependencies negatively, meaning that the code can get effects that was not sought. This is the approach to choose if the application is not to be distributed across physical tiers [13]. The benefit of this rule is that modifications to the interface of the layer will only affect the layer directly above. 2.7 Object-relational mapping ORM was a first thought of a solution to our problem and is discussed in later chapters. Object-Relational Mapping (ORM), is an existing technique for converting data between object-oriented programming languages and relational databases. Typically, an objectoriented program uses an API that in turn calls a driver to communicate commands to the database [9]. In a result set, this means the programmer manually must set each attribute of the object in question to the corresponding returned data. "This code differs little from class to class and is largely the same even from application to application and is often tedious to write" [9]. An object-relational mapper functions in between the Data Access Layer and the Relational Database as seen in figure 2.8. Figure 2.8: ORM architecture Using an ORM is one way of creating abstraction in code as you would write statements to the ORM of choice instead of the database. The ORM is configured to talk with a specific DBMS, but multiple of these configurations could extend the functionality to be used with multiple different ones. ORMs work by using drivers for different DBMS and they implement an open database connection where the targeted database is irrelevant for the ORM itself [11]. Typically, you initialize an ORM with a connection string which tells the ORM which driver you would like to use. The mappers have their own style of writing statements and then utilizes the drivers to translate these into something appropriate depending on the targeted DBMS. 14

23 2.8. Software testing 2.8 Software testing This section presents what testing means and contains related work when it comes to evaluate solutions with DBMSs. When developing software, there is usually a product specification that works like an agreement among the software team. It specifies what and how the product will be and act, and what it will not do. Problems with the software code is often referred to as bugs. Ron Patton [18] define five different bugs: 1. The software does not do something that the product specification says it should do. 2. The software does something that the product specification says it should not do. 3. The software does something that the product specification does not mention. 4. The software does not do something that the product specification does not mention but should. 5. The software is difficult to understand, hard to use, slow or - in the software testers eyes - will be viewed by the end user as just plain not right. Verification and Validation When developing software, there are at minimum two stakeholders, the customer and the specified requirements. There are different ways to check that the software meets the specified requirements. The Verification and the Validation are two terms that relate the specification and the customer. "Verification is the process confirming that something software meets its specification. Validation is the process of confirming that it meets the user s requirements." [18] Black-box and White-box testing In black-box testing, the tester only knows what the software is supposed to do and is not able to see how it operates. The tester writes some input and gets some output, and cannot explain how it happened. In White-box testing, the tester has access to the software code and can examine the code for clues that will help with constructing the testing. The tester can also evaluate what went wrong when tests fail. Comparative study on databases Youssef Bassil [1] does a comparative study where he evaluates the performance of the top DBMSs. The DBMSs that are being evaluated are MS SQL Server 2008, Oracle 10g, IBM DB2, MySQL 5.5, and MS Access He evaluates the DBMSs on how they perform on CPU utilization, memory usage, virtual memory usage, and threads count. The databases are populated with records each. He executes five different statements with different complexity and compares the results. Eventually he comes to the conclusion of how SQL Server has a lower execution time executing queries compared to Oracle. Oracle however showed a slight advantage performing UPDATE statements compared to SQL Server. On an average of the ten statements he executed, Oracle had a higher CPU utilization as well as memory usage compared to SQL Server. 15

24 3 Method 3.1 Pre-study MasterConcept [12] contain lines of code. To get an understanding of how the program works and how it was interrelated, we searched for methods that would help us. We found three useful methods, notes/sketching, listing markup and breakpoints that are presented in section 2.1. Ides software development team uses Visual Studio [23] as developing environment. It is an Integrated Development Environment (IDE). This is what we used during development. Visual Studio enabled us to set up breakpoints in the code to follow the flow. To further improve our understanding, we sketched down the important classes and functions. To fully understand these classes and functions we applied the method about refactoring. Some functions contained over 400 lines of code. To further understand what the functions did and how the classes worked we applied the extract method presented in section 2.4. When gathering knowledge about the code, we got an insight of how the layered architecture is structured. We later used breakpoints and notes/sketching to get a full insight in how the program is structured. This was later used to answer our second research question: How should Ides keep working with their current layer architecture, with respect to multiple database providers? To structure our work, we decided to have a software developing model. Since the product already existed and was constantly developed, we looked for a model that would work for us. It was also important that we could submit the code in an easy way. With these reasons, we evaluated the development models and eventually decided to use the spiral model. 3.2 Implementation To answer our research question; In what way, could Ides become independent of database provider without affecting the current functionality? We looked for previous work and found that ORM might be a possible solution. In validation meetings with the software developer chief, we were informed that they had already tried implementing an ORM solution. But the perfor- 16

25 3.3. Software verification mance was not good enough, and therefore they were not interested in a solution based on ORM. During our research, we did not find any method that was directly applicable to our problem. Therefore, we needed to combine methods to achieve the desired result. We focused on a solution that could work for our sub-research question: How could this be implemented without affecting the performance of execution time, CPU or memory by more than 10%? By doing that we found that our solution needed to include theory and related work from: Maintainability When analyzing the code as mentioned in section 3.1, we found three direct quality aspects that we needed to include in our solution. Excessive dependencies between layers We needed a structured layer architecture to prevent the affects that might be caused. Direct communication We needed the solution to have an appropriate communication model to allow for easy maintenance. Code base is large and complex The code base that we worked with contained a large amount of code, and we needed to have clear and structured layers. Layer architecture Meier et al. [13] stated three rules presented in section 2.6. When we were developing our solution we based the interaction between the layers on strict interaction. Strict interaction was the interaction type that best fit our requirements. This is because the code will be modified over time and according to Meier et al [13], this is the interaction type to choose. Database management systems When investigating the Oracle DBMS further, we realized that it contained a lot of stored procedures and logic that we somehow needed to implement for use with other DBMSs. Because of this we figured if there was a way to write this code only once. Eventually we thought we could try to translate a stored procedure from PL/SQL code to C# code. 3.3 Software verification To fully answer our research question How could this be implemented without affecting the performance of execution time, CPU or memory by more than 10%? we needed to verify how our solution was performing. We decided to do a white-box testing based on Youssef Bassil [1] study. We chose white-box testing because we had the code and could in discussion with the developers at the company discuss which parts of the software that were interesting to test. The reason why we built the test on Youssef Bassils test is to compare our results with his. The testing we performed, contained three different parts: Old Oracle solution vs New Oracle solution This comparison was done in a network with a server-client communication. Old Oracle solution vs New Oracle solution This comparison was done on a local machine. 17

26 3.3. Software verification New Oracle solution vs New SQL Server solution 1. The statements that was tested were the following: Statements ID Statement S1_insert INSERT INTO epc_vault_data (id, version, data, data_length) VALUES (:id, :version, :data, :data_length) S2_delete DELETE FROM epc_vault_data WHERE id = :id AND version = :version AND data = :data AND data_length = :data_length S3a_select SELECT dbms_lob.getlength(utl_compress.lz_uncompress(data) FROM epc_vault_data WHERE id = :id AND version = :version S3b_select SELECT DATALENGTH(DECOMPRESS(data)) FROM epc_vault_data WHERE id = :id AND version = :version S4_update UPDATE epc_vault_data SET data = :data, data_length = :length WHERE id = :id AND version = :version S5_select SELECT sytuser_sytitems.sytitem_id id, sytuser_sytitems.sytitem_rev rev, sytuser_sytitems.cotstd_stdid stdid FROM epc_activities left JOIN epc_activities_doc ON ((epc_activities.id = epc_activities_doc.activities_id OR epc_activities.parallel_sign = epc_activities_doc.activities_id) AND epc_activities.levelseq = epc_activities_doc.activities_lvl_seq AND epc_activities.activityseq = epc_activities_doc.activities_activity_seq) LEFT JOIN epc_activities_item ON (epc_activities.id = epc_activities_item.activities_id AND epc_activities.levelseq = epc_activities_item.activities_lvl_seq AND epc_activities.activityseq = epc_activities_item.activities_activity_seq) LEFT JOIN epc_activities_task ON (epc_activities.id = epc_activities_task.activities_id AND epc_activities.levelseq = epc_activities_task.activities_lvl_seq AND epc_activities.activityseq = epc_activities_task.activities_activity_seq) JOIN sytuser_sytitems ON (epc_activities.sign_user = sytuser_sytitems.shortname AND sytuser_sytitems.cotstd_stdid = (select cotstd_stdid FROM cotprojs WHERE projid = nvl(nvl(epc_activities_doc.dotdoc_projid, epc_activities_item.item_projid), epc_activities_task.taskrequest_projid))) WHERE id = :id and levelseq = :levelseq and activityseq = :activityseq The statements were chosen with a diversity in mind. The statements are a representation of the most executed statements in MasterConcept. In addition to that, they are also based upon the statements Youssef Bassil [1] executed in his comparative study, to best be able to compare the outcome of the tests to his outcome. The statements are chosen with respect that different DBMSs utilizes CPU and memory differently. To evaluate the differences of the DBMSs a variation of commands are chosen with different complexity. In addition to the tests above, we decided to evaluate the performance between the stored procedure and the corresponding C# code we wrote. This was done both over network and on a local database. Testing environment All the statements were executed on the same computer running Windows 10 Pro. The computer s hardware consisted of an Intel Core i7-3720qm 2.60 GHz (8 cores), 16.0 GB RAM, and a 500 GB Samsung 850 EVO SSD. There were three different databases set up. One local SQL Server database, running SQL Server One local Oracle database running Oracle 11g and one remote Oracle database also running Oracle 11g. The remote Oracle database had an average latency of 16 ms during the tests. To execute the statement a small application was written. It was written in C#, using the.net Framework namespace System.Diagnostics to retrieve information about the hardware. The application runs a statement times and records the execution time, the memory usage and the CPU utilization. This is done four times calculating the average execution time, memory and CPU from all the tests. The test application is executed on a local machine, measuring its performance. The values retrieved was compared with each other. The results are presented in chapter Evaluation. 1 There exists no old version using SQL Server 18

27 4 Results The thesis has two main research questions: 1. In what way, could Ides become independent of database provider without affecting the current functionality? 2. How should Ides keep working with their current layer architecture, with respect to multiple database providers? To simplify the understanding of the result, this section has been divided into two parts each covering one of the questions. The performance evaluation of the implementation is presented in the chapter Evaluation. 4.1 Background The proposed implementation utilizes IDbConnection, IDbCommand, and IDbReader interfaces. These interfaces are a part of the.net Framework. They represent an open connection, implemented by.net Framework data providers for accessing relational databases. Below is a list consisting of four drivers used to connect to various data sources. Oracle.DataAccess.Client Driver for accessing data from a Oracle Database. System.Data.SqlClient Driver for accessing data from a SQL Server Database. System.Data.OleDb Driver for accessing data from a variety of sources in a uniform manner. MySql.Data.MySqlClient Driver for accessing data from a MySql Database. In C#, an interface contains the signatures of methods, properties, events or indexers. The IDbConnection interface contains the following properties and methods, listed below in figure 19

HTTP Based Adap ve Bitrate Streaming Protocols in Live Surveillance Systems

HTTP Based Adap ve Bitrate Streaming Protocols in Live Surveillance Systems HTTP Based Adapve Bitrate Streaming Protocols in Live Surveillance Systems Daniel Dzabic Jacob Mårtensson Supervisor : Adrian Horga Examiner : Ahmed Rezine External supervisor : Emil Wilock Linköpings

More information

Design and evaluation of a system that coordinate clients to use the same server

Design and evaluation of a system that coordinate clients to use the same server Linköpings universitet/linköping University IDA Department of Computer and Information Science Bachelor Thesis Information Technology Spring term 2017 LIU-IDA/LITH-EX-G--17/067--SE Design and evaluation

More information

Institutionen för datavetenskap Department of Computer and Information Science

Institutionen för datavetenskap Department of Computer and Information Science Institutionen för datavetenskap Department of Computer and Information Science Final Thesis Network usage profiling for applications on the Android smart phone by Jakob Egnell LIU-IDA/LITH-EX-G 12/004

More information

Object Migration in a Distributed, Heterogeneous SQL Database Network

Object Migration in a Distributed, Heterogeneous SQL Database Network Linköping University Department of Computer and Information Science Master s thesis, 30 ECTS Computer Engineering (Datateknik) 2018 LIU-IDA/LITH-EX-A--18/008--SE Object Migration in a Distributed, Heterogeneous

More information

Institutionen för datavetenskap Department of Computer and Information Science

Institutionen för datavetenskap Department of Computer and Information Science Institutionen för datavetenskap Department of Computer and Information Science Final thesis Case Study of Development of a Web Community with ASP.NET MVC 5 by Haci Dogan LIU-IDA/LITH-EX-A--14/060--SE 2014-11-28

More information

Design, Implementation, and Performance Evaluation of HLA in Unity

Design, Implementation, and Performance Evaluation of HLA in Unity Linköping University IDA Bachelor Thesis Computer Science Spring 2017 LIU-IDA/LITH-EX-G-17/007--SE Design, Implementation, and Performance Evaluation of HLA in Unity Author: Karl Söderbäck 2017-06-09 Supervisor:

More information

Evaluation of BizTalk360 From a business value perspective

Evaluation of BizTalk360 From a business value perspective Linköpings universitet Institutionen för IDA Kandidatuppsats, 16 hp Högskoleingenjör - Datateknik Vårterminen 2018 LIU-IDA/LITH-EX-G--18/069--SE Evaluation of BizTalk360 From a business value perspective

More information

Storage and Transformation for Data Analysis Using NoSQL

Storage and Transformation for Data Analysis Using NoSQL Linköping University Department of Computer Science Master thesis, 30 ECTS Information Technology 2017 LIU-IDA/LITH-EX-A--17/049--SE Storage and Transformation for Data Analysis Using NoSQL Lagring och

More information

Institutionen för datavetenskap Department of Computer and Information Science

Institutionen för datavetenskap Department of Computer and Information Science Institutionen för datavetenskap Department of Computer and Information Science Final thesis Introducing Mock framework for Unit Test in a modeling environment by Joakim Braaf LIU-IDA/LITH-EX-G--14/004--SE

More information

Institutionen för datavetenskap

Institutionen för datavetenskap Institutionen för datavetenskap Department of Computer and Information Science Institutionen för datavetenskap Department of Computer Final thesis and Information Science Minimizing memory requirements

More information

Institutionen för datavetenskap Department of Computer and Information Science

Institutionen för datavetenskap Department of Computer and Information Science Institutionen för datavetenskap Department of Computer and Information Science Final thesis Migration process evaluation and design by Henrik Bylin LIU-IDA/LITH-EX-A--13/025--SE 2013-06-10 Linköpings universitet

More information

Creating a Framework for Consumer-Driven Contract Testing of Java APIs

Creating a Framework for Consumer-Driven Contract Testing of Java APIs Linköping University IDA Bachelor s Degree, 16 ECTS Computer Science Spring term 2018 LIU-IDA/LITH-EX-G--18/022--SE Creating a Framework for Consumer-Driven Contract Testing of Java APIs Fredrik Selleby

More information

Slow rate denial of service attacks on dedicated- versus cloud based server solutions

Slow rate denial of service attacks on dedicated- versus cloud based server solutions Linköping University Department of Computer and Information Science Bachelor thesis, 16 ECTS Information technology 2018 LIU-IDA/LITH-EX-G--18/031--SE Slow rate denial of service attacks on dedicated-

More information

Semi-automatic code-to-code transformer for Java

Semi-automatic code-to-code transformer for Java Linköping University Department of Computer Science Master thesis, 30 ECTS Datateknik 2016 LIU-IDA/LITH-EX-A--16/031--SE Semi-automatic code-to-code transformer for Java Transformation of library calls

More information

HTTP/2, Server Push and Branched Video

HTTP/2, Server Push and Branched Video Linköping University Department of Computer Science Bachelor thesis, 16 ECTS Datateknik 2017 LIU-IDA/LITH-EX-G--17/073--SE HTTP/2, Server Push and Branched Video Evaluation of using HTTP/2 Server Push

More information

Comparing Costs of Browser Automation Test Tools with Manual Testing

Comparing Costs of Browser Automation Test Tools with Manual Testing Linköpings universitet The Institution of Computer Science (IDA) Master Theses 30 ECTS Informationsteknologi Autumn 2016 LIU-IDA/LITH-EX-A--16/057--SE Comparing Costs of Browser Automation Test Tools with

More information

Functional and Security testing of a Mobile Application

Functional and Security testing of a Mobile Application Linköping University Department of Computer Science Bachelor thesis, 16 ECTS Information Technology 2017 LIU-IDA/LITH-EX-G--17/066--SE Functional and Security testing of a Mobile Application Funktionell

More information

Personlig visualisering av bloggstatistik

Personlig visualisering av bloggstatistik LiU-ITN-TEK-G-13/005-SE Personlig visualisering av bloggstatistik Tina Durmén Blunt 2013-03-22 Department of Science and Technology Linköping University SE-601 74 Norrköping, Sweden Institutionen för teknik

More information

Optimizing a software build system through multi-core processing

Optimizing a software build system through multi-core processing Linköping University Department of Computer Science Master thesis, 30 ECTS Datateknik 2019 LIU-IDA/LITH-EX-A--19/004--SE Optimizing a software build system through multi-core processing Robin Dahlberg

More information

Evaluation of a synchronous leader-based group membership

Evaluation of a synchronous leader-based group membership Linköping University Department of Computer Science Bachelor thesis, 16 ECTS Information Technology Spring 2017 LIU-IDA/LITH-EX-G--17/084--SE Evaluation of a synchronous leader-based group membership protocol

More information

Institutionen för datavetenskap Department of Computer and Information Science

Institutionen för datavetenskap Department of Computer and Information Science Institutionen för datavetenskap Department of Computer and Information Science Final thesis A systematic literature Review of Usability Inspection Methods by Ali Ahmed LIU-IDA/LITH-EX-A--13/060--SE 2013-11-01

More information

Multi-Video Streaming with DASH

Multi-Video Streaming with DASH Linköping University Department of Computer Science Bachelor thesis, 16 ECTS Datateknik 217 LIU-IDA/LITH-EX-G--17/71--SE Multi-Video Streaming with DASH Multi-video streaming med DASH Sebastian Andersson

More information

Institutionen för datavetenskap Department of Computer and Information Science

Institutionen för datavetenskap Department of Computer and Information Science Institutionen för datavetenskap Department of Computer and Information Science Final thesis Towards efficient legacy test evaluations at Ericsson AB, Linköping by Karl Gustav Sterneberg LIU-IDA/LITH-EX-A--08/056--SE

More information

Creating User Interfaces Using Web-based Technologies to Support Rapid Prototyping in a Desktop Astrovisualization Software

Creating User Interfaces Using Web-based Technologies to Support Rapid Prototyping in a Desktop Astrovisualization Software LiU-ITN-TEK-A--17/062--SE Creating User Interfaces Using Web-based Technologies to Support Rapid Prototyping in a Desktop Astrovisualization Software Klas Eskilson 2017-11-28 Department of Science and

More information

Design and Proof-of-Concept Implementation of Interactive Video Streaming with DASH.js

Design and Proof-of-Concept Implementation of Interactive Video Streaming with DASH.js Linköping University Department of Computer and Information Science Bachelor thesis, 16 ECTS Datateknik 2017 LIU-IDA/LITH-EX-G--17/081--SE Design and Proof-of-Concept Implementation of Interactive Video

More information

Analysis of GPU accelerated OpenCL applications on the Intel HD 4600 GPU

Analysis of GPU accelerated OpenCL applications on the Intel HD 4600 GPU Linköping University Department of Computer Science Master thesis, 30 ECTS Computer Science Spring term 2017 LIU-IDA/LITH-EX-A--17/019--SE Analysis of GPU accelerated OpenCL applications on the Intel HD

More information

Institutionen för datavetenskap Department of Computer and Information Science

Institutionen för datavetenskap Department of Computer and Information Science Institutionen för datavetenskap Department of Computer and Information Science Final thesis A database solution for scientific data from driving simulator studies By Yasser Rasheed LIU-IDA/LITH-EX-A--11/017

More information

A Back-End for the SkePU Skeleton Programming Library targeting the Low- Power Multicore Vision Processor

A Back-End for the SkePU Skeleton Programming Library targeting the Low- Power Multicore Vision Processor Linköping University Department of Computer Science Master thesis, 30 ECTS Datateknik 2016 LIU-IDA/LITH-EX-A--16/055--SE A Back-End for the SkePU Skeleton Programming Library targeting the Low- Power Multicore

More information

Design of video players for branched videos

Design of video players for branched videos Linköping University Department of Computer and Information Science Bachelor thesis, 16 ECTS Computer Science 2018 LIU-IDA/LITH-EX-G--18/053--SE Design of video players for branched videos Design av videospelare

More information

Department of Electrical Engineering. Division of Information Coding. Master Thesis. Free Viewpoint TV. Mudassar Hussain.

Department of Electrical Engineering. Division of Information Coding. Master Thesis. Free Viewpoint TV. Mudassar Hussain. Department of Electrical Engineering Division of Information Coding Master Thesis Free Viewpoint TV Master thesis performed in Division of Information Coding by Mudassar Hussain LiTH-ISY-EX--10/4437--SE

More information

Information visualization of consulting services statistics

Information visualization of consulting services statistics LiU-ITN-TEK-A--16/051--SE Information visualization of consulting services statistics Johan Sylvan 2016-11-09 Department of Science and Technology Linköping University SE-601 74 Norrköping, Sweden Institutionen

More information

Context-based algorithm for face detection

Context-based algorithm for face detection Examensarbete LITH-ITN-MT-EX--05/052--SE Context-based algorithm for face detection Helene Wall 2005-09-07 Department of Science and Technology Linköpings Universitet SE-601 74 Norrköping, Sweden Institutionen

More information

OMSI Test Suite verifier development

OMSI Test Suite verifier development Examensarbete LITH-ITN-ED-EX--07/010--SE OMSI Test Suite verifier development Razvan Bujila Johan Kuru 2007-05-04 Department of Science and Technology Linköpings Universitet SE-601 74 Norrköping, Sweden

More information

Design Optimization of Soft Real-Time Applications on FlexRay Platforms

Design Optimization of Soft Real-Time Applications on FlexRay Platforms Institutionen för Datavetenskap Department of Computer and Information Science Master s thesis Design Optimization of Soft Real-Time Applications on FlexRay Platforms by Mahnaz Malekzadeh LIU-IDA/LITH-EX-A

More information

Adapting network interactions of a rescue service mobile application for improved battery life

Adapting network interactions of a rescue service mobile application for improved battery life Linköping University Department of Computer and Information Science Bachelor thesis, 16 ECTS Information Technology Spring term 2017 LIU-IDA/LITH-EX-G--2017/068--SE Adapting network interactions of a rescue

More information

Implementation and Evaluation of Bluetooth Low Energy as a communication technology for wireless sensor networks

Implementation and Evaluation of Bluetooth Low Energy as a communication technology for wireless sensor networks Linköpings universitet/linköping University IDA HCS Bachelor 16hp Innovative programming Vårterminen/Spring term 2017 ISRN: LIU-IDA/LITH-EX-G--17/015--SE Implementation and Evaluation of Bluetooth Low

More information

Automatic LOD selection

Automatic LOD selection LiU-ITN-TEK-A--17/054--SE Automatic LOD selection Isabelle Forsman 2017-10-20 Department of Science and Technology Linköping University SE-601 74 Norrköping, Sweden Institutionen för teknik och naturvetenskap

More information

Automatic Test Suite for Physics Simulation System

Automatic Test Suite for Physics Simulation System Examensarbete LITH-ITN-MT-EX--06/042--SE Automatic Test Suite for Physics Simulation System Anders-Petter Mannerfelt Alexander Schrab 2006-09-08 Department of Science and Technology Linköpings Universitet

More information

Permissioned Blockchains and Distributed Databases: A Performance Study

Permissioned Blockchains and Distributed Databases: A Performance Study Linköping University Department of Computer and Information Science Master thesis, 30 ECTS Datateknik 2018 LIU-IDA/LITH-EX-A--2018/043--SE Permissioned Blockchains and Distributed Databases: A Performance

More information

Development of a Game Portal for Web-based Motion Games

Development of a Game Portal for Web-based Motion Games Linköping University Department of Computer Science Master thesis, 30 ECTS Datateknik 2017 LIU-IDA/LITH-EX-A--17/013--SE Development of a Game Portal for Web-based Motion Games Ozgur F. Kofali Supervisor

More information

Calibration of traffic models in SIDRA

Calibration of traffic models in SIDRA LIU-ITN-TEK-A-13/006-SE Calibration of traffic models in SIDRA Anna-Karin Ekman 2013-03-20 Department of Science and Technology Linköping University SE-601 74 Norrköping, Sweden Institutionen för teknik

More information

Debug Interface for Clone of DSP. Examensarbete utfört i Elektroniksystem av. Andreas Nilsson

Debug Interface for Clone of DSP. Examensarbete utfört i Elektroniksystem av. Andreas Nilsson Debug Interface for Clone of 56000 DSP Examensarbete utfört i Elektroniksystem av Andreas Nilsson LITH-ISY-EX-ET--07/0319--SE Linköping 2007 Debug Interface for Clone of 56000 DSP Examensarbete utfört

More information

Audial Support for Visual Dense Data Display

Audial Support for Visual Dense Data Display LiU-ITN-TEK-A--17/004--SE Audial Support for Visual Dense Data Display Tobias Erlandsson Gustav Hallström 2017-01-27 Department of Science and Technology Linköping University SE-601 74 Norrköping, Sweden

More information

Tablet-based interaction methods for VR.

Tablet-based interaction methods for VR. Examensarbete LITH-ITN-MT-EX--06/026--SE Tablet-based interaction methods for VR. Lisa Lönroth 2006-06-16 Department of Science and Technology Linköpings Universitet SE-601 74 Norrköping, Sweden Institutionen

More information

Institutionen för datavetenskap Department of Computer and Information Science

Institutionen för datavetenskap Department of Computer and Information Science Institutionen för datavetenskap Department of Computer and Information Science Master s Thesis An Approach on Learning Multivariate Regression Chain Graphs from Data by Babak Moghadasin LIU-IDA/LITH-EX-A--13/026

More information

Visualisation of data from IoT systems

Visualisation of data from IoT systems Linköping University Department of Computer Science Master thesis, 30 ECTS Datateknik 2017 LIU-IDA/LITH-EX-A--17/027--SE Visualisation of data from IoT systems A case study of a prototyping tool for data

More information

Intelligent boundary extraction for area and volume measurement

Intelligent boundary extraction for area and volume measurement Linköping University Department of Computer Science Master thesis, 30 ECTS Datateknik 2017 LIU-IDA/LITH-EX-A--17/009--SE Intelligent boundary extraction for area and volume measurement Using LiveWire for

More information

Developing a database and a user interface for storing test data for radar equipment

Developing a database and a user interface for storing test data for radar equipment Linköping University IDA- Department of Computer and information Science Bachelor thesis 16hp Educational program: Högskoleingenjör i Datateknik Spring term 2017 ISRN: LIU-IDA/LITH-EX-G--17/006 SE Developing

More information

Institutionen för datavetenskap Department of Computer and Information Science

Institutionen för datavetenskap Department of Computer and Information Science Institutionen för datavetenskap Department of Computer and Information Science Bachelor thesis A TDMA Module for Waterborne Communication with Focus on Clock Synchronization by Anders Persson LIU-IDA-SAS

More information

Development of water leakage detectors

Development of water leakage detectors LiU-ITN-TEK-A--08/068--SE Development of water leakage detectors Anders Pettersson 2008-06-04 Department of Science and Technology Linköping University SE-601 74 Norrköping, Sweden Institutionen för teknik

More information

Visual Data Analysis using Tracked Statistical Measures within Parallel Coordinate Representations

Visual Data Analysis using Tracked Statistical Measures within Parallel Coordinate Representations Examensarbete LITH-ITN-MT-EX--05/030--SE Visual Data Analysis using Tracked Statistical Measures within Parallel Coordinate Representations Daniel Ericson 2005-04-08 Department of Science and Technology

More information

Semi-automated annotation of histology images

Semi-automated annotation of histology images Linköping University Department of Computer science Master thesis, 30 ECTS Computer science 2016 LIU-IDA/LITH-EX-A--16/030--SE Semi-automated annotation of histology images Development and evaluation of

More information

Institutionen för datavetenskap. Study of the Time Triggered Ethernet Dataflow

Institutionen för datavetenskap. Study of the Time Triggered Ethernet Dataflow Institutionen för datavetenskap Department of Computer and Information Science Final thesis Study of the Time Triggered Ethernet Dataflow by Niclas Rosenvik LIU-IDA/LITH-EX-G 15/011 SE 2015-07-08 Linköpings

More information

Distributed Client Driven Certificate Transparency Log

Distributed Client Driven Certificate Transparency Log Linköping University Department of Computer and Information Science Bachelor thesis, 16 ECTS Information Technology 2018 LIU-IDA/LITH-EX-G--18/055--SE Distributed Client Driven Transparency Log Distribuerad

More information

Ad-hoc Routing in Low Bandwidth Environments

Ad-hoc Routing in Low Bandwidth Environments Master of Science in Computer Science Department of Computer and Information Science, Linköping University, 2016 Ad-hoc Routing in Low Bandwidth Environments Emil Berg Master of Science in Computer Science

More information

Design and evaluation of a user interface for a WebVR TV platform developed with A-Frame

Design and evaluation of a user interface for a WebVR TV platform developed with A-Frame Linköping University Department of Computer Science Master thesis, 30 ECTS Information Technology 2017 LIU-IDA/LITH-EX-A--17/006--SE Design and evaluation of a user interface for a WebVR TV platform developed

More information

Progressive Web Applications and Code Complexity

Progressive Web Applications and Code Complexity Linköping University Department of Computer and Information Science Master thesis, 30 ECTS Datateknik 2018 LIU-IDA/LITH-EX-A--18/037--SE Progressive Web Applications and Code Complexity An analysis of

More information

A Cycle-Trade Heuristic for the Weighted k-chinese Postman Problem

A Cycle-Trade Heuristic for the Weighted k-chinese Postman Problem Linköping University Department of Computer Science Bachelor thesis, 16 ECTS Computer Science 2018 LIU-IDA/LITH-EX-G--18/073--SE A Cycle-Trade Heuristic for the Weighted k-chinese Postman Problem Anton

More information

Optimal Coherent Reconstruction of Unstructured Mesh Sequences with Evolving Topology

Optimal Coherent Reconstruction of Unstructured Mesh Sequences with Evolving Topology LiU-ITN-TEK-A-14/040-SE Optimal Coherent Reconstruction of Unstructured Mesh Sequences with Evolving Topology Christopher Birger 2014-09-22 Department of Science and Technology Linköping University SE-601

More information

Advanced Visualization Techniques for Laparoscopic Liver Surgery

Advanced Visualization Techniques for Laparoscopic Liver Surgery LiU-ITN-TEK-A-15/002-SE Advanced Visualization Techniques for Laparoscopic Liver Surgery Dimitrios Felekidis 2015-01-22 Department of Science and Technology Linköping University SE-601 74 Norrköping, Sweden

More information

Extending the Stream Reasoning in DyKnow with Spatial Reasoning in RCC-8

Extending the Stream Reasoning in DyKnow with Spatial Reasoning in RCC-8 Institutionen för Datavetenskap Department of Computer and Information Science Master s thesis Extending the Stream Reasoning in DyKnow with Spatial Reasoning in RCC-8 by Daniel Lazarovski LIU-IDA/LITH-EX-A

More information

Utilize OCR text to extract receipt data and classify receipts with common Machine Learning

Utilize OCR text to extract receipt data and classify receipts with common Machine Learning Linköping University Department of Computer and Information Science Bachelor thesis, 16 ECTS Programming 2018 LIU-IDA/LITH-EX-G--18/043--SE Utilize OCR text to extract receipt data and classify receipts

More information

Institutionen för datavetenskap Department of Computer and Information Science

Institutionen för datavetenskap Department of Computer and Information Science Institutionen för datavetenskap Department of Computer and Information Science Final thesis Implementation of a Report Template Editing Tool in Java and JSP by Jacob Matiasson LIU-IDA/LITH-EX-G--14/059--SE

More information

Hybrid Particle-Grid Water Simulation using Multigrid Pressure Solver

Hybrid Particle-Grid Water Simulation using Multigrid Pressure Solver LiU-ITN-TEK-G--14/006-SE Hybrid Particle-Grid Water Simulation using Multigrid Pressure Solver Per Karlsson 2014-03-13 Department of Science and Technology Linköping University SE-601 74 Norrköping, Sweden

More information

Computer-assisted fracture reduction in an orthopaedic pre-operative planning workflow

Computer-assisted fracture reduction in an orthopaedic pre-operative planning workflow LiU-ITN-TEK-A--17/003--SE Computer-assisted fracture reduction in an orthopaedic pre-operative planning workflow Ludvig Mangs 2017-01-09 Department of Science and Technology Linköping University SE-601

More information

Network optimisation and topology control of Free Space Optics

Network optimisation and topology control of Free Space Optics LiU-ITN-TEK-A-15/064--SE Network optimisation and topology control of Free Space Optics Emil Hammarström 2015-11-25 Department of Science and Technology Linköping University SE-601 74 Norrköping, Sweden

More information

Evaluating Deep Learning Algorithms

Evaluating Deep Learning Algorithms Linköping University Department of Computer and Information Science Master thesis, 30 ECTS Datateknik 202018 LIU-IDA/LITH-EX-A--2018/034--SE Evaluating Deep Learning Algorithms for Steering an Autonomous

More information

A latency comparison of IoT protocols in MES

A latency comparison of IoT protocols in MES Linköping University Department of Computer and Information Science Master thesis Software and Systems Division Spring 2017 LIU-IDA/LITH-EX-A--17/010--SE A latency comparison of IoT protocols in MES Erik

More information

Towards automatic asset management for real-time visualization of urban environments

Towards automatic asset management for real-time visualization of urban environments LiU-ITN-TEK-A--17/049--SE Towards automatic asset management for real-time visualization of urban environments Erik Olsson 2017-09-08 Department of Science and Technology Linköping University SE-601 74

More information

Study of Local Binary Patterns

Study of Local Binary Patterns Examensarbete LITH-ITN-MT-EX--07/040--SE Study of Local Binary Patterns Tobias Lindahl 2007-06- Department of Science and Technology Linköpings universitet SE-60 74 Norrköping, Sweden Institutionen för

More information

Large fused GPU volume rendering

Large fused GPU volume rendering LiU-ITN-TEK-A--08/108--SE Large fused GPU volume rendering Stefan Lindholm 2008-10-07 Department of Science and Technology Linköping University SE-601 74 Norrköping, Sweden Institutionen för teknik och

More information

Institutionen för datavetenskap

Institutionen för datavetenskap Institutionen för datavetenskap Department of Computer and Information Science Final thesis Implementation of a Profibus agent for the Proview process control system by Ferdinand Hauck LIU-IDA/LITH-EX-G--09/004--SE

More information

Real-Time Magnetohydrodynamic Space Weather Visualization

Real-Time Magnetohydrodynamic Space Weather Visualization LiU-ITN-TEK-A--17/048--SE Real-Time Magnetohydrodynamic Space Weather Visualization Oskar Carlbaum Michael Novén 2017-08-30 Department of Science and Technology Linköping University SE-601 74 Norrköping,

More information

Development and piloting of a fully automated, push based, extended session alcohol intervention on university students a feasibility study

Development and piloting of a fully automated, push based, extended session alcohol intervention on university students a feasibility study Department of Computer and Information Science Informationsteknologi LIU-IDA/LITH-EX-A--13/001--SE Development and piloting of a fully automated, push based, extended session alcohol intervention on university

More information

Efficient implementation of the Particle Level Set method

Efficient implementation of the Particle Level Set method LiU-ITN-TEK-A--10/050--SE Efficient implementation of the Particle Level Set method John Johansson 2010-09-02 Department of Science and Technology Linköping University SE-601 74 Norrköping, Sweden Institutionen

More information

Network Intrusion and Detection

Network Intrusion and Detection Linköping University Department of Computer and Information Science Bachelor thesis, 16 ECTS Datateknik 202017 LIU-IDA/LITH-EX-G--2017/085--SE Network Intrusion and Detection An evaluation of SNORT Nätverksintrång

More information

Automatic Clustering of 3D Objects for Hierarchical Level-of-Detail

Automatic Clustering of 3D Objects for Hierarchical Level-of-Detail LiU-ITN-TEK-A--18/033--SE Automatic Clustering of 3D Objects for Hierarchical Level-of-Detail Benjamin Wiberg 2018-06-14 Department of Science and Technology Linköping University SE-601 74 Norrköping,

More information

Illustrative Visualization of Anatomical Structures

Illustrative Visualization of Anatomical Structures LiU-ITN-TEK-A--11/045--SE Illustrative Visualization of Anatomical Structures Erik Jonsson 2011-08-19 Department of Science and Technology Linköping University SE-601 74 Norrköping, Sweden Institutionen

More information

Statistical flow data applied to geovisual analytics

Statistical flow data applied to geovisual analytics LiU-ITN-TEK-A--11/051--SE Statistical flow data applied to geovisual analytics Phong Hai Nguyen 2011-08-31 Department of Science and Technology Linköping University SE-601 74 Norrköping, Sweden Institutionen

More information

Machine Learning of Crystal Formation Energies with Novel Structural Descriptors

Machine Learning of Crystal Formation Energies with Novel Structural Descriptors Linköping University The Department of Physics, Chemistry, and Biology Master thesis, 30 ECTS Applied Physics and Electrical Engineering - Theory, Modelling, Visualization 2017 LIU-IFM/LITH-EX-A--17/3427--SE

More information

Implementing a scalable recommender system for social networks

Implementing a scalable recommender system for social networks LiU-ITN-TEK-A--17/031--SE Implementing a scalable recommender system for social networks Alexander Cederblad 2017-06-08 Department of Science and Technology Linköping University SE-601 74 Norrköping, Sweden

More information

Multi-Resolution Volume Rendering of Large Medical Data Sets on the GPU

Multi-Resolution Volume Rendering of Large Medical Data Sets on the GPU LITH-ITN-MT-EX--07/056--SE Multi-Resolution Volume Rendering of Large Medical Data Sets on the GPU Ajden Towfeek 2007-12-20 Department of Science and Technology Linköping University SE-601 74 Norrköping,

More information

LunchHero - a student s everyday hero

LunchHero - a student s everyday hero Linköping University Department of Computer Science Bachelor thesis 18 ECTS Industrial Engineering and Management Spring 2018 LIU-IDA/LITH-EX-G--18/034--SE LunchHero - a student s everyday hero - A case

More information

React Native application development

React Native application development Linköpings universitet Institutionen för datavetenskap Examensarbete på avancerad nivå, 30hp Datateknik 2016 LIU-IDA/LITH-EX-A--16/050--SE React Native application development A comparison between native

More information

Automatic analysis of eye tracker data from a driving simulator

Automatic analysis of eye tracker data from a driving simulator LiU-ITN-TEK-A--08/033--SE Automatic analysis of eye tracker data from a driving simulator Martin Bergstrand 2008-02-29 Department of Science and Technology Linköping University SE-601 74 Norrköping, Sweden

More information

Face detection for selective polygon reduction of humanoid meshes

Face detection for selective polygon reduction of humanoid meshes LIU-ITN-TEK-A--15/038--SE Face detection for selective polygon reduction of humanoid meshes Johan Henriksson 2015-06-15 Department of Science and Technology Linköping University SE-601 74 Norrköping, Sweden

More information

Institutionen för datavetenskap

Institutionen för datavetenskap Institutionen för datavetenskap Department of Computer and Information Science Final thesis Developing a new 2D-plotting package for OpenModelica by Haris Kapidzic LIU-IDA/LITH-EX-G 11/007 SE 2011-04-28

More information

Evaluation of cloud-based infrastructures for scalable applications

Evaluation of cloud-based infrastructures for scalable applications LiU-ITN-TEK-A--17/022--SE Evaluation of cloud-based infrastructures for scalable applications Carl Englund 2017-06-20 Department of Science and Technology Linköping University SE-601 74 Norrköping, Sweden

More information

Markörlös Augmented Reality för visualisering av 3D-objekt i verkliga världen

Markörlös Augmented Reality för visualisering av 3D-objekt i verkliga världen LiU-ITN-TEK-A-14/019-SE Markörlös Augmented Reality för visualisering av 3D-objekt i verkliga världen Semone Kallin Clarke 2014-06-11 Department of Science and Technology Linköping University SE-601 74

More information

Design and evaluation of an educational tool for understanding functionality in flight simulators

Design and evaluation of an educational tool for understanding functionality in flight simulators Linköping University Department of Computer Science Master thesis, 30 ECTS Computer and Information Science 2017 LIU-IDA/LITH-EX-A--17/007--SE Design and evaluation of an educational tool for understanding

More information

Clustered Importance Sampling for Fast Reflectance Rendering

Clustered Importance Sampling for Fast Reflectance Rendering LiU-ITN-TEK-A--08/082--SE Clustered Importance Sampling for Fast Reflectance Rendering Oskar Åkerlund 2008-06-11 Department of Science and Technology Linköping University SE-601 74 Norrköping, Sweden Institutionen

More information

Automating the process of dividing a map image into sections using Tesseract OCR and pixel traversing

Automating the process of dividing a map image into sections using Tesseract OCR and pixel traversing Linköping University Department of Computer and Information Science Bachelor thesis, 16 ECTS Innovative programming 2018 LIU-IDA/LITH-EX-G--18/041--SE Automating the process of dividing a map image into

More information

Motion Capture to the People: A high quality, low budget approach to real time Motion Capture

Motion Capture to the People: A high quality, low budget approach to real time Motion Capture Examensarbete LITH-ITN-MT-EX--05/013--SE Motion Capture to the People: A high quality, low budget approach to real time Motion Capture Daniel Saidi Magnus Åsard 2005-03-07 Department of Science and Technology

More information

Raspberry pi to backplane through SGMII

Raspberry pi to backplane through SGMII LiU-ITN-TEK-A--18/019--SE Raspberry pi to backplane through SGMII Petter Lundström Josef Toma 2018-06-01 Department of Science and Technology Linköping University SE-601 74 Norrköping, Sweden Institutionen

More information

Adaptive Probabilistic Routing in Wireless Ad Hoc Networks

Adaptive Probabilistic Routing in Wireless Ad Hoc Networks LiU-ITN-TEK-A-13/018-SE Adaptive Probabilistic Routing in Wireless Ad Hoc Networks Affaf Hasan Ismail Liaqat 2013-05-23 Department of Science and Technology Linköping University SE-601 7 Norrköping, Sweden

More information

Applying Machine Learning to LTE/5G Performance Trend Analysis

Applying Machine Learning to LTE/5G Performance Trend Analysis Master Thesis in Statistics and Data Mining Applying Machine Learning to LTE/5G Performance Trend Analysis Araya Eamrurksiri Division of Statistics Department of Computer and Information Science Linköping

More information

Implementation of a Program Address Generator in a DSP processor

Implementation of a Program Address Generator in a DSP processor Implementation of a Program Address Generator in a DSP processor Roland Waltersson Reg nr: LiTH-ISY-EX-ET-0257-2003 2003-05-26 Implementation of a Program Address Generator in a DSP processor Departement

More information

Design and Implementation of a Compiler for an XMLbased Hardware Description Language to Support Energy Optimization

Design and Implementation of a Compiler for an XMLbased Hardware Description Language to Support Energy Optimization Linköping University Department of Computer Science Master thesis, 30 ECTS Datateknik 202017 LIU-IDA/LITH-EX-A--2017/045--SE Design and Implementation of a Compiler for an XMLbased Hardware Description

More information

Multi-Volume Rendering in OpenSpace Using A-Buffers for Space Weather Visualizations

Multi-Volume Rendering in OpenSpace Using A-Buffers for Space Weather Visualizations LiU-ITN-TEK-A--17/006--SE Multi-Volume Rendering in OpenSpace Using A-Buffers for Space Weather Visualizations Jonas Strandstedt 2017-02-24 Department of Science and Technology Linköping University SE-601

More information

Real-time visualization of a digital learning platform

Real-time visualization of a digital learning platform LiU-ITN-TEK-A--17/035--SE Real-time visualization of a digital learning platform Kristina Engström Mikaela Koller 2017-06-20 Department of Science and Technology Linköping University SE-601 74 Norrköping,

More information