What Software Should Engineers Consider When Designing Critical Infrastructure?