The major thrust of my work is in the area of making useful information and communications technology applications for development.
We believe that there are clear differences between the requirements of ICT solutions targeted towards problems in developing countries versus those for developed countries. I strive to develop a method whereby such differences can be uncovered for a particular chosen problem domain by developers. Our emphasis is on software design methods in the developing world.
The potential impact of Computer Science (CS) comes from the task that is facing developing countries: ICT helps to make scarce knowledge resources available in a widespread fashion. For this to happen we must have applications and content that address local needs. I believe that a CS point of view is a fruitful one to bring to the discussion on the use of ICT for development, because Computer Scientists have a profound realization that ICT is completely adaptable and malleable. We do not take existing systems as immutable and given; systems are seen as adaptable, and are often constructed in components that can be used in innovative ways. We do not have to make do with fixed applications and with content that is aimed at specific user communities. Instead, we can easily adapt software technology to cater for social needs. Although we all know this about ICT, we have not yet learnt how to exploit this flexibility for the typical user groups found in the developing world.
Our task then is to develop new applications, as well as developing tools for creating content and new software engineering methods. To target our applications to the needs of local users requires an appropriately situated methodology for systems development that can elicit user requirements from user communities and produce solutions that work effectively. Computer Scientists will have to overcome a mindset that is fascinated by technological issues and somewhat disdains social involvement. As Software Engineers we have to find partners from social disciplines to assist us in this and we have to train our students to work accordingly.
The needs that arise in underdeveloped communities are not served by merely providing access to equipment, or to applications developed for first world users, or simply access to the Internet. A serious process of co-development has to be followed that involves a community as a whole together with socially sensitive ICT specialists. It is the responsibility of the ICT specialists to initiate and guide this cooperative process. It is the responsibility of CS departments to research and develop this process, investigate it with pilot sites and then train students according to the outcomes.
In order to avoid the technical bias associated with traditional software engineering approaches we are reaching towards a synthesis of several approaches. A bottom-up research approach was chosen to understand and address real community needs. It takes into account the issues related to developing and using software in the community aside from only the technical ones. This process lead to a Socially Aware Software Engineering approach based on a combination of the following:
• User-centred methods taken from the field of Human Computer Interaction (HCI)
• Participatory Design methods to ensure that solutions meet user requirements
• Action Research cycles to guide the process of working with actual communities
Essentially, the socially aware software engineering framework adopted for this project represents a customized version of the Action Research process, with pertinent HCI and participatory design principles included in an iterative development process.
The socially aware software engineering methodology does not include specific markers or indicators to measure success. Rather these indicators need to be developed on a per-project basis: a number of different evaluation methodologies are compatible with socially aware computing, including Outcomes Mapping and the Real Access/Real Impact criteria prescribed by bridges.org.