The Wolfram Language provides a complete set of functions needed to compute and verify the controllability and observability properties of linear systems, as well as advanced functions that yield decompositions with desired controllability and observability characteristics.
ControllableModelQ — test whether the states are controllable from the inputs
ObservableModelQ — test whether the states are observable from outputs
MinimalStateSpaceModel — give the subsystem that is controllable and observable
InternallyBalancedDecomposition — balance state controllability and observability
StateSpaceTransform — coordinate transformation of the states of a model
JordanModelDecomposition — transform state matrix to Jordan form
KroneckerModelDecomposition — decouple fast and slow subsystems