Rigorous development process of a safety-critical system: from ASM models to Java code