aboutsummaryrefslogtreecommitdiff
path: root/software/chapter.tex
blob: 074e0b961274119e163537fc5a3a2a1932310a9b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
% TODO: add StoddenVictoria2016a (Enhancing reproducibility for computational methods)
% TODO: add MillmanKJarrod2011a (Python for Scientists and Engineers)
% TODO: add vanderWaltStefan2011a (The NumPy Array: A Structure for Efficient Numerical Computation)
% TODO: reference https://www.nsf.gov/pubs/2016/nsf16532/nsf16532.htm (Software Infrastructure for
% Sustained Innovation (SI2: SSE & SSI))
% TODO: http://pubs.acs.org/doi/10.1021/cen-09535-scitech2

\chapter{Software}

\begin{dquote}
  The following guidelines are to be used in the documentation of all software developed in the
  Wright group for the IBM 9000 computer.  %
  These rules have arisen as a necessary consequence of the group's programming philosophy of writing
  software in the form of units which can be readily shared among a number of programmers.  %
  The approach outlined here should help to avoid some of the confusion otherwise produced by several
  persons simultaniously developing and modifying shared software.  %

  % Roger Carlson, Appendix 2.3, Software Development Guidelines
  \dsignature{Roger Carlson, ``Software Development Guidelines'' (1988) \cite{CarlsonRogerJ1988a}}
\end{dquote}

\clearpage

% SOFTWARE IS PART OF SCIENCE

Cutting-edge science increasingly relies on custom software. In their 2008 survey,
\textcite{HannayJoErskine2009a} demonstrated just how important software is to the modern
scientist.  %
\begin{ditemize}
	\item 84.3\% of surveyed scientists state that developing scientific software is important or
    very important for their own research.
	\item 91.2\% of surveyed scientists state that using scientific software is important or very
    important for their own research.
	\item On average, scientists spend approximately 40\% of their work time using scientific
    software.
	\item On average, scientists spend approximately 30\% of their work time developing scientific
    software.
\end{ditemize}
Despite the importance of software to science and scientists, most scientists are not familiar with
basic software engineering concepts.  %
% TODO: demonstrate that `most scientists are not familiar with basic software engineering concepts'
This is in part due to the their general lack of formal training in programming and software development. \textcite{HannayJoErskine2009a} found that over 90\% of scientists learn software development through `informal self study'. Indeed, I myself have never been formally trained in software development.

% GOOD SOFTWARE MAKES SCIENCE EASIER AND FASTER

% CHALLENGES IN SCIENTIFIC SOFTWARE DEVELOPMENT

% scientific software---focused on extensibility

Software development in a scientific context poses unique challenges. Many traditional software development paradigms demand an upfront articulation of goals and requirements. This allows the developers to carefully design their software, even before a single line of code is written. In her seminal 2005 case study \textcite{SegalJudith2005a} describes a collaboration between a team of researchers and a contracted team of software engineers. Ultimately 
% TODO: finish the discussion of SegalJudith2005a
% TODO: segue to reccomendation of agile development practices: http://agilemanifesto.org/

% HDF5

% SELF-DESCRIBING DATA

% OBJECT ORIENTED PROGRAMMING

% SOURCE CONTROL AND VERSIONING

% LICENSING AND DISTRIBUTION