My research focuses on creating more reliable, efficient, and accessible software systems. I am particularly interested in how software architecture decisions impact system resilience and how emerging computing paradigms like edge computing can enable new applications, especially in resource-constrained environments.
In the domain of software engineering, I investigate architectural patterns that enhance fault tolerance and enable automated testing and deployment. This work has practical implications for building systems that can recover gracefully from failures and adapt to changing conditions without human intervention.
My work in edge and mobile computing explores how computation can be distributed closer to data sources and end users. This research is especially relevant for applications in developing regions where network connectivity may be limited or unreliable. By pushing computation to the edge, we can create responsive applications that work even with intermittent internet access.
Additionally, I am passionate about digital education and how technology can democratize access to quality learning experiences. My research in this area draws from my teaching experience in Ghana and seeks to identify effective pedagogical approaches for computer science education in diverse contexts.
I have three ongoing research projects in software reliability and fault tolerance, with manuscripts for publications currently in preparation.
I have developed an automated program analysis tool called Nip (Nobody's Perfect), which represents a comprehensive infrastructure for analyzing exception-handling strategies across multiple programming languages. This tool is designed to advance our understanding of fault tolerance practices in real-world software systems.
NiP, aka WebServFH, automatically extracts and clones GitHub repositories containing web service applications, then performs sophisticated static analysis on a large dataset of open-source web service codebases. The tool identifies and categorizes exception-handling strategies implemented across nine different programming languages, providing insights into how developers approach error handling in practice. The NiP tool's automated categorization was validated through an XGBoost Classifier (ML model) on a sample of 4,246 repositories, achieving a Macro-F1 score of \( \$0.76 \, (\pm 0.03) \) and a Cohen's Kappa of \( \kappa = 0.59 \) under stratified 5-fold cross-validation, indicating substantial agreement.
This project aims to help developers integrate best exception-handling practices into their development workflows, ultimately improving the robustness and reliability of web service applications. By analyzing patterns across thousands of real-world projects, we can identify common pitfalls, effective strategies, and opportunities for automated improvements in error handling.
The insights gained from this research have implications for software engineering education, automated code review tools, and the development of programming language features that support more robust error handling.
View NiP Tool Repository on GitHub View XGBoost Validation Repository on GitHubPublications are currently in preparation. This section will be updated as research outputs become available with DOIs and links to published work.
I am hardworking, self-motivated, and eager to learn new concepts and skills to advance my research capabilities. I am actively seeking opportunities to join research groups and collaborate on projects in software engineering, fault tolerance, edge computing, mobile computing, and digital education.
Interested in collaborating? Please feel free to reach out via email at obengfrancis89@vt.edu