Modern DevOps: Optimizing Software Development Through Effective System Interactions
October 2014 • Conference Paper
Constantine Cois (Heinz College, Carnegie Mellon University), Joseph D. Yankel, Anne Connell
This paper discusses using DevOps to meet the challenges of project team communication and ensuring real-time communications in software development projects.
Software development processes are fundamentally based on efficient and effective communication. Communication between engineers, between engineers and managers, and between teams and clients are all essential components of a successful project. Requirements must be effectively transferred from client to engineer, specifications must be transitioned from architect to engineer, and constant communication between project team members, managers, and clients throughout the project life cycle is critical to the success of projects of any complexity.
To succeed in a world where technologies, requirements, ideas, tools, and timelines are constantly changing, information must be accurate, readily available, easily found, and ideally delivered constantly, in real-time, to all team members. To meet these challenges, modern software development has evolved to encompass key concepts of adaptability to change and data-driven project management.
A recent movement dubbed DevOps has attempted to use automated systems to bridge the information gap between project team entities and to enforce rigorous processes to ensure real-time communications. In this paper, the authors frame this challenge as a communications problem that can be addressed by the introduction of specifically designed autonomous system actors and processes. Successful implementation of such a methodology will enable efficient, effective, and immediate data collection, synthesis, and transfer of information between all requisite entities within the software project.
A generalized model of DevOps will be presented and analyzed, offering a formalization of the communications and actors requisite to any effective software development process. These concepts will be further developed to illustrate the information flow between human and system actors, and explore how this model can be used to optimize the processes of a software development team to maximize productivity and quality of work products.