Date of Award
Spring 4-30-2024
Degree Type
Thesis
Degree Name
Master of Science in Software Engineering
Department
Department of Software Engineering
Committee Chair/First Advisor
Hassan Pournaghshband
Second Advisor
Paola Spoletini
Third Advisor
Ermias Mamo
Abstract
During our education at KSU, we have learned about various factors that affect productivity such as schedule, budget, and risks, but those are often controlled outside of what we could learn as software engineering principles, patterns, or practices. On top of that, other off-work factors such as health conditions, emotional distress, or political climate, just to name a few, could drastically affect the productivity of a software engineering team. We see a demarcation between those factors that affect productivity in software engineering but are not inherent to the discipline itself, which we call resistance factors, and the factors that are inherent to the discipline and drive productivity, which we call intrinsic factors. Intrinsic factors are driven by the way we learn software engineering in schools and the way we practice it in industry. During the master’s coursework in software engineering, we identified three intrinsic inputs that play a solemn role in how we build and deliver software at scale: people, processes, and tools. This thesis first provides an enriched understanding of each of the 3 factors listed above. It is an essential step to establish contextual reasoning about those factors before diving into deeper discussions concerning how those factors can drive software engineering productivity. A software engineering environment is the assembly of a team of people producing software following a defined set of processes and leveraging a specified set of tools. In a particular software engineering environment, each of those inputs will exist in some state, and those states will interact with each other to realize a nominal productivity; that is the raw potential of software to be effectively produced at scale in that environment accepting all other factors are equal elsewhere. To borrow electrical engineering language, it is the open-circuit voltage of software engineering team. That is the productivity potential that would have been attained if there were no resistance and zero risks, which we call here the nominal productivity. A nominal productivity framework exhibiting the interactions of those intrinsic inputs' states will be introduced to help analyze and understand their effect on productivity. We will then conduct some theoretical experiments with this framework and review the theorical findings with industry and academia experts to evaluate the fidelity of the framework. We warn here that the goal of this thesis is not to validate the framework itself, and we recommend readers not to assess the quality of the paper by the validity of the framework introduced, but the scientific approach in answering the research questions and any advances that may fall from it. The framework introduced, if nothing else, would serve as tool to software engineering managers to evaluate their current software engineering environment and prioritize the factors that need the most investment to build an effective and high performing team.