All existing software development process models are also outcomes of linear thinking, reductionism, and the superposition principle. With those process models, there is no upstream movement at all, so that defects introduced into the requirement development phase and the design phase will easily propagate down to the maintenance phase, and the defect removal cost will increase several orders of magnitude.         Differently, NSE software development process is nonlinear, bi-directional, and parallel with multiple tracts - there is upstream movement for correcting something wrong through backward traceability.         “There has to be upstream movement. Like the energetic salmon… experience and ideas from each downstream part of the construction process must leap upstream, sometimes more than one stage, and affect the upstream activity.” [Bro95] With the bi-directional process, design becomes pre-coding, and coding becomes further design:

Design becomes pre-coding; coding becomes further design

Direct coding from the design result

Adding two function call statements in a function during coding process

Automatically updating the design results by rebuilding the database after coding