diff --git a/docs/src/architecture/index.md b/docs/src/architecture/index.md index cbda4c46c5..62d58262ab 100644 --- a/docs/src/architecture/index.md +++ b/docs/src/architecture/index.md @@ -1,12 +1,74 @@ # Introduction -This is a placeholder for an architectural description of Open MCT Web. +The purpose of this document is to familiarize developers with the +overall architecture of Open MCT Web. + +The target audience includes: + +* _Platform maintainers_: Individuals involved in developing, + extending, and maintaing capabilities of the platform. +* _Integration developers_: Individuals tasked with integrated + Open MCT Web into a larger system, who need to understand + its inner workings sufficiently to complete this integration. + +# Overview + +Open MCT Web is client software: It runs in a web browser and +provides a user interface, while communicating with various +server-side resources through browser APIs. ```nomnoml -[ Start]->[ Load bundles.json] -[Load bundles.json]->[ Load bundle.json files] -[Load bundle.json files]->[ Resolve implementations] -[Resolve implementations]->[ Register with Angular] -[Register with Angular]->[ Bootstrap application] -[Bootstrap application]->[ End] +#direction: right +[Client|[Browser|[Open MCT Web]->[Browser APIs]]] +[Server|[Web services]] +[Client]<->[Server] ``` + +While Open MCT Web can be configured to run as a standalone client, +this is rarely very useful. Instead, it is intended to be used as a +display and interaction layer for information obtained from a +variety of back-end services. Doing so requires authoring or utilizing +adapter plugins which allow Open MCT Web to interact with these services. + +Typically, the pattern here is to provide a known interface that +Open MCT Web can utilize, and implement it such that it interacts with +whatever back-end provides the relevant information. +Examples of back-ends that can be utilized in this fashion include +databases for the persistence of user-created objects, or sources of +telemetry data. + +## Software Architecture + +The simplest overview of Open MCT Web is to look at it as a "layered" +architecture, where each layer more clearly specifies the behavior +of the software. + +```nomnoml +#direction: down +[Open MCT Web| + [Platform]<->[Application] + [Framework]->[Application] + [Framework]->[Platform] +] +``` + +These layers are: + +* [_Framework_](Framework.html): The framework layer is responsible for + managing the interactions between application components. It has no + application-specific knowledge; at this layer, we have only + established an abstraction by which different software components + may communicate and/or interact. +* _Platform_: The platform layer defines the general look, feel, and + behavior of Open MCT Web. This includes user-facing components like + Browse mode and Edit mode, as well as underlying elements of the + information model and the general service infrastructure. +* _Application_: The application layer defines specific features of + an application built on Open MCT Web. This includes adapters to + specific back-ends, new types of things for users to create, and + new ways of visualizing objects within the system. This layer + typically consists of a mix of custom plug-ins to Open MCT Web, + as well as optional features (such as Plot view) included alongside + the platform. + + diff --git a/docs/src/index.html b/docs/src/index.html index 23e92c21cb..fce129f9ce 100644 --- a/docs/src/index.html +++ b/docs/src/index.html @@ -26,8 +26,10 @@ Open MCT Web Documentation - API - Developer Guide - Architecture Overview +