معماری نرم‌افزار براساس پروژه‌های متن‌باز

اینم یه تجربه پراکنده دیگه!

این روزها متاسفانه خیلی شلوغ بوده و من اونقدر درگیر بودم که نتونستم به تعهد شخصیم یعنی نوشتن دو متن در هفته و در بدترین حالت یک متن در هفته پایبند باشم. اما بالاخره امروز گفتم که بنویسم.

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

اما به نظر من برای اینکه بتونید از راه‌حل‌های متن‌باز به خوبی استفاده کنید باید یه سری ویژگی رفتاری در خودتون ایجاد کنید تا بتونید انتخاب کنید:

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

حالا یه نمونه موردی از کار خودم رو بهتون می‌گم:

صورت مساله پروژه اینه که رو UDP یه سری پکت دریافت کنه و بعد از محاسبات نتیجه رو برای یه سمت دیگه روی TCP ارسال کنه. مهم اینه که با حداقل delay و حداکثر کارایی این کار رو انجام بده. همچنین در پس زمینه اطلاعات رو روی DB هم ذخیره کنه. زبان برنامه نویسی در این حال c++ بود. حالا چیزای یکه من پیدا کردم ایناست:

  • یه راه حل خیلی خوب برای مدیریت سوکت سرور و همزمانی Boost هست که بسیار خوبه و خیلی عالی کانکشن ها و همزمانی و این چیزا رو مدیریت می‌کنه.
  • برای پایگاه داده از SOCI استفاده کردم
  • برای ThreadPool از یک ThreadPool متن باز که الان یادم نمی‌یاد آدرس گیت‌هابش رو دانلود کردم
  • برای مدیریت پارامترهای خط‌فرمان باز هم از Boost استفاده کردم

این باعث شد که من کمتر از نصف زمان لازم برای توسعه این نرم‌افزار زمان صرف کنم.

همین!

5 دیدگاه در “معماری نرم‌افزار براساس پروژه‌های متن‌باز

  1. mrzkhd می‌گوید:

    خوب و مختصر بود.
    بنظرم هرچه پست ها کوتاه تر باشه مخاطب بیشتر اون رو دنبال می کنه.
    به شخصه احساس می کنم استفاده از بستر متن باز خیال آدم رو از خیلی جنبه ها راحت می کنه، نه فقط تنها از اون جنبه که همه فکرش رو می کنن.
    ترسیدن از یونیکس و لینوکس رو هم خوب اومدی! بنظرم یه چکیده لینوکسی بذاری ملت راه بیوفتن ثواب داره D:

    • ay می‌گوید:

      خوشحالم که مفید بوده!
      تولید محتوای آموزشی در لینوکس هم کار آسونی نیست جادی یه مجموعه فیلم آموزش lpic 101 درست کرده که مقدمه خیلی خوبی به لینوکس هست. پیشنهاد میکنم اونها رو ببینی.

  2. vahid می‌گوید:

    جالب بود .
    هر فردی حداقل در زمینه فعالیت کاری خودش باید با اکثر روش ها آشنا باشه.”از یادگیری نترسید”
    تا بتونه از بین آنها بهترین و روشن ترین مسیر رو انتخاب کنه که باعث صرف جویی در هزینه ها میشه.
    ارادت
    ممنون

    • ay می‌گوید:

      ممنون

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

  3. vahid می‌گوید:

    شاید بخاطر این می باشد که با تمام ابعاد آن انتخاب ها آشنا نیستیم .
    و این آشنایی با ابعاد تاوان دارد . ولی یکبار برای همیشه است .
    به نظر بنده داشتن حق انتخاب دست اشخاص را باز میکنه .
    <>

دیدگاهتان را بنویسید

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