-
Notifications
You must be signed in to change notification settings - Fork 5
Technology Classification
A software system is the environment of a software engineering task. It consists of a number of separate technologies and artifacts, which are used to set up other programs and documentation. Technologies, e.g., frameworks and libraries, are reusable third party software systems that provide functionality meant to be used in different systems possibly several times. We try to put the commonly known kinds of technologies into a taxonomy and extend this basic taxonomy in our Prelude by more concrete classifiers, such as IDE.
- Application: An application is reusable in the sense of executing it in various contexts, e.g., Microsoft Office or any compiler.
- Platform: A platform provides tool support for processing languages, e.g., the Java platform.
- Library: A library contains reusable code that has to be called from ones own code, e.g., Java Swing as a whole.
- API: An API provides an abstraction layer of another technology, e.g., Java Swing's JFrame class is an interface to GUI frames.
- Framework: A framework is used to generate incomplete software, where specific functionality still has to be added by the user.
- Plugin: Plugins may extend the functionality of an existing technology such that they are added as an integral part at a later point.
- Service: A service provides very specific reusable functionality in conforming to the SOA. It can be used by multiple clients. An example here can be found in Scopevisio's architecture.
Other classifiers that may be considered in the future are interactive vs batch, Desktop vs Mobile vs Web and distributed vs non-distributed.
A system can implement a function. Thus it realizes the defined mapping from domain languages to range languages.
implements < System # Function
A system may further implement a language such that it provides capabilities to process any digital entities that are element of the language.
implements < System # Language
In the utopia any kind of software you write is actually reused. An application you write would already reuse technology or other systems. Further, technologies may already reuse existing solutions in the form of other technologies. For example, Xtext reuses ANTLR.
reuses < System # System
A system can follow the abstract instructions of software concepts in terms of usage. It may use a design or architectural pattern in its own realization.
uses < System # DesignPattern
uses < System # ArchitecturalPattern
Further, it could realize common processes itself, such as parsing or serialization.
uses < System # AbstractProcess
At last, it may realize common language constructs. It does not only have implications on the structural relationship, but also on the functionality that is provided when being used.
uses < System # Construct
Technologies sometimes do not realize concepts, but provide support such that you can use a software concept in your own system. Here, we speak of a 'deferred usage' or facilitation. Thus, if the technology is correctly used by a system, then the concepts that are facilitated are used by the system.
facilitates < Technology # DesignPattern
facilitates < Technology # ArchitecturalPattern
facilitates < Technology # AbstractProcess
facilitates < Technology # Construct
As described in Concept Classification we can identify problem spaces and solution spaces when looking at calls for papers or certain community web resources. A technology can concretely provide supporting functionality for such a problem space.
supports < System # ProgrammingDomain
Complementarily, it a technology can belong to a solution space.
belongsTo < Technology # TechnologySpace
To explain the relationship bridgesTo we have to take a look again at correspondsTo. There, we stated that two artifacts that hold the same data may be structurally similar but are elements of two different languages. This typically happens when do space traveling. Typically a technology may create a bridge from one technological space to another. For example, in JAXB you actually want to travel from your technological space JavaWare to the space XMLWare to profit from some benefits in that space. With JAXB, you can map JVM objects to XML objects. Thus, JAXB bridgesTo XMLWare_ and itself belongs to JavaWare.
bridgesTo < Technology # TechnologySpace
Any technology's implementation may be managed in some repository. Right now, a repository is a role for an addressable artifact that is deployed locally or on the web.
managedBy < System # Artifact
Any technology is deployed as a set of artifacts as soon as it is used. For example, Java libraries are typically deployed as some .jar Files at the local file system. The previous sentence already holds two pieces of information. Technologies are deployed as artifacts. Such artifacts are deployed at some local file system. The local computer is a node that is addressable through an IP or MAC address.
deployedAs < Technology # Artifact
Node < Entity
deployedAt < Artifact # Node
- How to Megamodel
- Language Description
- Concrete Syntax
- Constraints
- Semantics
- Project How To's
- Install, Build, Test, Run
- Checker Tool
- Visualizer Tool