From Domain Models to Components - A Formal Transformation Approach Towards Dependable Software Development