Extreme Programming (XP)

& User-Centered Design (UCD)





Interviews, Personas and Scenarios, Prototyping, Thinking aloud,

Usability evaluation


My role: Researcher and Developer

Thesis project developed to obtain the professional degree of Systems Engineer.

Advisor: Prof. Zapata - PUCP

Paper published at AHFE Conference 2016


The integration of User-Centered Design (UCD) and agile methodologies for software development is suitable to achieve software products with a higher degree of usability. However, there are few controlled experiments that can show the advantages and the approach of this integration.


Motivated by the usability approach, I developed a project that analyzes and describes the whole process of integrating one of the popular agile methodologies, Extreme Programming (XP) with UCD applied to the construction of a software application. As a case study, I developed a mobile application about the vegetation from my undergrad university (Pontificia Universidad Catolica del Peru - PUCP) that allows users to search, recognize and find plants around the university campus.

Semi-structured Interviews

In order to gather information about users and the characteristics of the application, the process began with Semi-structured interviews with Computer Science researchers from PUCP, members of the Group of Pattern Recognition and Artificial Intelligence Applied, who were working on a similar project with the biodiversity of endemic plants from the Amazon. They were classified as expert users of the application.

The interview was structured as follows:

  • Introduction: States the purpose of the interview.

  • Demographics: Raises basic information about the respondent and the use of applications on mobile devices.

  • App information: Gathers qualitative information about similar existing mobile applications. In this section, I used a theoretical model known as Technology Acceptance Model (TAM), which attempts to explain and predict the acceptance of technological tools by a particular group of users in specific contexts. Participants were presented to existing mobile applications to asses the degree of easy to use, perceived utility, and intention of use.  

Personas and Scenarios


With the results of the interviews, 4 persons were identified. They represented the 4 groups of users who will interact with the mobile application. Based on them, Scenarios were developed as informal stories about the tasks and activities that were going to be performed by users.



According to the interviews and user groups already defined, we continue with prototyping. Paper prototyping was the selected tool for this stage.

The main functionalities were shaped through this tool: 

1. A quick search by family, gender and species name of the plants.

2. A campus map to search plants by name and find their location on the University.

3. A camera to take a picture of a plant’s leave and find out its name.

4. A section to find out more information about the app, the researchers and developers. 

Asset 3.png
Iterations and Thinking Aloud Tests

With the scenarios and prototypes developed, four iterations were planned to build the mobile application. Each iteration belonged to each of the main functionalities of the application. Along with users, the stated requirements were prioritized to plan the features to be progressively implemented on the next iterations. According to this plan, iterations 1, 2 and 4 were scheduled to last 1 week, and the iteration 3 lasts 2 weeks. The mobile application was developed on XCode for iOS platform.


According to Extreme Programming (XP), at the end of each iteration, functional tests were performed to ensure the adequate development of the requirements. However, I also needed to ensure the proper development of the requirements from the user’s point of view, for which I chose to use Thinking Aloud Tests, a technique from UCD. Thinking Aloud was a useful tool to integrate with XP in this project, since it is not quite complex and allowed users to easily adapt to the technique. As the iterations were developed, users began to express their opinions and thoughts in a much natural way, which helped to obtain better criticisms and observations about the evaluated interface. Furthermore, Thinking Aloud Tests were well integrated with functional tests as they allowed finding errors that were not found at first sight. They helped to ensure that I was building an acceptable functionally product.

Some screens from the final iteration can be seen below.

App print.png
Usability Evaluation

With the final version of the mobile application obtained, I conducted a final user evaluation of the full application. The user evaluation chosen for this purpose was the one stated by Jeff Rubin and Dana Chisnell, which proposes a less formal approach and allows obtaining qualitative information about the interface. Thus, it allowed us to analyze if we really obtained a usable product. The evaluation performed in this stage included a comparison between the mobile application developed on the project with another existing application in the App Store with similar functionalities. Eight users were asked to perform different tasks on each application and then they completed a post-questionnaire containing 5 questions to asses the usability of the product, using a 5-point likert scale, and 2 open questions to know what did they like the most and the least about each application. The results showed that the mobile application developed in this project (labeled as Catalog of plants PUCP) had a higher degree of usability than an existing commercial mobile app with similar functionalities. Below are the average response for each question. 


Users' feedback is very important in the analysis phase. It ensures that everyone agrees with requirements and avoid making changes that could be more expensive in the future.

Prototyping allowed the developer specifying the functions to be implemented, considering the limitations of the project’s resources (hardware, time) and analyzing what is feasible to develop.

Testing the software with users at the end of each iteration allowed testing the usability of functional software in an early stage, where it is still possible to make changes.

User’s commitment and availability are very important in order to succeed in the project.

Applying the proposed integration for this project, we obtained a user-oriented application, which successfully covers all the requirements defined at the beginning of the project.

See more projects