In software engineering, separating problem and solutionlevel concerns and analyzing each of them in an abstract manner are established principles (Ghezzi, Jazayeri, & Mandrioli, 2003). A software representation, for instance, a model or a specification, is a product of such an analysis. These software representations can vary across a formality spectrum: informal (natural language), semi-formal (mathematics- based syntax), or formal (mathematics-based syntax and semantics). As software representations become pervasive in software process environments, the issue of their communicative efficacy arises. Our interest here is in software representations that make use of natural language and their communicability to their stakeholders in doing so. In this article, we take the position that if one cannot communicate well in a natural language, then one cannot communicate via other, more formal, means. The rest of the article is organized as follows. We first outline the background necessary for later discussion. This is followed by the proposal for a framework for communicability software representations that are created early in the software process and the role of natural language in them. We then illustrate that in software representations expressed in certain specific nonnatural languages. Next, challenges and directions for future research are outlined and, finally, concluding remarks are given.
Use Of Natural Language In Software Representations
Our understanding of communicability of a software representation is based on the following interrelated hypotheses:
Hypothesis 1. Readability is a prerequisite to communicability, which in turn is a prelude to comprehensibility. The basis for this hypothesis is that if a user has difficulty accessing or deciphering a certain message, then that user will not be able to understand it in part or in its entirety either.
Hypothesis 2. The comprehension of a given software representation in a nonnatural language takes place only when it is first internally translated into the user’s natural language of choice. The basis for this hypothesis is that the mode of internalization of some knowledge is the conversion of explicit knowledge into the tacit knowledge. The natural language acts as a “proxy” in this internalization of knowledge inherent in a semiformal/formal software representation.
Using these as the basis, the discussion of software representations that follows rests on the framework given in Table 1.
Key Terms in this Chapter
Software Representation: A representation of the system expressed at some level of abstraction, in some modality, and at certain level of formality.
Natural Naming: A technique for using full names based on the terminology of the application domain that consists of one or more words of the natural language instead of acronyms or abbreviations for elements in a software representation.
Descriptive Markup: A model of text that focuses on description of information using markup delimiters for consumption by both humans and machines.
Cognitive Dimensions of Notations: A generic framework for describing the utility of information artifacts by taking the system environment and the user characteristics into consideration.
Domain Model: A simplified abstraction from a certain viewpoint of an area of software interest.
Formal Specification: A software representation with well-defined syntax and semantics that is usually used to express software requirements or detailed software design.
Ontology: An explicit formal specification of a conceptualization that consists of a set of terms in a domain and relations among them.