Because students learn better when they have the benefit of individualized coaching, any software for learning should contain one or more embedded teachers. The air flight simulator, for example, should have videos of famous pilots. Now, of course, this could be done with human instructors as well, but such instructors are not always available, nor are they all-knowing. Embedding teaching in a simulation allows for the potential of publishing the expertise of multiple teachers, making an array of experts available as needed.
History is also an important component of teaching software.
History can be a real guide in learning, especially if it is presented when it is relevant to a learner's current goals, rather than as a dry series of historical vignettes.