• Tidak ada hasil yang ditemukan

The Software Engineering (SE) Worldview

3.2 A Worldview Orientation

3.2.4 The Software Engineering (SE) Worldview

Software engineering has its roots in computer science, thus placing it firmly in the realm of the reductive and deterministic domain of science where the dominant epistemology is positivism or post-positivism (Penny, 1997). Aligned to this traditional perspective is the commonly held perception that software development is an engineering-like activity (Pressman, 2010; Schach, 2008;

Sommerville, 2007) and software developers are engineers who are provided with

‘construction specifications’ and are expected to proceed in a quantifiable, highly structured and organised manner to produce a software artefact that satisfies the pre-defined specifications (Jemielniak, 2008). However, this notion of developing software in a mechanistic manner has been subjected to a critique by Bryant is his philosophical foray into the origins and path trajectory of software development practice (see Bryant (2000)). In the article titled, “It’s Engineering Jim ... but not as we know it”, Bryant acknowledges that software development needs an exemplar discipline that embodies rigour, precision and quality, thereby endorsing an identity with the domains of engineering, mathematics and science. However, to suggest that the software development process should proceed in the same manner as the construction of an engineering-like artefact is unwarranted because the perception created is that the software development process embodies a

methodology that is highly prescriptive and mechanical. Software development is also not governed by the physical laws of nature (as is the case with engineering), thus rendering the reference to engineering to be one that is more metaphorical than literal.

Engineering as a Metaphor

The metaphorical reference to engineering has served the domain of software development reasonably well in the sense that it has instilled an appreciation for the application of technical expertise, discipline and rigour into the development process. There were however, voices of dissent with regards to the appropriateness of the engineering/construction metaphor. The perception is that the engineering metaphor has outlived its usefulness and needs to be replaced by an image that portrays software development as an evolutionary process (Lehman

& Ramil, 2003) where a software artefact is grown or ‘nurtured’ into a final product (Bryant, 2000). The ‘softening’ of the engineering metaphor has been necessitated by its incapacity to deal with the human/social element that has become a core component of the systems development process and the functionality offered by modern software systems. The understanding of software engineering has been coupled with a gravitation of opinion that was historically dominated by a scientific theoretical base to one that is more inclusive of the human and social aspects of computing. This movement espouses a migration from a worldview that was dominantly modernistic (the scientific perspective that the world could be explained by a set of rational and objective facts) to one that has been labelled as post-modernism.

Robinson et al. (1998, p. 368) explain that modernism “…lays the world bare, stripped of myth and mystery” and focuses on the rigid rules of determinism and the mechanistic logic of rationality that has an exclusive scientific orientation.

This modernistic stance towards software development has created a mismatch between the actual process of software development and the type of methodologies that were advocated by the software engineering community to enhance the software development process. Robinson et al. suggest that adherence to the values of modernism by the software engineering community was a critical factor in

causing the software crisis in the 1970’s and 1980’s creating a situation where the software engineering community became victims as well as perpetrators of the crisis. The complicity of the SE community in contributing to the software crisis is explained in Robinson et al. (1998) as a consequence of devaluing the user’s experience and knowledge of their world, thereby creating a disconnect and a sense of inequality between the developer and the end user of a software system. In the traditional, modernist viewpoint, the software engineer is conceived as the expert whilst the consumer of the product is referred to as the end user of the system. The expert/end user distinction was suggestive of an arrangement where the expert made the decisions regarding the feature-set, performance and usability of a software system whilst the users was forced to adjust to the workings of the system that was bestowed upon them. This narrative is descriptive of an inflexible arrangement where the experts/developers were not obliged to provide any form of accountability to the end users of the system. It was at this juncture that the SE community began to acknowledge the need to have an interactive relationship with the end users in order to develop systems that were perceived to be successful.

The Importance of the End User

The acknowledgement of the importance of the end users role in the software development process has provided impetus for the popularity of agile methodologies, which according to Northover et al. (2007) heralds a paradigm shift in software development, completely replacing the old, traditional methodologies.

From a philosophical perspective, this transition may be seen as a migration of the SE perspective on research and development from one of modernism to one that subscribes to the principles of postmodernism. Postmodernism is a philosophy that was developed as a rebellion against the positivist stance that reality could be explained using objective, rational thought and there was no flexibility to accommodate alternate explanations. Bertens (1995) explains that it is not easy to develop a precise definition of postmodernism and no single definition of postmodernism has gone uncontested or has even been widely accepted. Robinson and Sharp (2009) do however, provide some guidance and suggest that postmodernism is representative of a descriptive theory where there is no

dominant narrative, enabling one to make an argument for knowledge that is constructed on the basis of the context in which the knowledge is discovered.

Postmodernism is neither predictive nor prescriptive, but a philosophy that endorses a multiplicity of interpretations of factual knowledge. Software development practice typically consists of human intervention that embraces changing requirements and the ability of software developers to adapt software systems to suppprt the dynamic operational expectations of end users of these systems. These attributes are completely different to the modernisitic perspective that endorses engineering like precision where the physical artefact is predefined, foreseen and precisely built.

In his 1974 Turing Award acceptance speech (see Knuth (2007)), Knuth suggested that the activities of software development and research of the software development process were best understood when there is an acknowledgement that these activities embodied elements of modernism and postmodernism. Knuth qualified this claim by suggesting that the scientific approach (characterised by words such as logical, impersonal and calm) as well as the artistic approach (characterised by words such as aesthetic, creative, anxious and irrational) were intrinsic to the domain of software development. These sentiments heralded an acknowledgement that software engineering has an identity that is commensurate with the philosophy of postmodernism. The process of software development has to incorporate an amalgamation of modernistic traits such as logic and rationality, prescription and precision together with post-modernistic traits such as creativity and an appreciation of aesthetic quality. These predictive sentiments were empirically affirmed to some extent in a qualitative study by Jemielniak (2008).

An interesting outcome of the study was that the dominant vocabulary and metaphors used by the software engineers had a stronger resonance with art rather than engineering. The resonance between software development and art has added impetus to the claim that an optimal understanding of issues related to software development is only acquired if there is sufficient cognisance accorded to the philosophy of postmodernism.