Requirements Analysis for Customizable Software: A Goals-Skills-Preferences Framework Bowen Hui Sotirios Liaskos John Mylopoulos Department of Computer Science University of Toronto {bowen,liaskos,jm}@cs.utoronto.ca Abstract Software customization has been argued to benefit both the productivity of software engineers and end users. However, most customization methods rely on specialists to manually tweak individual applications for a specific user group. Existing software development methods also fail to acknowledge the importance of dif- ferent kinds of user skills and preferences and how these might be incorporated into a customizable software de- sign. This paper proposes a framework for performing requirements analysis on user goals, skills, and prefer- ences in order to generate a customizable software de- sign. We illustrate our methodology with an email sys- tem and review an on-going case study involving users with traumatic brain injury. 1. Introduction Software development has generally adopted a “one- size-fits-many” model in which software is designed for a few classes of user groups, rather than tailoring it to the needs of particular users [4]. Clearly, differ- ent individuals with different levels of expertise, dif- ferent preferences, needs and goals require different kinds of services. For example, automated telephone banking might be designed in such a way that it is usable and effective for both business analysts with sophisticated profiles as well as students with basic needs. Also, a train scheduling system might be de- signed to have easy-to-understand instructions and in- terpret questions from foreign and local tourists alike. Likewise, survivors from brain injuries or other cogni- tive impairments might be able to continue their reg- ular daily tasks, such as email and document compo- sition, with the help of customizable software that is specifically tailored to support their individual skills and needs. Such ubiquitous situations create a demand for software customization – also known as software variability – a research problem that has received little attention in the literature. Several sub-fields in Computer Science have begun to tackle this problem – each from its own perspective – including software engineering (SE), human-computer interaction (HCI), and artificial intelligence (AI). In SE, one approach to customizable software is to pack all possible functionality into a single generic system (e.g., MS Word). Unfortunately, excessive functional- ity makes for “bloated” software and perplexed users who cannot understand how to relate their needs, skills, and preferences to the feature space of the software [11]. Similarly, program families [10] attempt to define the set of allowable alternatives for a given set of fea- tures included in a family. Again, this approach offers a design-level perspective on the set of alternative cus- tomizations supported by a program family, and does not easily translate to user needs, skills, and prefer- ences. Work in HCI has focused on how users like to be in control of the software and has developed interme- diary mechanisms that allow users to directly manipu- late the functionality and interface of a software system [11, 2]. At the other end of the spectrum, research in AI has developed automated techniques for monitoring user actions in order to infer user goals and preferences, which result in a revised user interface [8, 7]. In this paper, we propose a methodological frame- work for identifying customization parameters during requirements analysis. We argue that any customiza- tion model should encompass user goals, skills, as well as preferences that together form a foundation for cus- tomizable software from a user perspective. The rest of the paper is structured as follows. Sec- tion 2 introduces our framework of goals, skills, and preferences and shows how to map these into design alternatives. To illustrate the breadth of alternatives that can be accommodated by our framework, and also