Assuring Software Dependability Of Smart Systems