Design of RedFlame

This document describes the design of RedFlame version 0.1.1.

Instructions

Create an introductory paragraph or more that describes your application at the highest level. Several docs include this intro; the Design doc, User Guide, Manpage and this Top level index page. Modify contents in docs/src/include/introduction.rst and then eliminate this admonition from there.

RedFlame is a high performance application that …

This document is primarily for developers maintaining the application itself, however, other interested developers and engineers may find it useful.

User Story

As a user of RedFlame, I want to:

  • TBS

  • TBS

  • TBS

Design Goals

Important application design goals and constraints:

  • Goal 1

  • Goal 2

System Context

Instructions

In this section describe the application’s position in the context of a larger system of applications, if such is the case. Then eliminate this admonition from the design-doc.rst file. If your application is more of a standalone application then just delete this section, as the next section covers application context.

RedFlame is a high performance C++ application that is part of a larger system.

System Context View

Figure: System Context View

Be aware that the above figure is a simplified approximation of the actual system.

Application Context

Instructions

In this section describe the application’s view of its processing context. Create or modify the following diagram to agree with your app. Then eliminate this admonition from the design-doc.rst file.

The following figure shows RedFlame’s view of its processing environment.

Application Context Diagram

Figure: Application Context Diagram

<Add text describing context. Should mention all items shown on context diagram.>

Interfaces

RedFlame communicates with several external components over several interfaces. This section briefly identifies those interfaces and the type of messages associated with each.

As seen in the application context diagram above, RedFlame interfaces with the following external components:

Interface 1

  • Protocol

  • Messages

Interface 2

  • Protocol

  • Messages

Design

The design is a C++ single process application with multiple threads. C++ is used due to its performance characteristics. This section presents the major design elements.

<Add more description>

Processing Flow

<Describe processing flow to agree with diagram>

Processing Flow

Figure: Processing Flow

Instructions

A sampling of important design elements are given below and should be discussed in most any design. Eliminate those that are not appropriate for your application. Add elements that might be missing. Note that you must add your own elements that focus on the significant processing which is the purpose of your application. For example a satellite processing application might have a design element called SatelliteManager.

Command Line

TBS

Startup/Shutdown

TBS

Logging Design

TBS

Memory Management

TBS

Global Data

TBS

Threads

TBS

Security

TBS

Timers

TBS

Properties

TBS

Configuration

TBS

Error Handling

TBS

Error Sequence Diagram

Figure: Error Sequence Diagram

State Management

TBS

State Diagram

Figure: State Diagram

Statistics

TBS

Persistence

TBS

Library General

TBS

Library CODEC

TBS

CRC Cards

This section presents the high level identification of the major classes in RedFlame. First a static UML class diagram is presented. Then each major class, in its own paragraph is presented using the CRC cards design methodology.

CRC cards is succinct methodology for object oriented designs where CRC stands for classes, responsibilities, and collaborations. CRC cards are used to discover, collect and document class information. Using CRC cards, each card represents a class and its properties, and is shown in its own paragraph. See Extreme Programming CRC Cards or wikipedia.

Static Class Diagram

Figure: Static Class Diagram

LogManager CRC Card

TBS

ErrorManager CRC Card

TBS

Quality Attributes

This section identifies the quality attributes that are most important in this design. The first group of elements are considered the higher priority concerns for the design of this application.

Instructions

Modify this section appropriate for your application.

Correctness
Usability
Readability
Maintainability
Completeness
Performance

The following quality attributes are less of a concern in this design:

Timeliness
Reliability
Robustness
Efficiency
Capacity
Scalability
Compatibility
Interoperability
Integrity/Security
Adaptability
Configurability
Accuracy
Repeatability
Buildability
Flexibility
Portability
Reusability
Testability
Understandability

Collateral Design

Language

Implementation language is C++.

Building

Uses the standard project build architecture.

COTS

Links with COTS gRPC community library.

Packaging

Packaged as an RPM.

Automated Unit Testing

Classes are unit tested using the COTS doctest framework.

Automated Component Testing

TBS

Automated Integration Testing

TBS