System Organization

As discussed before, there are locations in the systems we do not want Traceability to be placed into production where it may impact performance. First we need to define the these systems:

Production

Production systems are any systems that is used to run the business, and / or contains sensitive information. We may also break these down into three further categories: Customer Facing, Administrative, and Verification.

Customer Facing systems are the systems that the customer directly and indirectly interact with. A website would be a system the customer directly interacts with, while an internal service that the web site calls would be a system that the customer is indirectly using.

Administrative systems are used by authorized personnel to examine and update customer data, as well as observe and maintain the Production systems.

Verification systems are a subset of the Administrative systems that have Traceability enabled which in turns allow a hyper-detailed examination of data. See Tool Design for more details.

Testing

A Testing System is a replica of the production system such that testing in this environment indicates how the systems will behave once placed into the Production environment. It will also have Customer Facing, Administrative, and Verification systems, though in this case, the Customer Facing is used by the testers, not actual customers.

Development Systems

Development systems are an ad hoc setup such that a developer may build and test new code, or fixes. This should be separate from the Testing environment so that if a developer is making breaking changes, or experimenting with some sub-system, there is no impact to the actual testing environment.

Code Deployment Locations

The purpose of defining the systems and layers is that we need to be very concerned with which layer is deployed to which system. As noted elsewhere, Traceability can have a huge impact on performance and data visibility; thus we do not want a customer to ever directly use a Traceable system.

The below graph layers out which layer should be placed into each system. I have included the Logging Layer for completeness.

LocationFunctional LayerLogging LayerTraceable Layer
Production, Customer Facing
Production, Administrative
Production, Verification
Testing, Customer Facing
Testing, Administrative
Testing, Verification
Development

Next: Functional Layer