This article relies largely or entirely on a single source. (November 2018)
An authoring system is a program that has pre-programmed elements for the development of interactive multimedia software titles. Authoring systems can be defined as software that allows its user to create multimedia applications for manipulating multimedia objects.
In the development of educational software, an authoring system is a program that allows a non-programmer, usually an instructional designer or technologist, to easily create software with programming features. The programming features are built in but hidden behind buttons and other tools, so the author does not need to know how to program. Generally authoring systems provide lots of graphics, interaction, and other tools educational software needs. The three main components of an authoring system are: content organization, control of content delivery, and type(s) of assessment. Content Organization allows the user to structure and sequence the instructional content and media. Control of content delivery refers to the ability for the user to set the pace in which the content is delivered, and how learners engage with the content. Assessment refers to the ability to test learning outcomes within the system, usually in the form of tests, discussions, assignments, and other activities which can be evaluated.
An authoring system usually includes an authoring language, a programming language built (or extended) with functionality for representing the tutoring system. The functionality offered by the authoring language may be programming functionality for use by programmers or domain representation functionality for use by subject experts. There is overlap between authoring languages with domain representation functionality and domain-specific languages.
An authoring language is a programming language used to create tutorials, computer-based training courseware, websites, CD-ROMs and other interactive computer programs. Authoring systems (packages) generally provide high-level visual tools that enable a complete system to be designed without writing any programming code, although the authoring language is there for more in-depth usage.