Regarding the role of software engineering in the development of different types of e-learning systems, a traditional situation is contrasted with a modern state of the art. Traditionally, these systems, especially the intelligent tutoring systems (ITS) or artificial intelligence in education systems (AIED), are developed as research projects (Harrer & Martens, 2006). This means a comparably small group of people is involved in system development; the systems are developed with a research focus and not with respect to reusability, maintenance, robustness, or extensibility. The systems usually are not sold or used over long periods of time. In recent years, e-learning systems have reached maturity. Several e-learning systems are available as software products. They have left the stage of pure research and can now be found in relation with the buzzwords “everyday and lifelong learning.” In particular generic e-learning systems, in contrast to the more research oriented ITS, are nowadays often developed based on software engineering techniques.
Key Terms in this Chapter
Refactoring: Refactoring is used to restructure existing software regarding aspects like modularity, flexibility, and extensibility, without changing the main software functionality.
Patterns: Patterns (in the computer science sense) describe best practice solutions and different realization variants of a special group of systems. Patterns are abstractions from concrete forms. Examples are architecture patterns, design patterns, and process patterns.
Reference Architectures: Reference architectures specify the main parts of a system (i.e., similar fundamental structures) and their relationship for a special group of systems.
Software Engineering: To engineer the development of software comprises a rigorous analysis and design of the product, the application of formal methods in the development process an in the resulting product description, and modularization of the relevant parts of the software to allow for malleability and for reusability. Different participating parties have different concerns regarding the resulting product, for example, different views on the software. These concerns have to be taken into account. During the software development, different levels of abstraction are required and facilitate the development process. Correctness of the resulting product, as well as reliability, is supported by carefully engineered software systems. Examples for software engineering techniques in e-learning are project management systems, reference architectures, different kinds of patterns, learning design, frameworks, component based design, refactoring, and also standards, meta data descriptions, and ontologies.
E-learning Systems: In the broad sense, the term e-learning comprises all kinds of electronically supported learning. In a narrow sense, in which it is often used in research, it comprises all kinds of computer based learning systems, like for example computer based training (CBT), Web-based training (WBT), adaptive hypermedia (AH), intelligent tutoring systems (ITS), training simulations, game-based learning systems, and so forth.
Frameworks: Whereas reference architectures and patterns describe systems at a conceptual level, frameworks are used to describe systems at the programming level. Frameworks are used to specify software.