Human factors in agile software development
Date of Issue2015
School of Computer Engineering
Today, software system is designed by humans and works for humans. In the dynamic, continuous, complex and chaotic software development process, human is at the core. Through observing historical evolutions and empirical studies of software engineering methodologies, we can see that when more human factors are considered in the development process, the methodology can be more successful in the real world. Agile Software Development (ASD) is one of the software engineering methodologies with successful use of human factors. ASD is a relatively new software development paradigm that has gained popularity over the last decade. It is a group of methodologies based on iterative and incremental software development, where requirements and functions evolve through collaboration between self-organizing and cross-functional teams. Existing ASD methodologies, which have focused on some human factors, such as openness, collaboration, proactivity, self-organizing, and communication etc., are more people oriented than plan-driven methodologies. However, they lack good quantitative methods to analyze the impacts of human factors on the process, which rely heavily on project managers and team members’ intuition and feeling. Moreover, according to our empirical studies, this intuitive and subjective decision making process without data analytics affects the progress, quality and productivity of ASD. Through our four years of experiments on students’ Scrum based ASD process, we have gained deep understanding into the human factors of agile methodology. We designed an agile project management tool (APM) – the Human-centered Agile Software Engineering (HASE) collaboration development platform to support more than 400 students who self-organized into 80 teams to practice ASD. In these experiments, we have focused on two research directions. The first research direction is to study the agile software development process, through data collections in the lab and interactions with the software developers during software engineering course studies. The second research direction is to design new collaboration tools for agile team members to deal with difficult situations such as detecting users' real goals from specific stories, allocating tasks to novice members or distributed team members based on current contexts, and dealing with possible task delay or team member's emotional crisis. These two research directions are mutually reinforcing: the analysis of agile software development process inspires better development of the HASE platform, and the problems discovered through the usage of HASE platform shed light on the issues of the current agile software development process. These two aspects are integrated as a human computation system (HCS), in which human and computer work together to solve problems in the agile software development process. In this research, we treat agile process as a HCS and explore the usage of goal-oriented method, agent-oriented method and emotion modeling method to allow agile teams to quantitatively handle human factors during the development process with fewer burdens. Our research mainly focuses on the following questions in ASD practice. How to help product owners or project managers uncover stakeholders’ real goals hidden in user stories described in natural language and intuitively present them to the team? • How to assist developers decide whether to accept or refuse new tasks based on the current situation before a new iteration start? • How does the developers' mood or team morale swing affect the task performing process and the quality of artifacts? To address these three questions, we have conducted a series of experiments, simulations and data analysis, and contributed a series of solutions and insights in this research, including 1) a Goal Net based method to enhance goal and requirement management for ASD process, 2) a novel Simple Multi-Agent Real-Time (SMART) approach to enhance intelligent task allocation for ASD process, 3) a Fuzzy Cognitive Map (FCM) based method to enhance emotion and morale management for ASD process, 4) a large-scale in-depth empirical analysis of human factors in the agile development process through the continuous observation of student ASD teams, and 5) the identification of an ASD process as a human-computation system that uses humans to perform tasks that computers are not good at and computers to assist human decision making.
DRNTU::Engineering::Computer science and engineering::Software::Software engineering