Activity theory is a way of describing and characterizing the structure of human - tivity of all kinds. First introduced by Russian psychologists Rubinshtein, Leontiev, and Vigotsky in the early part of the last century, activity theory has more recently gained increasing attention among interaction designers and others in the hum- computer interaction and usability communities (see, for example, Gay and H- brooke, 2004). Interest was given a signi?cant boost when Donald Norman suggested activity-theory and activity-centered design as antidotes to some of the putative ills of "human-centered design" (Norman, 2005). Norman, who has been credited with coining the phrase "user-centered design," suggested that too much attention focused on human users may be harmful, that to design better tools designers need to focus not so much on users as on the activities in which users are engaged and the tasks they seek to perform within those activities. Although many researchers and practitioners claim to have used or been in?uenced by activity theory in their work (see, for example, Nardi, 1996), it is often dif?cult to trace precisely where or how the results have actually been shaped by activity theory. Inmanycases, evendetailedcasestudiesreportresultsthatseemonlydistantlyrelated, if at all, to the use of activity theory. Contributing to the lack of precise and traceable impact is that activity theory, - spite its name, is not truly a formal and proper theory.
The fields of Human-Computer Interaction (HCI) and Software Engineering (SE) have evolved almost independently from each other until the last two decades, when it became obvious that an integrated perspective would benefit the development of interactive software applications as considered in both disciplines. The chapters in this book are written by prominent researchers and practitioners who bring to light the major issues and challenges posed by this integration, and offer a variety of solutions in order to address the integration of HCI and SE, including:
• Extensions of software development methodologies to accomodate for the specific constraints of usage-centered design.
• Introduction of innovative, structured, and model-driven user interface engineering approaches.
• Addressing software architecture issues in the design of user interfaces.
• Reingineering of existing systems for better usability.