This thesis began with a discussion of knowledge-intensive domains. In these domains workers solve ill-defined problems and learn as they work. Based on a theory of cooperative problem solving systems, I argued that computational support for knowledge intensive domains should take the form of domain-oriented objects and knowledge delivery. This type of computational support will be referred to as domain-oriented systems.
The challenge when designing domain-oriented systems is to determine what forms domain objects and knowledge delivery should take for a particular domain. Design of domain-oriented systems is difficult because distribution of knowledge across stakeholders creates a symmetry of ignorance, and because shared visions of the future require development of new knowledge that extends and synthesizes existing knowledge. The previous chapter argued that first generation approaches were not flexible enough for the design of domain oriented systems. It also argued that involving users in design is not enough - it is the nature of the participation that is important in collaborative design. A point of departure was presented for thinking of development as an evolutionary and participatory process.
This chapter provides a theoretical framework for thinking about development of domain-oriented systems as knowledge construction. Knowledge plays a key role in software development. Knowledge has been called "the raw material of software design teams" [Walz et al. 1993], while the "thin spread of application domain knowledge" [Curtis et al. 1988] is often cited as the reason for software project failures. This chapter argues that the knowledge required to redesign work practice cannot be simply acquired through interviews, observations and other types of analysis. Instead, the knowledge must be constructed in a social and evolutionary process involving all stakeholders in the system design.
The idea of constructing knowledge is based on a constructionist framework that focuses on the role of artifacts in learning, communicating and designing. Knowledge construction in software design is concerned with two forms of knowledge: (1) knowledge that is shared by stakeholders, and (2) knowledge that is in the design products. The goal is for the shared understanding of stakeholders to be reflected in design products.
Products that are created to support knowledge construction in so ftware design are called representations for mutual understanding. These representations become mutually meaningful as they are discussed and refined by stakeholders. The shared understanding and the design products co-evolve as the design progresses. Thus, representations for mutual understanding are the vehicle for knowledge construction in software design as well as the product of software design.
This chapter begins by distinguishing three key processes for design of domain-oriented systems: activation of knowledge, communication among stakeholders, and envisioning of new work practices. These processes address important issues in building shared understanding in system design. They are the key processes for constructing the knowledge necessary to build domain-oriented systems. A theoretical framework for knowledge construction is presented, and then is extended to the problem of software design. Representations for mutual understanding are then introduced as a means to support the key knowledge construction processes. The chapter closes by discussing different representational techniques, and their uses in participatory and evolutionary system development.
|Previous||Home||Contents||Next - 4.1. Knowledge Construction Processes|