ارائه‌دهنده‌ی راهکارهای نرم‌ افزارهای سازمانی
ارائه‌دهنده‌ی راهکارهای نرم‌ افزارهای سازمانی

حمایت حقوقی از اجزا و مراحل تولید نرم افزار- قسمت دوم

«قسمت دوم»

برنامه های رایانه ای، تجسمی از مراحل و سطوح مختلف انتزاعی و ذهنی است. چنانکه در میان مخلوقات ایجاد شده توسط ذهن انسان از طریق روش شناخته شده موسوم به «برنامه ریزی بالا به پایین»، نرم افزار، جایگاه منحصر به فردی را داراست و در حقیقت، تولید نرم افزار، فرآیندی است که با یک مفهوم ابتدائی آغاز شده و به صورت یک برنامۀ رایانه ای خاص، به اوج خود می رسد.

یک برنامه در ابتدا به عنوان یک هدف یا تابع مورد نظر می باشد که برنامه نویسان آن را به یک طرح اولیه توسعه می دهند. ایشان دقت و وضوح این طرح اولیه را از طریق تقسیم وظایف و عملکردهای کوچک، به طور فزاینده ای بالا می برند.

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

اکثر برنامه نویسان بخش های معینی از برنامۀ رایانه ای و مراحل انتزاعی آن را به رسمیت شناخته و تشخیص    می دهند. این موضوع تا حدودی به اقتضائات و ملزومات برنامه نویسی ایشان باز می گردد و همچنین این مراحل انتزاعی به عنوان مبنایی جهت سنجش اصالت نرم افزار به عنوان اثر مورد حمایت کپی رایت مورد استفاده قرار می گیرند. از آنجا که طبعاً این مراحل و بخش ها از ساختار ذاتی نرم افزار ناشی می شوند، اغلب ارائه کنندۀ یک چارچوب انتزاعی منسجم هستند که تجزیه و تحلیل اوصاف اساسی نرم افزار را در پرونده های نقض کپی رایت نرم افزار، تسهیل می کنند.

این مراحل انتزاعی عبارتند از : ۱- هدف نهایی برنامه ، ۲- معماری سیستم نرم افزار، ۳- انواع گوناگون داده ای انتزاعی، ۴- الگوریتم های مختلف و ساختمان های داده ، ۵- کد منبع، ۶- کد شیء(کد مقصد)

 

۲- مراحل تولید نرم افزار

 

۲-۱- مرحله نخست : تعیین هدف نهایی( اصلی) برنامه

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

۲-۲- مرحله دوم : معماری سیستم

مرحله نخست که از آن به اصطلاح از مرحله«هدف اصلی» یاد شد، اینطور توضیح داده شد که آنچه را یک برنامه انجام می دهد به آن هدف نهایی یا اصلی می گویند و حال آنکه معماری سیستم بر این اساس پا به عرصه می گذارد تا توصیف کند که برنامه، چگونه عمل می کند و در واقع به چه شکل آن هدف اصلی را انجام می دهد؟

معماری سیستم،  برنامه را از نظر ماژول های مختلف و ارتباطات درونی آنها، توصیف می کند و برنامه نویسان، نرم افزار ها را به منظور تسهیل ایجاد، اصلاح و ارتقاء برنامه رایانه ای، به صورت ماژول های مختلف، سازماندهی می کنند. هر ماژول به عنوان یک بخش مجزا از کدمنبع، ایفای نقش کرده و پیاده سازی می شود. مثلاً در یک برنامۀ مدیریت پایگاه داده های فرضی، ممکن است سه ماژول اصلی، مسؤولیت اجرای مدیریت فایل را بر عهده داشته باشند. ماژول رابط کاربر ممکن است به نوبه خود دارای یک ماژول جهت تنظیم صفحۀ نمایش و یک ماژول جهت خوانش دستورات و یک ماژول برای چاپ گزارش ها باشد. معماری سیستم اغلب به کاربر ارتباطی ندارد. برای مثال یک کاربر نه     می داند و نه توجه دارد که آیا ماژول چاپ بر روی رابط کاربر قرار گرفته یا بیرون از مجموعه به عنوان یک ماژول اصلی استقرار یافته است.

 

۲-۳- مرحله سوم : تجزیه و جدا سازی انواع داده ها  

ماژول هایی که در بر دارنده معماری سیستم هستند، مشتمل بر انواع داده ها، موسوم به انواع داده های انتزاعی تجزیه پذیر (ADTs) : (Abstract Data Types) هستند. هر( ADT ) مجموعاً به وسیلۀ دو جزء اصلی تعریف می شود. جزء اول مشتمل بر عملیاتی(operations) هستند که مجموعه ای از کارها و رویه ها (actions) که هریک می توانند با استفاده از(ADT) اجرا شوند را تعریف می کنند. جزء دوم آن دسته از (ADT) هستند که اغلب مشتمل بر انواع داه ها بوده و نوع اجزاء داده های انتزاعی را که عملیات بر اساس آن اجرا می شوند را تعریف می کنند . مثلاً در یک پایگاه دادۀ مربوط به دانشجویان حقوق، ممکن است پنجاه دانشجو در یک نوع داده باشند و مدارک ثبت نام و مدارک ثبت نام کلاس آنها می تواند در یک نوع دادۀ دیگر قرار گیرد. تجزیه داده در برنامه های رایانه ای تجاری عموماً پیچیده تر از آنی است که توصیف شد و اغلب دارای یک طبع ریاضیاتی قوی تری    می باشند. لیکن انگیزه و هدفی که پشت هر تجزیه داده یا داده انتزاعی وجود دارد، به جهت جمع آوری آن به عنوان یک نوع دادۀ معین با دستورالعمل هایی است که در کنترل و مدیریت آن نوع داده مفید فایده باشند. تفاوت نتایج میان کارکردها و اموری که این کارکرد ها بر پایه آن استوار شده،  در مرحله بعدی تجزیه داده به عنوان تفاوت میان الگوریتم ها و ساختمان های داده مجدداً آشکار می شود.

۲-۴- مرحله چهارم : الگوریتم ها و ساختمان های داده

مطابق زاویه دید تحلیلی این نوشتار، الگوریتم ها و ساختمان های داده، مجموعاً مرحلۀ تجزیۀ انواع داده یا داده ای انتزاعی را به خود اختصاص می دهند. الگوریتم ها و ساختمان  های داده به ترتیب نسخه های ویژه تری در میان عملیات و اقسام داده های (ADT) می باشند. عملیات (ADT) از جهت ایفای نقش کننده به عنوان کد منبع تابعی، بیشترین سهم را داراست و این کارکرد را از طریق مشخص کردن الگوریتم هایی که عملیات مورد نظر را انجام می دهند، محقق می کنند. به طور مشابه انواع    داده های(ADT) به طرز دقیق تری از طریق توصیف نامه ها(description) به کارگیری ساختمان داده مشخص شده است. یک الگوریتم مجموعه ای از مراحلی است که یک عملیات(ADT) ویژه ای را انجام می دهد.

در حالی که یک عملیات(ADT) صرفاً یک نتیجۀ دلخواه را شناسایی می کند، یک الگوریتم تمام مراحل لازم جهت انجام آن نتیجه را مشخص می کند .الگوریتم باید مشتمل بر جزئیات کافی جهت امکان دهی عملکرد به دستورات مندرج در کدمنبع باشد و این باید هنگامی که یک زبان برنامه نویسی و سخت افزار کامپیوتری انتخاب می شوند، مد نظر قرار گیرد.

 

۲-۵- مرحله پنجم و ششم : تدوین کد منبع و کد شیء

کد منبع، متنِ لفظی دستورالعمل یک نرم افزار است که به یک یا چند زبان برنامه نویسی نوشته می شود.کد منبع توسط برنامه نویسان قابل خواندن بوده، اما جهت اجرای یک برنامه بر روی یک رایانه، کد منبع برنامه باید به کدشیء یا کد مقصد ترجمه شود. کد شیء یا کد مقصد یک رشته از اعداد صفر و یک طراحی شده است جهت روشن وخاموش کردن سوئیچ های الکترونیکی مختلف در یک نوع مشخصی از کامپیوتر که نتیجتاً کنترل و تنظیم مفاهیم جمع آوری شده توسط برنامه نویسان با تنظیمات گوناگون سوئیچ، میسر می شود.

به حساب آوردن کد منبع و کد شیء به عنوان مراحل و سطوح تجزیه داده های انتزاعی برای اهداف و سیاست های کپی رایتی، دو موضوع مرتبط با تعاریف را به دنبال دارد. اول اینکه محسوب داشتن کدمنبع و کدشیء به عنوان مراحل وسطوح تولید نرم افزار، جهت تمایز کدمنبع از کدشیء، مناسب است یا خیر؟ ثانیاً آیا تمایز سایر اقسام کد از نرم افزار به عنوان یک مجموعۀ کلی، مناسب است یا خیر؟ کدمنبع و کدشیء هر دو در صورتی متعلق به مجموعۀ تعاریف اجزا انتزاعی نرم افزار هستند که از یکدیگر مجزا باشند و همچنین از مراحل جداسازی و تجزیه که شرح آن رفت نیز مجزا باشند.

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

و اما پاسخ به موضوع دوم، نیازمند بازنگری اجزاء انتزاعی است که در سطور پیشین از آن صحبت شد.

هدف نهایی یا اصلی، معماری سیستم، اجزاء انتزاعی، الگوریتم ها و ساختمان های داده، که فوقاً در خصوص آنها بحث شد، برای برنامه نویس حرفه ای در حقیقت انتزاعی تر از شخصیت های داستان برای یک نویسنده نیستند. با این وجود در دادگاهها این اجزاء نرم افزار صرفاً به عنوان کدمنبع ها و کدشیء ها انتزاع شده از نظریات کارشناسی صورت عینیت می یابند. یک مجموعۀ کامل از اجزاء برنامۀ رایانه ای که در آن کدهای مربوطه جاگذاری شده است، تقریباً مشابه با همان شیوه ای است که شخصیت ها و طرح یک داستان در متن جا سازی شده است. بنابراین باید توجه شود تا از سوءبرداشت کد به عنوان تجسم اجزاء در هر مرحله از تجزیه با کد که اصالتاً به عنوان یک مرحله از تجزیه برنامه محسوب می شود، اجتناب کرد.

 

۲-۶- تحلیل حقوقی مراحل و اجزاء نرم افزار

تحلیل اجزاء و مراحل انتزاعی نرم افزار که توسط قضات در پرونده های نقض کپی رایت نرم افزار صورت می پذیرد تا حدودی با تعاریف مبهم حقوقی آغاز می شود.

عمدۀ معیارهای موجود در خصوص ارزیابی اوصاف  ماهوی و اساسی نرم افزار، قادر به ایجاد یک چارچوب منسجم برای تعاریف اجزاء برنامۀ رایانه ای نیستند، لیکن در عمل به جای یک چارچوب حقیقی مورد استناد قرار می گیرد.

نیاز به تعاریفی که سبب ارتقاء سیر تکاملی انسجام یافته برای قوانین مربوط حقوق نرم افزار باشد، مشهود است. نیاز مذکور از تعاریف ناموزون و ناقص و نادرست اجزا و مراحل نرم افزار که بر پایۀ معیارها و ضوابط حقوقی موجود، شکل گرفته اند، فهمیده می شود.

عمده قواعد و معیارهای حقوقی مربوطه ، به این صورت است که هرکدام از ترمینولوژی متفاوتی استفاده کرده اند و ضوابط تعیین خط مشیء مربوط به بخش تعاریف در نظریات مربوطه، کافی و مستقل نیست. تعاریف ناقص سبب گسترش سر در گمی و ارائه تعاریف ضعیف تر شده است و تلاش دادگاه ها جهت خلق تعاریف صحیح و جامع و مانع در این زمینه ناموفق بوده است. در حقیقت به نظر می رسد در اغلب موارد، دادگاهها و تحلیل گران و مفسران این حوزه، موضوع تعریف اجزا و مراحل نرم افزار و برنامه های رایانه ای را که به عنوان صورت مسأله وجود دارد را پاک کرده اند و با لحاظ خط مشیء ها و قالب های حقوقی مجزا از اجزاء مشخص نرم افزار مبادرت به این امر می کنند. بخشی از این هرج و مرج و ناکارآمدی بدون شک ناشی از جوان بودن حقوق حمایت از نرم افزارها و برنامه های رایانه ای است. چنانکه عمر حمایت قضایی از نرم افزار ها در محاکم، به اوایل دهۀ ۸۰ میلادی باز می گردد و در مقایسه با کتاب، نمایشنامه و یا فیلم، نرم افزار در قوانین کپی رایت، تازه وارد به حساب می آید. از آنجا که نرم افزار متکی بر فن آوری های تحول یابنده با سرعت بالا می باشد، واجد مشکلات منحصر به فرد ناشی از ماهیت فنی و پیچیده نرم افزار می باشد. در نهایت نرم افزار به ویژه ابعاد و جلوه های درونی آن نظیر ساختمان های داده و اجزاء انتزاعی و مجزای آن برای حقوقدانان ناآشنا و نامأنوس است. لیکن همانطور که در این نوشتار هم شاهد بودیم تلاش هایی صورت گرفته تا از سردرگمی و ابهامی که قواعد و معیارهای ناظر بر نقض کپی رایت نرم افزاری را در بر گرفته فراتر رفته تا پاره ای از زمینه های مشترک مربوطه که دادگاهها می توانند بر اساس آن تصمیم گیری کنند را بیابد.

 نتیجه گیری :

تحلیل های مبتنی بر شباهت ها و اوصاف اساسی نرم افزارها می بایستی در ساختارهای ذاتی برنامه های رایانه ای یافت شوند. علاوه بر این هر مجموعه ای از تعاریف بخش انتزاعی نرم افزار باید تمام طیف وسیع انتزاعی و تجزیه پذیر اجزاء نرم افزار را به مجموعه قابل مدیریت و کنترل و با ثبات، همراه با قسمت های مجزا تقسیم کرده که در قالب قواعد حقوقی موجود و رویه قضایی مرسوم، قابل شناسایی و حمایت باشد. تعاریف پیشنهادی اجزا و مراحل انتزاعی نرم افزار، فراهم آورندۀ یک معیار جهت مقایسۀ قواعد مبتنی بر اوصاف اساسی نرم افزار از طریق تقسیم بندی همه جانبه ، پالایش شده و کارآمد یک برنامه کامپیوتری به اجزاء انتزاعی گسسته است. قبول این تعاریف باید به کاهش مناقشات نظری پیرامون مرز میان ایده و بیان ایده کمک کرده و از سردرگمی بیشتر در خصوص گسترش تعاریف جدید اجزاء نرم افزار جلوگیری نماید. همچنین به طور منظم و هدفمند به ترویج و ارتقاء آموزه های کپی رایتی کارآمد در این زمینه بینجامد. سایر تعاریف و تحلیل های نیز ممکن است در مواردی ترجیح داده شوند، لیکن به جز حمایت حقوقی منحصر به فرد(  Sui generis protection) برای برنامه های رایانه ای که در آینده ممکن الوقوع است، ایجاد برخی  توافقات قضایی و حقوقی در خصوص اجزا و مراحل برنامه های رایانه ای ضروری به نظر می رسد؛ زیرا بدون چنین توافقاتی، دادگاهها هرگز در شکل دادن یک قاعده و معیار جامع و مانع و صحیح که به طور گستره و عملی، احراز اوصاف اساسی نرم افزارها را بر عهده داشته باشد، موفق نخواهند شد و همچنان تعارض آراء در این زمینه به رشد فزایندۀ خود ادامه خواهد داد.

 

 

تالیف توسط دفتر حقوقی همکاران سیستم

 

منابع

 http://digital-law-online.info/misc/ogilvie.htm

http://dallaki.ir/file/DB-Karshenasi.doc

 http://sdt.bz/content/article.aspx?ArticleID=35719&page=1

http://www.wilmerhale.com/pages/publicationsandnewsdeta

  http://fa.wikipedia.org/wiki

 http://www.stlr.org/html/volume7/canfield.pdf

 http://aiia.biz/legal/consulting/protection-development

 http://tradesecretshomepage.com/code.html

حقوق مالکیت ادبی هنری، دکتر ستار زر کلام، نشر سمت، ۱۳۸۷

حقوق پدیدآورندگان نرم افزارهای کامپیوتری، دکتر امیر صادقی نشاط، نشر میزان، چاپ دوم، ۱۳۸۹

حقوق اسرار تجاری،رهبری، ابراهیم، نشر سمت، چاپ اول، پاییز ۱۳۸۸

 

دیدگاه خود را ثبت کنید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *