Seminar: Dependency Inversion and its Contribution to DevOps

Isaac Murisa
Honours Project
Supervisor: Dr. Edward Brown

Dependency Inversion and its Contribution to DevOps

Department of Computer Science
Monday, November 26, 2018, 2:00 p.m., Room EN-2022


Dependency Inversion (DIP) as a general object-oriented software design principle has been promoted since the 1990's as a way of defining structures and decoupling modules. However, there has been little academic treatment of the concept and its application. New software development methodologies like DevOps and Continuous Integration (CI) have become trendier. DevOps offers
a seamless environment between software development and software operation by encompassing different components. In this paper I identify the importance of Dependency Inversion and how it should be a key component in a DevOps methodology. I examine Dependency Inversion by re-factoring software belonging to popular tutorial (Flask 0.12) to achieve decoupling of the Flaskr persistence solution. I will demonstrate the agility of Dependency Inversion in software design by changing the persistence implementation from python Shelve to SQLite with a perspective on DevOps software maintenance. In the end I will conclude with why Dependency Inversion should be a major design principle for an effective DevOps environment.