The process of software development is usually described in terms of a progression from the project planning to the final code, passing through intermediate stages such as requirement analysis, system design, coding, system testing, and maintenance. One important aspect of these requirements concerns the reliability of the software. The use of computers for life-critical systems demands extremely high reliability of the computing functions as a whole. The consequences of negative results from unreliable systems and software are becoming public knowledge every day. Since these situations create a negative image for computer professionals and since these episodes create an environment of nontrust for the discipline, a good look at the ethical issues in software engineering is necessary. In this chapter, we look at each of the software engineering steps and the important aspect of their reliability and safety in the analysis, design, and implementation of software. We also examine the ethical aspects of the software and system development.