Content area
As software evolves and deviates from its original design, it becomes prone to increased complexity, decreased performance, and higher maintenance costs. Software optimization has thus become a critical research area in software engineering, driven by modern systems’ growing complexity and scale.
Refactoring—the process of restructuring code without altering its external behavior—has been extensively studied to improve software performance and maintainability. Consequently, refactoring recommendation tools have emerged to assist developers with the process of refactoring, but these tools often fail to align with industry practical needs, resulting in a gap between theoretical recommendations by researchers and practitioners’ needs in real-world applications.
Beyond source code, software optimization spans broader lifecycle processes, including software resource management and build systems. Our research addresses these challenges holistically, advancing software optimization from core resource allocation to apex-level development practices.
First, this dissertation presents a multi-objective approach to software management, focusing on resource-aware containerization. By optimizing workload balancing in cloud environments and extending these techniques to edge environments such as Software-Defined Vehicles (SDVs), this research ensures efficient resource utilization and scalability. Using NSGA-III, our approach demonstrates superior performance in managing constraints and optimizing conflicting objectives, with practical applications validated through industrial partnership.
Second, our research proposes significant contribution to source code refactoring by addressing gaps between industry practices and existing refactoring recommendation tools. Current tools often overlook key criteria crucial to developers’ decisions. By addressing the gap, we provide a broader perspective for refactoring tool developers, enabling them to enhance their tools and make them more efficient and practical for industry practitioners, thereby enhancing code maintainability and developer productivity.
Finally, this research delves into the underexplored domain of build systems refactoring. Our analysis was conducted on 725 examined build-file-related commits, where we identified 24 build-related refactorings, divided into 6 main categories. We also investigate whether these refactorings are used to tackle technical debts in build systems. Building on these insights, we introduce BuildRefMiner to detect and analyze refactorings within Buildfiles using LLMs.
This work redefines software optimization as an integrated process, combining refactoring insights, resource-aware strategies, and lifecycle improvements to ensure robust, efficient, and sustainable software systems.