اخلاق برنامهنویسی
در این مقاله مروری بر اخلاق حرفه ای اعمال شده در برنامهنویسی رایانه و توسعه نرمافزار، به ویژه رهنمودهای اخلاقی که انتظار میرود توسعه دهندگان هنگام نوشتن کد برنامهنویسی (همچنین کد منبع نیز نامیده میشوند)، و هنگامی که به عنوان عضوی از رابطهٔ یک برنامهنویس با مشتری یا رابطهٔ کارمند و کارفرما هستند، رعایت و اعمال شوند خواهیم داشت. این قوانین هنگام ایجاد نرمافزار یا هنگام تصمیمگیری در مورد یک مسئله مهم یا حساس در مورد یک پروژه برنامهنویسی، عملکردها و نگرشهای خوب را شکل میدهند و از عملکردها و نگرشهای غلط متمایز میکند. این قوانین همچنین پایه مهارتهای تصمیمگیری اخلاقی در انجام کار حرفه ای هستند.
تاریخچه
دانشمند آمریکایی، نوربرت وینر، استاد ریاضیات و مهندسی در مؤسسه انستیتوی فناوری ماساچوست، اولین شخصی بود که پایه و اساس نوع جدیدی از اخلاق را در اواسط دهه ۱۹۴۰ ایجاد کرد. وی متوجه شد که نوآوریها و پیشرفتها در علم و فناوری، همراه با صنعت رایانه ای که به سرعت در حال رشد است، منجر به ظهور این نوع اخلاق میشود که وی آن را «سایبرنتیک» (از کلمه یونانی خلبان کشتی گرفته میشود) نامید. استفاده روزافزون از رایانهها و سایر فن آوریها مسائل اخلاقی جدیدی را به وجود میآورد که نیاز دارد با استفاده از دستورالعملهای اخلاقی مورد تجزیه و تحلیل دقیق قرار گیرد.
وینر سه کتاب نوشت که بعد از پایان جنگ جهانی دوم، پایه ای برای تقسیم اخلاقی جدید بنا نهاد. این کتابها Cybernetics(1948)، The Human Use of Human Beings(1950) و God and Golem(1963) بود که به ثبت رسیدند. با اینکه او هرگز خود را در ایجاد زمینه اخلاقی جدید؛ ندید، اما وینر مثالهای مفصلی را ارائه داد که برخی از مسائل اخلاقی و اجتماعی و پیامدهای آن را که میتوانست با استفاده از رایانه ایجاد کند، شناسایی کرد. با این حال، دانشمندان دیگر عقاید وی را جدی نگرفتند زیرا آنها وی را دانشمندی عجیب و غریب میدانستند که دربارهٔ اخلاق تخیل میورزید(Bynum).[1]
در سال ۱۹۷۶، اصطلاح جدیدی در رابطه با اخلاق، به نام «اخلاق رایانه ای»، توسط والتر مانر بر اساس ایدهها و اصول نوربرت وینر مطرح شد. مانر احساس کرد که داشتن رشته اخلاق برای صنعت رایانه درست همانطور که صنایع پزشکی و تجاری نیز در آن زمان داشتند، ضروری است. مانر همچنین این رشته را به عنوان رشتهای که «مسائل اخلاقی را که توسط فن آوری رایانه ای تشدید، دگرگون یا ایجاد میشود را مطالعه میکند» تعریف کرد (Bynum)،[1] و او حتی یک دوره اخلاق رایانه ای را طراحی کرد که میتواند به دانشجویان دانشگاه ارائه شود.
در اوایل دهه ۱۹۹۰، دونالد گاتربارن ادعا کرد که اخلاق رایانه ای را باید اخلاقی حرفه ای قلمداد کرد که میتواند قدرت هدایت به سمت توسعه و پیشرفت استانداردهای عملکرد صحیح و کدهای رفتاری را برای متخصصان محاسبات داشته باشد (Bynum).[1] وی با چندین مدافع اخلاق حرفه ای برای نوشتن رهنمودهای اخلاقی برای ایجاد کدهای اخلاقی کار کرد. او بخشی از ایجاد آییننامه اخلاق و رفتار حرفه ای را که توسط انجمن ماشین آلات رایانه ای (ACM) در سال ۱۹۹۲ تصویب شدهاست و کد اخلاقی و عمل حرفه ای مهندسی نرمافزار را که توسط موسسه مهندسان برق و الکترونیک (IEEE) و همچنین ACM تصویب شدهاست را تصویب کرد. این کدها همچنین شامل اصول اخلاق برنامهنویسی هستند.
دستورالعملهای اخلاقی برنامهنویسی
انجمن ماشین آلات رایانه (ACM) بزرگترین جامعه رایانه ای آموزشی و علمی جهان است. این انجمن کد اخلاقی خاص خود را دارد و مجموعه ای دیگر از اصول اخلاقی است که به عنوان استاندارد آموزش و تمرین مهندسی نرمافزار نیز توسط IEEE تأیید شدهاست. این کدها به ترتیب کد اخلاقی و رفتار حرفه ای و کد اخلاق و عمل حرفه ای مهندسی نرمافزار هستند، و برخی از دستورالعملهای آنها در زیر ارائه شدهاست:
برگرفته از آییننامه اخلاق و رفتار حرفه ای (ACM):[2]
- در جامعه و رفاه انسان مشارکت کنید. برنامه نویسان باید برای تولید سیستمهای رایانه ای تلاش کنند که بتواند عواقب منفی را برای جامعه کاهش دهد، مانند تهدیدات ایمنی و سلامتی، و فعالیتهای روزمره و کار را آسانتر کند. این «ایجاد تعهد برای پیشرفت در استانداردهای بالا» است (Savage).[3]
- از آسیب رساندن به دیگران خودداری کنید. سیستمهای رایانه ای تأثیر مستقیمی بر اشخاص ثالث دارند. آنها میتوانند باعث از دست رفتن اطلاعات و منابع شوند که ممکن است برای کاربران، عموم مردم یا کارفرمایان بسیار مضر باشد؛ بنابراین، توسعه دهندگان نرمافزار باید با رعایت استانداردهای طراحی و آزمایش سیستمها (کد اخلاقی و رفتار حرفه ای)، خطر صدمه زدن به دیگران را به دلیل خطاهای کدگذاری یا مسائل امنیتی به حداقل برسانند.[2]
- صادق و قابل اعتماد باشید. این اصل برنامه نویسان را تشویق میکند که هنگام نوشتن سیستمهای رایانه ای صادق باشند و از محدودیتهای خود در دانش و آموزش آگاه باشند. همچنین، اگر یک برنامهنویس میداند مشکلی در سیستم رایانه ای وجود دارد، باید فوراً آن را گزارش کند تا از عواقب نامطلوب جلوگیری کند.
- اعتبار مناسب مالکیت معنوی را بدهید. برای هر سازنده نرمافزار اجباری است که هرگز از کار شخص دیگری استفاده و اعتبار نگیرد، حتی اگر توسط قانون حق چاپ، حق ثبت اختراع و غیره محافظت نشده باشد. آنها باید کارهای دیگران را به رسمیت بشناسند و اعتبار کامل آنها را بدست آورند، و باید از ایدههای خود برای تولید نرمافزار استفاده کنند.
- به حریم خصوصی دیگران احترام بگذارید. سیستمهای رایانه ای به اشتباه توسط برخی از افراد برای نقض حریم خصوصی دیگران استفاده میشود. توسعه دهندگان نرمافزار باید برنامههایی بنویسند که بتواند از اطلاعات خصوصی کاربران محافظت کند و از دسترسی غیرمجاز سایر افراد ناخواسته به آن جلوگیری کند (قانون اخلاق و رفتار حرفه ای).
- به محرمانه بودن احترام بگذارید. مگر اینکه قانون یا هر دستورالعمل اخلاقی دیگری آن را الزامی کند، یک برنامهنویس باید هرگونه اطلاعات اضافی مربوط به کارفرمای خود را که ناشی از کار در یک پروژه است مخفی نگه دارد.
برگرفته از کد اخلاق و عمل حرفه ای مهندسی نرمافزار[4] (IEEE , ACM):
- تنها درصورتی که نرمافزار ایمن و مطابق با مشخصات باشد، نرمافزار را تأیید کنید. برنامه نویسان نمیتوانند تصور کنند که یک سیستم فقط به این دلیل که وظایف مورد نیاز را انجام میدهد؛ آماده استفاده است. آنها باید اطمینان حاصل کنند که این سیستمها نیز ایمن بوده و هر مشخصات مورد نیاز کاربر را برآورده میکنند. اگر برنامهها ایمن نباشند، کاربران از هکرهایی که میتوانند اطلاعات یا پولهای مهم را بدزدند محافظت نمیشوند؛ بنابراین، برای اطمینان از امنیت سیستم قبل از تأیید، باید چندین آزمایش انجام شود.
- مسئولیت کامل کار خود را بپذیرند. اگر برنامه ای خطایی را نشان میدهد، توسعه دهنده نرمافزار باید مسئولیت کامل کار خود را بپذیرد و باید روی تجدید نظر، اصلاح، تغییرها و آزمایش آن کار کند.
- آگاهانه از نرمافزاری که بهطور غیرقانونی یا غیراخلاقی بدست آمده یا نگهداری میشود، استفاده نکنید . اگر از سیستم رایانه ای به عنوان پایه ای برای ایجاد سیستم دیگری استفاده میشود، برنامهنویس باید اجازه چنین کاری را بگیرد. این اصل استفاده از هرگونه نرمافزار دیگر برای هر هدفی را در صورتی که روش به دست آوردن آن مشخص نیست یا غیرقانونی یا غیراخلاقی شناخته میشود، منع میکند.
- موارد اخلاقی، اقتصادی، فرهنگی، حقوقی و زیستمحیطی مربوط به پروژههای کاری را شناسایی، تعریف و پرداخته کنید. اگر یک برنامهنویس متوجه شود و تشخیص دهد که کار روی یک پروژه به هر نوع مشکلی منجر میشود، پس برنامهنویس باید قبل از ادامه آن را به کارفرمای خود گزارش دهد.
- اطمینان حاصل کنید که مشخصات مربوط به نرمافزاری که روی آن کار میکنند نیازهای کاربران را برآورده میکند و تأییدیههای مناسب را دارند. توسعه دهندههای نرمافزار باید قبل از ادامه کار در قسمت بعدی، به کارفرمایان خود مراجعه کنند و برای سیستمی که خود ایجاد کردهاند درخواست تأیید کنند. اگر این الزامها را برآورده نکند، باید در کد منبع سیستم اصلاحهایی انجام شود.
- از آزمایش، اشکال زدایی و بررسی نرمافزار اطمینان کافی حاصل کنید. برنامه نویسان باید تستهای متناسب با نرمافزارهایی را که با آنها کار میکنند، انجام دهند و برای اطمینان از صحت اجرای برنامهها، خطاها و حفرههای امنیتی سیستم را بررسی کنند.
- درگیر اقدامهای فریبنده مالی مانند رشوه، قبض مضاعف یا سایر اقدامهای مالی نامناسب نشوید. برنامه نویسان در معرض مشارکت در فعالیتهای غیرقانونی برای بدست آوردن پول قرار میگیرند. آنها به دلیل تهدیدها، مسائل اقتصادی یا صرفاً به این دلیل که میخواهند با بهرهگیری از دانش خود در مورد نحوه کار سیستمهای رایانه ای، به راحتی پول بدست آورند، درگیر آنها میشوند. این دستورالعمل درگیر کردن برنامهنویس در چنین اقدامات غیرقانونی را منع میکند.
- توانایی خود را در ایجاد نرمافزار ایمن، قابل اعتماد و باکیفیت مفید بهبود ببخشید. از آنجا که فناوری سال به سال سریعتر پیشرفت میکند و همچنین جرم مجازی نیز پیشرفت میکند، نیاز به برنامههای خوش ساخت و طراحی شده در حال افزایش است. سیستمهای رایانه ای با سیستمهای جدید و دستگاههای جدید قدیمی و محدود میشوند. برنامه نویسان باید «دانش خود را در مورد پیشرفت در زمینه تجزیه و تحلیل، مشخصات، طراحی، توسعه، نگهداری و تست نرم افزار و اسناد مربوط» (کد اخلاق مهندسی نرمافزار و عملکرد حرفه ای)[4] به منظور ایجاد قطعات نرمافزاری بهتر، بیشتر کنند.
منابع
- 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/>
- “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>
- 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/>
- “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>