NSM (Nonlinear Software Modeling) Based on Complexity Science
        All existing software modeling approaches use two kinds of sources with one in graphics for human understanding of a software product through high-level abstraction, and another in textual format (the source code) for computer understanding of the software product - there is a big gap between them. The obtained models/diagrams are not traceable for static defect removal, not executable for debugging, and not dynamically testable for dynamic defect removal.
        Differently, NSM (Nonlinear Software Modeling approach based on complexity science) offering HAETVE technique (to be described later) which uses one kind of source (the source code of stub programs or regular programs) for both human understanding of a software system using graphics automatically generated from the source code for high-level system abstraction represented in holistic, colorful, interactive, virtual, dynamic, traceable, and executable models/diagrams, and computer understanding of the software product using the source code, so that there is no gaps between the obtained models and the source code. The obtained models/diagrams are always consistent with the source code. When the source code is modified, all related models/diagrams will be automatically updated after re-building the database - there is no manual modification needed. The quality of the obtained models/diagrams is ensured through traceability for static defect removal, direct (through GUI operation capture and playback) or indirectly (through the source code) execution for debugging, and dynamic testing for dynamic defect removal. In this way the stub programs used for high-level system abstraction can be extended to regular programs of a software system - modeling becomes pre-implementation; the regular programs for the implementation can also be used to update the modeling results (because source code is the source for modeling) - implementation becomes further modeling.


        Isolating a sub-tree of a version comparison result here un-changed modules are shown in blue, deleted modules in brown, added modules in green, and changed modules in red

        All models/diagrams generated with NSE are dynamic - for instance, as shown above, when a user double-clicks a untested branch shown in a black point in a NSE J-Flow diagram, the diagram generator will highlight a "Best Test Path" with more untested branches through path analysis, and automatically extract its test conditions for semi-automated test case design.