Ethics is recognised as an important concern in the development and operation of software systems. While there are codes of ethics and sets of ethical principles available to software professionals, there is a lack of tool and process support for systematic ethical deliberation at most stages of the software lifecycle. To create and deploy ethical software, it is vital that ethical concerns of software systems are reflected in their artefacts, such as requirements, software architecture, code and test suites, and that software professionals are supported in considering the ethical as well as technical consequences of their decisions. This paper reports on some early work in identifying the challenges of ethical decision making and opportunities for addressing these challenges in the context of software engineering.