AN INTRODUCTION TO SOFTWARE ENGINEERING AND FAULT TOLERANCE