Decision-making is a key software engineering skill. Developers constantly make choices throughout the software development process, from requirements to implementation. While prior work has studied developer decision-making, the choices made while choosing what solution to write in code remain understudied. In this mixed-methods study, we examine the phenomenon where developers select one specific way to implement a behavior in code, given many potential alternatives. We call these decisions implementation design decisions. Our mixed-methods study includes 46 survey responses and 14 semi-structured interviews with professional developers about their decision types, considerations, processes, and expertise for implementation design decisions. We find that implementation design decisions, rather than being a natural outcome from higher levels of design, require constant monitoring of higher level design choices, such as requirements and architecture. We also show that developers have a consistent general structure to their implementation decision-making process, but no single process is exactly the same. We discuss the implications of our findings on research, education, and practice, including insights on teaching developers how to make implementation design decisions.
翻译:开发者经常在整个软件开发过程中,从要求到执行,作出选择; 开发者经常在从要求到执行的整个软件开发过程中作出选择; 先前的工作研究了开发者的决策,但在选择代码中写作的解决方案时所作的选择仍然没有得到充分研究; 在混合方法研究中,我们研究了开发者选择一种特定方式实施代码行为的现象,考虑到许多可能的备选办法; 我们将这些决定称为执行设计决定。 我们的混合方法研究包括46项调查答复和14次半结构性访谈,内容涉及专业开发者的决策类型、考虑、程序和执行设计决定的专门知识。 我们发现,执行设计决定需要不断监测,而不是更高层次的设计选择,例如要求和结构。 我们还表明,开发者在执行决策过程方面有一个一致的总体结构,但没有一个单一的进程完全相同。 我们讨论了我们的调查结果对研究、教育和实践的影响,包括如何教育开发者如何作出执行设计决定的见解。