Software Architectural Patterns: A Performance Analysis; Analyzing Boeing’s 737 MAX Failure Using Care Ethics
Konuri, Sai, School of Engineering and Applied Science, University of Virginia
Basit, Nada, EN-Comp Science Dept, University of Virginia
Laugelli, Benjamin, EN-Engineering and Society, University of Virginia
Despite the loose connection between my technical work and STS research, my experience doing both has allowed me to understand the importance of recognizing the ethical aspects of an engineering project. Particularly, I learned that there are imbalanced relationships between the engineering and the society. Engineers have a duty to recognize and care for these vulnerabilities. In my technical project, this has allowed me to assess my relationships with other software architects, the open source community, and internet users.
My technical project is an open source compare and contrast analysis on the performance of commonly used software architectural patterns. My team implemented a simple textbook catalog application in several architectures: Model View Controller (MVC), Layered, Microservice, and Command Query Responsibility Separation (CQRS). Using predefined metrics such as response time and data size, we tested the architectures against a large number of concurrent requests and recorded the data. The findings suggested that the MVC architectural pattern performs the best overall due to lower latency from cross server communication. This was expected since we hypothesized that the architecture with most coupled modules would perform the best. However, since MVC is not as easily scalable as the other architectures, the performance of the other architectures would be better if more compute resources are added. Given that, it was also concluded that architectural decisions depend on the engineering needs of the software team. There are others factors such as ease of development, reliability, and scalability in addition to performance.
My STS research studied the immoral actions by Boeing that contributed to the failure of the Boeing 737 MAX model. In particular, the immorality was assessed through an ethical framework called care ethics. Using care ethics, I argue that the following actions by Boeing were immoral: improperly documenting the MCAS software, insufficiently training pilots, rushing the release to market, and improperly reviewing the model. For each action, I assessed the stages of care ethics in which Boeing fails to act morally and with care. I concluded that Boeing has a duty to recognize the vulnerabilities of their relationships of care with the pilots, the aviation industry, the employees, and the common public. Further, I argued that hierarchical responsibility is appropriate in assigning responsibility for the poor development of the 737 MAX.
After finishing the research on my STS topic, I recognize the importance of considering not just the technical aspects of engineering, but also the ethical aspects. Using a framework like care ethics exposed the many relationships that engineers would be involved with in their work. Those relationships introduce vulnerabilities and I learned that not recognizing such vulnerabilities is inherently immoral even though it is easy to believe the contrary. If I had done these projects separately, I would not have attempted to apply the care ethics framework directly to my technical work. Although the two components didn’t correlate well, the overarching ideas from studying ethics was frequently applied to decisions that my team and I had made during the development of our technical project. These decisions included adhering to proper open source practices, restricting ourselves to commonly used patterns, and presenting the data in a clear manner. For each of the decisions, I attempted to analyze and consider the vulnerabilities in the relationship between my team and the subject in interest.
BS (Bachelor of Science)
Care Ethics, Software Architecture, Web Application Performance, Boeing 737 MAX
School of Engineering and Applied Science
Bachelor of Science in Computer Science
Technical Advisor: Nada Basit
STS Advisor: Benjamin Laugelli
Technical Team Members: Aman Garg, Vineeth Gaddam