Software Architecture Patterns: A Performance Analysis; How Much Work is Required to Make Self-Driving Cars Ethical

Author:
Garg, Aman, School of Engineering and Applied Science, University of Virginia
Advisors:
Basit, Nada, EN-Comp Science Dept, University of Virginia
Baritaud, Catherine, EN-Engineering and Society, University of Virginia
Abstract:

Software development, though a seemingly straightforward concept, is important to study because the way software is developed can directly impact things like performance, maintenance and ethicality. The team undertook a research project exploring the performance of different software architecture patterns. By selecting the appropriate architecture pattern for an application, developers can create an application the performs optimally and is easier to maintain when new developers join the team. The STS research paper looks at the development self-driving cars, and makes the claim that making the development of the cars opensource would result in a more ethical product. The two components of the paper are coupled through the opensource nature of their work. The technical portion aims to help the community by making the research results publicly available while the STS paper explores the impacts of opensource development.

The goal of the team’s research was to try to determine which different software architecture patterns are optimal for developing a product and make the results of the research publicly available. By making the results publicly available the team hopes that software developers will be able to make more informed decisions after looking at the data collected. The main factor that differentiates the team’s results from recommendations from other sources is that the developer can see the data that was used to make the recommendation in this case. To perform the research, the team developed a bookstore application using a few different software architecture patterns and conducted load testing on them in order to determine which architecture had the best performance results. The applications tested were the model view controller architecture, layered architecture, microservices architecture, and command-query responsibility segregation architecture.

After developing the applications and testing them, the team saw the best results yield from the application built using the model view controller architecture. That application had the best performance after the load testing was conducted, but that does not necessarily mean that it is always the optimal choice. During the course of development, the team felt that there is a potential for myriad differences within implementations of the same architecture so it is possible that there is an implementation better than the one built that would perform better. Thus, the team felt that more research was needed in order to make any definitive statements and recommendations as to when one architecture should be used in place of another. The team developed several online bookstore applications and based on the results of the testing, the team can safely say that using the model view controller architecture is a good option for eCommerce applications.

The STS portion of the thesis explores the ethics of self-driving cars and aims to determine the amount of work required to make self-driving cars ethical. In order to make autonomous vehicles ethical, developers must first design a product that is deemed to be ethical by all groups involved in the development process. After an ethical product is designed and created, it must be brought to the public so that pedestrians and drivers can become accustomed to it. Using sources analyzing points in the debate surrounding autonomous cars, and sources that look at public comfort with the cars, the paper shows that the main step to making an ethical product lies in the development process. By looking at case studies of previous opensource projects the project shows the benefits of opensource development and why they would be advantageous for self-driving cars.

To look at how much work was required to acclimate the public to self-driving cars, the paper looked at a study conducted on Pittsburgh residents. The study showed that people become more comfortable with the cars as they gain exposure to them, so this means that the development team does not need to do anything additional to make the cars ethical in the public perspective once the product has been developed. In order to look at the advantages and disadvantages of opensource development, the paper followed case studies looking at the development of the Apache server. The studies highlighted pros and cons of opensource development, but the advantages seemed to outweigh the drawbacks. Opensource development would likely result in a product that would be more ethical and have fewer bugs than if the product was created privately.

Both the technical research and STS topic focus on software development and ethics of opensource development. While the technical project aims to improve the community by contributing opensource research, the STS portion of the paper explores the impacts opensource development of a product could have on the community. Both components together demonstrate the importance of looking at the ethical implications opensource software development has on the community.

Degree:
BS (Bachelor of Science)
Keywords:
Self-Driving Cars, Autonomous Vehicles, Actor Network Theory, Software Architecture Patterns, Load Testing
Notes:

School of Engineering and Applied Science
Bachelor of Science in Computer Science
Technical Advisor: Nada Basit
STS Advisor: Catherine Baritaud
Technical Team Members: Vineeth Gaddam, Sai Konuri

Language:
English
Rights:
All rights reserved (no additional license for public reuse)
Issued Date:
2020/05/07