The life-cycle development of critical systems follows mainly a V-cycle process overlapped with proofs and/or verification techniques. At the first development stage, a critical system must be, precisely, and as completely as possible described. Thus, it is recommended to use a graphical modeling language standard such as the Unified Modeling Language (UML) and the Object Constraint Language (OCL), to which both customers and developers could contribute. Then, the graphical design with its formal specification (requirements) is mapped into a complete formal development environment, using an MDE (Model-driven engineering) approach. The formal environment has to assess the development until the generation of a secure code. In this context, we propose a life-cycle development approach that combines UML/OCL and the FoCaLiZe formal environment for the secure development of critical systems. The proposed approach ensures essential development constraints such as strict boundaries and traceability between development phases. It also ensures a secure maintenance phase using partial transformation techniques from UML/OCL to FoCaLiZe. The latter enhances the transformation from UML/OCL into FoCaLiZe to support incremental development and assist developers in correcting modeling errors. The proposed approach is mostly dedicated to secure and maintainable lifecycle development processes of critical systems. The formal environment assesses the development process until the generation of a secure code. To illustrate the proposed approach, we present the stages of development of a constrained system controlling military objects. The development of this system uses the iterative, incremental, and maintainability stages as described by the development approach, until the generation of secure code.