Software with universal design for high quality accessibility
What does accessibility really mean? Broadly, it is all about enabling anyone and everyone (with or without special needs) to access, use and take advantage of a product, service, or environment. Accessibility is an important quality attribute of software and web apps. Why? Because every single individual deserves to know, learn, explore, grow and achieve in any field of life they wish to. But unfortunately, accessibility often gets neglected when we deal with system architecture, design and implementation.
In a 2001 survey which evaluated products of 25 award winning companies which produce pre-college instructional software, it was found that only two companies were aware about accessibility issues. Though a lot has changed in the past 15 years, we still have miles to go before we reach satisfactory solutions for accessibility issues.
It is a general practice to develop web or normal app by keeping average user's characteristics in mind. But when we have to design software which satisfies the needs of people with wide range of disabilities and abilities, it brings us to the concept of universal design for software.
Universal design is a bunch of ideas which can apply in a product, building or environment, so that they can be easily accessed by older people and people with/without disabilities.
Here we will throw light on the process and principle of universal design in context of web apps and general software development. We believe that the following will help in increasing our knowledge and awareness about building better and accessible software.
Universal Software Design Process
Process of universal design for software involves high level understanding of software as well as its components. Few important steps of the process listed below:
(1) Understand Software - Understanding of the application where we want to use the process of universal design, is crucial for its success.
(2) Define Universe - We should describe the overall population (e.g., users of software), and then describe the diverse characteristics of potential members of the population for which the application is designed (e.g., students, faculty, and staff with diverse characteristics with respect to gender; age; size; ethnicity and race; native language; learning style; and abilities to see, hear, manipulate objects, read, and communicate).
(3) Involve End users - Consider and involve people with diverse characteristics (as identified in Step 2) in all phases of the development, implementation, and evaluation of the application. Also gain perspectives through diversity programs, such as special disability help and support centre. Make these processes known with appropriate signage, publications, and websites.
(4) Identify guidelines & standards - Create or select existing universal design guidelines/standards for web and native app development. Integrate them with other best practices. In some countries, following accessibility standard is a legal obligation For instance; if we are building web application we should follow WAG (Web Accessibility Guideline) and other standards.
(5) Apply guidelines or standards - Apply universal design in software with best practices within the application, as identified in Step 4, to the overall design of the application, all subcomponents of the application, and all ongoing operations (e.g., staff training). This is in order to maximize the benefit of the application for individuals with the wide variety of characteristics identified in Step 2.
(6) Plan for accommodations - When we implement software we should provide facility to address accommodation requests (e.g., purchase of assistive technology, arrangement for Braille printers) from individuals for whom the design of the application does not automatically provide access.
(7) Train & Support - Tailor and deliver ongoing training and support to stakeholders with emphasis on accessibility features.
(8) Evaluate - We should periodically evaluate the implementation of universal design measures. You can also involve diverse group of users, and make modifications based on feedback. We should devise ways to collect input from users.
Universal Software Design Principles
Here are some of the important universal design principles for designing accessible software.
(1) Equitable use – Ensure that the design is useful and marketable to people with diverse abilities. For example, a website that is designed to be accessible by everyone, including people who are blind and use screen reader technology, employs this principle.
(2) Flexibility in use - The design should accommodate a wide range of individual preferences and abilities. For e.g. Video with flexibility to display caption can enable user to listen or read audio.
(3) Simple and Intuitive - Use of the design or understanding of the software should be easy, regardless of the user's experience, knowledge, language skills, or current concentration level. For e.g. simple and intuitive control buttons/links can be used in an audio player web app.
(4) Fault Tolerance - The design should minimize hazards and the adverse consequences of accidental or unintended actions. Example is a software application which provides guidance when the user makes an inappropriate selection, irrespective of the type of user.
We have left out three universal design principles like perceptible information, low physical effort and size and space for approach and usage. These principals are more suitable for physical products.
Why we are very far from reality in building software which should be accessible to all different kinds of end user? It is not the lack of theories, principles or standards, but rather the lack of consciences to incorporate those in software development process. Once we start using design principles like Universal Design, we will able to produce better accessible software for differently-enabled people.