I. Introduction
Software design is the result of a series of (often collaborative) decisions made during the development of software [1], [6]. These decisions are made at different design levels ranging from architectural design decisions such as deciding on the architectural style to very low level design decisions such as naming a variable or a function. In this paper, we define Software Design Decision Making (SDDM) as the process of generating a set of alternatives concerning the structure or behavior of a software application, evaluating these alternatives, selecting an alternative among these alternatives, and then assessing the design decision. Software designers often collaborate with others during this process to achieve their goals.