اخلاق برنامه نویسی

از ویکی‌پدیا، دانشنامهٔ آزاد

در این مقاله مروری بر اخلاق حرفه ای اعمال شده در برنامه نویسی رایانه و توسعه نرم‌افزار ، به ویژه رهنمودهای اخلاقی که انتظار می رود توسعه دهندگان هنگام نوشتن کد برنامه نویسی (همچنین کد منبع نیز نامیده می شوند) ، و هنگامی که به عنوان عضوی از رابطه ی یک برنامه نویس با مشتری یا رابطه ی کارمند و کارفرما هستند ، رعایت و اعمال شوند خواهیم داشت. این قوانین هنگام ایجاد نرم‌افزار یا هنگام تصمیم گیری در مورد یک مسئله مهم یا حساس در مورد یک پروژه برنامه نویسی ، عملکردها و نگرشهای خوب را شکل می دهند و از عملکردها و نگرش های غلط متمایز می کند. این قوانین همچنین پایه مهارتهای تصمیم گیری اخلاقی در انجام کار حرفه ای هستند.

تاریخچه[ویرایش]

دانشمند آمریکایی ، نوربرت وینر ، استاد ریاضیات و مهندسی در موسسه انستیتوی فناوری ماساچوست ، اولین شخصی بود که پایه و اساس نوع جدیدی از اخلاق را در اواسط دهه 1940 ایجاد کرد. وی متوجه شد که نوآوری ها و پیشرفت ها در علم و فناوری ، همراه با صنعت رایانه ای که به سرعت در حال رشد است ، منجر به ظهور این نوع اخلاق می شود که وی آن را "سایبرنتیک" (از کلمه یونانی خلبان کشتی گرفته می شود) نامید. استفاده روزافزون از رایانه ها و سایر فناوری ها مسائل اخلاقی جدیدی را به وجود می آورد که نیاز دارد با استفاده از دستورالعمل های اخلاقی مورد تجزیه و تحلیل دقیق قرار گیرد.

وینر سه کتاب نوشت که بعد از پایان جنگ جهانی دوم، پایه ای برای تقسیم اخلاقی جدید بنا نهاد. این کتاب ها Cybernetics(1948)، The Human Use of Human Beings(1950) و God and Golem(1963) بود که به ثبت رسیدند. با اینکه او هرگز خود را در ایجاد زمینه اخلاقی جدید؛ ندید، اما وینر مثالهای مفصلی را ارائه داد که برخی از مسائل اخلاقی و اجتماعی و پیامدهای آن را که می توانست با استفاده از رایانه ایجاد کند، شناسایی کرد. با این حال ، دانشمندان دیگر عقاید وی را جدی نگرفتند زیرا آنها وی را دانشمندی عجیب و غریب می دانستند که درباره اخلاق تخیل می ورزید(Bynum). [۱]

در سال 1976 ، اصطلاح جدیدی در رابطه با اخلاق ، به نام "اخلاق رایانه ای" ، توسط والتر مانر بر اساس ایده ها و اصول نوربرت وینر مطرح شد . مانر احساس کرد که داشتن رشته اخلاق برای صنعت رایانه درست همانطور که صنایع پزشکی و تجاری نیز در آن زمان داشتند ، ضروری است. مانر همچنین این رشته را به عنوان رشته ای که "مسائل اخلاقی را که توسط فناوری رایانه ای تشدید ، دگرگون یا ایجاد می شود را مطالعه می کند" تعریف کرد (Bynum) [۱] ، و او حتی یک دوره اخلاق رایانه ای را طراحی کرد که می تواند به دانشجویان دانشگاه ارائه شود.

در اوایل دهه 1990 ، دونالد گاتربارن ادعا کرد که اخلاق رایانه ای را باید اخلاقی حرفه ای قلمداد کرد که می تواند قدرت هدایت به سمت توسعه و پیشرفت استانداردهای عملکرد صحیح و کدهای رفتاری را برای متخصصان محاسبات داشته باشد (Bynum). [۱] وی با چندین مدافع اخلاق حرفه ای برای نوشتن رهنمودهای اخلاقی برای ایجاد کدهای اخلاقی کار کرد. او بخشی از ایجاد آیین نامه اخلاق و رفتار حرفه ای را که توسط انجمن ماشین آلات رایانه ای (ACM) در سال 1992 تصویب شده است و کد اخلاقی و عمل حرفه ای مهندسی نرم‌افزار را که توسط موسسه مهندسان برق و الکترونیک (IEEE) و همچنین ACM تصویب شده است را تصویب کرد. این کدها همچنین شامل اصول اخلاق برنامه نویسی هستند.

دستورالعمل های اخلاقی برنامه نویسی[ویرایش]

انجمن ماشین آلات رایانه (ACM) بزرگترین جامعه رایانه ای آموزشی و علمی جهان است. این انجمن کد اخلاقی خاص خود را دارد و مجموعه ای دیگر از اصول اخلاقی است که به عنوان استاندارد آموزش و تمرین مهندسی نرم‌افزار نیز توسط IEEE تأیید شده است. این کدها به ترتیب کد اخلاقی و رفتار حرفه ای و کد اخلاق و عمل حرفه ای مهندسی نرم‌افزار هستند، و برخی از دستورالعمل های آنها در زیر ارائه شده است:

برگرفته از آیین نامه اخلاق و رفتار حرفه ای (ACM): [۲]

  • در جامعه و رفاه انسان مشارکت کنید. برنامه نویسان باید برای تولید سیستم های رایانه ای تلاش کنند که بتواند عواقب منفی را برای جامعه کاهش دهد ، مانند تهدیدات ایمنی و سلامتی ، و فعالیت های روزمره و کار را آسان تر کند. این "ایجاد تعهد برای پیشرفت در استانداردهای بالا" است (Savage). [۳]
  • از آسیب رساندن به دیگران خودداری کنید. سیستم های رایانه ای تأثیر مستقیمی بر اشخاص ثالث دارند. آنها می توانند باعث از دست رفتن اطلاعات و منابع شوند که ممکن است برای کاربران ، عموم مردم یا کارفرمایان بسیار مضر باشد. بنابراین ، توسعه دهندگان نرم‌افزار باید با رعایت استانداردهای طراحی و آزمایش سیستم ها (کد اخلاقی و رفتار حرفه ای) ، خطر صدمه زدن به دیگران را به دلیل خطاهای کدگذاری یا مسائل امنیتی به حداقل برسانند. [۲]
  • صادق و قابل اعتماد باشید. این اصل برنامه نویسان را تشویق می کند که هنگام نوشتن سیستم های رایانه ای صادق باشند و از محدودیت های خود در دانش و آموزش آگاه باشند. همچنین ، اگر یک برنامه نویس می داند مشکلی در سیستم رایانه ای وجود دارد ، باید فوراً آن را گزارش کند تا از عواقب نامطلوب جلوگیری کند.
  • اعتبار مناسب مالکیت معنوی را بدهید. برای هر سازنده نرم‌افزار اجباری است که هرگز از کار شخص دیگری استفاده و اعتبار نگیرد ، حتی اگر توسط قانون حق چاپ ، حق ثبت اختراع و غیره محافظت نشده باشد. آنها باید کارهای دیگران را به رسمیت بشناسند و اعتبار کامل آنها را بدست آورند ، و باید از ایده های خود برای تولید نرم‌افزار استفاده کنند.
  • به حریم خصوصی دیگران احترام بگذارید. سیستم های رایانه ای به اشتباه توسط برخی از افراد برای نقض حریم خصوصی دیگران استفاده می شود. توسعه دهندگان نرم‌افزار باید برنامه هایی بنویسند که بتواند از اطلاعات خصوصی کاربران محافظت کند و از دسترسی غیرمجاز سایر افراد ناخواسته به آن جلوگیری کند (قانون اخلاق و رفتار حرفه ای).
  • به محرمانه بودن احترام بگذارید. مگر اینکه قانون یا هر دستورالعمل اخلاقی دیگری آن را الزامی کند ، یک برنامه نویس باید هرگونه اطلاعات اضافی مربوط به کارفرمای خود را که ناشی از کار در یک پروژه است مخفی نگه دارد.

برگرفته از کد اخلاق و عمل حرفه ای مهندسی نرم‌افزار [۴] (IEEE ، ACM):

  • تنها درصورتی که نرم‌افزار ایمن و مطابق با مشخصات باشد ، نرم‌افزار را تأیید کنید. برنامه نویسان نمی‌توانند تصور کنند که یک سیستم فقط به این دلیل که وظایف مورد نیاز را انجام می دهد؛ آماده استفاده است. آنها باید اطمینان حاصل کنند که این سیستم ها نیز ایمن بوده و هر مشخصات مورد نیاز کاربر را برآورده می کنند. اگر برنامه ها ایمن نباشند ، کاربران از هکرهایی که می توانند اطلاعات یا پولهای مهم را بدزدند محافظت نمی‌شوند. بنابراین ، برای اطمینان از امنیت سیستم قبل از تأیید ، باید چندین آزمایش انجام شود.
  • مسئولیت کامل کار خود را بپذیرند. اگر برنامه ای خطایی را نشان می دهد ، توسعه دهنده نرم‌افزار باید مسئولیت کامل کار خود را بپذیرد و باید روی تجدید نظر ، اصلاح ، تغییرها و آزمایش آن کار کند.
  • آگاهانه از نرم‌افزاری که به طور غیرقانونی یا غیراخلاقی بدست آمده یا نگهداری می شود، استفاده نکنید . اگر از سیستم رایانه ای به عنوان پایه ای برای ایجاد سیستم دیگری استفاده می شود ، برنامه نویس باید اجازه چنین کاری را بگیرد. این اصل استفاده از هرگونه نرم‌افزار دیگر برای هر هدفی را در صورتی که روش به دست آوردن آن مشخص نیست یا غیرقانونی یا غیراخلاقی شناخته می شود ، منع می کند.
  • موارد اخلاقی ، اقتصادی ، فرهنگی ، حقوقی و زیست محیطی مربوط به پروژه های کاری را شناسایی ، تعریف و پرداخته کنید. اگر یک برنامه نویس متوجه شود و تشخیص دهد که کار روی یک پروژه به هر نوع مشکلی منجر می شود ، پس برنامه نویس باید قبل از ادامه آن را به کارفرمای خود گزارش دهد.
  • اطمینان حاصل کنید که مشخصات مربوط به نرم‌افزاری که روی آن کار می کنند نیازهای کاربران را برآورده می کند و تأییدیه های مناسب را دارند. توسعه دهنده های نرم‌افزار باید قبل از ادامه کار در قسمت بعدی ، به کارفرمایان خود مراجعه کنند و برای سیستمی که خود ایجاد کرده اند درخواست تأیید کنند. اگر این الزام ها را برآورده نکند ، باید در کد منبع سیستم اصلاح هایی انجام شود.
  • از تست ، اشکال زدایی و بررسی نرم‌افزار اطمینان کافی حاصل کنید. برنامه نویسان باید تست های متناسب با نرم‌افزارهایی را که با آنها کار می کنند ، انجام دهند و برای اطمینان از صحت اجرای برنامه ها ، خطاها و حفره های امنیتی سیستم را بررسی کنند.
  • درگیر اقدام های فریبنده مالی مانند رشوه ، قبض مضاعف یا سایر اقدام های مالی نامناسب نشوید. برنامه نویسان در معرض مشارکت در فعالیت های غیرقانونی برای بدست آوردن پول قرار می گیرند. آنها به دلیل تهدیدها ، مسائل اقتصادی یا صرفاً به این دلیل که می خواهند با بهره گیری از دانش خود در مورد نحوه کار سیستم های رایانه ای ، به راحتی پول بدست آورند ، درگیر آنها می شوند. این دستورالعمل درگیر کردن برنامه نویس در چنین اقدامات غیرقانونی را منع می کند.
  • توانایی خود را در ایجاد نرم‌افزار ایمن ، قابل اعتماد و باکیفیت مفید بهبود ببخشید. از آنجا که فناوری سال به سال سریعتر پیشرفت می کند و همچنین جرم مجازی نیز پیشرفت می کند ، نیاز به برنامه های خوش ساخت و طراحی شده در حال افزایش است. سیستم های رایانه ای با سیستم های جدید و دستگاه های جدید قدیمی و محدود می شوند. برنامه نویسان باید "دانش خود را در مورد پیشرفت در زمینه تجزیه و تحلیل ، مشخصات ، طراحی ، توسعه ، نگهداری و تست نرم‌افزار و اسناد مربوطه" (کد اخلاق مهندسی نرم‌افزار و عملکرد حرفه ای) [۴] به منظور ایجاد قطعات نرم‌افزاری بهتر ، بیشتر کنند.

نقش دانشگاه[ویرایش]

دانشگاه به طور غیرمستقیم به تشکیل توسعه دهندگان نرم‌افزاری که اخلاق برنامه نویسی را دنبال می کنند کمک می کند[نیازمند منبع] به گفته دکتر استفان بلیث ، استاد علوم کامپیوتر در دانشگاه لیندنوود ، گروه علوم کامپیوتر این دانشگاه هدف خود را تشویق دانشجویان در کلاس ها قرار داده است تا در هنگام برنامه نویسی رفتارهای خوب را انجام دهند. وی اضافه می کند که استفاده از رهنمودهای اخلاقی ممکن است در سالهای اول فعالیت علوم کامپیوتر به وضوح قابل مشاهده نباشد. با این حال ، "با رسیدن دانشجو به عنوان یک استاد ارشد در این زمینه ، اطلاعات بیشتری در مورد اصول اخلاق برنامه نویسی وجود دارد که به آنها منتقل می شود زیرا این اطلاعات هنگام ورود آن ها به دنیای تجارت مفید خواهد بود" (Blythe). [۵]

دانشگاه اوهایو همچنین رشته های علوم کامپیوتر خود را در زمینه اخلاق برنامه نویسی آموزش می دهد. آنها انتظار دارند که هر دانشجو قبل از شروع برنامه نویسی ، اصول و مسئولیت های ACM را رعایت کند. همچنین لازم است دانش آموزان این رهنمودها را کامل درک و دنبال کنند (دنیای برنامه نویسی). [۶]

عواقب حقوقی[ویرایش]

نقض هر یک از دستورالعمل های ایجاد شده در آیین نامه های اخلاقی IEEE و ACM یا سایر کدها منجر به فسخ فوری عضویت در انجمن های حرفه ای خبرنگار می شود. علاوه بر این ، دکتر استفان بلیث بیان می دارد که برنامه نویسی که هرگونه نقض قانون اخلاقی را مرتکب می شود ، می تواند به دلیل روابط ضمنی اخلاقی که برنامه نویسی با قوانین تجارت ، توافق نامه ها ، قراردادها و غیره دارد ، تحت پیگرد قانونی در قوانین ایالات متحده قرار گیرد. [۵] صدمه ای که به اشخاص ثالث وارد می شود در سیستم حقوقی ایالات متحده مجازات دارد.

اشتباه عمدی مانند ایجاد رمزهای عبور ناامن یا ایجاد حفره های امنیتی در اجرای برنامه ای که می تواند امنیت و قابلیت اطمینان سیستم را به خطر بیندازد ، برنامه نویس را در معرض آزمایش قرار می دهد (Savage). [۳] مجازات های خاص که ممکن است ناشی از یک اختلاف حقوقی مرتبط به برنامه نویسی باشد ، از یک ایالت به ایالت دیگر متفاوت است. مجازات ها ممکن است از اقدامات اصلاحی ،تا تعداد معینی از ساعت کار اجتماعی یا ماه ها یا سال ها در زندان متفاوت باشد.

جستارهای وابسته[ویرایش]

منابع[ویرایش]

  1. ۱٫۰ ۱٫۱ ۱٫۲ Bynum, Terrel. “Computer and Information Ethics.” The Stanford Encyclopedia of Philosophy (Spring 2011 Edition). Ed. Edward N. Zalta, Oct. 2008. Web. 29 Sep. 2013 <http://plato.stanford.edu/entries/ethics-computer/>
  2. ۲٫۰ ۲٫۱ “ACM Code of Ethics and Professional Conduct .” Association for Computing Machinery Advancing Computing as a Science & Profession. Association for Computing Machinery (ACM). Web. 28 Sep 2013. <http://www.acm.org/about/code-of-ethics>
  3. ۳٫۰ ۳٫۱ Savage, Brandon. “Ethics for Programmers?.” BrandonSavage.net Perfect the art of software development. 12 Aug. 2009. Web. 29 Sep. 2013. <https://www.brandonsavage.net/ethics-for-programmers/>
  4. ۴٫۰ ۴٫۱ “Software Engineering Code of Ethics and Professional Practice.” Association for Computing Machinery Advancing Computing as a Science & Profession. Association for Computing Machinery (ACM), Institute of Electrical and Electronic Engineers (IEEE). Web. 28 Sep 2013. <http://www.acm.org/about/se-code>
  5. ۵٫۰ ۵٫۱ Blythe, Stephen. Personal Interview. 30 Sep. 2013.
  6. “World of Programming.” Ohio University. Web. 29 Sep 2013. <http://ace.cs.ohiou.edu/new_users/ethics.html>

پیوند به بیرون[ویرایش]