روش های مهندسی توسعه نرم افزار

نویسنده : حسین شرفی
با بزرگ شدن پروژه هاي نرم افزاري  و پيشرفت علم مهندسي نرم افزار ، روش هاي سازمان يافته اي براي توسعه نرم افزارها ابداع شد که هر کدام بسته به نوع پروژه و محدوديت هاي آن در جاي خاصي کاربرد دارد. برخي روش ها مانند R.A.D به دليل کمبود زمان توليد، برخي مانند spiral به دليل مشخص نبودن نيازمندي هاي اوليه نرم افزار و برخي مانند X.P براي کساني که کار طراحي نرم افزار را با کدنويسي شروع ميکنند ابداع شدند. ايجاد پروژه هاي بزرگ بدون بکارگيري يکي از روش هاي مهندسي نرم افزار ممکن نيست.

1 - روش آبشاري (waterfall) : اين روش اولين روش مهندسي نرم افزار محسوب ميشود و گاهي آنرا روش سنتي نيز مي‌نامند. هر روش مهندسي معمولا شامل 5 پروسه اصلي است که عبارتند از آناليز سيستم، طراحي سيستم، کدنويسي و اجرا، تست و تحويل و پشتيباني . اين 5 پروسه در روش آبشاري به ساده ترين شکل بيان ميشوند. بدين ترتيب که هر فاز از پروسه ي کلي، انجام ميشود و بعد فاز بعدي آغاز ميشود. اين روش در پروژه هايي کاربرد دارد که فاز اول که آناليز است توسط مهندس نرم افزاري که کار تحليل را بر عهده دارد کاملا شناخته شود و طراح کاملا نيازمندي هاي سيستم مربوطه را بداند تا در فاز بعدي بتواند طراحي معماري سيستم را آغاز کند. در عکس زير نمودار عملياتي روش آبشاري را مراجعه ميکنيد. گرچه در هر مرحله امکان برگشت به مرحله قبل گنجانده شده، اما اين برگشت هزينه ي بسياري را بر دوش تيم نرم افزاري ميگذارد. زيرا هر تغيير در مرحله قبل، ميتواند باعث شود تا پروژه در فاز بعدي نيازمند شروع از ابتدا باشد.
مدل آبشاری
2 - روش افزايشي (Incremental): اين روش براي زماني است که نيازمندي هاي نرم افزاري که بايد نوشته شود تشخيص داده شده است ، اما امکان استفاده از روش رو به جلوي آبشاري وجود ندارد.به همين دليل با ترکيب چند پروسه ي آبشاري، روش افزايشي ايجاد ميشود. بطور مثال شما ميخواهيد يک نرم افزار مانند word بنويسيد. در هر مرحله بخشي از نرم افزار را از آناليز تا پياده سازي و تست پيش مي بريد و بار بعدي امکانات جديدي را در نظر ميگيريد تا به نرم افزار اضافه کنيد. امکانات ضروري تر در اولويت بالاتر اجرا قرار مي گيرند.
مدل افزایشی
 
3روش R.A.D اين روش زير مجموعه روش افزايشي است و بر روي چرخه ي کوتاه مدت توليد نرم افزار تاکيد دارد. در اين روش از برنامه نويسي با استفاده از کامپوننت هاي آماده بيشترين بهره را مي بريم تا سرعت تحويل پروژه را افزايش دهيم . معمولا پروژه هايي با اين روش اجرا ميشوند که کمتر از 90 روز وقت مي گيرند و براي افزايش سرعت از تيم هاي موازي نيز براي اجرا کمک ميگيريم تا هر تيم بخشي از نرم افزار را اجرا کند و نهايتا آن بخش ها را با هم يکپارچه ميکنيم. با توجه به اهميت سرعت در اين مدل ، افراد تيم بايد همگي زبده باشند تا بتوانند بدون هدر رفتن وقت پروژه را در موعد مقرر تحويل دهند. همانطور که در تصوير زير ميبينيد پروژه توسط چند تيم در حال پيشبرد است: 
 
4 - روش الگويي (prototyping) : اين روش معمولا زماني بکار گرفته ميشود که مشتري مجموعه اي از نيازها را بيان ميکند ، اما از ورودي و خروجي ها و الگوريتم هاي داخلي اش اطلاع کافي ندارد. با توجه به اينکه معمولا اولين نسخه ي هيچ نرم افزاري کامل نيست و نيازمند بازنگري است، اين روش با چرخه ي توليد و تست خود باعت ميشوند ايرادات نرم افزار استخراج و رفع شود. اما گاهي خارج شدن از اين سيکل (با توجه به بالارفتن سطح توقع مشتري) سخت ميشود.
5 - روش حلزوني (spiral) : اين روش ترکيبي از روش سيستماتيک آبشاري و روش prototyping است. در اين روش نرم افزار طي چندين نسخه ي ارائه شده به تکامل مي رسد. در هر مرحله ريسک هاي پروژه با جزئيات بررسي ميشوند. همانطور که درنمودار زير ميبينيد، کليه ي مراحل انجام پروژه در هر گردش در سايز بزرگتري اجرا ميشوند.
 
6 - روش مهندسي همزمان (concurrent development) : اين روش شامل يکسري فاز اجرايي است. هر فاز خود شامل يکسري وضعيت (state) است. هر يک از اينstate ها بر اساس event هايي که برايشان تعريف ميکنيدم تغيير ميکنند و به وضعيت ديگري مي روند. در عکس زير بخش آناليز را در اين مدل مهندسي مشاهده ميکنيد. اگر در موقعيت development   باشيم و تغييري در نيازمندي هاي تعريف شده توسط مشتري ايجاد شود، به وضعيت awaiting changes مي رويم. زيرا تغييراتي در ساختار پروژه ايجاد شده که ميتواند منجر به تغيير در فاز development شود. اين روش معمولا براي نرم افزارهايي که بصورت کلاينت سروري کار ميکنند بکار مي رود. 
 
علاوه بر مدل هاي مهندسي نرم افزار فوق، روش هاي ديگري مانند XP ، Clean Room ، component-based ، Agile و غيره وجود دارند. که هر يک در جاي خود قابل استفاده هستند. اما روش هاي فوق متداول ترين مدل هايي هستند که بکار گرفته ميشوند.

کرک (Crack) چیست؟

باید بگم که کرک فایلی هست که به شما اجازه میده از برنامه ای که در اختیار دارین به طور کامل استفاده کنین.
هر شرکتی یا شخصی که برنامه ای رو میسازه و می خواد از راه فروش اون برنامه پول در بیاره معمولاً محدودیت هایی رو در نسخه رایگان برنامه قرار میده(مثل محدودیت زمانی و ...) که اگه شما بخواین از اون برنامه به طور کامل استفاده کنین باید برای اون برنامه پول بدین تا (مثلاً با استفاده از شماره سریالی که به شما داده میشه) محدودیت ها رو از روی اون برنامه بردارین.
حالا یه عده برنامه نویس دیگه (به اسم هکر یا کرکر cracker ) میان یه فایل به اسم کرک می سازن که (بدون اجازه سازنده برنامه) میاد محدودیت ها رو از روی اون برنامه برمی داره و شما با استفاده از اون می تونین از برنامه به طور کامل استفاده کنین.

نحوه کرک کردن:

بعضي از كرك ها به شكل آيكون خود نرم افزار ميباشد روش كار اين نوع كرك اينگونه است كه ما بعد از اينكه نرم افزار مورد نظرمان را نصب كرديم بايد كركي را كه آيكون آن هم اسم و هم شكل آيكون اجرائي نرم افزار ميباشد را copy و در شاخه اي كه نرم افزار نصب شده است paste نماييم در اينگونه مواقع شما پيغامي را دريافت مينماييد كه بايد گزينه yes را كليك نماييد تا آيكون كرك شما جايگزين (Overwrite) آيكون اصلي شود . < اغلب بازيها از اين روش كرك استفاده مينمايند>
اين نكته را هم ياد آور شوم كه اگر به همراه فايل كرك (exe.) فايلهاي با پسوند dll. يا ini. يا dat. وجود داشت شما آنها را نيز بايد كپي كرده و در شاخه نصب نرم افزار paste نماييد .
در مورد اين نوع كرك بايد ذكر كنم كه حتما" در هنگام كرك كردن بايد نرم افزار مورد نظر بسته باشد يعني در حال اجرا نباشد و الا پيغام خطا دريافت مينماييد .


يك نوع ديگر كرك وجود دارد كه به KeyGen يا KeyMaker معروف هستند كه روش آن با روش قبلي متفاوت است . اين نوع كرك براي ساختن سريال به كار ميرود , روش كار آن هم به اين صورت است كه شما با وارد كردن يك اسم يا شماره و در برخي موارد ايميل در فيلد مشخص كرك و فشار دادن دكمه مربوط به آن يك كد جديد دريافت ميكنيد كه معمولا" با وارد كردن آن در قسمت منو و در بخشي با عنوان Register يا Enter Code يا Registeration يا چيزي توي همين مايه ها برنامه فعال و كامل ميشود .
در بعضي از موارد در همين بخش Registeration كه در بالا گفتم يك كد وجود دارد كه شما بايد آن را در كرك (KeyMaker) وارد نماييد تا KeyMaker كد يا سريال راه انداز را براي شما بسازد .


نوع ديگر كرك ها به Patch يا Patcher معروف هستند , در اين نوع كرك ها معمولا" دكمه اي با نام Choose يا Browse يا Patch و يا چيزي ديگري با همين معني وجود دارد كه با فشار دادن آن بايد آدرس آيكون يا فايلي از نرم افزار كه خود كرك مشخص كرده را در پوشه ای که نرم افزار مورد نظرتان نصب شده است را بهش بدهيد تا نرم افزار را بصورت کامل تبديل کند

بعضي مواقع وقتي ما يك كرك را دانلود مينماييم بعد از باز كردن آن متوجه يك فايل Notepade به همراه چند فايل ديگر ميشويم .در اين صورت شما بايد فايل Notepad درون كرك را باز كرده و سريال مورد نظر را در بخش Register نرم افزار وارد نماييم .

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

مراحل رشد یک تیم

منبع :http://ooa.blogfa.com

به محیط اطراف خود نگاه کنید. انسانها، گیاهان، اشیاء و .... و حالا یک سوال از خودتان بپرسید. آیا شما، همکارتان، همسرتان و یا ماشینی که سوار آن می شوید به سطحی از بلوغ و پایداری در چرخه زندگی خود رسیده است که بتوان آنرا موفق نامید؟ اگر پاسخ شما در مورد هر کسی و هر چیزی که در ذهن دارید بلی است، یک سوال دیگر از خودتان بپرسید. آیا این شخص یا چیز از روز اول در این سطح متولد شده است یا برای رسیدن به این مرحله، سطوح و مراحل مختلفی را پشت سر گذاشته است؟

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

یک انتقاد

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

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

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

Storming :این مرحله برعکس مرحله قبل که مرحله و جو بچه مثبتی بود، مرحله جر و بحث، گفتکو و اختلاف نظر بین اعضای تیم می باشد.سخت ترین مرحله بین 4 مرحله، این مرحله می باشد و اگر تیم بتواند از این مرحله با موفقیت عبور کند، اعضاء می توانند امیدوار باشند که تیم به احتمال زیاد می تواند به مرحله چهارم نیز برسد. در غیر اینصورت تیم به احتمال زیاد از هم خواهد پاشید. بعضی از مسائلی که در این مرحله می توان مشاهده کرد به شرح زیر است:

·         جر و بحث و اختلاف نظر بین اعضای تیم وجود دارد. حتی در مواردیکه افراد قبلا روی آن موضوع توافق کرده اند.

·         حسادت اعضاء نسبت به یکدیگر افزایش می یابد.

·         اعضاء با آرمانها و اهداف تیم و مجموعه مخالفت می کنند، و حتی اعلام می کنند که آنها اشتباه است.

·         اهداف غیر واقعی (جدا از هدفی که تیم برای آن ایجاد شده است) توسط افراد مطرح می شود و حتی در جهت آن اهداف نیز حرکت می شود.

·         روابط بین اعضای تیم کاهش می یابد، شاید بتوان گفت تیم به صورت انزوا حرکت می کند.

·         ...

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

Norming :اگر تیم بتواند از طوفانی که در مرحله قبل او را تا حد نابودی تهدید می کرد، به سلامت عبور کند. می تواند در این مرحله روح و شخصیت خود را بدست بیاورد. به این صورت که اعضاء دیگر خود را به عنوان عضوی از تیم قبول می کنند. خواسته ها و نظرات شخصی خود را بالاتر از هدف تیم نمی دانند.قدرت نقدپذیری خود را بالا می بردند و البته نقدی که ارائه می شود از روی حسادت و غیر واقعی نیست. وظایف و نقش افراد به طور دقیق مشخص می شود و هر فرد برای رسیدن به هدف مشترک تیم تلاش می کند.

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

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

مفهوم پهناي باند و تاخير(دو عامل تاثیر گذار در شبکه)

 توسط: مهندس مصطفي شميزي

پهناى باند از جمله واژه هاى متداول در دنياى شبکه هاى کامپيوترى است که به نرخ انتقال داده توسط يک اتصال شبکه و يا يک اينترفيس ، اشاره مى نمايد . اين واژه از رشته مهندسى برق اقتباس شده است . در اين شاخه از علوم ، پهناى باند نشان دهنده مجموع فاصله و يا محدوده بين بالاترين و پائين ترين سيگنال بر روى کانال هاى مخابراتى ( باند ) ، است. به منظور سنجش اندازه پهناى باند از واحد " تعداد بیت در ثانيه " و يا bps استفاده مى شود .


پهناى باند تنها عامل تعيين کننده سرعت يک شبکه از زاويه کاربران نبوده و يکى ديگر از عناصر تاثيرگذار ، "ميزان تاخير" در يک شبکه است که مى تواند برنامه هاى متعددى را که بر روى شبکه اجراء مى گردند، تحت تاثير قرار دهد .



پهناى باند چيست ؟
 

توليد کنندگان تجهيزات سخت افزارى شبکه در زمان ارائه محصولات خود تبليغات زيادى را در ارتباط با پهناى باند ، انجام مى دهند . اکثر کاربران اينترنت نسبت به ميزان پهناى باند مودم خود و يا سرويس اينترنت broadband داراى آگاهى لازم مى باشند . پهناى باند ، ظرفيت اتصال ايجاد شده را مشخص نموده و بديهى است که هر اندازه ظرفيت فوق بيشتر باشد ، امکان دستيابى به منابع شبکه با سرعت بيشترى فراهم مى گردد . پهناى باند ، ظرفيت تئورى و يا عملى يک اتصال شبکه و يا يک اينترفيس را مشخص نموده که در عمل ممکن است با يکديگر متفاوت باشند . مثلا" يک مودم V.90 پهناى باندى معادل  56kbps را در حالت سقف پهناى باند خود حمايت مى نمايد ولى با توجه به محدوديت هاى خطوط تلفن و ساير عوامل موجود، عملا" امکان رسيدن به محدوده فوق وجود نخواهد داشت . يک شبکه اترنت سريع نيز از لحاظ تئورى قادر به حمايت پهناى باندى معادل 100Mbps است ، ولى عملا" اين وضعيت در عمل محقق نخواهد شد ( تفاوت ظرفيت تئورى پهناى باند با ظرفيت واقعى ) .


پهناى باند بالا و broadband

در برخى موارد واژه هاى "پهناى باند بالا" و " broadband " به جاى يکديگر استفاده مى گردند . کارشناسان شبکه در برخى موارد از واژه "پهناى باند بالا " به منظور مشخص نمودن سرعت بالاى اتصال به اينترنت استفاده مى نمايند . در اين رابطه تعاريف متفاوتى وجود دارد . اين نوع اتصالات، پهناى باندى بين 64Kbps تا 300kbps و يا بيشتر را ارائه مى نمايند . پهناى باند بالا با broadband متفاوت است . Broadband ، نشان دهنده روش استفاده شده به منظور ايجاد يک ارتباط است در صورتى که پهناى باند ، نرخ انتقال داده از طريق محيط انتقال را نشان مى دهد.



اندازه گيرى پهناى باند شبکه


به منظور اندازه گيرى پهناى باند اتصال شبکه مى توان از ابزارهاى متعددى استفاده نمود . براى اندازه گيـرى پهنـاى باند در شبکه هاى محلى

 ( LAN ) ، از برنـامه هايى نظيـر netpref و ttcp ، استفـاده مى گردد. در زمان اتصال به اينترنت و به منظور تست پهناى باند مى توان از برنامه هاى متعددى استفاده نمود . تعداد زيادى از برنامه هاى فوق را مى توان با مراجعه به صفحات وب عمومى استفاده نمود . صرفنظر از نوع نرم افزارى که از آن به منظور اندازه گيرى پهناى باند استفاده مى گردد ، پهناى باند داراى محدوده بسيار متغيرى است که اندازه گيرى دقيق آن امرى مشکل است .



تاخير

پهناى باند صرفا" يکى از عناصر تاثير گذار در سرعت يک شبکه است . تاخير( Latency ) که نشان دهنده ميزان تاخير در پردازش داده در شبکه است ، يکى ديگر از عناصر مهم در ارزيابى کارآئى و سرعت يک شبکه است که داراى ارتباطى نزديک با پهناى باند مى باشد . از لحاظ تئورى سقف پهناى باند ثابت است . پهناى باند واقعى متغير بوده و مى تواند عامل بروز تاخير در يک شبکه گردد . وجود تاخير زياد در پردازش داده در شبکه و در يک محدوده زمانى کوتاه مى تواند باعث بروز يک بحران در شبکه شده و پيامد آن پيشگيرى از حرکت داده بر روى محيط انتقال و کاهش استفاده موثر از پهناى باند باشد .

 



تاخير و سرويس اينترنت ماهواره اى


دستيابى به اينترنت با استفاده از ماهواره به خوبى تفاوت بين پهناى باند و تاخير را نشان مى دهد . ارتباطات مبتنى بر ماهواره داراى پهناى باند و تاخير بالائى مى باشند . مثلا" زمانى که کاربرى درخواست يک صفحه وب را مى نمائيد ، مدت زمانى که بطول مى انجامد تا صفحه در حافظه مستقر گردد با اين که کوتاه بنظر مى آيد ولى کاملا" ملموس است. تاخير فوق به دليل تاخير انتشار است .علاوه بر تاخير انتشار ، يک شبکه ممکن است با نوع هاى ديگرى از تاخير مواجه گردد . تاخير انتقال ( مرتبط با خصايص فيزيکى محيط انتقال ) و تاخير پردازش ( ارسال درخواست از طريق سرويس دهندگان پروکسى و يا ايجاد hops بر روى اينترنت ) دو نمونه متداول در اين زمينه مى باشند .



اندازه گيرى تاخير در يک شبکه


از ابزارهاى شبکه اى متعددى نظير ping و trace route مى توان به منظور اندازه گيرى ميزان تاخير در يک شبکه استفاده نمود . برنامه هاى فوق فاصله زمانى بين ارسال يک بسته اطلاعاتى از مبداء به مقصد و برگشت آن را محاسبه مى نمايند . به زمان فوق round-trip ، گفته مى شود . round-trip تنها روش موجود به منظور تشخيص و يا بدست آوردن ميزان تاخير در يک شبکه نبوده و در اين رابطه مى توان از برنامه هاى متعددى استفاده نمود .



پهناى باند و تاخير دو عنصر تاثير گذار در کارايى يک شبکه مى باشند .معمولا" از واژه  QoS ( Quality of Service ) به منظور نشان دادن وضعيت کارآيى يک شبکه استفاده مى گردد که در آن دو شاخص مهم پهناى باند و تاخير مورد توجه قرار مى گيرد.

64  بيتي‌ها چيستند؟

منبع :مهدي فرخي- دنياي كامپيوتر و ارتباطات
اگر اين روزها در فکر خريد يک کامپيوتر، نرم‌افزار يا سخت‌افزار کامپيوتري باشيد، يا فقط از کنار فروشگاه‌هاي عرضه‌کننده اين محصولات بگذريد، حتما با کلمه سيستم عامل 64 بيتي، پردازنده 64 بيتي و يا نرم‌افزارهاي قابل اجرا در يک سيستم عامل 64 بيتي برخورده‌ايد. در اينصورت ممکن است اين سئوال براي شما پيش بيايد که مفهوم 64 بيت دقيقا يعني چه و يک سيستم عامل 64 بيتي چه تفاوتي با نمونه 32 بيتي خود دارد؟

مفهوم 64 بيت يا 32 بيت به شيوه دسته‌بندي اطلاعات، توسط پردازشگر کامپيوتر برمي‌گردد. درواقع اين اصطلاح در معماري کامپيوتر به آدرس‌هاي حافظه يا واحدهاي داده‌اي ديگري اطلاق مي‌شود که 64 بيتي يا 8 اوکتتي (8 octet) هستند. از نظر مفاهيم معماري کامپيوتر 64 بيت را به اين شکل مي‌توان معني کرد:

پردازنده‌ها به طور معمول از نظر اعداد و ارقام به چند گروه تقسيم مي‌شوند: عدد صحيح (integer)- مميز شناور (floating point) -SIMD- کنترل و ... . در طراحي‌هاي مدرن اصولا از توابع عدد صحيح، براي نشان دادن کارآيي يک پردازشگر استفاده مي‌شود. بنابراين حدود مقدار حافظه به طور مستقيم نشان داده مي‌شود. يعني کامپيوتري که داراي معماري 64 بيتي است مي‌تواند از هر داده يا آدرسي که 64 بيتي باشد، به طور مستقيم پشتيباني کند. اما بايد بدانيم که اين 64 بيت که به طور عدد صحيح در پردازنده‌ها ثبت مي‌شود داراي نوعي محدوديت نيز هست.

براي مثال پردازنده 64 بيتي AMD داراي محدوديت 52 بيتي در حافظه فيزيکي است و از نظر مجازي نيز تنها از 48 بيت داده يا آدرس، پشتيباني مي‌کند. CPUهاي 64 بيتي از زمان حيات سوپر کامپيوترها، در حدود سال 1970 موجود بودند، اما از اوايل سال‌هاي 2000 پا به دنياي کامپيوترهاي شخصي گذاشتند و حالا با ويرايش هر دو نسخه 32 بيتي و 64 بيتي براي انواع سيستم عامل‌ها، شاهد تغيير معماري کامپيوتر از 32 بيت به 64 بيت هستيم.

اين تغيير، تغييري اساسي است که بيشتر سيستم عامل‌ها بايد سطح کيفيت خود را ارتقاء بدهند و آن را با معماري جديد منطبق کنند. اما چه تفاوت‌هايي بين معماري 64 بيتي و نمونه 32 بيتي آن وجود دارد؟ بزگترين و اصلي‌ترين تفاوت سيستم عامل‌هاي 64 بيتي و 32 بيتي به عواملي چون دسترسي به حافظه، کنترل حافظه و کارکردهاي امنيتي سيستم مربوط مي‌شود. يکي از بزرگترين فوايد استفاده از يک سيستم عامل 64 بيتي در اين است که اين سيستم عامل مي‌تواند از حافظه 4GB و بيشتر استفاده کند حال آنکه يک سيستم 32 بيتي تنها مي‌تواند از 3.5GB حافظه استفاده کند.

بسياري از کارآيي‌هاي بالاتر سيستم عامل‌هاي 64 بيتي به دليل همين برخورداري از حافظه بالاتر مي‌باشد که در ادغام با يک پردازنده 64 بيتي به خوبي مي‌تواند از اين حافظه بيشتر استفاده کند. اين تفاوت شايد براي يک کاربر معمولي که تنها از چند برنامه، به طور همزمان استفاده مي‌کند و يا بانک اطلاعاتي‌اش حجم چشمگيري ندارد، چندان حائز اهميت نباشد اما براي کاربراني که نياز به استفاده همزمان از چندين برنامه در حال اجرا دارند، اين تفاوت بسيار چشمگير و حائز اهميت است، چرا که يک PC 64 بيتي به دليل برخورداري از حافظه بالاتر توانايي مديريت حجم بيشتري از اطلاعات را نسبت به يک PC 32 بيتي دارد و مي‌تواند تمام برنامه‌هاي در حال اجرا را طوري تنظيم کند که سرعت سيستم دچار افت نشود.

اين تفاوت همچنين مي‌تواند براي طرفداران پروپاقرص بازي‌هاي کامپيوتري هم حائز اهميت باشد. يک سيستم عامل 32 بيتي تنها قادر به آدرس‌دهي 4 بيليون آدرس است. براي مثال در ويندوز XP 32 بيتي، سيستم عامل 2GB از حافظه را به برنامه‌ها و 2GB از آن را به پشتيباني سيستم عامل، کارت تصوير و ساير امور قابل آدرس‌دهي اختصاص مي‌دهد. بنابراين هنگام نصب بسياري از بازي‌هاي کامپيوتري که به حافظه بالايي نياز دارند کاربردچار مشکل مي‌شود و براي رفع آن نياز به تغيير اين تقسيم‌بندي دارد.

اما يک سيستم عامل 64 بيتي 1.6 به توان 14 آدرس را پشتيباني مي‌کند، بنابراين براي نصب انواع بازي کاربر دچار مشکل کمبود حافظه نخواهد بود! معماري 64 بيتي با مجموعه داده‌هاي بزرگ مانند ويدئوهاي ديجيتال، محاسبات علمي و پايگاه داده‌هاي بزرگ، راحت‌تر کار مي‌کند. اکثر سخت‌افزارهاي 64بيتي نسبت به مدل‌هاي هم قيمت 32 بيتي خود، سريع‌تر و روان‌تر کار مي‌کنند و قادر به اجراي روان سيستم عامل‌ها و نرم‌افزارهاي 32 بيتي مي‌باشند. اما سرعت، تنها عامل مقايسه‌اي در بررسي تفاوت‌هاي پردازنده‌هاي 32 بيتي و 64 بيتي نمي باشد. عواملي چون کارآيي چندگانه (multi_tasking) - تست استرس (stress test) و محاسباتي با کارآيي بالا (clustering) عوامل قابل توجه ديگري هستند، که در مورد همه آنها معماري 64 بيتي در صورت استقرار مناسب، کارآيي بهتري از خود نشان مي‌دهد.

به همين خاطر سازمان‌هاي بزرگي مانند IBM ،HP و Microsoft از پردازنده‌هاي 64 بيتي استفاده مي‌کنند. اما نقطه ضعف اصلي معماري 64 بيتي نسبت به نمونه 32 بيتي اين است که يک داده، با مشخصات يکسان، در سيستمي که توسط پردازنده 64 بيتي پشتيباني مي‌شود، فضاي بيشتري را اشغال مي‌کند. اين افزايش حافظه مورد نياز، براي انجام يک فرآيند مشخص، پردازنده را مجبور مي‌کند که از حافظه نهان سيستم استفاده کند.

حفظ بخشي از مدل 32 بيتي، يکي از راه‌هاي رسيدگي به اين مشکل است که از لحاظ منطقي موثر به نظر مي‌آيد چرا که در اينصورت سيستم عامل از فضاي آدرس‌دهي 31 بيتي براي کددهي به برنامه‌ها استفاده مي‌کند، در حالي که داد‌‌ه‌ها مي‌توانند به طور اختياري در فضاي 64 بيتي قرار بگيرند. نکته ديگري که شايد جز معايب سيستم عامل‌هاي 64 بيتي باشد اين است که اين سيستم عامل‌ها براي پشتيباني از هر قطعه سخت‌افزاري که برروي سيستم نصب مي‌شود نياز به يک درايور 64 بيتي دارد.

درايور نرم‌افزاري است که به کامپيوتر اجازه برقراري ارتباط با سخت‌افزار اتصالي را مي‌دهد. براي مثال پرينتري که تنها داراي درايور 32 بيتي است قادر به کارکردن با يک سيستم عامل 64 بيتي نيست و براي نصب آن حتما بايد از يک درايور 64 بيتي استفاده کرد. برخلاف درايورها اکثر برنامه‌هايي که براي سيستم عامل 32 بيتي طراحي شده‌اند (به استثناي آنتي‌ويروس‌ها) در سيستم‌عامل‌هاي 64 بيتي هم به خوبي قابل اجرا مي‌باشند.

گرچه برنامه‌هايي که از ابتدا براي سيستم عامل‌هاي 64 بيتي طراحي شده‌اند، سريع‌تر و روان‌تر اجرا مي‌شوند. بنابراين بسته به کار شما با کامپيوتر و برنامه‌هايي که از آنها استفاده مي‌کنيد، سيستم عامل 64 بيتي مي‌تواند مفيدتر باشد و يا فرق چنداني با سيستم عامل 32 بيتي نداشته باشد. اما ازآنجايي که يک سيستم عامل 64 بيتي از هردو ورژن نرم‌افزارهاي 32 و 64 بيتي پشتيباني مي‌کند و از حافظه بالاتري برخوردار است، با خريد يک كامپيوتر شخصي مجهز به پردازنده و سيستم عامل 64 بيتي، از مزاياي بيشتري بهره‌مند خواهيد شد!