There are several challenges in integrating UX design and related activities into a typical agile software development life cycle process. The most common problem is typically “ finding a balance between up-front interaction design and integrating interaction design with iterative coding with the aim of delivering working software instead of early design concepts”. This happens mostly because typical pure SDLC approaches primarily aim at “efficient coding tactics together with project management and team organization instead of usability engineering”.As Agile is more “a way of thinking about creating software products’ rather than being a specific process or methodology hints at the challenges of UX integration into it as integrating user research and UX design with agile, is itself an “agile antipattern”.The very idea of SDLC being a process for developing software , traditionally never kept the “user” into a focus, or event kept any scope for methedologies that try to bring any component that is not considered as native ingredient of the process of creating a software product. The focus was always the “cost, scope, and schedule” that drive any traditional SDLC models including Agile. And sure enough this typically gives rise to the challenges for UX integration into any SDLC as project managers never try to upset the balance of these three by reducing costs, tightening deadlines, and adding features in the specification.
However even though there are many challenges in integrating UX design with agile practices, some researchers see “agile software development practices” as enablers for bringing UX design closer to software engineering and enhancing interaction between these two disciplines.
In Current State of Agile User-Centered Design: A Survey. HCI and Usability for e-Inclusion. Lecture Notes in Computer Science, (by Hussain, Z., Slany, W., and Holzinger, 2009), a survey of the integration of usability and UCD practices with agile methods reported that “the majority of the respondents found that usability and user-centered design practices had brought added value through improvements in the usability and quality of the end product. Development teams often report that they are better able to respond to the needs of the customer with agile methods, and their measured or perceived productivity has been reported to be better than development teams using traditional methods”.
This is perhaps today’s the most widely used SDLC model. It uses iterative development as a basis ,but uses people-centric viewpoint through user feedbacks rather than planning as the primary control mechanism. The feedback is driven by regular tests and releases of the evolving software.
There are many variations of agile processes “:
- Agile Data (AD)
- Agile Microsoft Solutions Framework (MSF)
- Agile Modeling (AM)
- Agile Unified Process (AUP)
- Dynamic System Development Method (DSDM)
- Extreme Programming (XP)
- Feature Driven Development (FDD)
- Usage-Centered Design (UCD)
Challenges with Agile model of SDLC to implement UX
There are several challenges in implementing UX in Agile model effectively and these challenges include:
- Different approaches. Usability methodologies are centered on the user and holistic view of the user needs whereas agile methodologies take a broader view and focus on the stakeholder. Agile methods primarily focus on delivering working software early.
- Different goals: Software engineers focus on the technical design, implementation the system where as UX practitioners focus on “developing systems so end-users can use them effectively”.
- Organizational challenges: The agile methodologies focus on strategy where teams are self-organizing whereas UX focuses on a centralized UX groups within some organizations so that the needed practices, tools, and standards can be provided.
- UX practitioners struggle to be heard: Many UX practitioners often complain that the results of their work are not considered in the design decisions and even if it is heard, there seems to be focus more on engineering decisions over the usability decisions.
Usability Designing Process
While exploring through available scopes in different SDLC models, we can notice a set of common activities which can be combined together to form a generic Usability Designing Process. Basically there are four phases of the whole set of activities which can be tagged separately as follows:
1. Plan: This phase involves the following major activities:
- i. Developing a Plan
- ii. Assembling a project team
- iii. Kicking of the project
2. Analyze: This can have the following activities:
- i. Evaluation of scope
- ii. Evaluation of existing product (if enhancements are planned)
- iii. User Research
- iv. Task Analysis
- v. Persona Development
- vi. Scenarios evaluation and prescription
- vii. Define measurable goals
3. Design: This is phase where some out puts related to the actual product are generated:
- i. Product/ Site requirement analysis
- ii. Conducting a content inventory
- iii. Performing card sorting
- iv. Information Architecture (IA) formation
- v. Writing for web
- vi. Parallel design
- vii. Wire framing and prototyping
- viii. Usability Consultations to programming team
4. Test and refinement: This is a phase that can be applied to multiple phases of SDLC as it is mostly about usability testing :
- i. Usability Testing
- ii. Heuristic Evaluations
- iii. Implementation and retest
Note that the above phases are not the phases we discussed regarding different SDLC processes. Rather these are the phases that can paired with different phases of SDLC processes depending on the SDLC model used. Typically Usability Designing Process is led by the “usability designer” with the team of field study specialists, user research specialists, usability evaluation specialists, prototype developers, interface designers and graphic designers along with other specialists from related disciplines that varies from project to project.
How Usability Design Process Fits in Different Phases of SDLC?
The different blocks of usability design process can be mapped to different process blocks of any SDLC model. The following diagram shows a generic model for typical process blocks for the typical iterative SDLC model.
One thing to keep in mind is that process is not a complete product development process as it does not out put the final product at the end of the process cycle. Rather Usability process supplements to any software development life cycle at various stages.
Plan or Ideationand Requirement Analysis Phase: In this phase while the technical feasibility is being evaluated, UCD contributors can assist product management by conducting user research with people in the target market to evaluate target user goals, tasks, and workflow. Requirement analysis phase is also aided by the UCD experts in careful review of the gathered data and preparing metrics that can be used in the development phase.
Design Phase: UCD contributors who are skilled at interaction design, visual design, and information design create mockups or prototypes of portions of the system, and contributors who are trained in usability evaluation assess the designs by subjecting them to usability testing.
Build or Development Phase: UCD contributors are usually called upon in a consultative or interpretive role, meeting with the developers responsible for actual implementation of the product, and providing guidance for underspecified areas of the product. In this phase the UCD contributor’s role is to remain the consistent user advocate throughout the project. When negotiations must happen during design and development of a feature, the UCD contributor reminds the team of the design persona (the “design target”, or user group at which the feature is aimed), helps the product manager identify and weigh the risks of leaving off certain areas of functionality, etc.
Integration and Testing/ Verification Phase:UCD experts help in benchmarking usability tests popularly known as “summative evaluations” that evaluates performance of the system /product developed on several grounds. The metrics of this test is typically based on the “error rate for users as they use the system”, the “time it takes to attain proficiency performing a task”, and the “time it takes to perform a task once proficiency has been attained”.
(c)2013-14, Samir Dash