Developing Software for Safety Critical Systems