Uncertainty in Computer Application and Its Control through the Engineering of Software. Lehman, M. M. 1(1):3–27.
Uncertainty in Computer Application and Its Control through the Engineering of Software [link]Paper  doi  abstract   bibtex   
Computers are being applied more and more broadly to address applications in all areas of human activity, penetrating ever deeper into the very fabric of society. As a consequence, mankind is becoming, collectively and individually, ever more dependent on software and on the integrity of that software. In this context the term software includes both the systems software that constitutes a fundamental part of the operational configuration and the programs that implement each individual application. Integrity is a many faceted concept that has to do with the availability of programs whenever they are needed and their correctness in relation to the circumstances at the moment of execution or, more precisely, when the results of computation are applied. A program must produce a solution that is correct and relevant when used. It must continue to do so whenever required over the lifetime of an application and of the systems that realize and support it. All this is required despite continuing change in a dynamic world. This paper discusses some properties of software and of software technology and identifies fundamental issues that must be addressed if program integrity is to be achieved initially, and if a program is to be maintained as satisfactory in a continuously changing operational environment. The discussion leads to formulation of a 'Principle of Uncertainty' that applies, in general, to all computer applications in the real world. The principle follows from the fact that any program is a model, albeit many times removed by abstraction and reification from the real world it reflects and addresses. The consequences of this basic fact lead to a need for a disciplined technology associated with a controlled process for definition of each application, its operational domain, the envisaged system and software, and for its development, application and evolution (maintenance). This paper concludes with a brief mention of the implications of the analysis on relevant technological issues. Fundamental concepts and observations that underlie the development of a software engineering discipline and its supporting technology are introduced. Software engineering is seen as the discipline that permits one to limit uncertainty and its consequences through the introduction and control of appropriate development processes and the systematic and disciplined applications of methods and tools. The emergence of such tools, of computer assisted software engineering (CASE) and of programming and project support environments (IPSEs) is briefly discussed. Finally the paper addresses issues that arise in transferring this still developing technology to industry and introducing it into practice, outlining briefly how this may be approached.
@article{lehmanUncertaintyComputerApplication1989,
  title = {Uncertainty in Computer Application and Its Control through the Engineering of Software},
  author = {Lehman, M. M.},
  date = {1989},
  journaltitle = {Journal of Software Maintenance: Research and Practice},
  volume = {1},
  pages = {3--27},
  issn = {2047-7481},
  doi = {10.1002/smr.4360010103},
  url = {https://doi.org/10.1002/smr.4360010103},
  abstract = {Computers are being applied more and more broadly to address applications in all areas of human activity, penetrating ever deeper into the very fabric of society. As a consequence, mankind is becoming, collectively and individually, ever more dependent on software and on the integrity of that software. In this context the term software includes both the systems software that constitutes a fundamental part of the operational configuration and the programs that implement each individual application. Integrity is a many faceted concept that has to do with the availability of programs whenever they are needed and their correctness in relation to the circumstances at the moment of execution or, more precisely, when the results of computation are applied. A program must produce a solution that is correct and relevant when used. It must continue to do so whenever required over the lifetime of an application and of the systems that realize and support it. All this is required despite continuing change in a dynamic world. This paper discusses some properties of software and of software technology and identifies fundamental issues that must be addressed if program integrity is to be achieved initially, and if a program is to be maintained as satisfactory in a continuously changing operational environment. The discussion leads to formulation of a 'Principle of Uncertainty' that applies, in general, to all computer applications in the real world. The principle follows from the fact that any program is a model, albeit many times removed by abstraction and reification from the real world it reflects and addresses. The consequences of this basic fact lead to a need for a disciplined technology associated with a controlled process for definition of each application, its operational domain, the envisaged system and software, and for its development, application and evolution (maintenance). This paper concludes with a brief mention of the implications of the analysis on relevant technological issues. Fundamental concepts and observations that underlie the development of a software engineering discipline and its supporting technology are introduced. Software engineering is seen as the discipline that permits one to limit uncertainty and its consequences through the introduction and control of appropriate development processes and the systematic and disciplined applications of methods and tools. The emergence of such tools, of computer assisted software engineering (CASE) and of programming and project support environments (IPSEs) is briefly discussed. Finally the paper addresses issues that arise in transferring this still developing technology to industry and introducing it into practice, outlining briefly how this may be approached.},
  keywords = {*imported-from-citeulike-INRMM,~INRMM-MiD:c-11691733,communicating-uncertainty,complexity,software-engineering,software-errors,software-uncertainty,uncertainty},
  number = {1}
}

Downloads: 0