لایسنز(License) ابزارها و نرمافزارهای توسعه
لایسنز(مجوز) چیست و چه اهمیتی دارد؟
هیچ وقت به نرمافزارهایی که استفاده میکنید و لایسنز اونها توجه کردهاید؟
اینکه چطور ممکنه روی نتیجه کار شما تأثیر گذار باشند؟
آیا میدانید در چه شرایطی میتوانید سورس کد خود را نگه دارید و در چه شرایطی باید آن را نشر دهید؟
در دنیای آزاد نرمافزار باید در این مورد اطلاعات کافی داشته باشید،
-وقتی کاری را انجام میدهید:
میخواهید آن را نشر دهید(منظور محصول نیست بلکه سورس کد آن است!)
یا اینکه سورکد مختص شما است، میخواهید آن را حفظ کنید و از آن برای مقاصد تجاری استفاده کنید.
-وقتی میخواهید رزومه کاری در دنیای واقعی به شرکت ها ارائه کنید.
در دنیای نرمافزار لایسنز های متعددی وجود دارد مثل:
GPL(GNU Public License), GPL2, GPL3, LGPL و ورژنهای دیگر آن, MPL(Mozilla Public License) and so others
پس اگر در نظر دارید کاری را شروع کنید به ابزار هایی که میخواهید استفاده کنید(نه در باره قابلیت آنها) بلکه در مورد لایسنز آن دقت کنید!
بعضی از این لایسنز ها قابل ادغام با یکدیگر نیستند، به این معنا که نمیتوان یکی یا چند لایبرری را همزمان در یک محصول واحد لینک یا همگردانی کرد.
این متن مرتبط و در ادامه مطلب چالشهای پیش روی توسعه گران نرمافزار است.
این نوشته به قلم نویسنده بلاگ بوده، ترجمه یا کپی نیست و تمام حقوق مادی و معنوی آن برای این سایت و نویسنده آن محفوظ است.
سرور ها و سرویسهای مقیم در شرکت
ممکن است شما در حال برنامه ریزی سرویس خاصی در مجموعه خود باشید که به مشتریان شما به صورت آنلاین سرویس میدهد، در نتیجه هزینه اولیه سرور ها بر عهده شما است در این مورد انتخاب ابزار مناسب از اهمیت ویژهای برخوردار است! زیرا با رشد کاربران سختافزار به بیشتری برای سرویس دهی نیاز دارید، پس انتخاب صحیح منجر به هزینههای کمتر نیز میشوند!
زبانها و ابزار های مختلف وابستگی های خود را یدک میکشند! مثلا در مورد .Net شما همیشه وابسه به ویندوز هستید فارغ از مسائل حقوقی استفاده از ویندوز در ایران و نگرانی های متعدد از بابت ویروس، تروجان و بدافزارها و محافظت آن، سیستم عامل ویندوز به خودی خود میزان قابل توجهی از Ram و Cpu را قبلا تصرف کرده ماشین مجازی اجرای نرمافزار خود را هم با آن جمع کنید، مقیاسی فراهم کنید که هر کاربر یه چه میزان از منابع سیستم برای سرویسدهی نیازمند است سپس آن را بر میزان استفاده نشدهی منابع سیستم تقسیم کنید نتیجه معمولا غافلگیر کننده است مخصوصا وقتی پای تعداد بیشماری کاربر در میان باشد.
درحالی این مطالب عنوان میشود که تکنیک های جدیدی جهت ذخیرهسازی شناسایی سشن(Session یا نشست) کاربران که تمامی اطلاعاتی که وی را در مجموعهاشان قابل شناسایی میکند را سمت سیستم وی ذخیره میکنند، که اصطلاحا SessionLess نامیده میشود.
در خصوص میزان نیاز نرمافزار به سخت افزار تنها کاربر یا مشتری نیست که با این چالش روبرو است گاها در پی بعضی تغییرات در ت گذاری های داخلی شرکت سرویسها در شرکت بومی سازیمیشوند پس برنامه ریزی و انتخاب صحیح همچنان یک مسأله مهم است.
این متن مرتبط و در ادامه مطلب چالشهای پیش روی توسعه گران نرمافزار است.
این نوشته به قلم نویسنده بلاگ بوده، ترجمه یا کپی نیست و تمام حقوق مادی و معنوی آن برای این سایت و نویسنده آن محفوظ است.
سرورها و سرویسهای مقیم در مجموعه مشتری
در صورتی که نرمافزار مقصود شما یک سرویس باشد به این شکل که روی یک سرور اجرا میشود باز هم مسائلی پیش رو دارید!
تهیه یک سرور برای مشتری با هر هزینهای با توجه به قابلیت های نرمافزار شما قابل توجیه است اما نه برای یک مشتری در حال رشد، به این معنی که روز اول مشتری را برای خرید یک سرور با مشخصاتی خاص راضی میکنید، با رشد کاربران آن مجموعه سرور قادر به پاسخگویی به درخواستهای مشتری نیست، انتخاب های بیشماری پیش روی شماست مثلا افزودن سرور، در این مورد کلاسترینگ دیتابیس و فایلهای مربوط به نرمافزار و همسانسازی پردازش ها چالشی عظیم پیش روی شما قرار میدهد که البته در مواردی اجتناب نا پذیر است و از سوی دیگر درصورتی که امکان آن توسط شما و ابزارهایتان مقدور نباشد هزینه چند برابری را برای مشتری رقم میزنید که البته در بازار یابی های بعدی شما تأثیر سؤ خواهد داشت!
در این موارد هنوز تأکید بر این است که از ابزار هایی برای توسعه استفاده کنید که در دراز مدت نیاز به افزایش قابلیت های سخت افزاری مثل RAM و CPU نداشته باشند البته نیاز های ذخیرهسازی مبحث دیگری است که راه حل های متفاوتی دارند.
این متن مرتبط و در ادامه مطلب چالشهای پیش روی توسعه گران نرمافزار است.
این نوشته به قلم نویسنده بلاگ بوده، ترجمه یا کپی نیست و تمام حقوق مادی و معنوی آن برای این سایت و نویسنده آن محفوظ است.
حداقلها و نیازمندیهای نرمافزاری
آیا در مورد سخت افزار مشتریان یا کاربران خود اطلاعاتی دارید؟
در اغلب موارد مشتریان شامل شرکت ها ادارهجات دولتی یا شرکتهای دیگر هستند تا کاربران خانگی.
فرض کنید با یک قرار داد وارد مجموعهای میشوید که تعداد کاربران آنها از ۲۰ کلاینت بیشتر باشد، در این صورت اگر سختافزار های آنها قابلیت اجرای نرمافزار شما را نداشته باشد یا مثلا اجرای نرمافزار به شکل خستهکننده و ملال آوری کند باشد!!! نمیتوان مشتری را وادار به پرداخت هزینهای چنین بالا جهت استفاده از نرمافزار کرد، بعلاوه در برخی موارد مشتری یا کاربر نیازمند استقرار و استمرار این سیستمها برای کار با نرمافزاریهایی است که از پیش تهیه شدهاند.
در چنین مواردی پشتیبانی و قابلیت اجرای محصولات روی سختافزارهایی با قابلیتهای پایین باید دیده شود!
لذا پیشاپیش از میزان نیاز سختافزاری ابزاری که با آن اقدام به تولید محصول یا نرمافزار میکنید اطلاعات کسب کنید!
البته نباید فراموش کرد نرمافزاهای خاص نیاز به سختافزار خاص نیز دارند مثلا در مورد نرمافزار های گرافیکی تهیه سختافزار مناسب برعهده مشتری یا کاربر است.
در این مورد ابزار هایی که برای شما کد ماشین تولید میکنند مناسب تر هستند تا نرم افزار هایی که نیاز به ماشین مجازی دارند در اغلب موارد منابع سیستم توسط سیستم عامل یا همان سکو به شکل غیر قابل باوری تصرف شده اند(در مورد سیستمهای قدیمی) و یک ماشین مجازی مثل Java یا .Net میتواند کابوسی را به بار آورد.
تفاوت در آنجاست که نرمافزارهایی که با .Net یا Java فراهم میشوند نیاز به یک ماشین مجازی دارند که باید از قبل روی سیستم مشتری نصب باشد، که البته باز هم شرایط دیگری پیش می آید مثلا تصور کنید ویندوز Xp با نسخههای قدیمی که سازمان برای اجرای نرمافزار های قدیمی خود وابسته به آن است و نسخهای از .Net که روی آن نصب نمیشود. البته در این میان(نرمافزارهای نیازمند به ماشین مجازی VM) گوی سبقت در دست Java است چون معمولا بدون درنظر گرفتن نسخه سیستم عامل و قابلیتها یا محدودیتهای آن به صورت موفق نصب و اجرا میشود(صرف نظر از سرعت و سهولت کار با محصول حین اجرای آن روی ماشین کاربر)
اما در صورتی که محیط توسعه، زبان برنامه نویسی، ابزار (یا هر عنوانی که مطبوع شماست) شما کد ماشین تولید کند که بدون واسطه روی سکو(سیستم عامل) و مستقیم بر روی CPU اجرا شود بسیاری از این چالش ها پیش روی شما نیست! مانند :
C/C++/Qt/GTK/Freepascal+Lazarus
در مورد زبانها و محیطهای ذکر شده بالا غیر از فریپاسکال و لازاروس مابقی از زبانهای سی و سیپلاسپلاس استفاده میکنند بعلاوه ویجتست های فراهم شده توسط لازاروس امکان انتخاب سکوی اجرا و همچنین ویجتست مطبوع شما را فراهم کرده شما یکبار نرمافزار خود را نوشته و تهیه کردهاید، میتوانید نرمافزار را برای ویندوز با ویجتست Win32 / GTK /Qt در لینوکس با ویجتست GTK/Qt و در مکاواس با ویجتست های GTK/Cacao همگردانی مجدد کنید بدون آنکه تغییری در ساختار نرمافزار ایجاد کنید.
این متن مرتبط و در ادامه مطلب چالشهای پیش روی توسعه گران نرمافزار است.
این نوشته به قلم نویسنده بلاگ بوده، ترجمه یا کپی نیست و تمام حقوق مادی و معنوی آن برای این سایت و نویسنده آن محفوظ است.
اهمیت انتخاب سکو(سکوی هدف)
از آنجایی که انتخاب یک سکوی هدف اهمیت بالایی در بازار یابی دارد(میزان احتمالی نشر و فروش معادل تعداد کاربران آن سکو است) درصورتی که ابزار متناسبی را اختیار کنید شما در چند سکوی مختلف مشتریانی را به خود جلب خواهید کرد.
تصور کنید شما همزمان میتوانید مشتریهایی در سکو های لینوکس، ویندوز، مک و دیگر سکو ها داشته باشید بدون آنکه لازم باشد در کار خود تغییرات زیادی اعمال کنید یا بابت بدست آوردن مشتریان یک سکو مجبور به بازنویسی کد ها خود با زبان دیگری شوید یا بد تر از آن مشتری را مم به استفاده سکویی کنید که کاربران آن مجموعه ممکن است حداقل آشنایی با آن را نداشته باشند.
در این میان Java یک ابزار قدرتمند به شمار میآید.
این متن مرتبط و در ادامه مطلب چالشهای پیش روی توسعه گران نرمافزار است.
این نوشته به قلم نویسنده بلاگ بوده، ترجمه یا کپی نیست و تمام حقوق مادی و معنوی آن برای این سایت و نویسنده آن محفوظ است.
چالشهای توسعه نرمافزار
در دنیای مدرن و رو به پیشرفت برنامه نویسی و توسعه نرمافزار چالشهای پیچیدهای روزانه ذهن توسعه گران را درگیر خود میکند!
ابزارهای توسعه نرمافزار، سکوهای اجرای نرمافزار، محدودیت ها و البته قابلیتهای این ابزار ها!
در این مجموعه مواردی عنوان شده که بیشتر ذهن را به توسعه نرمافزارهای تجاری سوق میدهند اما توسعه نرمافزارهای آزاد نیز همین چالشها رو پیش رو دارد. لذا درمواردی کاربر و در مواردی مشتری جهت اشاره به کاربران انتخاب شده.
محبوبیت نرمافزارها یا ابزارهایی که توسط شما تهیه میشوند چه آزاد و چه تجاری در گرو انتخاب صحیح ابزارهای توسعه است.
در این باره میخوانید:
حداقلها و نیازمندیهای نرمافزاری
سرورها و سرویسهای مقیم در مجموعه مشتری
سرور ها و سرویسهای مقیم در شرکت
لایسنز(License) ابزارها و نرمافزارهای توسعه
این نوشته به قلم نویسنده بلاگ بوده، ترجمه یا کپی نیست و تمام حقوق مادی و معنوی آن برای این سایت و نویسنده آن محفوظ است.
درباره این سایت