توسعه نرم‌افزار

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

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





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

توسعه نرم‌افزار ارتباط تنگاتنگی با مهندسی نرم‌افزار دارد و از دید بسیاری این دو مفاهیمی تقریباً یکسان هستند.

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

اغلب توسعه نرم‌افزار Software Development با برنامه نویسی Programming یکسان فرض شده اند در حالیکه توسعه نرم‌افزار بر خلاف برنامه نویسی با تولید تجاری نرم‌افزار، استفاده بهینه از بخشهای در دسترس تولید شده و همچنین روشهای مدیریت، افزایش سرعت و افزایش کیفیت پروژه‌های نرم‌افزاری سر و کار دارد.








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








رابط برنامه‌نویسی نرم‌افزار

رابط برنامه‌نویسی نرم‌افزار (به انگلیسی: Application Programming Interface یا API) یا به صورت خلاصه رابط برنامه نویسی، رابط بین یک کتابخانه یا سیستم‌عامل و برنامه‌هایی است که از آن تقاضای سرویس می‌کنند.

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

برای مثال مایکروسافت برای APIهای ویندوز مرجع‌هایی استاندارد دارد که با استفاده از آنها برنامه‌نویسان می‌توانند از قابلیت‌ها و سرویس‌های سیستم‌عامل در توسعه و نوشتن برنامه‌های کاربردی خود استفاده کنند.







گسترش نرم‌افزار
گسترش نرم‌افزار به تمامی فعالیت‌هایی که یک نرم‌افزار را برای استفاده آماده می‌کند اطلاق می‌شود.






پارادایم برنامه‌نویسی

پارادایم برنامه‌نویسی یا شیوه‌های برنامه‌نویسی، به شیوه‌های اساسی برنامه‌نویسی رایانه گویند.






مرور کلی

یک زبان‌ برنامه‌نویسی می‌تواند یک یا چند شیوه برنامه‌نویسی را پشتیبانی نماید. برای مثال، برنامه‌های نوشته شده با سی++ میتوانند کاملاً بصورت رویه‌ای باشند یا کاملاً منطبق بر شیوه برنامه‌نویسی شئ‌گرا که در تضاد کامل با شیوه رویه‌ای است بوده یا حتی حاوی عناصری از هر دو شیوه باشند. تصمیم‌گیری برای چگونگی استفاده از عناصر شیوه‌های برنامه‌نویسی برعهده طراح برنامه یا برنامه‌نویس می‌باشد.






برنامه‌نویسی دستوری

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

به عنوان مثال اگر قصد باز کردن دری را داشته باشیم و با زبان اعلانی این را بخواهیم بیان کنیم خواهیم گفت در را باز کن اما اگر با زبان دستوری بیان کنیم خواهیم گفت بلند شو، به طرف در نردیک شو، دستگیره را بگیر و در را به طرف بیرون هل بده.






برنامه‌نویسی تابعی
برنامه‌نویسی تابعی (به انگلیسی: Functional programming) نوعی پارادایم برنامه‌نویسی است که در آن «محاسبات» به صورت ارزش‌یابی توابع ریاضی در نظر گرفته می‌شوند.






برنامه‌نویسی رویه‌ای

برنامه‌نویسی پروسه‌ای یک پارادایم برنامه‌نویسی بر پایه مفهوم فراخوانی پروسه‌ها است. پروسه که همچنین به نام‌های روال، زیرروال (ساب‌روتین)، تابع، روش شناخته می‌شود، دربردارنده یک سری گام‌های محاسباتی است که باید توسط رایانه اجرا شوند.

هر پروسه می‌تواند در هر نقطه‌ای در طول اجرای برنامه فراخوانده شود شامل فراخوانی پروسه توسط خودش (برنامه‌نویسی بازگشتی) یا پروسه‌های دیگر.






برنامه‌نویسی شیءگرا

برنامه‌نویسی شیءگرا (به انگلیسی Object-Oriented Programming مخفف OOP) یک شیوه برنامه نویسی است که ساختار یا بلوک اصلی اجزای آن، شی‌ها می‌باشند. در واقع در این شیوه برنامه نویسی، برنامه به شیء گرایش پیدا می‌کند. به این معنا که داده‌ها و توابعی که قرار است بر روی این داده‌ها عمل کنند، تا حد امکان در قالبی به نام شی در کنار یکدیگر قرار گرفته، جمع‌بندی شده و یک واحد (شی) را تشکیل داده و نسبت به محیط بیرونِ خود، کپسوله می‌شوند و از این طریق، توابع بیگانهٔ خارج از آن شی، دیگر امکان ایجاد تغییر در داده‌های درون آن شی را ندارند. به طور مثال حساب بانکی شما که شامل مشخصات فردی شما و میزان سپردهٔ شما در بانک است، تشکیل یک شی را می‌دهند و به دلیل دارا بودن ویژگی کپسوله، امکان دستکاری در میزان سپرده یا مشخصات شما، توسط دیگران وجود ندارد. از دیگر ویژگی‌های برنامه نویسی شی گرا، پیچیدگی کم، هزینه کم، امکان گسترش سریع برنامه با خطای کمتر نسبت به سایر پارادیام‌های برنامه نویسی است.

فلسفه یی که منجر به شکل گیری ی زبان‌های شی گرا شد، عبارت بود از این واقعیت که نحوهٔ عملکرد مغز و شیوهٔ دریافت اطلاعات از محیط پیرامون و پردازش آن اطلاعات (اندیشیدن)، شیوه یی شی گراست، از همین روی می‌بایستی زبانی تعریف می‌شد که همین شیوه را مبنای کار خود قرار داده و بازتولید می‌کرد. و دقیقاً به همان شکل که اشیا در جهان خارج، دارای هویت و کارکرد مشخص و یگانه برای خود هستند و در عین حال با دیگر اشیا در ارتباطی تنگاتنگ و مستقیم اند، در زبان‌های برنامه نویسی نیز می‌بایستی این اصول کلی برقرار می‌شد. تا به این شکل، برنامه نویس بتواند با بهره‌گیری از زبانی که به روش اندیشیدنش، نزدیکی بیشتری دارد، شی‌های مختلفی را تعریف نموده، این شی‌ها را در ارتباط با یکدیگر قرار داده و از شی‌های پویای تولید شده برای حل مساله ی پیش روی استفاده نماید. امروزه اکثر زبان‌های دستوری برنامه نویسی از فنون شیءگرایی پشتیبانی می‌کنند. زبانهایی مانند جاوا، سی++، سی شارپ، دلفی از جمله زبانهای شیءگرا هستند. حتی بسیاری از زبانهای روال گونه که ساختار برنامه‌ها در آنها بلوک‌هایی با نام پروسیجر است امروزه از فنون شیءگرایی نیز پشتبانی می‌کنند. زبانهای سی++ و پی‌اچ‌پی از این جمله هستند. هر شیء یک سری خصوصیت و قابلیت دارد، که اصطلاحاً Properties و Operation خوانده می‌شوند. در این روش از برنامه نویسی دید برنامه نویس به سیستم دید شخصی است که سعی می‌نماید به پیدا کردن اشیاء مختلف در سیستم و برقراری ارتباط بین آنها سیستم را تولید نماید. مفهوم مدیریت دیداری






مفاهیم عمده
کلاس

کلاس نوع خاصی از آرایه است که امکان ذخیره و جمع‌بندی تعداد زیادی المان را (که شامل داده‌ها و توابع هستند) برای یک شی جدید فراهم آورده و تحت یک نام مشترک ذخیره می‌کند. اما بر خلاف آرایه که تنها قادر به ذخیرهٔ داده‌هایی هم جنس است، کلاس می‌تواند داده‌هایی از جنس‌های مختلف را ذخیره نماید. به طور مثال در نظر بگیرید که می‌خواهیم تاریخ ۱۳ نوامبر ۲۰۰۶ را که تشکیل شده از روز، ماه و سال است مورد استفاده قرار دهیم.
حال در نظر بگیرید که نه فقط یک تاریخ، بلکه n تاریخ متفاوت مورد نیاز است. این بدان معنی ست که می‌بایستی به تعداد n بار، سه متغیر بالا، جداگانه تعریف شوند و تعریفِ تک تک و پیاپی متغیرها، نه فقط از لحاظ زمانی بسیار وقت گیر می‌نماید، بلکه از لحاظ میزان کد مورد نیاز نیز بسیار غیر عملی ست، چرا که هر بار می‌بایستی نام جدیدی برای متغیرها در نظر گرفته شود (دو متغیر متفاوت نمی‌توانند هم نام باشند). در اینجاست که کلاس‌ها به خوبی وارد عمل می‌شوند. با استفاده از کلاس‌ها می‌توان متغیرهای متعدد (در مثال بالا: int day ;String month, ;int year) را زیر عنوان یک جنسیت مشترک جدید (به طور مثال هر سه را در یک کلاس با نام Date)، تعریف و جمع‌بندی نمود. و بعد از آن، بدون نیاز به تعریف مجدد روز، ماه و سال، از کلاس Date به میزان مورد نیاز استفاده کرد






وراثت

وراثت یا ارث بری (Inheritance) از مفاهیم اساسی برنامه نویسی شیءگراست. هر شیء یک نمونه از یک کلاس است و هر کلاس می‌تواند از کلاس یا کلاسهای دیگری مشتق شده باشد (خواص متدها یا رویدادهای کلاس‌های دیگر را به ارث ببرد). در یک مثال ساده می‌توان اتومبیلی را در نظر گرفت که برای جلوگیری از بازنویسی خواص عمومی اتومبیل شامل: چهار چرخ، متدهای حرکت چرخ، متد چرخاندن فرمان، فرمان، بدنه، در و غیره، می‌توان یک کلاس پایه از اتومبیل ایجاد کرد سپس مثلاً برای اتومبیل زانتیا مدل C۵ یک کلاس جدید ایجاد کرده که خواص، متدها و رویدادهای عمومی اتومبیل را داشته باشد و فقط برای خواص، متدها و رویدادهای جدید این اتومبیل کد نوشته شود. این ویژگی باعث صرفه‌جویی در نوشتن کد و تا حدودی تضمین صحت کد موجود می‌شود. به عنوان مثال اگر کلاس پایه مشکلی داشته باشد فقط کافی است کلاس پایه تغییر داده شود و در تمامی کلاس‌هایی که از این کلاس پایه ویژگی‌ای ا به ارث برده‌اند این تغییر اعمال خواهد شد.






مخفی‌سازی

کپسوله سازی، مخفی‌سازی (Encapsulation)، یا لفافه‌بندی، به این مفهوم اشاره دارد که باید بعضی خصوصیات یا رفتارهای شیء را از دید دیگران پنهان کرد. فرض کنید شما به عنوان یک راننده می‌خواهید اتومبیل شخصی تان را روشن کنید و به محل کارتان عزیمت کنید سوییچ را بر می‌دارید، استارت می‌زنید و با فشار آوردن به پدال‌های گاز و ترمز و چرخش فرمان و ... به محل کارتان خواهید رسید. در طول این مسیر در اتومبیل شما به عنوان یک شیء اعمال مختلفی در حال انجام بود. مثلاً لنت ترمز به دیسک چرخ برخورد می‌کرد و باعث کم شدن سرعت می‌شد یا شمع‌ها شروع به جرقه زدن در زمانی بخصوصی می‌کردند. حال فرض کنید که عمل مخفی سازی وجود نداشت و شما مجبور بودید که جرقه زدن شمعها را کنترل می‌کردید و به سیستم سوخت رسانی در موقع لزوم دستور می‌دادید که سوخت را بداخل سیلندرها ارسال کند و... یا هیچ‌گاه به مقصد نمی‌رسیدید! یا سالم نمی‌رسیدید!

عمل مخفی سازی باعث می‌شود که اشیاء بدون آنکه از چگونگی کارکرد یکدیگر اطلاع داشته باشند با هم کار کنند.






چندشکلی

چند ریختی(Polymorphism) چند ریختی، کمیتی است که به یک رابط امکان می‌دهد تا از عملیات یکسانی در قالب یک کلاس عمومی استفاده کند. عمل خاص کلاس را ذات حقیقی شیء تعیین می‌کند. مثال ساده‌ای از چند ریختی، فرمان اتومبیل است. عمل فرمان اتومبیل برای تمام اتومبیل‌ها بدون توجه به ساز و کاری که دارند، یکسان است. فرمان برای اتومبیل که به طور مکانیکی کار می‌کند یا با نیروی برق یا هر چیز دیگری، عمل یکسانی را انجام می‌دهد. بنابراین، پس از اینکه شما عملکرد فرمان را یاد گرفتید، می‌توانید فرمان هر اتومبیلی را کنترل کنید. همین هدف در برنامه نویسی نیز اعمال می‌شود. به طور کلی، مفهوم چند ریختی، اغلب با عبارت ((یک رابط، چندین روش))بیان می‌شود. این بدین معنی است که امکان طراحی رابط عمومی برای گروهی از عملیات مرتبط وجود دارد. چند ریختی یا چندشکلی (Polymorphism) به این معنا است که اشیاء می‌توانند در موقعیت‌های مختلف، رفتارهای متفاوتی بروز دهند. مثلاً یک تابع در صورتی که بر روی نمونه‌ای از کلاس آ فراخوانی شود، رفتار ب را بروز دهد در حالی که اگر بر روی کلاس ج (که فرزند کلاس آ است) فراخوانی شود، رفتاری متفاوت انجام دهد.






انتزاع / تجرید

به این معنا است که بخشی از یک موجودیّت یک مفهوم را که میان همهٔ وارثان مشترک است، پیش تعریف کنیم. این توانایی منجر به داشتن نگاه مشابه به موجودیّت‌های مشابه می‌گردد.






یک مثال کاربردی

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

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

مفاهیم فوق در زبان‌های برنامه نویسی شیءگرا گنجانده شده‌اند. در این زبان‌ها، اشیاء زیادی از پیش وجود دارند که برنامه‌نویسان می‌توانند از آنها استفاده کنند.






ارتباط اشیاء

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

ماشین باربری، خودرویی است که محلی برای قرار دادن بار داشته باشد و ماشین سواری خودروییاست که صندوق عقب داشته باشد.

اگر کسی به درب کارخانه مراجعه کند و بگوید که 'خودرو' می‌خواهد، چیزی دریافت نمی‌کند. خودرو یک تعریف انتزاعی است، برای تعریف خودرو شیء وجود ندارد پس مشتری تنها می‌تواتند ماشین باربری یا ماشین سواری بخواهد.
کارواش را در نظر می‌گیریم. این کارواش خودرو را تمیز می‌کند و دیگر به طور جزئی عنوان نمی‌کند که کدام نوع خودرو را تمیز می‌کند. به عبارت دیگر نوع خودرو برای کارواش مهم نیست.
وقتی شخصی قصد اجاره خودرویی دارد، و می‌خواهد جنسی را حمل کند در هنگام تماس با متصدی کرایه ماشین می‌گوید: «اگر خودرو شمااز نوع باربری است، برای من ارسال کنید»، ولی اگر قصد جابجا شدن را دارد می‌گوید: «برای من یک ماشین سواری بفرستید.»

در زبان‌های برنامه نویسی شیءگرا نیز اشیاء مختلفی وجود دارند که تعریف آنها تکمیل کننده یکدیگر است، به عبارت دیگر اشیا از یکدیگر ارث بری می‌کنند. برخی از تعاریف کاملاً عام است و نمی‌توان از آنها نمونه شیئی ساخت و تنها تعریف هستند. به این تعاریف Interface گفته می‌شود.






مدیریت پیچیدگی

اعمال شیوه‌های مدیریتی با محوریت اشیاء در مطالعه، طراحی، ایجاد، و اجراء پروژه‌های مهندسی نرم‌افزار و مهندسی دانش.






برنامه‌نویسی منطقی
برنامه‌نویسی منطقی در کلی‌ترین مفهوم آن، کاربرد منطق ریاضی در برنامه‌نویسی رایانه است.






معماری نرم‌افزار

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

معماری نرم‌افزار از کلیدی‌ترین بخشهای تولید نرم‌افزار مخصوصا نوع تجاری آن است که البته در سالهای اخیر با ایجاد مدلهای کلاسیک تولید نرم‌افزار به نرم‌افزارهای عظیم تر محدود شده است.

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






فرایند توسعه نرم‌افزار
فرایند تولید نرم‌افزار که با عنوان «چرخهٔ حیات تولید نرم‌افزار» نیز شناخته می‌شود، ساختاری است که روی توسعه و تولید محصولات نرم‌افزاری اعمال می‌شود. عبارت‌های مشابهی چون «چرخهٔ حیات نرم‌افزار» و «فرایند نرم‌افزار» در این رابطه استفاده می‌شود.الگوهای گوناگونی نظیر فرایندهای (خاص) وجود دارند که هر کدام خط مشی مختص (آن فرایندها) برای انجام کارها و فعالیت‌های متنوع در طول فرایندها را مشخص می‌کنند. برخی عنوان می‌کنند که «طرح چرخهٔ حیات» یک عبارت بسیار عمومی بوده و «فرایند تولید نرم‌افزار» عبارت تخصصی‌تر است. برای مثال خیلی از فرایندهای تولید نرم‌افزار ویژه‌ای هستند که خود زیر مجموعه چرخهٔ حیات حلزونی به شمار می‌روند.از مهمترین کارها در تولید نرم‌افزار استخراج نیازمندی‌ها یا تحلیل نیازمندی‌های آن سامانه است. مشتریان عمومی معمولاً تصور مفهومی، انتزاعی و مبهمی از نتیجه نهایی خواسته‌هایشان دارند و نمی‌دانند به درستی نرم‌افزار مورد نظرشان چه کاری باید انجام دهد. در این مرحله نیازمندی‌های ناتمام، پیچیده و مبهم، و حتی متضاد توسط مهندسان نرم‌افزار ماهر شناسایی می‌شوند. در این برهه تکه نرم‌افزارهای آماده، تجربه‌شده و فعال ممکن است برای پایین آوردن ریسک (و مشکلات) نیازمندی‌ها کمک کنند.نخست نیازمندی‌های عمومی از کاربران جمع‌آوری شده و دامنه توسعه و تولید نرم‌افزار که باید تولید شود شناسایی و تحلیل می‌شود، سپس مستندات بصورت شفاف نوشته می‌شوند. معمولاً به این مستند، مستند دامنه یا محدوده سامانه اطلاق می‌شود.برخی قابلیت‌ها ممکن است در ابتدای پروژه به خاطر مسائل مالی یا نیازمندی‌های غیر شفاف و نامشخص خارج از محدوده پروژه باشند. اگر تولید و توسعه نرم‌افزار برون‌سپاری شود (یعنی به شرکت‌های خارجی محول شود) این مستندات به عنوان مستندات قانونی و حقوقی در نظر گرفته می‌شود؛ بنابراین در صورت اتفاق هرگونه دعوای حقوقی یا ابهام در مورد تعهدات داده‌شده به کاربر، این مسائل قابل شفاف‌سازی خواهد بود.=== پیاده‌سازی، آزمون و مستندسازی ===پیاده‌سازی آن قسمت از فرایند تولید نرم‌افزار به شمار می‌رود که مهندسان نرم‌افزار در دنیای واقعی تمام کدهای پروژه را می‌نویسند و به قول معروف برنامه‌نویسی می‌کنند.آزمون نرم‌افزار بخش لاینفک و مهم از فرایند تولید نرم‌افزار است. این قسمت از فرایندها کمک می‌کند تا مشکلات سامانه بصورت سریع شناسایی شوند.مستندسازی در تمام مراحل پروژه چون طراحی داخلی نرم‌افزار برای تعیین اهداف سیستم، نگهداری آینده و ارتقاء و بهبود سامانه هرچند پروژه پایان یافته باشد انجام می‌شود. همچنین ممکن است این مستندسازی شامل نوشتن ساختار تکه‌های برنامه ظاهر برنامه کاربردی داخلی و خارجی هم باشند. این مطلب خیلی مهم است که همه چیز پروژه مستندسازی شود.=== استقرار و نگهداری سامانه ===استقرار و تحویل سامانه پس از اینکه آزمون مناسب را گذراند و برای انتشار، فروش یا هر نوع توزیع برای محیط کار نهایی تأیید شد انجام خواهد شد.آموزش نرم‌افزار و پشتیبانی خیلی مهم است و خیلی از تولیدکنندگان و توسعه‌دهندگان نرم‌افزارها اهمیت آن را درک نمی‌کنند. مهم نیست که چقدر زمان و برنامه‌ریزی توسط تیم تولید و توسعه نرم‌افزار برای ایجاد نرم‌افزار مصرف کرده‌اند اگر در آخر کار کاربری در سازمان نباشد تا از نرم‌افزار استفاده کند. مردم معمولاً در برابر تغییرات مقاومت نشان می‌دهند و از ماجراجویی در محیط ناآشنا اجتناب می‌کنند، برای همین در فاز استقرار این خیلی مهم است کلاس‌های آموزشی برای کاربران جدیدِ نرم‌افزار گذاشته شود.نگهداری و ارتقای نرم‌افزاری برای پوشش، مسائل پوشش داده‌نشده یا نیازمندی‌های تازه‌ای که ممکن است بوجود آیند مدت خیلی زیادی حتی بیشتر از زمان اولیه تولید نرم‌افزار زمان بگیرد. این مرحله ممکن است نیاز باشد تا کدهای برنامه‌نویسی تازه‌ای که در طراحی اصلی برنامه نیز دیده نشده اضافه شود تا مسائل و مشکلات دیده‌نشده حل شوند یا ممکن است کاربر درخواست عملیات اصلی دیگری کند و برنامه‌نویسی‌های تازه‌ای برای برآورده کردن نیازهای جدید انجام گیرد. اگر هزینه کار فاز نگهداری از ۲۵ درصد هزینه فاز قبلی (پیاده‌سازی) بیشتر باشد، این احتمال وجود دارد که کیفیت کلی فاز قبلی خیلی ضعیف بوده باشد. در این صورت مدیران پروژه باید گزینهٔ ایجاد مجدد سامانه (یا بخشی از سامانه) را قبل از اینکه هزینه‌های نگهداری غیر قابل کنترل شود را مطرح کنند.الگوهای تولید نرم‌افزارالگو آبشاریالگو آبشاری فرایندها را به گونه‌ای نشان می‌دهد که کجا تولید کنندگان نرم‌افزار (برنامه‌نویسان) فازهای زیر را به ترتیب انجام دهند:# مشخصات مورد نیاز (تحلیل نیازمندی‌ها)# طراحی نرم‌افزار# پیاده‌سازی و یکپارچه‌سازی# تست نرم‌افزار (یا اعتبارسنجی)# گسترش نرم‌افزار (یا نصب)# نگهداری نرم‌افزاردر سختگیرانه‌ترین حالت آبشاری، بعد از اینکه هر فاز کاملاً پایان پذیرفت، به مرحله بعدی می‌رویم. بازبینی که اجازه ایجاد تغییرات در سامانه را بدهد (که ممکن است شامل تغییرات فرایندهای کنترل رسمی باشد) فقط قبل از رفتن به مرحله بعد امکان‌پذیر است. همچنین بازبینی ممکن است جهت اطمینان از پایان قطعی این فاز (مرحله) بکار گرفته شود. فازی که معیارهای تکمیل آن کامل شده، معمولاً با عنوان دروازه اطلاق می‌شود که نشان می‌دهد پروژه از فاز فعلی به فاز بعدی منتقل شده است. الگو آبشاری از بازبینی و تجدید نظر فازهای قبلی که کامل شده‌اند، جلوگیری می‌کند. این عدم انعطاف‌پذیری مفصل در الگو آبشاری محض، دست مایه انتقاد، پشتیبانی کنندگان الگوهای انعطاف پذیر است.الگو حلزونیخصوصیت کلیدی الگو حلزونی مدیریت ریسک در تمام مراحل چرخهٔ تولید نرم‌افزار است. در سال ۱۹۸۸ میلادی بری بوهم به صورت رسمی الگو حلزونی فرایند تولید نرم‌افزار را منتشر کرد، که ترکیبی از بعضی کلیدهای تایید شده متدولوژی الگو آبشاری و نمونه‌سازی سریع است، اما احساس می‌شود الگو ارائه شده تاکید در ناحیه های کلیدی (الگو آبشاری) را با متدهای دیگری همچون بررسی دقیق و تحلیل دائمی ریسک‌ها، سیستم‌های خاص مناسب برای سامانه پیچیده و بزرگ، کوتاه تر کرده است.الگو حلزونی این روش را با چهار نمودار که نشان دهند فعالیت های زیر است، به تصویر می کشد که فرایندها در چند مرحله تکرار انجام می‌شود:# تدوین و فرموله کردن برنامه ریزی خوب است برای شناسایی اهداف سیستم، قسمت های انتخاب شده جهت پیاده سازی برنامه، محدودیت‌های واضح و مشخص پروژه.# تحلیل ریسک و مشکلات سامانه: ارزیابی تحلیلی برنامه های انتخاب شده، جهت مشخص کردن چگونگی شناسایی و از بین بردن ریسک‌ها.# پیاده سازی پروژه: پیاده سازی تولید نرم‌افزار و تایید کارایی سامانه. الگو حلزونی مبتنی بر ریسک، بر اختیارانتخاب گزینه ها و محدودیت‌ها در سفارش‌ها برای پشتیبانی استفاده مجدد نرم‌افزار و اینکه کیفیت نرم‌افزار می‌تواند در ادغام اهداف ویژه در تولید نرم‌افزار کمک می‌کند، تاکید می‌کند.به هر حال الگو حلزونی شرایط محدود کننده زیر را دارا می باشد: # الگو حلزونی تحلیل ریسک‌ها را تاکید می‌کند و بنابراین کاربران باید این تحلیل را قبول کنند و فکری برایش کنند (این مطالب را در نظر داشته باشند). این مسئله نیازمند اعتماد متقابل و همچنین تمایل به هزینه کردن برای رفع ایرادات، در هنگام تولید نرم‌افزار است و این دلیل استفاده شدن این الگو تولید نرم‌افزار پروژه های بزرگ است.# درصورتیکه در هنگام پیاده‌سازی تحلیل ریسک‌ها تاثیر منفی روی سود پروژه زیاد باشد نبایستی از الگو حلزونی استفاده گردد.# تولید و توسعه دهندگان نرم‌افزار بصورت فعال حواسشان به ریسک‌های قابل حل خواهد بود و به دقت آنها را در الگو حلزونی تحلیل می‌کنند.مرحله اول تدوین و فرموله کردن یک برنامه برای رسیدن به اهداف با این محدودیت‌ها، و پس از آن تلاش برای پیدا کردن و حذف تمام خطرات بالقوه (ریسک‌های بالقوه) از طریق تجزیه و تحلیل دقیق و در صورت لزوم، با ساخت نمونه اولیه است. اگر برخی ریسک‌ها قابل حل نبودند در این صورت مشتریان باید تصمیم بگیرند که آیا می‌خواهند انجام پروژه را خاتمه دهند یا از ریسک‌های مورد نظر چشم پوشی کنند و به هر ترتیب ادامه دهند. در نهایت، نتایج ارزیابی شده و طراحی مرحله بعدی آغاز می‌شود.در حالت کلی یک الگو تکاملی است که به صورت مجموعه‌ای از نسخه‌های افزایشی توسعه میابد و همچنین در طی تکرارهای اولیه ممکن است یک الگو کاغذی یا یک نمونه اولیه باشد ولی در طول تکرارهای بعدی هر بار نسخه کامل‌تری از سامانه تولید می‌شود و این الگو به ۳ تا ۶ نواحی کاری تقسیم میشود.روش تکرارشونده و افزایشیروشی تکراری تولید نرم‌افزار اجازه ی ایجاد که پروژه در ابتدا از بخشهای کوچک شروع شود و به مرور زمان سامانه رشد کند تا کمک کند در این درگیری مشکلات مهم پیدا شوند قبل از اینکه فرضیات اشتباه باعث خراب شدن سامانه شوند. الگو تکرار فرایند ها بوسیله تولید کنندگان نرم‌افزارهای تجاری انتخاب و استفاده می‌شود چون این الگو اجازه می دهد تا نیازهای کاربرانی که در زمان طراحی دقیقاً نمی‌دانند چگونه نیازمندی‌هایشان از سامانه را معرفی کنند بصورت بالقوه برآورده شود. روش توسعه سریع نرم‌افزارروش توسعه سریع نرم‌افزار (به انگلیسی: Rapid application development)(مخفف انگلیسی: RAD) روش تکراری را بعنوان پایه کار استفاده می‌کند اما طرفداری نظریه سبک‌تر و محبوبیت بیشتر از روش سنتی است. روش سریع از بازخوردها به جای برنامه‌ریزی بعنوان سازوکار اصلی کنترل پروژه استفاده می‌کند. بازخوردها بوسیله آزمون‌های مرتب و انتشار پیاپی در بازه‌های زمانی کوتاه نرم‌افزارهای در حال تکامل تولید می‌شوند.روش‌های گوناگونی از فرایند سریع برای تولید نرم‌افزار استفاه می‌شود:روش برنامه‌سازی مفرطتولید نرم‌افزار به روش برنامه‌سازی مفرط (به انگلیسی: Extreme programming)(مخفف انگلیسی: XP) در فازهای خیلی کوچک (یا مداوم) انجام و با فرایندهای دسته‌ای قدیمی‌تر تطبیق داده می‌شوند. فاز اول (که عمداً کامل نشده) در طول مراحل ممکن است به جای اینکه ماه‌ها و سال‌ها در روش آبشاری طول بکشد تا کامل شود، یک روز یا یک هفته وقت بگیرد. ابتدا یک آزمون خودکار برای ایجاد اهداف اساسی تولید نرم‌افزار نوشته می‌شود. سپس (توسط دو برنامه‌نویس) برنامه‌نویسی انجام می‌گیرد که وقتی تمام آزمون‌ها را پشت سر گذاشته و دیگر هیچ آزمون مورد نیازی به ذهن برنامه‌نویسان نرسد کامل می‌شود. کار طراحی و معماری سیستم بعد از اینکه نه آزمونی وجود دارد و نه برنامه‌نویسی‌شده انجام می‌شود.طراحی توسط برنامه‌نویسان انجام می‌شود. (فقط مشخصات نهایی و ترکیب طراحی و کد در تمام فرایندها در روش سریع مشترک هستند) عملیات اصلی ناقص سامانه (توسط دست کم یکی از افراد گروه تولیدکننده و برنامه‌نویس) برای کاربران (یا برخی از کاربران) نصب یا نمایش داده می‌شوند. در اینجا تمام عوامل پروژه دوباره شروع به نوشتن آزمون برای قسمت‌های مهم سامانه خواهند کرد.الگو اسکرام اسکرام یک روش چابکِ تکرارشونده و افزایشی برای مدیریت پروژه است که معمولاً در الگوی تولید نرم‌افزار چابک به عنوان نوعی متدولوژی توسعه نرم‌افزار دیده می‌شود. با اینکه روش اسکرام در واقع برای مدیریت محصولات تولید و توسعه پروژه‌ها پیشنهاد شده بود، اما استفاده آن در مدیریت پروژه‌های تولید نرم‌افزار متمرکز شد؛ همچنین امکان دارد جهت مدیریت تیم نگهداری نرم‌افزار، مدیریت پروژه‌ها یا برنامه‌های عمومی مدیریت خط مشی‌ها استفاده شود.الگوهای بهبودسازی الگوی تکامل قابلیت یکپارچه سازی (CMMI) الگوی تکامل قابلیت یکپارچه‌سازی (CMMI) یکی از الگوهای پیشنهادی و تکنیک‌های پیشتاز است. ارزیابی سازمان‌های مستقل و رتبه‌بندی در مورد کیفیت چگونگی تعریف فرایندهای آن سازمان‌ها را دنبال می‌کند، نه بر کیفیت خود فرایندها یا نرم‌افزار تهیه شده است. الگوی CMMI جایگزین الگوی CMM شده است.ایزو ۹۰۰۰ ایزو ۹۰۰۰ یک استاندارد رسمی سازماندهی فراینده ساخت محصولات و روشی برای مدیریت و نظارت پیشرفت کارهاست. در اصل این استاندارد برای بخش تولید وساخت(صنعتی) ایجاد شد.ایزو ۹۰۰۰ همچنین برای فرایند تولید نرم‌افزار نیز به خوبی استفاده شده.مانند الگو CMMI مدرک ایزو ۹۰۰۰ هیچ تضمینی راجع به کیفیت نتایج نهایی ندارد و فقط فرایندهای کاری را فرموله و قالب استاندارد رسمی می دهد.ایزو ۱۵۵۰۴ ایزو ۱۵۵۰۴ که با عنوان فرایند تشخیص و تعیین بهبود قابلیت نرم‌افزار (به انگلیسی: Software Process Improvement and Capability Determination)(مخفف انگلیسی: SPICE) نیز شناخته می‌شود، چارچوبی برای ارزیابی فرایندهای نرم‌افزار است. این استاندارد تنظیمات قالب روشنی برای مقایسه فرایندها به شمار می‌رود. SPICE خیلی شبیه CMMI استفاده می‌شود. فرایندهای این الگو برای مدیریت، کنترل، راهنمایی و نظارت تولید نرم‌افزار است. این الگو جهت سنجش سازماندهی تولید و توسعه یا تیم پروژه بصورت واقعی در طول مدت تولید نرم‌افزار استفاده می‌شود. تجزیه و تحلیل این اطلاعات برای شناسایی نقاط ضعف و حرکت به سمت بهبود پروژه استفاه می‌شود. همچنین برای تشخیص نقاط قوت پروژه که می تواند برای سازمان یا تیم پروژه ادامه پیدا کند یا برای امور مشترک یکپارچه شود.






کیفیت نرم‌افزار

در مبحث مهندسی نرم افزار، کیفیت نرم افزار به دو رده مرتبط اما مجزای زیر اشاره دارد:

کیفیت عملیاتی نرم افزار (Software Functional Quality): شاخصی جهت نشان دادن میزان تطابق نرم افزار با نیامندی های عملیاتی تعریف شده برای نرم افزار.
کیفیت ساختاری نرم افزار (Software Structural Quality): که منعکس کننده میزان دست یابی به نیازمندی های غیر عملیاتی مانند استحکام (Robustness) و قابلیت نگهداری (Maintainability) نرم افزار است.







مایکروسافت

مایکروسافت، (به انگلیسی: Microsoft Corporation) شرکت کامپیوتری آمریکایی و چندملیتی است، که دفتر مرکزی آن در شهر ردموند، ایالت واشینگتن، ایالات متحده آمریکا قرار دارد. این شرکت، بزرگترین شرکت ارائه نرم‌افزار رایانه در دنیاست، که به انتشار کتاب و تولید محصولات چندرسانه‌ای و ارائه خدمات پست الکترونیکی نیز می‌پردازد.

مایکروسافت در سال مالی منتهی به ژوئن ۲۰۱۰ میلادی، بیش از ۶۲ میلیارد دلار درآمد فروش، بیش از ۱۸ میلیارد دلار سود خالص و ۸۹٬۰۰۰ کارمند در کشورهای مختلف دنیا داشته است. فعالیت اصلی آن در زمینهٔ طراحی، توسعه، ساخت، صدور مجوز، پشتیبانی و ارائهٔ خدمات نرم‌افزاری برای ابزارهای رایانه‌ای می‌باشد.

پرفروش‌ترین محصولات مایکروسافت، سیستم‌عامل «ویندوز» و نرم‌افزار «آفیس» است و شعار اصلی شرکت «یک کامپیوتر روی هر میز و در هر خانه، که نرم‌افزارهای مایکروسافت را اجرا کند.» می‌باشد. این دو محصول با سهمی حدود ۹۰٪ در سال ۲۰۰۳ برای مایکروسافت آفیس و در سال ۲۰۰۶ برای ویندوز جایگاه مهمی در بازار فروش محصولات کامپیوترهای شخصی و کامپیوترهای رومیزی پیدا کردند.

مایکروسافت که در ابتدا کار خود را توسط دو دوست دوران کودکی به نام‌های بیل گیتس و پُل جی. آلن با ساخت و فروش مفسر زبان برنامه‌نویسی بیسیک (Basic interpreters) برای «آلتایر» (Altair) شروع کرد، در اواسط دههٔ ۸۰ میلادی با طراحی سیستم‌عامل داس بر بازار سیستم‌های عامل رایانه‌های خانگی مسلط شد.

شرکت، سهام خود را وارد بورس کرد، که با افزایش ارزش سهام، چهار نفر، میلیاردر و حدود ۱۲٬۰۰۰ نفر از کارکنان مایکروسافت، میلیونر شدند.

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

مایکروسافت علاوه بر بازار سیستم‌عامل و نرم‌افزار اداری، در زمینه‌های دیگر هم فعالیت می‌کند مانند: شبکه تلویزیونی ام‌اس‌ان‌بی‌سی "MSNBC"، سایت اینترنتی «ام‌اس‌ان» و دانشنامه چندرسانه‌ای انکارتا (که دیگر انتشار نمی‌یابد). همچنین در زمینه تولید سخت‌افزار رایانه، با ساخت محصولاتی مانند موشواره و نیز سرگرمی‌های خانگی، از جمله ایکس‌باکس، ایکس‌باکس ۳۶۰ و زون(zune) نیز می‌پردازد. مایکروسافت از گذشته تاکنون با استفاده از روش‌های مختلف مانند گروه خبری «یوزنت» "Usenet" و وب، پشتیبانی از نرم‌افزارهای خود را همواره ادامه داده‌است و جایزهٔ «ام‌وی‌پی» Microsoft MVP را به داوطلبانی که در کمک به مشتریان شرکت مفید بوده باشند، اهدا می‌کند.

در آوریل ۲۰۱۴ مایکروسافت شرکت فنلاندی تولید تلفن همراه نوکیا را به قیمت هفت و نیم میلیارد دلار خرید. بدین ترتیب تولید گوشی‌های تلفن همراه توسط شرکت نوکیا برای همیشه به پایان رسید. با وجود این نوکیا اعلام کرد از این پس بر خدمات نرم‌افزاری، نقشه‌کشی، شبکه‌سازی و پیشبرد فناوری متمرکز خواهد شد. تلفن‌های همراه نوکیا پس از ورود گوشی‌های هوشمند به ویژه سامسونگ و آیفون، به سرعت از رده خارج شدند.






تاریخچه
تاریخچه اولیه

پائول آلن و بیل گیتس، دوستان دوران کودکی بودند که با شور و شوق فراوانی برای کامپیوتر برنامه نویسی می‌کردند و به دنبال ایجاد یک کسب و کار بودند. در ژانویه ۱۹۷۵، سیستم‌های تله میتری (MITS) به نام آتاری ۸۸۰۰ از شرکت میکرو تولید شد. پائول آلن متوجه شد که آن‌ها می‌توانند برای آتاری ۸۸۰۰، Basic بسازند و پس از تماس با بیل گیتس آن‌ها از این شرکت تقاضای استخدام کردند. پائول آلن به عنوان شبیه‌ساز و بیل گیتس به عنوان مترجم استخدام شدند. پس از تولید Basic، میکرو دستگاه آتاری Basic را تولید کرد و بازاریابی کرد. سرانجام در تاریخ ۴ آوریل ۱۹۷۵، شرکت مایکروسافت با مدیر عاملی بیل گیتس تاسیس شد. در آگوست ۱۹۷۷، مایکروسافت با مجله اسکی در ژاپن توافق کرد و در نتیجه اولین دفتر بین‌المللی خود را در ژاپن تاسیس کرد. مایکروسافت در ژانویه ۱۹۷۹، به یک مرکز جدید در واشینگتن در ایالات متحده آمریکا نقل مکان کرد.

مایکروسافت با سیستم عامل خود در سال ۱۹۸۰ یعنی زنیکس، وارد بازار کار سیستم عامل شد. سپس مایکروسافت سیستم عامل MS-DOS را تولید کرد. سرانجام مایکروسافت در مذاکرات با تحقیقات دیجیتال شکست خورد و در نوامبر ۱۹۸۰ سیستم عامل جدیدی با نام CP/M تولید کرد که در آینده در کامپیوترهای شخصی مورد استفاده قرار گرفت. مایکروسافت با درآمدهای بسیارش ۲۱۰ شرکت را خرید و هم چنین یک بخش چاپ و نشر به نام مایکروسافت پرس تولید کرد. سرانجام پائول آلن در ماه فوریه پس از مبتلا شدن به بیماری هوکچین استعفا داد.






آغاز فعالیت‌ها

در ۱۹۹۴ مایکروسافت انکارتا را به راه انداخت؛ نخستین دانشنامه‌ای که روی کامپیوتر قابل اجرا بود. مایکروسافت با همکاری دریم ورکس در سال ۱۹۹۵ برای تولید سرگرمی‌های چندمنظوره یک شرکت جدید تأسیس کردند. پیش از ارائه ویندوز ۹۵، مایکروسافت یک شرکت تجارت محور قلمداد می‌شد اما ویندوز ۹۵ موجب شد که دیگر آن را یک شرکت مشتری محور بدانند. در سپتامبر ۱۹۹۵ دولت چین ویندوز را به عنوان سیستم‌عامل رسمی کشورش انتخاب کرد و از مایکروسافت خواست نسخه چینی ویندوز را برایشان آماده کند. اواسط دهه۹۰ بیل گیتس تصمیم گرفت مایکروسافت را وارد دنیای اینترنت کند و "MSN" به وجود آمد. این یک سرویس آنلاین بود که قرار بود با آمریکن آنلاین (AOL) رقابت کند. بعد با همکاری ان‌بی‌سی، ایستگاه کابلی خبری "MSNBC" و مجلهٔ آنلاین "Slate" به سردبیری مایکل کینسلی را تأسیس نمود. راه‌اندازی وب‌تی‌وی که امکان اتصال تلویزیون به شبکه را فراهم می‌کرد، از دیگر اقدامات مایکروسافت در سال ۱۹۹۶ بود.






فعالیتهای مستمر

در ۱۹۹۷ اینترنت اکسپلورر ۴ همراه ویندوز به بازار آمد. اما دادگستری آمریکا به این دلیل که مایکروسافت با این کار از توافق‌نامه‌ای که در سال ۱۹۹۴ امضا کرده، تخطی نموده‌است، از آن‌ها خواست که دیگر اینترنت اکسپلورر و ویندوز را همراه هم به بازار نفرستند. در سال ۱۹۹۸ ویندوز ۹۸ به همراه اکسپلورر SP۴/۰ SP۱ و FAT۳۲ به عنوان فایل سیستم عرضه گشت. در عین حال، جنجال‌های زیادی در پی افشای یادداشت‌های داخلی مایکروسافت در اینترنت به وجود آمد: «نرم‌افزارهای اوپن سورس تهدیدی جدی برای مایکروسافت به حساب می‌آیند.» این اسناد که به اسناد هالووین معروف شده‌اند، بخشی از این خطرات را عنوان کرده و در عین حال از فعالیت‌های مایکروسافت علیه لینوکس پرده برمی‌دارد. مایکروسافت نیز ضمن این که به صحت این اسناد اعتراف کرد، آن‌ها را صرفاً تحقیقات مهندسی دانست.






دیگر فعالیت‌ها

در آوریل ۲۰۰۰ حکم پرونده ایالات متحده و مایکروسافت صادر شد. این حکم شرکت را مجبور می‌کرد که به دو پاره تقسیم شود. البته بخشی از این تصمیم در دادگاه استیناف لغو شد. مایکروسافت که اهداف تجاری و خانگی را توأمان نشانه رفته بود، ویندوز ایکس پی را سال ۲۰۰۱ آماده کرد. مایکروسافت برای رقابت با سونی و نینتندو، با سرمایه‌گذاری میلیاردی و تولید و پخش ایکس باکس وارد عرصه بازی‌های کامپیوتری شد.

تا سال ۲۰۰۵، ایکس باکس در بازار فروش آمریکا در رده دوم پس از پلی استیشن ۲ سونی و قبل از گیم کیوب نینتندو قرار داشت. (در بازار جهانی بعد از هر دو بود.) اما با این وجود، با فروش ۲۲ میلیون دستگاه در مقایسه با فروش بیش از ۱۰۰میلیون دستگاه پلی استیشن ۲، ضرر سنگینی معادل ۴ میلیارد دلار متحمل شده‌است. مایکروسافت در مدت ۳ سال کار ساخت «NET.» مقدماتی و سرور ویندوز ۲۰۰۳ را هم به پایان رساند.

در سال ۲۰۰۴ به دنبال شکایت اتحادیه اروپا، مایکروسافت به پرداخت ۶۱۳ میلیون دلار جریمه محکوم شد و متعهد گردید که توافقات قطعی خود با سایر رقبا را افشا کند. همچنین ملزم شد نسخه‌ای از ویندوز را تهیه و آماده کند که فاقد مدیا پلیر باشد.






ایکس باکس ۳۶۰

در نوامبر ۲۰۰۵، مایکروسافت دومین کنسول بازی خود را با نام ایکس باکس ۳۶۰ به بازار عرضه کرد (لازم به ذکر است اولین نسخه کنسول مایکروسافت XBOX نام داشت). مایکروسافت در زمینه رقابت با کنسول‌های بازی تجربیات خوبی بدست آورده بود و این بار کنسولی بسیار کامل‌تر و بهتر نسبت به اولین کنسول خود به بازار عرضه کرد. ایکس باکس ۳۶۰ در دو مدل با نام‌های "Premium" و «Core System» عرضه شد. نسخهٔ «ایکس باکس ۳۶۰ Premium» دارای دسته بی‌سیم، هارد درایو، ریموت کنترل و هدست می‌باشد ولی نسخهٔ «Core System» شامل دسته سیمی و بدون هارد درایو و وسایل جانبی می‌باشد. ایکس باکس ۳۶۰ تقریباً یک سال زودتر از رقیبان خود یعنی پلی استیشن ۳ و نینتندو Wii به بازار عرضه شد. ایکس باکس ۳۶۰ پیشرفت‌های زیادی نسبت به کنسول قبلی خود کرده‌است و علاوه بر قدرت سخت‌افزاری، دارای طراحی فوق‌العاده زیبایی می‌باشد. ایکس باکس ۳۶۰ فروش بسیار بهتری نسبت به کنسول قبلی مایکروسافت داشت.






وب‌گاه مایکروسافت
وب‌گاه مایکروسافت با بیش از ۱۰۰ میلیون بازدید در روز یکی از پرطرفدارترین وب‌گاه‌ها در اینترنت است. بر طبق اطلاعات وب‌گاه «الکسا»، وب‌گاه مایکروسافت در ۱۱ مه ۲۰۰۷ رده سیزدهم را در بین وب‌گاه‌های اینترنتی از نظر تعداد بازدیدکننده به خود اختصاص داده‌است.






رایانه
رایانه یا کامپیوتر (به انگلیسی: computer) ماشینی است که از آن برای پردازش اطلاعات استفاده می‌شود.






نام

در زبان انگلیسی «کامپیوتر» به دستگاه خودکاری می‌گفتند که محاسبات ریاضی را انجام می‌داد. بر پایهٔ «واژه‌نامه ریشه‌یابی Barnhart Concise» واژهٔ کامپیوتر در سال ۱۶۴۶ به زبان انگلیسی وارد گردید که به معنی «شخصی که محاسبه می‌کند» بوده‌است و سپس از سال ۱۸۹۷ به ماشین‌های محاسبه مکانیکی گفته می‌شد. در هنگام جنگ جهانی دوم «کامپیوتر» به زنان نظامی انگلیسی و آمریکایی که کارشان محاسبه مسیرهای شلیک توپ‌های بزرگ جنگی به وسیله ابزار مشابهی بود، اشاره می‌کرد.

البته در اوایل دهه ۵۰ میلادی هنوز اصطلاح ماشین حساب (computing machines) برای معرفی این ماشین‌ها به‌کار می‌رفت. پس از آن عبارت کوتاه‌تر کامپیوتر (computer) به‌جای آن به‌کار گرفته شد. ورود این ماشین به ایران در اوائل دهه ۱۳۴۰ بود و در فارسی از آن زمان به آن «کامپیوتر» می‌گفتند. واژه رایانه در دو دهه اخیر در فارسی رایج شده است.

برابر این واژه در زبان‌های دیگر حتماً همان واژه زبان انگلیسی نیست. در زبان فرانسوی واژه "ordinateur"، که به معنی «سازمان‌ده» یا «ماشین مرتب‌ساز» است، به‌کار می‌رود. در اسپانیایی "ordenador" با معنایی مشابه استفاده می‌شود، همچنین در دیگر کشورهای اسپانیایی زبان computadora بصورت انگلیسی‌مآبانه‌ای ادا می‌شود. در پرتغالی واژه computador به‌کار می‌رود که از واژه computar گرفته شده و به معنای «محاسبه کردن» می‌باشد. در ایتالیایی واژه "calcolatore" که معنای ماشین حساب است بکار می‌رود که بیشتر روی ویژگی حسابگری منطقی آن تاکید دارد. در سوئدی رایانه "dator" خوانده می‌شود که از "data" (داده‌ها) برگرفته شده‌است. به فنلاندی "tietokone" خوانده می‌شود که به معنی «ماشین اطلاعات» می‌باشد. اما در زبان ایسلندی توصیف شاعرانه‌تری بکار می‌رود، «tölva» که واژه‌ای مرکب است و به معنای «زن پیشگوی شمارشگر» می‌باشد. در چینی رایانه «dian nao» یا «مغز برقی» خوانده می‌شود. در انگلیسی واژه‌ها و تعابیر گوناگونی استفاده می‌شود، به‌عنوان مثال دستگاه داده‌پرداز («data processing machine»).






معنای واژهٔ فارسی رایانه

واژهٔ رایانه از مصدر رایانیدن ساخته شده که در فارسی میانه به شکلِ rāyēnīdan و به معنای «سنجیدن، سبک و سنگین کردن، مقایسه کردن» یا «مرتّب کردن، نظم بخشیدن و سامان دادن» بوده‌است. این مصدر در زبان فارسی میانه یا همان پهلوی کاربرد فراوانی داشته و مشتق‌های زیادی نیز از آن گرفته شده بوده است. برایِ مصدر رایانیدن/ رایاندن در فرهنگ واژه دهخدا چنین آمده:







رایاندن
دَ (مص) رهنمائی نمودن به بیرون. هدایت کردن. (ناظم الاطباء).

شکلِ فارسی میانهٔ این واژه rāyēnīdan بوده و اگر می‌خواسته به فارسی نو برسد به شکل رایانیدن/ رایاندن درمی‌آمده. (بسنجید با واژه‌یِ فارسیِ میانه‌یِ āgāhēnīdan که در فارسیِ نو آگاهانیدن/ آگاهاندن شده‌است).

این واژه از ریشه‌یِ فرضیِ ایرانیِ باستانِ –radz* است که به معنایِ «مرتّب کردن» بوده. این ریشه به‌صورتِ –rad به فارسیِ باستان رسیده و به شکلِ rāy در فارسیِ میانه (پهلوی) به‌کار رفته. از این ریشه ستاک‌هایِ حالِ و واژه‌هایِ زیر در فارسیِ میانه و نو به‌کار رفته‌اند:

-ā-rādz-a*یِ ایرانیِ باستان> -ā-rāy ِ فارسی میانه که در واژه‌یِ آرایشِ فارسیِ نو دیده می‌شود.
-pati-rādz-a*یِ ایرانیِ باستان> -pē-rāy ِ فارسی میانه که در واژه‌یِ پیرایشِ فارسیِ نو دیده می‌شود؛ و
-rādz-ta*یِ ایرانیِ باستان> rāst ِ فارسی میانه که در واژه‌یِ راستِ فارسیِ نو دیده می‌شود.

این ریشه‌یِ ایرانی از ریشه‌یِ هندواروپاییِ -reĝ* به معنایِ «مرتّب کردن و نظم دادن» آمده‌است. از این ریشه در

هندی rāj-a به معنیِ «هدایت‌کننده، شاه» (یعنی کسی که نظم می‌دهد)؛
لاتینی rect-us به معنیِ «راست، مستقیم»،
فرانسه di-rect به معنیِ «راست، مستقیم»،
آلمانی richt به معنیِ «راست، مستقیم کردن» و
انگلیسی right به معنیِ «راست، مستقیم، درست»

برجای مانده‌است.

در فارسیِ نو پسوندِ -ـه (= /e/ در فارسی رسمی ایران و /a/ در فارسی رسمی افغانستان و تاجیکستان) را به ستاکِ حالِ فعل‌ها می‌چسبانند تا نامِ ابزارِ آن فعل‌ها به‌دست آید (البته با این فرمول مشتق‌های دیگری نیز ساخته می‌شود، امّا در اینجا تنها نامِ ابزار مدِّ نظر است)؛ برای نمونه از

مالـ- (یعنی ستاکِ حالِ مالیدن) + -ـه، ماله «ابزار مالیدنِ سیمان و گچِ خیس»
گیر- (یعنی ستاکِ حالِ گرفتن) + -ـه، گیره «ابزار گرفتن»
پوشـ- (یعنی ستاکِ حالِ پوشیدن) + -ـه، پوشه «ابزار پوشیدن» (خود را جایِ کاغذهایی بگذارید که پوشه را می‌پوشند!)
رسانـ- (یعنی ستاکِ حالِ رساندن) + -ـه، رسانه «ابزار رساندنِ اطّلاعات و برنامه‌هایِ دیداری و شنیداری»

حاصل می‌گردد.

در فارسیِ نو پسوندِ -ـه (= e- یا همان a-) را به ستاکِ حالِ "رایانیدن" یعنی رایانـ- چسبانده‌اند تا نامِ ابزارِ این فعل ساخته شود؛ یعنی "رایانه" به معنایِ «ابزارِ نظم بخشیدن و سازماندهی (ِ داده‌ها)» است.

سازندگان این واژه به واژه‌یِ فرانسویِ این مفهوم، یعنی ordinateurتوجّه داشته‌اند که در فرانسه از مصدرِ ordre«ترتیب و نظم دادن و سازمان بخشیدن» ساخته شده. به هرحال، معنادهیِ واژه‌یِ رایانه برایِ این دستگاه جامع‌تر و رساتر از کامپیوتر است. یادآور می‌شود که computerبه معنایِ «حسابگر» یا «مقایسه‌گر» است، حال آن‌که کارِ این دستگاه براستی فراتر از "حساب کردن" است.






تاریخچه

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

به تصریح دانشنامه انگلیسی ویکی‌پدیا، بدیع‌الزمان ابوالعز بن اسماعیل بن رزاز جَزَری (درگذشتهٔ ۶۰۲ ق.) یکی از نخستین ماشین‌های اتوماتا را که جد رایانه‌های امروزین است، ساخته بوده‌است. این مهندس مکانیک مسلمان از دیاربکر در شرق آناتولی بوده‌است. رایانه یکی از دو چیز برجسته‌ای است که بشر در سدهٔ بیستم اختراع کرد. دستگاهی که بلز پاسکال در سال ۱۶۴۲ ساخت اولین تلاش در راه ساخت دستگاه‌های محاسب خودکار بود. پاسکال آن دستگاه را که پس از چرتکه دومیت ابزار ساخت بشر بود، برای یاری رساندن به پدرش ساخت. پدر وی حسابدار دولتی بود و با کمک این دستگاه می‌توانست همه اعدادشش رقمی را با هم جمع و تفریق کند.

لایبنیتز ریاضی‌دان آلمانی نیز از نخستین کسانی بود که در راه ساختن یک دستگاه خودکار محاسبه کوشش کرد. او در سال ۱۶۷۱ دستگاهی برای محاسبه ساخت که کامل شدن آن تا ۱۹۶۴ به درازا کشید. همزمان در انگلستان ساموئل مورلند در سال ۱۶۷۳ دستگاهی ساخت که جمع و تفریق و ضرب می‌کرد.

در سدهٔ هجدهم میلادی هم تلاش‌های فراوانی برای ساخت دستگاه‌های محاسب خودکار انجام شد که بیشترشان نافرجام بود. سرانجام در سال ۱۸۷۵ میلادی استیفن بالدوین نخستین دستگاه محاسب را که هر چهار عمل اصلی را انجام می‌داد، به نام خود ثبت کرد.

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

کارهای بابیچ به فراموشی سپرده شد تا این که در سال ۱۹۴۳ و در بحبوحه جنگ جهانی دوم دولت آمریکا طرحی سری برای ساخت دستگاهی را آغاز کرد که بتواند مکالمات رمزنگاری‌شدهٔ آلمانی‌ها را رمزبرداری کند. این مسئولیت را شرکت آی‌بی‌ام و دانشگاه هاروارد به عهده گرفتند که سرانجام به ساخت دستگاهی به نام ASCC در سال ۱۹۴۴ انجامید. این دستگاه پنج تنی که ۱۵ متر درازا و ۲٫۵ متر بلندی داشت، می‌توانست تا ۷۲ عدد ۲۴ رقمی را در خود نگاه دارد و با آن‌ها کار کند. دستگاه با نوارهای سوراخدار برنامه‌ریزی می‌شد و همهٔ بخش‌های آن مکانیکی یا الکترومکانیکی بود.






تعریف داده و اطلاعات

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

به داده‌های پردازش شده اطّلاعات می‌گویند.






رایانه‌ها چگونه کار می‌کنند؟

از زمان رایانه‌های اولیه که در سال ۱۹۴۱ ساخته شده بودند تا کنون فناوری‌های دیجیتالی رشد نموده‌است، معماری فون نوِیمن یک رایانه را به چهار بخش اصلی توصیف می‌کند: واحد محاسبه و منطق (Arithmetic and Logic Unit یا ALU)، واحد کنترل یا حافظه، و ابزارهای ورودی و خروجی (که جمعا I/O نامیده می‌شود). این بخش‌ها توسط اتصالات داخلی سیمی به نام گذرگاه (bus) با یکدیگر در پیوند هستند.






حافظه

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






پردازش

واحد محاسبه و منطق یا ALU دستگاهی است که عملیات پایه مانند چهار عمل اصلی حساب (جمع و تفریق و ضرب و تقسیم)، عملیات منطقی (و، یا، نقیض)، عملیات قیاسی (برای مثال مقایسه دو بایت برای شرط برابری) و دستورات انتصابی برای مقدار دادن به یک متغیر را انجام می‌دهد. این واحد جائیست که «کار واقعی» در آن صورت می‌پذیرد.

البته CPUها به دو دسته کلی RISC و CISC تقسیم بندی می‌شوند. نوع اول پردازش‌گرهای مبتنی بر اعمال ساده هستند و نوع دوم پردازشگرهای مبتنی بر اعمال پیچیده می‌باشند. پردازشگرهای مبتنی بر اعمال پیچیده در واحد محاسبه و منطق خود دارای اعمال و دستوراتی بسیار فراتر از چهار عمل اصلی یا منطقی می‌باشند. تنوع دستورات این دسته از پردازنده‌ها تا حدی است که توضیحات آن‌ها خود می‌تواند یک کتاب با قطر متوسط ایجاد کند. پردازنده‌های مبتنی بر اعمال ساده اعمال بسیار کمی را پوشش می‌دهند و در حقیقت برای برنامه‌نویسی برای این پردازنده‌ها بار نسبتاً سنگینی بر دوش برنامه‌نویس است. این پردازنده‌ها تنها حاوی ۴ عمل اصلی و اعمال منطقی ریاضی و مقایسه‌ای به علاوه چند دستور بی‌اهمیت دیگر می‌باشند. هرچند ذکر این نکته ضروری است که دستورات پیچیده نیز از ترکیب تعدادی دستور ساده تشکیل شده‌اند و برای پیاده‌سازی این دستورات در معماری‌های مختلف از پیاده‌سازی سخت‌افزاری (معماری CISC) و پیاده‌سازی نرم‌افزاری (معماری RISC) استفاده می‌شود.







(قابل ذکر است پردازنده‌های اینتل از نوع پردازنده مبتنی بر اعمال پیچیده می‌باشند.)

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






ورودی/خروجی

بخش ورودی/خروجی (I/O) این امکان را به رایانه می‌دهد تا اطلاعات را از جهان بیرون تهیه و نتایج آن‌ها را به همان جا برگرداند. محدوده فوق العاده وسیعی از دستگاه‌های ورودی/خروجی وجود دارد، از خانواده آشنای صفحه‌کلیدها، نمایشگرها، نَرم‌دیسک گرفته تا دستگاه‌های کمی غریب مانند رایابین‌ها (webcams). (از سایر ورودی/خروجی‌ها می‌توان موشواره mouse، قلم نوری، چاپگرها (printer)، اسکنرها، انواع لوح‌های فشرده(CD, DVD) را نام برد).

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






دستورالعمل‌ها

هر رایانه تنها دارای یک مجموعه کم تعداد از دستورالعمل‌های ساده و تعریف شده می‌باشد. از انواع پرکاربردشان می‌توان به دستورالعمل «محتوای خانه ۱۲۳ را در خانه ۴۵۶ کپی کن!»، «محتوای خانه ۶۶۶ را با محتوای خانه ۰۴۲ جمع کن، نتایج را در خانه ۰۱۳ کن!»، «اگر محتوای خانه ۹۹۹ برابر با صفر است، به دستورالعمل واقع در خانه ۳۴۵ رجوع کن!».

دستورالعمل‌ها در داخل رایانه بصورت اعداد مشخص شده‌اند - مثلاً کد دستور العمل (copy instruction) برابر ۰۰۱ می‌تواند باشد. مجموعه معین دستورالعمل‌های تعریف شده که توسط یک رایانه ویژه پشتیبانی می‌شود را زبان ماشین می‌نامند. در واقعیت، اشخاص معمولاً به زبان ماشین دستورالعمل نمی‌نویسند بلکه بیشتر به نوعی از انواع سطح بالای زبان‌های برنامه‌نویسی، برنامه‌نویسی می‌کنند تا سپس توسط برنامه ویژه‌ای (تفسیرگرها (interpreters) یا همگردان‌ها (compilers) به دستورالعمل ویژه ماشین تبدیل گردد. برخی زبان‌های برنامه‌نویسی از نوع بسیار شبیه و نزدیک به زبان ماشین که اسمبلر (یک زبان سطح پایین) نامیده می‌شود، استفاده می‌کنند؛ همچنین زبان‌های سطح بالای دیگری نیز مانند پرولوگ نیز از یک زبان انتزاعی و چکیده که با زبان ماشین تفاوت دارد بجای دستورالعمل‌های ویژه ماشین استفاده می‌کنند.






معماری‌ها

در رایانه‌های معاصر واحد محاسبه و منطق را به همراه واحد کنترل در یک مدار مجتمع که واحد پردازشی مرکزی (CPU) نامیده می‌شود، جمع نموده‌اند. عموما، حافظه رایانه روی یک مدار مجتمع کوچک نزدیک CPU قرار گرفته. اکثریت قاطع بخش‌های رایانه تشکیل شده‌اند از سامانه‌های فرعی (به عنوان نمونه، منبع تغذیه رایانه) و یا دستگاه‌های ورودی/خروجی.

برخی رایانه‌های بزرگ‌تر چندین CPU و واحد کنترل دارند که بصورت هم‌زمان با یکدیگر درحال کارند. این‌گونه رایانه‌ها بیشتر برای کاربردهای پژوهشی و محاسبات علمی بکار می‌روند.

کارایی رایانه‌ها بنا به تئوری کاملاً درست است. رایانه داده‌ها و دستورالعمل‌ها را از حافظه‌اش واکشی (fetch) می‌کند. دستورالعمل‌ها اجرا می‌شوند، نتایج ذخیره می‌شوند، دستورالعمل بعدی واکشی می‌شود. این رویه تا زمانی که رایانه خاموش شود ادامه پیدا می‌کند. واحد پردازنده مرکزی در رایانه‌های شخصی امروزی مانند پردازنده‌های شرکت ای-ام-دی و شرکت اینتل از معماری موسوم به خط لوله استفاده می‌شود و در زمانی که پردازنده در حال ذخیره نتیجه یک دستور است مرحله اجرای دستور قبلی و مرحله واکشی دستور قبل از آن را آغاز می‌کند. همچنین این رایانه‌ها از سطوح مختلف حافظه نهانگاهی استفاده می‌کنند که در زمان دسترسی به حافظه اصلی صرفه‌جویی کنند.






برنامه‌ها

برنامه رایانه‌ای فهرست‌های بزرگی از دستورالعمل‌ها (احتمالاً به همراه جدول‌هائی از داده) برای اجرا روی رایانه هستند. خیلی از رایانه‌ها حاوی میلیون‌ها دستورالعمل هستند، و بسیاری از این دستورها به تکرار اجرا می‌شوند. یک رایانه شخصی نوین نوعی (درسال ۲۰۰۳) می‌تواند در ثانیه میان ۲ تا ۳ میلیارد دستورالعمل را پیاده نماید. رایانه‌ها این مقدار محاسبه را صرف انجام دستورالعمل‌های پیچیده نمی‌کنند. بیشتر میلیون‌ها دستورالعمل ساده را که توسط اشخاص باهوشی «برنامه نویسان» در کنار یکدیگر چیده شده‌اند را اجرا می‌کنند. برنامه‌نویسان خوب مجموعه‌هایی از دستورالعمل‌ها را توسعه می‌دهند تا یکسری از وظایف عمومی را انجام دهند (برای نمونه، رسم یک نقطه روی صفحه) و سپس آن مجموعه دستورالعمل‌ها را برای دیگر برنامه‌نویسان در دسترس قرار می‌دهند. (اگر مایلید «یک برنامه‌نویس خوب» باشید به این مطلب مراجعه نمایید.)

رایانه‌های امروزه، قادرند چندین برنامه را در آن واحد اجرا نمایند. از این قابلیت به عنوان چندکارگی (multitasking) نام برده می‌شود. در واقع، CPU یک رشته دستورالعمل‌ها را از یک برنامه اجرا می‌کند، سپس پس از یک مقطع ویژه زمانی دستورالعمل‌هایی از یک برنامه دیگر را اجرا می‌کند. این فاصله زمانی اکثرا به‌عنوان یک برش زمانی (time slice) نام برده می‌شود. این ویژگی که CPU زمان اجرا را بین برنامه‌ها تقسیم می‌کند، این توهم را بوجود می‌آورد که رایانه هم‌زمان مشغول اجرای چند برنامه‌است. این شبیه به چگونگی نمایش فریم‌های یک فیلم است، که فریم‌ها با سرعت بالا در حال حرکت هستند و به نظر می‌رسد که صفحه ثابتی تصاویر را نمایش می‌دهد. سیستم‌عامل همان برنامه‌ای است که این اشتراک زمانی را بین برنامه‌های دیگر تعیین می‌کند.






سیستم‌عامل

کامپیوتر همیشه نیاز دارد تا برای بکار انداختنش حداقل یک برنامه روی آن در حال اجرا باشد. تحت عملکردهای عادی این برنامه همان سیستم‌عامل یا OS که مخفف واژه‌های Operating System است. سیستم یا سامانه عامل بر اساس پیشفرض‌ها تصمیم می‌گیرد که کدام برنامه برای انجام چه وظیفه‌ای اجرا شود، چه زمان، از کدام منابع (مثل حافظه، ورودی/خروجی و...) استفاده شود. همچنین سیستم‌عامل یک لایه انتزاعی بین سخت‌افزار و برنامه‌های دیگر که می‌خواهند از سخت‌افزار استفاده کنند، می‌باشد، که این امکان را به برنامه نویسان می‌دهد تا بدون اینکه جزئیات ریز هر قطعه الکترونیکی از سخت‌افزار را بدانند بتوانند برای آن قطعه برنامه‌نویسی نمایند. در گذشته یک اصطلاح متداول بود که گفته می‌شد با تمام این وجود کامپیوترها نمی‌توانند برخی از مسائل را حل کنند که به این مسائل حل نشدنی گفته می‌شود مانند مسائلی که در مسیر حلشان در حلقه بی‌نهایت می‌افتند. به همین دلیل نیاز است که با کمک روشهای خاص بطور مثال به چند بخش تقسیم نمودن مساله یا روشهای متداول دیگر از رخ دادن این خطا تا حد امکان جلوگیری نمود. از جمله سیستم عامل‌های امروزی می‌توان به مایروسافت ویندوز، مکینتاش اپل و لینوکس و بی اس دی اشاره کرد.
11:17 am
‌ رویکرد اعتقادی: تولد، زندگی و قیام حجت بن حسن به روایت شیعه
نام، القاب و کنیه

بنا بر روایات شیعه حجت بن الحسن هم نام و هم کنیه با محمد پیامبر اسلام است. از محمد پیامبر اسلام، حدیثی با این مضمون نقل شده‌است: «مهدی از نسل من است. نام او نام من و کنیه‌اش، کنیهٔ من است.» به گفتهٔ مادلونگ، این حدیث توسط طرفداران مختار ثقفی و شیعیان کیسانیه برای محمد حنفیه، فرزند علی ابن ابی طالب و امام شیعیان کیسانیه جعل شده بود.






به گفتهٔ ایتان کولبرگ قدیمترین سند اعتقادی شیعه که به امام دوازدهم شیعه اشاره دارد دو کتاب تذکره‌ای دینی فرق الشیعة حسن ابن موسی نوبختی و کتاب المقالات والفرق سعدابن عبدالله قمی می‌باشند. در این دو کتاب که در حدود سال نهصد میلادی (حدود ۲۸۷ ه.ق.) تألیف شده‌اند، به هیچ وجه دلالت ندارد که نام امام دوازدهم در آن زمان مورد اتفاق امامیه بوده‌است، در این دو منبع به روشنی بیان شده‌است که این نام رازی است که نباید فاش گردد. تنها اعضای فرقه‌ای دیگر او را «محمد» می‌خواندند. در هر صورت این نام توسط امامیه باید خیلی زود پذیرفته شده باشد، زیرا متکلم اهل سنت، ابوالحسن اشعری (۳۲۴ ه. /۹۳۶ م.)، در مقالات الاسلامیین امامیه را کسانی معرفی می‌کند که اعتقاد دارند محمد ابن حسن امام همان امام غائب می‌باشد ساشادینا به روایاتی در شیعه اشاره می‌کند که اعلان نام امام دوازدهم را منسوب به زمان نایب دوم ابوجعفر می‌داند.

شیعیان از بردن نام اصلی او نهی شده‌اند. هدف این کار در منابع شیعه مانند کلینی، نعمانی و ابن بابویه (شیخ صدوق) حفاظت از منجی از خطری که متوجه او از جانب بنی‌عباس است، ذکر شده‌است.اما این اصل به‌طور همه جانبه توسط شیعیان رعایت نمی‌شد. برای هماهنگ سازی افکار در این زمینه، کوششی در قالب این توضیح به عمل آمده‌است که قائم دو نام دارد: یکی احمد که نام شناخته‌شده او است و دیگری محمد که مخفی است.لقب هایی مانند مهدی (هدایت‌شده)، منتظر (کسی است که انتظارش را می‌کشند)، صاحب الزمان، بقیه الله، و از همه بیشتر قائم به معنی قیام کننده‌است.لقب دیگر او حجت است. این نام به معنی اثبات وجود خدا در میان زمینیان است (یا کسی که به واسطهٔ او خدای غیر قابل دسترس در دسترس قرار می‌گیرد).



تولد و زندگی

توصیفات دقیقی در مورد مهدی از نیمه اول قرن دهم میلادی و قرن یازدهم میلادی (قرن چهارم و پنجم هجری) به بعد در کتاب‌های افرادی مانند شیخ طوسی، ابن بابویه و نعمانی وجود دارد.در روایات نقل شده از این کتاب‌ها نام‌های متعددی برای مادر مهدی نقل شده‌است؛ مانند نرجس، ریحان، سوسن، و مریم.برطبق همین روایات مادر مهدی کنیزی سیاه از نوبیه بوده‌است. سه نام اول که معمولاً از نام‌هایی بوده‌است که در آن زمان بر کنیزان نهاده می‌شده‌است گواهی بر این دسته از روایات هستند. در روایتی دیگر (که به نوشته امیرمعزی در دانشنامه ایرانیکا از دیدگاه تاریخی صحت ندارد و بدون شک جنبه‌ای افسانه‌ای و تذکره‌ای دارد) مادر مهدی دختر سزار روم شرقی بوده‌است که به اسارت مسلمانان در می‌آید و به صورت برده در بغداد به یکی از یاران هادی فروخته می‌شود. هادی نیز این کنیز را به عقد فرزندش درمی آورد. بر طبق بیشتر منابع، تولد مهدی در نیمه شعبان سال ۲۵۶ قمری یا ۸۷۰ میلادی می‌باشد (یکی از مهمترین جشن‌های شیعیان). اما منابع شیعه مانند شیخ مفید و کلینی سال تولد مهدی را ۲۵۵ هجری قمری ثبت نموده‌اند.

در روایات شیعه تولد امام شیعه، حالتی معجزه گونه دارد. در هنگام تولد او حکیمه عمه امام یازدهم شیعه حضور دارد. هرچند در ابتدا حضورش در خانه حسن عسکری اثری از علایم بارداری در نرجس نمی‌بیند. در روایات شیعه به تواتر نقل شده‌است که مهدی در هنگام تولد سخن گفته‌است.به اعتقاد شیعه نشانه‌های حاملگی در مادر، و همچنین تولد طفل به شکل معجزهٔ آسایی مخفی ماندند، چرا که عباسیان به دنبال از بین بردن کودکی بودند که زمزمه‌هایی مبنی بر منجی بودن او وجود داشت. به گفته منابع شیعه، پدر فرزند، نوزاد را به چهل تن از اصحاب نزدیکش نشان داد و پس از آن کودک از دیده‌ها نهان گردید. مطابق با بسیاری از منابع حسن عسکری تاکتیکی دو منظوره برای تأمین امنیت کودک در نظر گرفت. نخست آنکه به جز در نزد یاران نزدیکش، تولد کودک را سری نگاه داشت. به عنوان مثال او تا آنجا پیش رفت که مادر خود (حدیث) را یگانه وارث خود اعلام نمود. به گفته امیرمعزّی ما اکنون می‌دانیم که بر اساس فقه شیعه، تحت شرایط خاصی، وقتی که فرزندی از متوفی باقی نماند ارث متعلق به مادر متوففی خواهد بود. دوم اینکه، حسن عسکری منابعی در اختیار داشت که بر غبار اوضاع بیفزاید و توجه دیگران را به شرحی که خواهد آمد -از موضوع تولد فرزندش - پرت نماید. کمی پیش از مرگش در سال ۸۷۴، او شایعه‌ای را منتشر نمود مبنی بر اینکه کنیز او (ثقیل) فرزندی از وی را حمل می‌کند. خبرچینان خلیفه وقت (معتمد) فعالیتهای امام حسن عسکری را که در آن زمان در اردوگاهی نظامی در سامرا تحت مراقبات بود از نزدیک از نظر گذراندند. پس از آنکه امام درگذشت، کنیز دستگیر شده و تحت مراقبت قرار گرفت. در طی یک سال بعد، او هیچ نشانه‌ای از حاملگی از خود بروز نداد و در نتیجه آزاد شده و به سرعت فراموش شد. بنا به گفته نویسندگان شیعه، به این ترتیب بود که قضای الهی اجرا شد و امام دوازدهم -منجی منتظر- نجات پیدا کرده و در خفا بزرگ شد.

بنابر اعتقاد شیعه دوازده امامی، پس از مرگ حسن عسکری جعفر بن علی، برادر حسن بن علی عسکری، اعلام کرد که امام شیعیان فرزندی نداشته‌است و وی جانشین برادر است؛ ولی به هنگام نماز گزاردن بر بدن حسن عسکری، حجت بن الحسن عمویش را کناری زد و بر او نماز گزارد. امامیه جعفر را «جعفر کذاب» در بین شیعیان شهرت دارد و به اعتقاد شیعه او به مانند کنعان فرزند نوح و قابیل فرزند آدم، فرزند ناخلف امام دهم شیعه بوده‌است.طبق روایت دیگر شیعه، کفن و دفن امام عسکری توسط سرپرست وکلای وی، عثمان بن سعید، انجام شد. عثمان بعداً به عنوان سرپرست وکلا در دوره غیبت نیز به فعالیت خود ادامه داد.

دیدگاه امروزی شیعهٔ دوازده امامی این است که بحث مهدی، دوازده امام، قائم آل محمد وغیبت از زمان پیامبر مطرح بوده‌است و چنانکه محمد حسین طباطبایی می‌گوید، طبق احادیث، پیامبر دقیقاً مشخص کرده که مهدی پسر امام یازدهم خواهد بود.این دیدگاه، ظهور افراد و فرقی که در سده‌های اول و دوم، خود را مدعی مهدویت دانسته و به عنوان قائم آل محمد قیام کرده‌اند یا باور به غیبت یکی از پیشوایان داشته‌اند را مؤید نظر خود می‌داند. بنا بر این دیدگاه، موضوع غیبت مهدی از قبل نزد شیعیان مطرح بوده‌است؛ برای نمونه، به گفتهٔ طبرسی، یکی از محدثان شیعه به نام حسن بن محبوب(224 ه‍ /838 م) که در عصر امامان پنجم و ششم شیعه، محمد باقر و جعفر صادق، می‌زیسته، در احادیث کتاب خود به نام «مشیخه» از دو غیبت کوتاه و طولانی قائم آل محمد یاد کرده‌است.

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




غیبت

از دیدگاه شیعیان، دوران امامت وی به دو دورهٔ غیبت و ظهور تقسیم می‌شود. دورهٔ غیبت نیز به دو دورهٔ غیبت صغری (کوتاه مدت) و غیبت کبری (بلند مدت) تقسیم می‌شود. غیبت صغری از تولد حجت بن الحسن در سال 255 ق. یا درگذشت امام یازدهم در سال 260 ق. آغاز می شود و تا مرگ چهارمین نایب خاص مهدی در سال ۳۲۹ (قمری) پایان می پذیرد. از این زمان غیبت کبری شروع شده و تا ظهور او ادامه خواهد داشت. در منابع شیعه حدود هفتاد روایت از پیامبر اسلام و اهل بیت وی درباره غیبت به طور صریح یا با اشاره همراه با تحلیل نقل شده است.

«غیبت» در شیعه به معنای ناپیدا بودن در مقابل «ظهور» است و نه به معنای «ناپدید بودن» در مقابل «حضور». از دیدگاه شیعیان، غیبت دوره‌ای است که مهدی در میان مردم هست، ولی ظهور ندارد. دورهٔ غیبت به دو دورهٔ غیبت صغری (کوچک‌تر) و غیبت کبری (بزرگ‌تر) تقسیم می‌شود و با ظهور مهدی به پایان می‌رسد. از دیدگاه شیعه، «صاحب الزمان» عنوان ویژهٔ امام غایب است. کسی که برای حواس ظاهری ناپیدا، ولی حاضر در قلب مؤمنان است. از دید هانری کربن نقد تاریخی برای درک و کشف پدیده غیبت ناکارآمد است، زیرا غیبت مربوط به «تاریخ قدسی» است.کربن تاریخ قدسی را تاریخی می‌داند که بر اساس مشاهده، ثبت و تحلیل شواهد تجربی استوار نیست بلکه براساس درکی است که از فرای حقایق مادی و تجربی آمده‌است.

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

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

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

با نیل به وجود او در میانشان و با اطمینان از وجوب اطاعت از او، شیعیان بی شک از او شرم خواهند نمود و به او احترام می‌گذارند و در نتیجه مرتکب شرّ نمی‌شوند. آنها از اینکه از جانب او مورد توبیخ یا سرزنش قرار گیرند واهمهٔ دارند. به این ترتیب، ارتکاب اعمال بد در میانشان کم می‌شود و اعمال خوب زیاد می‌گردد.




ظهور، قیام و تشکیل حکومت جهانی

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

در روایات شیعه، شیعیان از تعیین وقت ظهور مهدی برحذر داشته شده‌اند، و تعیین‌کنندگان وقت ظهور، دروغگو دانسته شده‌اند.در میان روایات شیعه، اجماعی در مورد مدت زمان حکمرانی مهدی پس از ظهورش نیست. برای مثال حدیثی از محمد باقر، امام پنجم شیعه نقل شده‌است که مدت زمان حکومت مهدی را پس از ظهور ۳۰۹ سال ذکر کرده‌است. حدیثی دیگر به نقل از صادق نقل شده‌است که این مدت را هفت سال ذکر کرده‌است اما به گفتهٔ جعفر صادق، امام ششم شیعیان امامی، هر سال این حکومت به اندازه هفتاد سال عادی خواهد بود. در حدیثی دیگر که ابن بابویه از صادق نقل کرده‌است او از وجود دوازده مهدی پس از قائم(و نه دوازده امام) خبر داده‌است. این مهدی‌ها از میان شیعیان امام زمان خواهند بود.

طبق نظر علی کورانی در کتاب عصر ظهور بر اساس جمع بندی روایات شیعه و سنی در خصوص ظهور و قیام مهدی موعود، ظهور مهدی از ابتدا تا تشکیل حکومت چهارده ماه طول می‌کشد. ظهور از ماه رجب و با خروج سفیانی آغاز می‌شود. در شش ماه نخست، ظهور مهدی غیرعلنی است و او در اضطراب و نگرانی است و امور را به طور مخفیانه توسط یارانش رهبری می‌کند. سپس در روز عاشورا از ماه محرم قیام قائم از مکه در مسجدالحرام در کنار کعبه با 313 تن از یارانش آغاز می‌شود؛ درحالی که پرچم حضرت محمد در غزوه بدر را در دست دارد که بر آن نوشته شده است: اَلبَیعةُ لله ؛ سپس از آنجا رهسپار مدینه، و بعد عراق و نهایتاً شام می‌شود. او طی هشت ماه دشمنانش را شکست می‌دهد و جهان اسلام را یکپارچه تحت فرمان حکومت خود در می‌آورد. سرانجام وارد قدس می‌شود. آنگاه با رومیان (که به نظر کورانی مقصود غربیان هستند) پیمان آتش‌بس می‌بندد.در این اثنا طبق روایات مسلمانان عیسی از ملکوت فرود می‌آید، تا حجت بر یهودیان و مسیحیان تمام شود. ترتیب حوادث فرود مسیح و آتش بس میان مسلمانان و رومیان (غربیان) در روایات دقیقاً مشخص نیست. به هر حال مسیح به مهدی می‌پیوندد و پشت سر مهدی نماز می‌خواند. سپس رومیان پیمان آتش بس را نقض می‌کنند و جنگ بسیار بزرگی در ساحل شرقی مدیترانه رخ می‌دهد و مهدی پیروز می‌شود.





پس‌آیند اعتقاد به امام دوازدهم در طول تاریخ و مسائل امروزی

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

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

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

در طول تاریخ شیعه افراد متعددی بوده‌اند که با نام مهدی قیام کرده‌اند و در مواردی خود توانسته‌اند نظامی نو به وجود آورند. بنابر گفته ژان پیر فیلیو از زمان تبیین دکترین غیبت توسط روحانیت شیعه، با هدف محدود کردن جنبش‌ها و قیام‌های سیاسی تحت نام مهدی، روحانیت شیعه کوشش کرد که خود تنها نهادی باشد که وظیفه تفسیر نشانه‌ها و زمان ظهور را به عهده داشته باشد. اما این تلاش روحانیت شیعه برای کنترل جنبش‌های سیاسی تحت نام مهدی همیشه موفقیت آمیز نبوده‌است. برای مثال زمانی که شاه اسماعیل صفوی ایران را تسخیر نمود. بسیاری از هواداران شاه اسماعیل، او را همان مهدی موعود دانستند. هرچند بعد از شکست شاه صفوی از ترکان عثمانی او مجبور شد از جاه‌طلبی‌های خود عدول کند. از آن پس شاه اسماعیل در نزد طرفدارانش به عنوان نماینده امام زمان شناخته می‌شد.جنبش بابی بدون شک شاخص‌ترین جنبش‌های موعودگرایی شیعه پس از ظهور صفویان بود. این جنبش نتیجه حدود نیم قرن انتظار برای ظهور امام زمان بدنبال فرارسیدن هزاره مهدی و تعالیم و آموزه‌های درون و برون جنبش شیخیه بود. علی محمد باب ابتدا ادعا نمود که بابِ امام زمان است و سپس در سال ۱۲۶۴ ه.ق./۱۸۴۸ م. آشکارا ادعا نمود که مهدی موعود است. این جنبش در نهایت به گسست از شیعه و تشکیل آیینی جدید منجر شد.

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

هزاران نفر از شیعیان به مسجد جمکران در حوالی قم و در مسیر راه قم-کاشان می‌روند. به خصوص در سه شنبه شب و روزی که در روایات شیعه، مهدی در این روز و در این محل ظاهر شده است.در دوران ریاست جمهوری محمود احمدی نژاد، او عنوان می‌کرد که امام مهدی فعالیت‌های روزانه دولت او را حمایت می‌کند و به او در مواجهه با فشارهای بین‌المللی کمک می‌نماید. یا در سخنرانی دیگری عنوان نمود که دلیل حمله آمریکا به عراق این بوده‌است که آنها دریافته بودند که امام زمان قرار است که در عراق ظهور کند. این اظهار نظرهای احمدی نژاد با انتقادهای زیادی از جانب منتقدین وی و روحانیان شیعه مواجه شده‌است.در سال ۲۰۱۱ میلادی مستند جنجالی ظهور بسیار نزدیک است باعث جنجال‌های بسیار شد. تا آنجا که منابع دولتی در ایران از ممنوعیت انتشار و توزیع این مستند خبر دادند.

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

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




دیدگاه اهل سنت

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

طبق گفتهٔ ویلفرد مادلونگ در دانشنامهٔ اسلام، بین قرون هفتم تا سیزدهم هجری برخی علمای اهل سنت از این عقیده که حجت بن حسن همان مهدی منتظر است حمایت کردند:

در سال ۶۴۸ (ه.ق.)/۱۲۵۰(م.) محدث سوری شافعی مذهب، محمد ابن یوسف الگنجی القریشی، کتابی تالیف کرد با عنوان "البیان فی اخبار صاحب الزمان" که در آن با استناد به احادیث اهل تسنن اثبات نمود امام دوازدهم همانا مهدی است.
در سال ۶۵۰(ه.ق.)/۱۲۵۲(م.) کمال الدین محمد اهوازی، دانشمند شافعی، کتاب مطالب السوال فی مناقب آل رسول، را در شهر حلب تکمیل نمود. در این کتاب وی از امامت دوازده امام پشتیبانی نمود و به مخالفت‌های اهل تسنن در زمینه اعتقاد به اینکه امام دوازدهم همان مهدی است پاسخ داد.
سبط ابن جوزی، کمی پیش از وفات خود در سال ۶۵۴ (ه.ق.) در دمشق، کتاب تذکره خواص العلما را نوشت که در آن گزارش‌های منابع اهل تسنن را در بیان فضائل علی و فرزندانش به خصوص دوازده امام را گرد آوری نمود و در پایان تصریح نمود که امام دوازدهم همانا صاحب عصر، و مهدی موعود است.
در دایره صوفیان نیز منابعی در تایید مهدی بودن امام دوازدهم وجود دارد. ابو بکر بیهقی (وفات ۴۵۸/۱۰۶۶) بیان نموده است که برخی از مشایخ صوفیه نظر امامیه در مورد هویت مهدی و غیبت او را قبول دارند. صوفی ایرانی، صدر الدین ابراهیم الهموی(اواخر ساده ۷/۱۳) از نظر امامیه در کتابش، فرائض السیمتین پشتیبانی نمود. صوفی مصری، الشعرانی، با وجود اینکه عموماً هیچ موافقتی با شیعه نشان نمی‌داد، در کتاب یواقیت و الجواهر (نوشته شده در سال ۹۵۸/۱۵۵۱) تصریح نمود که مهدی پسر امام حسن عسکری است که در سال ۲۵۵/۸۶۹ به دنیا آماده است و تا زمان ملاقات با عیسی زنده خواهد ماند.
ساعت : 11:17 am | نویسنده : admin | ظهور | مطلب قبلی
ظهور | next page | next page