مهندسی نرم افزار در سیستمهای متن باز (بخش دوم)

1.1 مدیریت بیرون دادن خروجی[1]

پروژه‌های نرم‌افزاری متن‌باز بسیاری از نسخه‌های کاری خود را با توجه به اصل "زود خروجی بده، همیشه خروجی بده"[2] به عنوان خروجی بیرون می‌دهند. اگرچه به طور معمول ساده است که بین نسخه‌های مختلف با استفاده از شماره‌ نسخه تفکیک قایل شویم اما گاهی‌اوقات درک این موضوع که یک شماره‌ نسخه چه معنی می‌دهد بسیار مشکل است. به عنوان مثال یک بیرون دادن خروجی لینوکس اینگونه توصیف شده است که "نسخه 2.4.0-test1 که در واقع همان نسخه 2.3.99-pre10-pre3 است بیرون داده شد.". با اینکه بعضی از پروژه‌ها از شیوه غریبی برای شماره‌گذاری نسخه‌هایشان استفاده می‌کنند اما به طور معمول چند نکته برجسته در این کار مشخص است:

    · عددگذاری:

    اکثر پروژه‌ها از یک شیوه عدد گذاری برای شماره‌ نسخه‌هایشان استفاده می‌کنند. به عنوان مثال عدد 2.3.20 به این معنی است که شماره‌ اصلی ۲ و شاخه‌ی‌ توسعه ۳ و نقطه‌ بیرون دادن خروجی ۲۰. بسیاری از پروژه‌ها در یک زمان ممکن است دارای چند خط توسعه باشند که در آن صورت اعداد زوج در مکان دوم شماره‌ نسخه به معنی شاخه پایدار می‌باشند و اعداد فرد به مشخص‌کننده شاخه توسعه هستند.

    · شاخه‌های توسعه

    بسیاری از پروژه‌ها شاخه‌های متفاوتی از توسعه را دارا می‌باشند و شاخه‌هایشان را پایدار (برای استفاده از محصول) و آزمایشی (مخصوص توسعه‌دهنده‌ها) می‌نامند. بعضی از پروژه‌ها حتی از سه شاخه استفاده می‌کنند مانند پروژه Debian که دارای سه شاخه پایدار، در حال آزمایش و ناپایدار می‌باشد.

    · وضعیت کاری

    نرم‌افزارهای متن‌باز اغلب از واژه‌هایی برای مشخص کردن وضعیت کاری پروژه استفاده می‌کنند: آلفا (در حال توسعه)، بتا (در حال تکمیل قابلیت)، pre (نامزدهای ممکن بیرون‌داده شدن)، RC (نامزدهای بیرون‌داده شدن)، نهایی (خروجی بیرون‌داده شده رسمی).

    · نامهای به‌صورت کد

    بعضی از پروژه‌ها از نامهای به‌صورت کد برای بیرون دادنهای اصلیشان استفاده می‌کنند که به عنوان مثال potato به جای 2.2 نمونه‌ای از آن است. نامهای به‌صورت کد برای بسیاری از پروژه‌ها وسیله سرگرمی و یا بزرگ داشتن آن است و برای بدست آوردن این نامها تلاش زیادی صورت می‌گیرد.

    · تاریخهای بیرون دادن

    بعضی از پروژه‌ها از تاریخ بیرون دادن خود به عنوان شماره نسخه استفاده می‌کنند.

    · نسخه‌های دلخواه

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

1.2 انتقال دادن

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

مدیریت وابستگیها بین بسته‌های نرم‌افزاری یک موضوع بسیار مهم در پروژه‌های متن‌باز می‌باشد. با توجه به خاصیت ذاتی پروژه‌های متن‌باز که استفاده مجدد از دیگر کدهاست، بسیاری از بسته‌ها به ده‌ها بسته‌ دیگر اعتماد می‌کنند و با فرض درست بودن آنها کار خود را انجام می‌دهند. راه‌حلهای مختلفی برای حل این مشکل توسعه داده شده است که یک نمونه آن APT است که Debian از آن استفاده می‌کند. APT قالبهای متعارفی تعریف می‌کند و با استفاده از آنها وابستگی بین بسته‌ها را تشخیص می‌دهد و قابلیت خودکار به‌روز شدن کامل سیستم را در اختیار می‌گذارد.

1.3 مستندسازی

مستندات جامع و با کیفیت یک پروژه رمز استفاده دیگران از آن پروژه می‌باشد. یک مستندسازی خوب می‌تواند وسیله مناسبی برای کسانی که می‌خواهند به یک پروژه وارد شوند، باشد تا اطلاعات کافی را در آن مورد خاص کسب کنند. مستندات به صورت ساختاری رشد می‌کنند که مبدأ آن رشد نیز معمولا کامنت‌های گذاشته شده در کدها و یا پاسخهایی است که به سوالات مطرح شده در یک گروه نامه‌نگاری داده شده است. بسیاری از پروژه‌ها مستندات بسیار ناکافی در اختیار دارند و یا اینکه سعی نکرده‌اند مستنداتی بسازند که واقعاً کارآمد ‌باشد. افراد غیر برنامه‌نویس انتظارات مختلفی از مستندسازی دارند:

    · داخلی و برخط

    افراد غیر برنامه‌نویس عقیده دارند که کمک حساس به متن و برخط حتماً باید همراه با برنامه‌ کاربردی باشد. افراد غیربرنامه‌نویس به کمک برخط به عنوان یک مرجع سریع نگاه می‌کنند، برای همین اندیس‌گذاری کمک و توابع جستجو در کمک بسیار مهم هستند. اگر یک خودآموز برخط در برنامه کاربردی وجود داشته باشد، افراد غیربرنامه‌نویس حتماً به آن رجوع خواهندکرد. افراد غیربرنامه‌نویس به "Tips and Tricks"هایی که همراه با برنامه بیرون داده شده‌است رجوع می‌کنند. افراد غیربرنامه‌نویس به خودآموزهای چاپ‌شده‌ای که همراه با نرم‌افزار بیرون داده می‌شود رجوع خواهند کرد. افراد غیر‌برنامه‌نویس هیچ‌گاه یک کتاب راجع به یک برنامه کاربردی نمی‌خرند زیرا معتقدند که کتابهای فنی مختص برنامه‌نویسان است.

    · ساده

    افراد غیربرنامه‌نویس به هیچ‌وجه راجع به جزییات توضیح نمی‌خواهند. آنها به جوابهای ساده احتیاج دارند. این افراد از وارد شدن به جزییات بیزارند؛ دستورالعمل‌های کوتاه و باقاعده را دوست دارند؛ به اطلاعاتی علاقه دارند که جواب این سوال است: "چگونه من می‌توانم فلان کار را انجام دهم"(که فلان کار یک قابلیتی است که برنامه در اختیار شما قرار می‌دهد) و اینکه افراد غیربرنامه‌نویس نمی‌خواهند اطلاعاتی راجع به اینکه قابلیت‌های سیستم چگونه پیاده‌سازی شده‌اند مشاهده کنند.

    · کامل، درست و به‌روز

    فرض افراد غیربرنامه‌نویس این است که کمک برخط در هر نسخه جدید برنامه به‌روز می‌شود. اگر قسمتی از کمک برخط وجود نداشته باشد و یا کهنه و از کارافتاده باشد این افراد دیگر از آن استفاده نخواهند کرد. اگر این فرد نتواند جواب یک سوال را در کمک برخط پیدا کند یا با پشتیبان فنی تماس خواهد گرفت و یا از یک برنامه‌کاربردی دیگر استفاده خواهد کرد.

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