Issues in Software Engineering for Survivable Systems