This blather was typed as part of a late night sprint, and requires a lot of rework before it’s usefull. Best to skip it and focus on the requirements sections for the timebeing.
Overall picture (package diagram) of vehicle management database.
Aircraft Type Specification
The core of the Aircraft Type Specification is the SystemType. The key concept here is that a system can be composed of subsystems, which are themselves systems that can be composed of subsystems (etc). A particular aircraft type specification is a tree of nested subsystems, implemented as a recursive “parent” relationship (“pig ear”).
The top level node (which has no parent) is the aircraft type. Parentless nodes are totally unrelated from each other, and the model can hold an arbitrary number of aircraft types. Parentless nodes have no SemVer attribute, because they are abstract.
First generation nodes (with parentless parents) are concrete specifications of their abstract type. They must be semantically labeled with a non-nul SemVer attribute that is unique to the abstract type (but not globally unique, two versions may have the same SemVer attribute value if they are of a different abstract type).
Nodes of “greater than first generation” (whose parents have parents) form a subsystem hirarchy for that version of the abstract type. Where a subsystem has no children, we call it a component. Components and subsystems may optionally have non-nul SemVer attributes (why? because it’s harmless, and potentially useful).
A ComponentType is an unambiguous specification of a physical kind of thing, for example a specific make and model of camera.
A ComponentTypeAppropriateness is a rule that says a ComponentType explicitly can (or explicitly can not) be employed in the role of a SystemType. For example, a particular make and model of camera is appropriate for the payload subsystem of the robotic pod of an Acme Surveywing v0.1.4-beta.
Aircraft Types have a set of Quality Assurance Rules (QARules) that drive the behavior of checklist and maintenance systems. These may be bound to the abstract type (e.g. pilot certification), specific component (e.g. specific maintenance requirement) or any subsystem inbetween.
QARules probably form their own type hirarchy, but it requires more analysis. For example, something like this:
QARules would be critical or non-critical. Failing a critical rule prevents takeoff, failing a non-critical rule results in a warning.
Checks would be assembled into checklists that are incorporated into operating procedures.
Maintenance rules would assessed against maintenance logs, resulting in warnings/blocks before flight (preflight checklist integration), post-flight alerts of maintenance falling due as a result of operational activity, as well as fleet management views that indicating upcoming maintenance requirements.
This is like an asset register of uniquely identified physical items. The items are of ComponentType.
Note that it is possible to posess Components (in the ComponentInventory) that are of a ComponentType that is not appropriate for any aircraft type specification. i.e. any type of stuff can be recorded on the asset register, even if it’s not usefull.
This is a list of things that happened (to Components), which coresponds to QARules being followed.
This describes a fleet of aircraft. Instances of Aircraft Type Specifications.
An aircraft has a unique identity, but it is an assembly of components that can be swapped out.
A unique identifier. Registration number if you will. Note that it’s bound to a SystemType - this must be an abstract type (system with no parents), because an aircraft can not change type!
Instance bound to a first generation SystemType. Note that an aircraft can be upgraded (and downgraded) to different versions of it’s type.
Logical entities for a particular version of an aircraft, that corespond to the components (leaves) in the aircraft type specification tree. If the aircraft type specifies a subsystem with a camera component, this specific aircraft’s camera is defined as a coresponding ComponentRole.
This represents that a specific component (e.g. camera) is employed in the ComponentRole.
When components are swapped out in an aircraft, this is represented as changes to ConfigurationItems. ConfigurationItems have timestamps (“from” and “to”) and there are rules preventing contemporanious assignments of different Components to the same ConfigurationRole (and, the same component to multiple ConfigurationRoles). You can only be in one place at a time.
Rude notes from an earlier analysis session...
Private: only visible to the Team’s Chief Pilot and Safety Officer(s). Note local laws may require the Chief Pilot to report all data on certain accidents to authorities.
Public: may be published, at Chief Pilot or any Safety Officer’s discression.