Exploring the Cognitive Foundations of Software Engineering

Exploring the Cognitive Foundations of Software Engineering

Yingxu Wang (University of Calgary, Canada) and Shushma Patel (London South Bank University, UK)
Copyright: © 2012 |Pages: 20
DOI: 10.4018/978-1-4666-0261-8.ch014
OnDemand PDF Download:
$30.00
List Price: $37.50

Abstract

It is recognized that software is a unique abstract artifact that does not obey any known physical laws. For software engineering to become a matured engineering discipline like others, it must establish its own theoretical framework and laws, which are perceived to be mainly relied on cognitive informatics and denotational mathematics, supplementing to computing science, information science, and formal linguistics. This paper analyzes the basic properties of software and seeks the cognitive informatics foundations of software engineering. The nature of software is characterized by its informatics, behavioral, mathematical, and cognitive properties. The cognitive informatics foundations of software engineering are explored on the basis of the informatics laws of software and software engineering psychology. A set of fundamental cognitive constraints of software engineering, such as intangibility, complexity, indeterminacy, diversity, polymorphism, inexpressiveness, inexplicit embodiment, and unquantifiable quality measures, is identified. The conservative productivity of software is revealed based on the constraints of human cognitive capacity.
Chapter Preview
Top

Introduction

Software engineering is an applied discipline of software science that adopts engineering approaches, such as established methodologies, processes, architectures, measurement, tools, standards, organisation methods, management methods, quality assurance systems and the like, in the development of large-scale software seeking to result in high productivity, low cost, controllable quality, and measurable development schedule (Bauer, 1972; Dijkstra, 1976; Brooks, 1987; McDermid, 1991; Perters and Pedrycz, 2000; Wang, 2007a; Wang and King, 2000). Software Science is a discipline that studies the theoretical framework of software as instructive and behavioral information, which can be embodied and executed by generic computers in order to create expected system behaviors and machine intelligence (Wang, 2007a, 2009a). The relationship between software science and software engineering can be described as that software science is theoretical software engineering; while software engineering is applied software science.

The object under study in software engineering and software science are software and program systems, which are a set of behavioral instructions for implementing a certain architectural layout of data objects and for embodying a set of expected behaviors on a universal computer platform for a required application. Large-scale software systems are highly complicated systems that have never been handled by mankind in engineering disciplines. It is recognized that software is a unique abstract artifact that does not obey any known physical laws (McDermid, 1991; Hartmanis. 1994; Wang, 2007a). For software engineering to become a matured engineering discipline like others, it must establish its own theoretical framework and laws, which are perceived to be mainly relied on cognitive informatics (Wang, 2002a, 2003a, 2007b) and denotational mathematics (Wang, 2008a), supplementing to computing science (Gersting, 1982; Lewis and Papadimitriou, 1998), information science (Shannon. 1948; Bell, 1953; Goldman, 1953; Wang, 2002a, 2003a), and formal linguistics (Chomsky, 1957, 1965; Wang, 2007a).

This paper explores basic properties of software and cognitive foundations of software engineering. The nature of software and software engineering is explored in the facets of the informatics, behavioral, and mathematical properties. The cognitive informatics foundations of software engineering are sought on the basis of a set of informatics laws of software. The fundamental cognitive constraints of software engineering on intangibility, complexity, indeterminacy, diversity, polymorphism, inexpressiveness, inexplicit embodiment, and unquantifiable quality measures are elaborated. Based on the basic research, a set of cognitive informatics principles for software engineering is established, such as the conservative productivity of software constrained by human cognitive capacity, the cognitive characteristics of software engineering, software engineering psychology, the cognitive mechanism of skill transformation in software engineering, the cognitive foundations of software quality theories, and the cognitive complexity of software.

Complete Chapter List

Search this Book:
Reset