PhD Oral Exam - Md Tajmilur Rahman, Software Engineering
When studying for a doctoral degree (PhD), candidates submit a thesis that provides a critical review of the current state of knowledge of the thesis subject as well as the student’s own contributions to the subject. The distinguishing criterion of doctoral graduate research is a significant and original contribution to knowledge.
Once accepted, the candidate presents the thesis orally. This oral exam is open to the public.
Modern release engineering has moved from longer release cycles and separate development and release teams, to a continuous and integrated process. However, release engineering practices include not only integration, build and test execution but also a better management of features. The goal of this research is to investigate the modern release engineering practices which include three milestones, i. the time and effort involved in release cycles ii. feature management through toggles and the impact of these toggles on the system architecture, and iii the quality of builds in terms of software crash. For the first milestone, we quantify the time and effort which is involved in both the development and stabilization phases of a release cycle. We found that, despite using the rapid release process, the Chrome Browser and Linux Kernel still have a period where they rush changes into a release. In the second milestone, we examine feature management based on feature toggles which is a very popular and widely used technique in software companies to manage features to turn them on/off during development as well as the release time. Developers typically isolate unrelated changes on branches. However, developers at large companies, such as Google and Facebook do their development on single branch. They isolate unrelated or under development features using feature toggles, which allows them to disable works in progress. Feature toggles provide not only a better management of features but also keep modules isolated and feature oriented which makes the architecture underneath the source code readable and easily extractable. As the project grows, modules keep accepting features as well as features cross-cut into the architectural modules. We found that the architecture can be easily extracted based on feature toggles and it provides a different view of the software architecture in terms of features. Finally we investigate the impact of failing tests on the quality of builds where we consider browser-crash as a quality factor and different types test fails as the quality indicators. In this study we found that ignoring failing tests lead to more end user crashes. Furthermore, the builds with flaky tests and unexpected fails/pass appeared to be associated to more browser crashes compared to other types of test fails.