Software Dependability: Ensuring Reliability and Trustworthiness