第9章ソフトウェア工学
Software Engineering Ethics and Legal Aspectsソフトウェア工学の倫理と法的側面
Software engineers often spend a lot of time creating code and solutions to solve problems. While they might be the ones writing the code, that does not mean the code or the knowledge that they gained while writing the code belongs to them.
英語のヒント
ソフトウェアエンジニアは、問題を解決するためのコードや仕組みの作成に、多くの時間を費やすことが多い。しかし、自分がコードを書いた当人であるからといって、そのコードや、書く間に得た知識が自分に帰属するとは限らない。
For example, if a software engineer worked for an auto manufacturer, they might be tasked with designing and creating a futuristic product that detects the eye movement of a driver to verify they are looking forward while driving. The software might present an alert if the driver’s attention wanders from the road for longer than a given period. Generally, it would be considered unethical for this same developer to use what they learned while working for the auto company to develop their own software product that uses the same code to detect eye movement. While the software engineer might have written the code, they wrote it for the auto company, so it would be unethical to use the same code in an independent product without the auto manufacturer’s permission.
英語のヒント
たとえば、自動車メーカーに勤めるソフトウェアエンジニアが、運転者の眼の動きを検知し、運転中に前を見ていることを確認する、先進的な製品の設計と制作を任されるかもしれない。そのソフトウェアは、運転者の注意が道路から一定の時間を超えて外れたら、警告を出すものかもしれない。一般に、この開発者が自動車会社で働く間に学んだことを利用し、同じコードを使って眼の動きを検知する独自のソフトウェア製品を開発するのは、非倫理的だと考えられる。コードを書いたのはそのエンジニアであっても、自動車会社のために書いたのである。したがって、メーカーの許可なく、その同じコードを独立した製品に使うのは非倫理的となる。
Software engineers should abide by a code of ethics that guides the work that they do and the products that they produce. At a personal level, ethics for software engineers involve the following guiding principles:
英語のヒント
ソフトウェアエンジニアは、仕事と制作する製品を導く倫理規範を守るべきである。個人の水準では、次のような指針が含まれる。
• Do not use other people’s data or code for financial gain.
• 金銭的な利益のために、他人のデータやコードを使わない。
• Do not leverage other people’s proprietary information as part of a commercial project.
• 商用プロジェクトの一部として、他人の専有情報を利用しない。
• Do not use or hide the use of other people’s data or programs as part of your own projects.
• 自分のプロジェクトの一部として、他人のデータやプログラムを使ったり、使っていることを隠したりしない。
• Do not violate the privacy of others.
• 他人のプライバシーを侵害しない。
• Do not gain wrongful access to a system for financial gain.
• 金銭的な利益のために、システムへ不正にアクセスしない。
• Do not create or propagate computer viruses or worms.
英語のヒント
• コンピューターウイルスやワームを作成したり、拡散させたりしない。
• Do not create or use programs that promote discrimination or harassment of any kind.
• いかなる種類の差別や嫌がらせも助長するプログラムを、作成したり使ったりしない。
The Association for Computing Machinery (ACM) and IEEE-CS established the Committee on Professional Ethics (COPE), which published a Software Engineering Code of Ethics and Professional Practice. This code of ethics states that software engineers shall commit themselves to making the analysis, specification, design, development, testing, and maintenance of software a beneficial and respected profession in accordance with their commitment to the health, safety, and welfare of the public. The Code goes on to define eight principles that all software engineers are required to follow to possibly avoid legal consequences:
英語のヒント
Association for Computing Machinery(ACM)とIEEE-CSは、専門職倫理委員会(COPE)を設置し、この委員会は「ソフトウェア工学の倫理と専門的実践の規範」を公表した。この規範は、ソフトウェアエンジニアが、公衆の健康、安全、福祉への責務に従い、ソフトウェアの分析、仕様策定、設計、開発、テスト、保守を、有益で尊重される専門職にすることに尽力すると定めている。続いて、法的な結果を回避できるよう、すべてのソフトウェアエンジニアに従うことを求める、八つの原則を定めている。
1. Responsibility should be taken for the work done.
1. 自分が行った仕事に責任を持つ。
2. Actions should be in the best interest of a client or employer.
2. 顧客や雇用者にとって最善の利益となるよう行動する。
3. Products and updates should be created in a manner that adheres to the highest professional standards.
3. 最も高い専門的基準に従って、製品と更新を作成する。
4. Integrity should be applied in actions taken.
4. 誠実さを持って行動する。
5. An ethical approach to managing software development and updates should be maintained and promoted.
5. ソフトウェア開発と更新の管理では、倫理的な手法を維持し、推進する。
6. The integrity of what it means to be a software engineer should be maintained.
6. ソフトウェアエンジニアという職の意味を損なわず、誠実さを保つ。
7. Software engineers should be supportive of peers and colleagues in a manner that is fair.
7. 公正な形で、仲間や同僚を支援する。
8. Learning should be a continual endeavor to the betterment of the software engineer’s own profession.
英語のヒント
8. 自らの専門職をよりよくするために、学習を継続的な取り組みとする。
LINK TO LEARNING学習へのリンク
You can find the full code of ethics and professional practice on the ACM website. This includes an overall preamble (https://openstax.org/r/76ACMethics) as well as details for each of eight guiding principles.
英語のヒント
倫理と専門的実践の規範の全文は、ACMのWebサイトにある。全体の前文(https://openstax.org/r/76ACMethics)と、八つの指針それぞれの詳細が含まれている。
THINK IT THROUGHじっくり考えよう
Applying the Concepts of Ethics倫理の概念を適用する
As a software engineer, you will deal with the constant change of technology and the constant need to understand a variety of business scenarios to build solutions. Clearly, you cannot be expected to know everything.
英語のヒント
ソフトウェアエンジニアは、絶えず変化する技術に対応し、仕組みを構築するために、さまざまな事業の状況を常に理解しなければならない。もちろん、あらゆることを知っているとは期待されない。
Consider two hypothetical scenarios: In the first, suppose that a developer, when faced with a task they did not know how to do, spent days avoiding the rest of the team as they researched and read books to try to learn the new technology. They did not tell anyone they did not know the technology.
英語のヒント
二つの仮想的な状況を考えよう。第一の状況では、やり方の分からない作業に直面した開発者が、新しい技術を学ぼうと調べ物や読書をしながら、何日もほかのチームメンバーを避けていたとする。その技術を知らないとは、誰にも伝えなかった。
In the second, imagine a developer was faced with the issue of needing to code for a widget for the team to use. The issue was shared online in developer forums such as StackOverlow and CodeProject and the developer asked others to provide code to do what the widget was expected to do. While the developer did not understand what the code did, he copied what he was given and presented it to the team as his own without saying where it came from.
英語のヒント
第二の状況では、チームが使うウィジェットのコードを書く必要に迫られた開発者を想像しよう。この問題をStackOverlowやCodeProjectなどの開発者フォーラムでオンライン共有し、ウィジェットに期待される動作を実行するコードを、ほかの人に求めた。開発者は、コードが何をしているのか理解していなかったが、もらったものをコピーし、出所を明かさず、自作としてチームに提示した。
In both situations, how did the concepts of ethics apply?
それぞれの状況に、倫理の概念はどのように適用されるだろうか。