SEDec 4, 2019

Optimization in Software Engineering -- A Pragmatic Approach

arXiv:1912.02071v13 citations
Originality Synthesis-oriented
AI Analysis

This is an incremental work aimed at software engineers seeking to apply optimization methods more effectively in decision-making processes.

The chapter provides an overview of optimization in software engineering, focusing on pragmatic applications across the software lifecycle, and introduces a checklist and running example to facilitate its usage.

Empirical software engineering is concerned with the design and analysis of empirical studies that include software products, processes, and resources. Optimization is a form of data analytics in support of human decision-making. Optimization methods are aimed to find the best decision alternatives. Empirical studies serve both as a model and as data input for optimization. In addition, the complexity of the models used for optimization trigger further studies on explaining and validating the results in real-world scenarios. The goal of this chapter is to give an overview of the as-is and of the to-be usage of optimization in software engineering. The emphasis is on pragmatic use of optimization, and not so much on describing the most recent algorithmic innovations and tool developments. The usage of optimization covers a wide range of questions from different types of software engineering problems along the whole life-cycle. To facilitate its more comprehensive and more effective usage, a checklist for a guided process is described. The chapter uses a running example Asymmetric Release Planning to illustrate the whole process. A Return-on-Investment analysis is proposed as part of the problem scoping. This helps to decide on the depth and breadth of analysis in relation to the effort needed to run the analysis and the projected value of the solution.

Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes