text: [Context.] The success of deep learning makes its usage more and more tempting in safety-critical applications. However such applications have historical standards (e.g., DO178, ISO26262) which typically do not envision the usage of machine learning. We focus in particular on of software artifacts, i.e., code modules, functions, or statements (depending on the desired granularity). [Problem.] Both code and requirements are a problem when dealing with deep neural networks: code constituting the network is not comparable to classical code; furthermore, requirements for applications where neural networks are required are typically very hard to specify: even though high-level requirements can be defined, it is very hard to make such requirements concrete enough, that one can qualify them of low-level requirements. An additional problem is that deep learning is in practice very much based on trial-and-error, which makes the final result hard to explain without the previous iterations. [Proposed solution.] We investigate which artifacts could play a similar role to code or low-level requirements in neural network development and propose various traces which one could possibly consider as a replacement for classical notions. We also propose a form of traceability (and new artifacts) in order to deal with the particular trial-and-error development process for deep learning.
  @cite_14: Neural networks have been used to solve a wide range of problems. Unfortunately, many of the applications of neural networks reported in the literature have been built in an ad-hoc manner, without being informed by the techniques and tools of software engineering. The problem with developing neural networks in an ad-hoc manner, using a "trial and error" or "build and fix" approach, is that successes are difficult to repeat. Building neural networks to solve specific problems using ad-hoc processes is repeatable only if there is a sufficient culture of disciplined practice and experienced people in the organisation to facilitate the process. We propose a set of methods for developing neural networks that can be used to systematically and repeatably "engineer" neural networks to solve specific problems. We explore the "design problem "for neural networks, and the problem of validating and verifying the operation and learning algorithms for neural network software. A feature of our approach is to separate the generic components of a neural network from the application specific components.
summary: There has been attempts to apply principles of software engineering (or even of engineering in general) to NNs @cite_14 . It particularly attempts to address the lack of reproducibility in the development of NNs. Even though the terminology and techniques have changed a lot since 2004, the identified problems are still relevant. Still, the solutions of the paper do not answer the need for traceability and seem to hardly match nowadays' practice.