Design and Implementation of Reliable Software