High-quality development of critical systems poses serious challenges. Formal methods have been proposed to address them, but their use in industry is not as widespread as originally hoped. This chapter proposes to use the Unified Modeling Language (UML), the de-facto industry standard specification language, as a notation together with a formally based tool-support for critical systems development. The authors extend the UML notation with new constructs for describing criticality requirements and relevant system properties, and introduce their formalization in the context of the UML executable semantics. Furthermore tool-support concepts for this approach are presented, which facilitate transfer of the methodology to industrial applications.