编程语言和软件工程

Several important programming languages developed from efforts to make programming easier to learn. Logo: Lisp-like, interpreted language + turtle graphics BASIC -- developed by Kurtz and Kemeny at Dartmouth Univ. to help undergraduates learn about computing. Karel the Robot (a pre-Pascal teaching tool by Richard Pattis) Smalltalk -- envisioned by Alan Kay as a programming language for kids. Visual-rule based simulations (KidSim, Stagecast Creator, AgentBuilder, Visual AgenTalk) Color XFORM (Image processing system) + scripting language (e.g., Lisp) -- a visual & symbolic approach at U of Wash.
展开查看详情

1.Ethics in Programming Languages and Software Engineering Programming Language Code of Ethics Social/Ethical Issues in PL : S. Tanimoto http://courses.cs.washington.edu/courses/cse341/00wi/ppt-src/Social-Ethical-Issues.ppt Software Engineering Code of Ethics J. Eveland & J. Hoffstatter www.unf.edu/~broggio/cis6516/classnotes/Talk-Software_Ethics.ppt http://www.nytimes.com/1995/03/24/us/big-doses-of-chemotherapy-drug-killed-patient-hurt-2d.html?pagewanted=all http://archive.boston.com/news/local/articles/2004/11/30/with_work_dana_farber_learns_from_94_mistakes/

2.CSE 341 S. Tanimoto Social/Ethical Issues - 2 Social and Ethical Issues in Programming Language Design Can harm be done by designers of programming languages? Support for system safety in P.L. Security policies. Who gets to program? Should languages be easy to learn or easy to use? Is there a right to literacy in programming? (to read programs? to write programs?) What part do programming languages play in ethical and unethical uses of technology? http://courses.cs.washington.edu/courses/cse341/00wi/ppt-src/Social-Ethical-Issues.ppt

3.CSE 341 S. Tanimoto Social/Ethical Issues - 3 Can harm be done by designers of programming languages? Direct harm ? Indirect harm ?

4.CSE 341 S. Tanimoto Social/Ethical Issues - 4 Software Can Kill: The Yakima Software Bug “On Saturday, January 17, 1987, the second patient of the day was to be treated for a carcinoma. This patient was to receive two film verification exposures of 4 and 3 rads plus a 79 rad photon treatment (for a total exposure of 86 rads)... The console displayed ‘beam ready,’ and the operator hit the B key to turn the beam on... the patient...reported ‘feeling a burning sensation’ in his chest. Later in the day, the patient developed a skin burn over the entire treatment area...The patient died in April from complications related to the overdose.” [from N. Leveson: Safeware, pp54-1542].

5.CSE 341 S. Tanimoto Social/Ethical Issues - 5 The Yakima Software Bug (cont) “The software problem ... is fairly well established. ...Every pass through the Set Up Test routine ...increments... a shared variable called Class3. If Class3 is nonzero, there is an inconsistency and treatment should not proceed. A zero value for Class3 indicates that the relevant parameters are consistent with treatment and the software does not inhibit the beam.” Problem: Class3 was a 1-byte variable. Adding 1 to 255 produced 0. Being treated with the Therac-25 radiation treatment machine was a bit like playing Russian roulette.

6.CSE 341 S. Tanimoto Social/Ethical Issues - 6 Who is responsible for damage caused by bugs in a program ? (a) the user (b) the author of the program (c) the compiler writer (d) the designer of the programming language the patient? the hospital? the manufacturing company? the software designer? coder? tester?

7.CSE 341 S. Tanimoto Social/Ethical Issues - 7 Emergent Language Properties That Relate to Human Errors Masterability Fault proneness understandability maintainability checkability [J. J. Horning: Programming languages for reliable computing systems, 1979].

8.CSE 341 S. Tanimoto Social/Ethical Issues - 8 Language Features Found to be Prone to Error: pointers control transfers of various kinds defaults implicit type conversions global variables Overloading variable names

9.CSE 341 S. Tanimoto Social/Ethical Issues - 9 Defensive Programming Design thoroughly Design for testability Design for safety by identifying, preventing, and checking for dangerous conditions Design test methods into the system Test during development Keep a log of testing activities Maintain testing tools as well as product code

10.CSE 341 S. Tanimoto Social/Ethical Issues - 10 Is There a Right to Program? Literacy as a human right in the 21st century Computer literacy ... What forms of programming should be accessible?

11.CSE 341 S. Tanimoto Social/Ethical Issues - 11 Learning to Program Several important programming languages developed from efforts to make programming easier to learn. Logo: Lisp-like, interpreted language + turtle graphics BASIC -- developed by Kurtz and Kemeny at Dartmouth Univ. to help undergraduates learn about computing. Karel the Robot (a pre-Pascal teaching tool by Richard Pattis) Smalltalk -- envisioned by Alan Kay as a programming language for kids. Visual-rule based simulations (KidSim, Stagecast Creator, AgentBuilder, Visual AgenTalk) Color XFORM (Image processing system) + scripting language (e.g., Lisp) -- a visual & symbolic approach at U of Wash.

12.CSE 341 S. Tanimoto Social/Ethical Issues - 12 Is Language Learnability Important from an Ethical Standpoint? Some professions create barriers to entry. Should programmers or language designers ever do this? If they do, is it ethical to do it by making languages difficult to learn? Software written so that no one but the author can maintain it can pose a risk for those who depend on the software being up to date.

13.CSE 341 S. Tanimoto Social/Ethical Issues - 13 “Religious” Attitudes in Programming Should programmers be dogmatic about language features or philosphies? Can a programmer be pluralistic about language and still hold strong convictions? How should programmers respect the tradeoffs between idealism and practicality in the choice and uses of programming languages?

14.CSE 341 S. Tanimoto Social/Ethical Issues - 14 Using Computer-Based Languages for Human Communication Social issues in language design Cultural biases Limited ontologies Visual vs non-visual (symbolic) Interface biases

15.Software Engineering Code of Ethics John Eveland John Hoffstatter CIS 6516_011 Managing Software Projects and Personnel SELECTED SLIDES FROM www.unf.edu/~broggio/cis6516/classnotes/Talk- Software _ Ethics . ppt

16.The need...

17.History and Goals IEEE Board of Governors established steering committee (May, 1993). ACM Council endorsed Commission on Software Engineering (Late 1993). Joint steering committee established by both societies (January, 1994). 4 goals: Adopt standard definitions. Define required body of knowledge and recommended practices. Define ethical standards. Define educational curricula for undergraduate, graduate (Masters), and continuing education (for retraining and migration).

18.Research Review of available computing and engineering codes: The American Association of Engineering Societies Accreditation Board for Engineering Technology ACM’s Code of Ethics for Professional Conduct The British Computer Society Code of Practice Institute for the Certification of Computing Professionals Engineer’s Council for Professional Development The IEEE Code of Ethics National Society of Professional Engineers Code of Ethics Project Management Institute Code of Ethics

19.Brief History Timeline January 1994 - International Task Force formed the Software Engineering Ethics and Professional Practice (SEEPP). July 1997 - Initial version shown to professional societies including ACM’s SIGSOFT. November 1997 - Version 3 published in IEEE-CS and ACM magazines. Version 4 presented to IEEE review process. October 1998 - Version 5.2 unanimously adopted by ACM and IEEE.

20.8 Key Principles in Published Proposal: “Software Engineering Code of Ethics” by Gotterbarn, Miller, and Rogerson (November 1997/Vol. 40, No. 11, CACM) Product Public Judgement Client and Employer Management Profession Colleagues Self

21.Principle 1: Products 1.01 Ensure adequate software specification 1.02 Understand specifications fully 1.03 Ensure you are suitably qualified 1.04 Ensure all goals are achievable 1.05 Ensure proper methodology use 1.06 Ensure good project management 1.07 Ensure all estimates are realistic 1.08 Ensure adequate documentation 1.09 Ensure adequate testing and debugging 1.10 Promote privacy of individuals 1.11 Use data legitimately 1.12 Delete outdated and flawed data 1.13 Identify and address contentious issues 1.14 Promote maximum quality and minimum cost 1.15 Follow appropriate industry standards

22.Principle 2: Public 2.01 Disclose any software-related dangers 2.02 Approve only safe, well tested software 2.03 Only sign documents in area of competence 2.04 Cooperate on matters of public concern 2.05 Produce software that respects diversity 2.06 Be fair and truthful in all matters 2.07 Always put the public’s interests first 2.08 Donate professional skills to good causes 2.10 Accept responsibility for your own work

23.Public 1.04. Disclose to appropriate persons or authorities any actual or potential danger to the user, the public, or the environment, that they reasonably believe to be associated with software or related documents.

24.Principle 3: Judgement 3.01 Maintain professional objectivity 3.02 Only sign documents within your responsibility 3.03 Reject bribery 3.04 Do not accept secret payments from the client 3.05 Accept payment from only one source for a job 3.06 Disclose conflicts of interest 3.07 Avoid conflicting financial interests 3.08 Temper technology judgments with ethics

25.Principle 4: Client and Employer 4.01 Provide services only where competent 4.02 Ensure resources are authentically approved 4.03 Only use property as authorized by the owner 4.04 Do not use illegally obtained software 4.05 Honor confidentiality of information 4.06 Raise matters of social concern 4.07 Inform when a project becomes problematic 4.08 Accept no detrimental outside work 4.09 Represent no interests adverse to your employer

26.Client & Employer 2.09. Promote no interest adverse to their employer or client, unless a higher ethical concern is being compromised; in that case, inform the employer or another appropriate authority of the ethical concern.

27.Principle 5: Management 5.01 Assure standards are known by employees 5.02 Assure knowledge of confidentiality protocols 5.03 Assign work according to competence 5.04 Provide due process for code violations 5.05 Develop fair ownership agreements 5.06 Accurately describe conditions of employment 5.07 Offer only fair and just remuneration 5.08 Do not prevent a subordinate’s promotion 5.09 Do not ask a person to breach this code

28.Management 5.01 Ensure good management for any project on which they work, including effective procedures for promotion of quality and reduction of risk.

29.Principle 6: Profession 6.01 Associate with reputable people 6.02 Promote commitment of this code 6.03 Support followers of this code 6.04 Help develop an ethical environment 6.05 Report suspected violations of this code 6.06 Take responsibility for errors 6.07 Only accept appropriate remuneration 6.08 Be accurate and honest regarding software 6.09 Place professional interests before personal 6.10 Obey all laws governing your work 6.11 Exercise professional responsibility 6.12 Promote public knowledge of the subject 6.13 Share software knowledge with the profession