Computer ethics is about principles related to behaviour and decisions made by computer professionals and users, including software engineers, operators, managers, policy makers, as well as educators and students. This means all these people involved should be supported with some “policies for ethical conduct” i.e. policies that guide their actions and increase adequacy of the decisions they make .
Three ways of reaching these can be typically met (in spite of everyday education and personality development):
- publishing and promoting codes of ethical conduct like ACM/IEEE Software Engineering Code of Ethics and Professional Practice ;
- assuring appropriate approaches and techniques in software engineering, like risk reducing or ethical impact analysis ones ;
- systematic and ordered case analysis that introduces and teaches “good ethical judgement and decision making” . This approach is seen as a kind of pattern recognition as its core is to support detecting ethical situations, see what is right and what is wrong and make the decisions.
However, why shouldn’t we take a step further and establish a set (or sets) of ethical behaviour patterns, lessons drawn from actual situations and good practices, that could be identified and applied throughout a software lifecycle?
Software patterns are a recent software engineering problem-solving discipline that emerged from object- orientation and formal specifications. A typical definition of a pattern names it “a proven solution to a problem in a context” while Coplien proposes “a recurring structural configuration (i.e. a rule to configure) that solves a problem in a context, contributing to the wholeness of some whole, or system, that reflects some aesthetic or cultural value”. It is typical to define patterns within a framework
- Pattern name – an identifier tha characterises the problem
- Problem and its context targeted aims
- Context of the, possibly repeating, situation.
- Forces (tradeoffs) that introduce circumstances and limitations
- Pattern proposed solution
- Results and consequences of applying the pattern proposed solution
- Known pattern applications – this increases confidence in its usage
and classify them into several categories    : analysis patterns, design patterns, architecture patterns and application frameworks. In the sequel, the advantages of representing practical knowledge and experience as codified patterns make the technique be applied not only to software development but also to organisational and managerial problems thus making organisational and project management patterns (by the way, isn’t this idea very close to the concept of holons in SSM  ?) Two examples (taken from an impressive list in ) are SizeTheSchedule developed to prevent from overly ambitious or too general schedules, and TeamPerTask intended against big diversions of project teams that threaten to disrupt the ongoing work and temporarily halt progress.
We can easily think of some patterns of ethical behaviour and decision making that describe the suggested behaviour in software engineering – as in project management process, for instance
- AssessFS could be aimed at taking decision of evaluating objectivity of a feasibility report which is delivered by an external company,
- PerformExtendedAnalysis intended to identifying if the ethical impact analysis should be performed,
- InformClient devoted to answering questions if and when throughtout the life-cycle a customer should be informed about the project progress and problems,as in systems usage and maintenance, for example
- AssisstInE-mailDilemma could be aimed at supporting decisions of Rogerson’s computing officer having supervisor privileges while a crisis arises .
Thus a pattern language for project management problems (which is understood as an outline of ways that the patterns can be put together ) could be meaningfully extended with the ethical behaviour patterns. The more, typical situations in a project lifecycle where patterns apply could be identified as well.
The paper presents the idea of software and organisational patterns in more details. It introduces a concept of ethical behaviour and decision making patterns, brings examples of their specification and puts a proposal to enrich the project management and organisational pattern language with a set of ethical patterns that can be applied along system and project lifecycle. The paper ends with stressing possible concerns about codifying and applying “ethical solutions” and relates the idea to seeking ethical dimensions within previously set patterns in software engineering and project management.
 Bynum T.W., Rogerson S.: Computer Ethics and Professional Responsibility. Blackwell Publ., 2003
 Checkland P., Scholes J.: Soft Systems Methodology in Action. J. Wiley & Sons, 1990
 Coplien J.O.: Software Patterns. Bell Laboratories. http://hillside.net/patterns
 Flower M. Analysis Patterns, Addison-Wesley Publ. Comp, 1997.
 Gamma E., Helm R., Johnson R., Vlissides J.: Design Patterns. Addison-Wesley Publ. Comp., 1995.
 Gotterbarn D.: Reducing Software failures: Addressing the Ethical Risks of the Software Development Lifecycle. Proc. of the 5th International Conference on The Social and Ethical Impacts of ICT ETHICOMP 2001, Gdansk, June 2001, vol. 2, pp. 10 – 19.
 Moor J.H.: What Is Computer Ethics? http://www.southernct.edu /organizations/rccs/.
 Rogerson S.: What Is Computer Ethics; Computing the Social Cost. Slides. CCSR, De Montfort University, Leicester, UK
 Software Engineering Code of Ethics and Professional Practice. ACM/IEEE-CS Joint Task Force on Software Engineering Ethics and Professional Practices. http://www.acm.org/serving/se/code.htm
 Szejko S. (ed): Software Development Methods (in Polish). MIKOM, Warsaw 2002.