|
Software Science
If I had actually been aware of all the
efforts made in the past centuries, I would never have written a line, but would
have done something else.
-- Goethe DISCLAIMER. This page is neither complete nor accurate. It merely serves as a point of reference on certain subjects. Contact me if you have any questions.![]() What is software science?A good scientist is a person with original ideas. A
good engineer is a person who makes a design that works with as few
original ideas as possible. There are no prima donnas in engineering.
-- Freeman Dyson According to Robin Milner [2006], the term 'software science' refers to the "principles, concepts, models and constructions that we use to build and understand software systems", contributing theories to which include "automata theory, formal language theory, automation of logics, program semantics, specification and verification disciplines, type theories, process calculi, temporal and modal logics, calculi for mobile systems, intelligent agents". Software science is distinguished from software engineering as being concerned with descriptive (rather then normative) statements. Software science stands to software engineering in the way chemistry stands to chemical engineering and material science to civil engineering. Dijkstra argued that the term computer science is unfortunate because “Computer science is no more about computers than astronomy is about telescopes”. Yet the engineering bias has steered research in software towards current technologies and towards effective and commercially-viable techniques for constructing software, including methodologies (such as Jackson Structured Programming, Object-Oriented Analysis) and processes (such as software lifecycle models), which are at the scope of the SWEBOK enterprise [Abran et al. 2004]. Treated as a natural (empirical) science, software science can be understood as the discipline which emanates from treating computer programs (“source code”) as objects tantamount to “natural phenomena”, much in the way that astronomy treats planets and zoology treats natural species, thereby suggesting scientific methods of investigation such as observation, analysis, measurement, verification, and empirical validation. Almost anything in software can be implemented, sold,
and even used given enough determination. There is nothing a mere scientist can say that will stand against the flood of a
hundred million dollars.
Software science has been conducted and will continue to be conducted, but to
date there are no conferences, journals, books or papers on “software science”
(Google it!). Categories of software are demarcated for example by theories of
computability, computational complexity, software complexity, and the
Intension/Locality criteria.
The theory of programming languages and programming paradigms, formal modelling of software design, Lehman's
laws of
software evolution, Turner's foundations to the theory of functional
specifications and many other contributions count towards “software science”.-- C.A.R. Hoare, "The Emperor's Old Clothes" Further reading:
Amnon Eden |
|