ABSTRACT

Software development is a complex problem-solving process with various interdisciplinary variables driving its evolution. Such variables are either problem-related or solution-based. Problem-related variables set the criteria for solution characteristics and help designers tailor solutions to specific problems. Solutionbased variables explain current options, assist in future forecasting, and facilitate scaling solutions to problems. The issue of whether to find generic prescriptions to common problems (i.e., bottom-up generalization) or derive domain-dependent solutions to specific problems (i.e., top-down specialization) is debatable.