حسین کعبی: وقتی فیگو را در جام جهانی زدم....
1- بسترهای چسبی مجموعهای از مولفهها و کتابخانهها هستند که میتوان در یک برنامه از آنها استفاده کرد. بیشتر قابلیتهای این بسترها انتخابی است و تصمیمگیری برای استفاده و محل استفاده از آنها بستگی به ساختار برنامه و همچنین نظر برنامهنویس دارد.
2- بسترهای پشته کامل، مجموعهای از مولفههای یکپارچه هستند که در آن حضور مولفهها و کتابخانهها اجباری است و بیشتر تصمیمات مرتبط با طراحی نرمافزار بهصورت پیشفرض در این بستر گرفته شده است و طراح برنامه یا برنامهنویس باید از یک سری قواعد اولیه (Convention) پیروی کنند.
بیشتر بسترها برای پروژههای 1 تا 3 ماهه طراحی شدهاند. قابلیتهای ساده و پایهای از قبل در آن طراحی شده است و انتظار میرود پروژههای پیچیدهای چون سیستمهای مدیریت محتوا در این بستر سادهتر انجام میشود و پیچیدهترین بخش آن، ظاهر آن خواهد بود. هرچند هرچه بیشتر با بخش کنترلکننده آن ارتباط برقرار شود، هر چه بیشتر نیاز باشد در آن بخش پیچیدگیهای بیشتری وجود داشته باشد، تنظیمات دستی و کدهای دستی آن بخش بیشتر خواهد شد و بسیاری از مسایل دیگر بهصورت پیشفرض حل شده نیستند. بدین ترتیب، گاهی اوقات ممکن است پیش بیاید که انعطافپذیری یک بستر بهاندازهای نباشد که بتواند برخی از مسایل پروژه را حل کند و این باعث میشود تغییرات در توابع کتابخانهای خود بستر نیز انجام شود.
با یک مثال نشان میدهیم چطور یک بستر پشته کامل بهمشکل برمیخورد. فرض کنید بخواهید چندین پیغام را همزمان به کاربر نشان دهید، در این صورت باید فعالیت زیادی برای عمل بهاین سادگی انجام دهید چرا که CakePHP بهصورت پیشفرض از این قابلیت پشتیبانی نمیکند. این درست است که برای هر دستور میتوان یک پیغام نوشت و این عمل بسیار ساده انجام میشود، اما برای چاپ دو پیغام، باید مدت زمان زیادی را بیهوده صرف پیادهسازی چنین چیزی کرد.
در طرف مقابل بستر چسبی احتمالا قابلیتهای استفاده از Sessionها را میدهد و هیچ تابعی برای پشتیبانی از پیغامهای فلش ارائه نکرده است. این یعنی شما باید برای خود یک تابع فلش بنویسید، اما در نهایت در مقایسه با بستر پشته کامل که این امکان را در خود داشته است، تلاش کمتری بخرج دادهاید و کدسادهتری برای پیادهسازی نوشتهاید.
بنابراین سوال کلیدی که باید هنگام انتخاب یک فریمورک پرسید این است که چهجور پیچدگی یا مسالهای در برنامه وجود دارد؟
اگر بستری یافته شود که بتواند 80 درصد از نیازهای یک برنامه را فراهم کند، در این صورت میتوان از آن بستر استفاده کرد.
برای این که یک بستر مناسب انتخاب کنید، باید سوالات زیر را از خود بپرسید:
1- نمایش پیچیده: مهمترین کاربرد سیستم در چیست؟ اطمینان حاصل کنید که قابلیتهای فنی بستری که قرار است برای پروژه استفاده کنید را آزموده باشید تا دست کم بهدلیل انجام نشدن بخشی از پروژه مشتری ناراضی نباشد. هدف استفاده از بسترها، سادهتر کردن کار کاربر است و انتخاب بستر در این مرحله برای کاربر ارزشی ندارد.
2- ساختار دادهای پیچیده: چه ساختارهای دادهای باید در پروژه تغییر کنند؟ اگر ممکن است معماری را انتخاب کنید که بتوانید با هزینه پایین آن را پیاده کنید. حتی اگر این انتخاب باعث شود یک بستر دیگر با قابلیتهای بیشتر را نادیده بگیرید.
3- منطق شغلی پیچیده: مفاهیم و فرآیندهای کلیدی کدامند و چطور باید تغییر کنند؟ این که بتوانید یک استثناء برای یک قانون ایجاد کنید، میتواند ساده یا دشوار باشد، بنابراین انتخاب سادگی یکی دیگر از دغدغههای انتخاب بستر است.
4- یکپارچهسازی پیچیده: هدف از اتصال فناوریهای مختلف چیست و چطور باید پشتیبانی شوند؟ در حالت ایدهآل میتوان از کدهای از پیش نوشته شده بستر برای یکپارچه سازی استفاده کرد.
5- بازدهی سختگیرانه: قرار است روزانه چه میزان باری روی سیستم باشد؟ انتخاب مکانیزم یافتن گلوگاههای سیستم و بهبود بازدهی آن بخش از مهمترین سوالاتی است که هنگام انتخاب یک بستر باید پرسیده شود.
6- بزرگشدن: سیستم با چه نرخی بزرگ میشود؟ آیا قابلیت افزودن حافظه به سیستم وجود دارد؟
7- الزام به تحویل بهموقع: حداقل قابلیتهای نرمافزار چیست؟ این بستر تا چه حد با تحویل و پیادهسازی سریع آشنا است؟ این بستر به چه چیزهایی وابسته است؟
منابع
http://ianbicking.org
امیربهاالدین سبطالشیخ
حسین کعبی: وقتی فیگو را در جام جهانی زدم....