تکنولوژی‌ها و روش‌های عملی

مهندسان نرم‌افزار طرفدار تکنولوژی‌ها و روشهای عملی بسیار متفاوت و مختلفی هستند، که با هم ناسازگار هستند. این بحث در سال‌های دهه ۶۰ میلادی شروع شد و ممکن است برای همیشه ادامه پیدا کند. مهندسان نرم‌افزار از تکنولوژی‌ها و روش‌های عملی بسیار متنوعی استفاده می‌کنند.





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

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






ماهیت مهندسی نرم‌افزار

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

دیوان فعالیت‌های آماری آمریکا مهندسان نرم‌افزار را به عنوان زیرگروهی از «متخصصان رایانه»، با فرصت‌های شغلی‌ای مانند «دانشمند رایانه»، «برنامه نویس» و «مدیر شبکه» دسته بندی کرده‌است. BLS تمام مهندسان دیگر این شاخه علمی، که شامل مهندسان سخت‌افزار رایانه نیز هست، را به‌عنوان «مهندسان» دسته بندی می‌کند.





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

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

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






نرم‌افزار کاربردی

نرم‌افزار کاربردی (به انگلیسی: Application software) عبارت است از نرم‌افزاری که با استفادهٔ مستقیم از منابع و قابلیت‌های رایانه کاری را مستقیماً برای کاربر انجام می‌دهد. باید توجه داشت که این عبارت در مقابل عبارت نرم‌افزار سیستمی معنی پیدا می‌کند.

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

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

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

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





نرم‌افزار آزاد

نرم‌افزار آزاد (به انگلیسی: Free software) نرم‌افزاری است که به‌همراه کد منبع توزیع شده و با قوانینی منتشر می‌شود که آزادی استفاده، مطالعه، ویرایش و انتشار مجددِ کاربران را تضمین می‌کند. نرم‌افزارهای آزاد معمولاً با همکاری برنامه‌نویس‌های داوطلب به‌عنوان یک پروژه به‌وجود می‌آیند.

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

ریچارد استالمن در سال ۱۹۸۵ در زمانی که در حال آغاز پروژهٔ گنو و به‌وجود آوردن بنیاد نرم‌افزارهای آزاد بود، برای اولین بار از عبارت «نرم‌افزار آزاد» استفاده کرد. براساس تعریف بنیاد نرم‌افزارهای آزاد کاربران یک نرم‌افزارِ آزاد، آزاد هستند؛ چون به اجازه گرفتن نیازی ندارند؛ آن‌ها در انجام کارهای دل‌خواهشان (مانند حق نشر و کپی‌برداری) محدود نیستند؛ نیازی به موافقت با هیچ توافق‌نامه‌ای ندارند؛ و در همان ابتدا نیز با نداشتن کد منبع محدود نبوده‌اند.






تعریف

طبق تعریف نرم‌افزار آزاد توسط بنیاد نرم‌افزارهای آزاد، هر نرم‌افزاری که آزادی‌های زیر را برای کاربرانش فراهم کند به عنوان یک نرم‌افزار آزاد شناخته می‌شود:

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







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

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







تاریخچه

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

رفته‌رفته که صنعت رایانه پیشرفت کرد و سخت‌افزارها بیشتر استاندارد شدند و همینطور کامپایلرها و مفسرها پیشرفت کردند، زمینه برای رشد نرم‌افزارهای انحصاری فراهم شد. با چنین پیشرفت‌هایی، برنامه‌ها راحت‌تر از سخت‌افزار یک شرکت به سخت‌افزار شرکت رقیب پورت می‌شدند و راحت می‌شد یک نرم‌افزار را بر روی سخت‌افزارهای مختلفی از شرکت‌های مختلف اجرا کرد. بدین ترتیب یک نفر می‌توانست نرم‌افزاری بنویسد که مستقل از سخت‌افزار خاصی عمل کند و بر روی طیف وسیعی از آنها اجرا شود. علاوه بر آن، با استاندارد شدن سخت‌افزارها، تفاوت‌های ناچیزی که آنها در کارایی داشتند رفته رفته ناپدید شد. تولید کنندگان به این نتیجه رسیده بودند که باید به نرم‌افزار هم به چشم یک وسیله فروشی نگاه کنند. شرکتها شروع به فروش نرم‌افزارهای خود کردند و دست کاربران خود را برای تغییر در نرم‌افزارها و انتشار مجدد آنها بستند. به گونه ای که در سال ۱۹۶۸ شرکتی به نام ای‌دی‌آر (به انگلیسی: ADR) اولین نرم‌افزار دارای مجوز را عرضه کرد. در سال ۱۹۶۹، شرکت آی‌بی‌ام به خاطر اینکه به همراه سخت‌افزارهای خود، نرم‌افزارهای آزاد ارائه می‌کرد، توسط وزارت دادگستری ایالات متحده آمریکا به از بین بردن کسب و کار و ایجاد یک شرایط ضدرقابتی برای دیگر متهم شد. آی‌بی‌ام دیگر به همراه سخت‌افزارهای خود نرم‌افزار ارائه نکرد و بدین ترتیب نرم‌افزارها و سخت‌افزارها از یکدیگر جدا شدند و فاصله گرفتند.

در سال ۱۹۸۳، ریچارد استالمن از آزمایشگاه هوش مصنوعی و علوم رایانه ام‌آی‌تی، پروژه گنو را بنیان نهاد. او که از تغییر فرهنگ در صنعت رایانه و کاربرانش ناامید شده بود، قصد داشت سیستم‌عاملی به نام گنو را به صورت یک نرم‌افزار آزاد توسعه دهد. در ژانویه ۱۹۸۴ توسعه سیستم‌عامل گنو آغاز گشت و بنیاد نرم‌افزارهای آزاد در اکتبر ۱۹۸۵ بنیان نهاده شد. در سال ۱۹۸۹، اولین نسخه از اجازه‌نامه همگانی گنو منشتر شد. البته جی‌پی‌ال اولین پروانه نرم‌افزار آزاد نبود و قبل از آن پروانه‌های نرم‌افزار آزاد دیگری مانند پروانه بی‌اس‌دی در سال ۱۹۸۸ عرضه شده بودند. تا کنون پروانه‌های نرم‌افزار آزاد زیادی توسط افراد و شرکت‌های مختلف منتشر شده است که آز این میان می‌توان به پروانه ام‌آی‌تی، پروانه آپاچی، پروانه آی‌اس‌سی، پروانه همگانی موزیلا و ... اشاره کرد.

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






مسئله نام‌گذاری

در زبان انگلیسی، کلمه Free معانی متفاوتی همچون آزادی، رایگان بودن و ... دارد. عده‌ای بر این عقیده بودند که ممکن است این کلمه باعث کژفهمی شده و باعث شود مردم به نرم‌افزارهای آزاد، به چشم نرم‌افزارهای رایگان نگاه کنند. این در حالی است که یک نرم‌افزار آزاد، لزوماً رایگان نیست. آنها در سال ۱۹۹۸ کمپین دیگری به نام «نرم‌افزارهای متن‌باز» (به انگلیسی: Open Source) را تشکیل دادند تا با تاکید بیشتر بر روی مدل توسعه و مسائل تکنیکی، به جای مسائل فلسفی و اخلاقی، مردم و شرکت‌ها را هر چه بیشتر به استفاده از نرم‌افزار آزاد تشویق کنند. تقریباً هر دو مفهوم، اشاره به یک چیز دارند و یک نرم‌افزار متن‌باز، نرم‌افزار آزاد هم هست (و برعکس)، اما طرفداران ایده نرم‌افزارهای متن‌باز، آن را روشی برای توسعه نرم‌افزارهای بهتر معرفی می‌کنند و تاکید کمتری بر جنبش اجتماعی و فلسفه پشت این گونه نرم‌افزارها دارند. طبق گفته موسسه پیشگامان متن‌باز (که توسط طرفداران ایده نرم‌افزار متن‌باز بوجود آمده)، عبارت «نرم‌افزار آزاد» واژه ای قدیمی‌تر است و به گونه‌ای منعکس کننده نام بنیاد نرم‌افزارهای آزاد است، سازمانی که در سال ۱۹۸۵ برای محافظت و ترویج نرم‌افزارهای آزاد بوجود آمد؛ با اینکه بنیان‌گذاران ایده متن‌باز هم از توسعه و ترویج نرم‌افزارهای آزاد حمایت می‌کنند، اما در مورد چگونگی ترویج آنها با بنیاد نرم‌افزارهای آزاد موافق نیستند و اعتقاد دارند که آزادی نرم‌افزار در درجه اول یک امر عملی است تا ایدئولوژیکی.






پروانه‌های نرم‌افزار آزاد

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

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






مدل تجاری

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

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






مثالهایی از نرم‌افزارهای آزاد کاربردی

هستهٔ سیستم‌عامل گنو/لینوکس، داروین.
تعدادی از سیستم‌عامل‌های خانواده بی‌اس‌دی مانند فری‌بی‌اس‌دی, اپن‌بی‌اس‌دی, نت‌بی‌اس‌دی, دراگون‌فلی‌بی‌اس‌دی.
کامپایلر جی‌سی‌سی، کتابخانهٔ زبان برنامه‌نویسی سی
کامپایلر کلنگ
پایگاه‌داده‌های رابطه‌ای مانند: mysql، پست‌گر اس‌کیوال، برکلی دی‌بی
زبان‌های برنامه‌نویسی مانند تی‌سی‌ال، روبی، پایتون، پرل و پی‌اچ‌پی.
مرورگر وب فایرفاکس (Firefox)
اُپن آفیس (Open Office)
میزکار کی‌دی‌ای (KDE)
میز کار ال‌اکس‌دی‌ئی (LXDE)
میزکار اکس‌اف‌سی‌ئی (XFCE)
میزکار گنوم (Gnome)
برنامه‌های حروف چینی مانند تک، لاتک و فارسی تک
نرم‌افزارهای مدیریت محتوا مانند جوملا (!Joomla)، پی‌اچ‌پی-نیوک (PHP-Nuke)، پست نیوک (postnuke) و مامبو (mambo) ,وردپرس (wordpress), دروپال (drupal) , ....
نرم‌افزارهای ساخت انجمن (Forum) مانند پی‌اچ‌پی‌بی‌بی (phpbb)، اس‌ام‌اف (smf)، یاب (YaBB) و فروم (phorum)
ویرایشگرهای متن ویم و ایمکس
مجموعه اداری لیبره‌آفیس






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

یک نرم‌افزار برپایهٔ نیت سازنده آن به عنوان یک بدافزار شناخته می‌شود. در قانون گاه بدافزار را به عنوان یک آلودگی رایانه‌ای می‌نامند. دستاوردهای مقدماتی که توسط سیمنتک در سال ۲۰۰۸ منتشر شد، بیان می‌کند که میزان کدهای آزاردهنده و دیگر برنامه‌های ناخواسته از شمار نرم‌افزارهای قانونی، ممکن است افزون باشد. همچنین گفته شده‌است: «که تعداد بدافزارهای تولید شده در سال ۲۰۰۷ به اندازه مجموع ۲۰ سال قبل بوده‌است.» مهمترین پل ارتباطی بدافزارها از تولیدکنندگان آنها به کاربران از طریق اینترنت است.
در ۲۹ مارس سال ۲۰۱۰ شرکت سیمنتک شهر شائوژینگ چین را به عنوان پایتخت بدافزار در دنیا معرفی کرد.

مایکروسافت در می ۲۰۱۱ گزارش داد که از هر ۱۴ دانلود در اینترنت یکی شامل بدافزار است. به ویژه شبکه‌های اجتماعی و فیس بوک در حال مشاهده افزایش تاکتیک‌های جدید برای ضربه زدن به رایانه‌ها هستند.

بدافزار با یک نرم‌افزار معیوب یعنی نرم‌افزاری قانونی ولی شامل اشکالات مضر، تفاوت دارد. گاه بدافزار به صورت یک نرم‌افزار سالم و صحیح طراحی می‌شود و حتی ممکن است از یک سایت رسمی بیاید. بنابراین برخی از برنامه‌های امنیتی مانند مکافی ممکن است بدافزار را یک برنامهٔ «به طور بالقوه ناخواسته (به انگلیسی: Potentially Unwanted Programs)» بنامد. اگرچه یک ویروس رایانه‌ای نیز بدافزاری است که خود را باز تولید می‌کند، اما غلب به اشتباه به همهٔ بدافزارها ویروس اطلاق می‌شود.

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






مقاصد

بسیاری از برنامه‌های آلوده کنندهٔ اولیه، از جمله اولین کرم اینترنتی و تعدادی از ویروس‌های سیستم عامل داس (به انگلیسی: DOS)، به قصد آزمایش یا سرگرمی نوشته شدند. آن‌ها عموماً به مقاصد بی‌ضرر یا فقط به قصد آزار بودند، تا اینکه بخواهند خسارات جدی به سیستم‌های رایانه وارد کنند. در برخی موارد سازنده نمی‌توانست تشخیص دهد که چقدر کارش می‌تواند مضر باشد.

برنامه‌نویسان جوان وقتی دربارهٔ ویروس‌ها و ترفندهایش می‌آموختند، تنها به منظور تمرین یا به این قصد که ببینند چقدر شیوع پیدا می‌کند، آنها را می‌نوشتند. در سال ۱۹۹۹ ویروس‌های شایعی مانند ویروس ملیسا (به انگلیسی: Melissa) و ویروس دیوید (به انگلیسی: David) تنها به قصد سرگرمی نوشته شده بودند. اولین ویروس تلفن همراه در سال ۲۰۰۴ با نام ویروس کابیر (به انگلیسی: Cabir) بر روی تلفن‌های همراه منتشر شد.

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

از زمان گسترش دسترسی به اینترنت پر سرعت، بدافزارهایی به منظور ایجاد سود طراحی شده‌اند. به عنوان مثال از سال ۲۰۰۳، اغلب ویروس‌ها و کرم‌های رایانه‌ای، طراحی شدند تا کنترل رایانه‌های کاربران را به منظور بهره‌گیری در بازار سیاه به کار گیرند.






بدافزارهای مسری: ویروس‌ها و کرم‌ها

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

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






مخفی کارها: اسبهای تروآ، روتکیتها و بکدُورها
اسبهای تروآ: (به انگلیسی: Trojan horses)

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

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

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

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






رد گم کن:(به انگلیسی: Rootkits)

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






بکدُرها:(به انگلیسی: Backdoors)

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






دیگر بدافزارها
جاسوس‌افزارها

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

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






آگهی‌افزار

آگهی‌افزار یا برنامه‌های تبلیغاتی (Adware): اینگونه برنامه‌ها همانند جاسوس‌افزارها دارای اثر تخریبی نمی‌باشند و وظیفه آنها بازکردن صفحات خاص اینترنتی جهت اهداف تجاری و تبلیغی است.






جک‌ها

جک‌ها (Joke) برنامه‌هایی هستند که ادعا می‌کنند در حال انجام عملیاتی تخریبی بر روی سیستم شما می‌باشند ولی در واقع اینگونه نبوده و کار آنها چیزی جز یک شوخی ساده نمی‌باشد. متأسفانه برخی کاربران به سادگی تحت تأثیر جک‌ها قرار گرفته و با تلاش برای از بین بردن چیزی که مخرب نیست باعث ایجاد تخریب بیشتری می‌شوند.






کلک

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






شماره‌گیرها

شماره‌گیر (Dialer): اینگونه برنامه‌ها وظیفه‌شان ارتباط دادن کاربر از طریق خط تلفن به سرورهایی در دیگر کشورها برای دسترسی مستقیم به اطلاعات آنها می‌باشد. این سرورها معمولاً مربوط به سایت‌های غیراخلاقی بوده و برقراری ارتباط با آنها از طریق خط تلفن باعث هزینه بسیار زیاد مالی می‌گردد.






بارگیرها

بارگیر (Downloader): کار اینگونه برنامه‌ها Download کردن بد افزارها و اجرای آنها است






کلیک‌کننده‌ها

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






درهای پشتی

درهای پشتی (Backdoors) ابزاری برای نفوذگرها هستند که به وسیله آنها می‌توانند سیستم‌های دیگر را در کنترل خود درآورند. درهای پشتی درون شبکه، پورت‌های TCP یا UDP را باز می‌کنند و شروع به گوش کردن نموده تا دستورات نفوذگرها را اجرا کنند. درهای پشتی از جهت نداشتن قابلیت تکثیر شبیه ترویاها هستند.






گذرواژه‌دزدها

گذرواژه‌دزد (Password-Stealer): اینگونه برنامه‌ها که نوعی ترویا هستند کارشان دزدی پسورد از روی سیستم‌ها و ارسال آنها برای نفوذگرها است.






بهره‌کش‌ها

بهره‌کش‌ها (Exploits) کدهای مخربی هستند که با استفاده از آسیب پذیری‌های یک سیستم امکان دسترسی از راه دور به آن سیستم را فراهم می‌کنند.






کی‌لاگر

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






برنامه‌های ضد بدافزار

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

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

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





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






تعریف

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






تاریخچه

واژه جاسوس افزار برای اولین بار در ۱۶ اکتبر سال ۱۹۹۵ در متنی درمورد مدل تجارتی ماکروسافت استفاده شد. در سال ۲۰۰۰ آقای گریگور فرند در توصیف دیوار آتش شخصی خود به نام زون آلارم از واژه جاسوس افزار استفاده کرد. اما استفاده رسمی از این کلمه بعد از سال ۲۰۰۱ بود زمانی که آقای استیو گیبسون رئیس مرکز تحقیقات گیبسون متوجه نصب یک نرم‌افزار تبلیغاتی روی سیستم کامپیوتری خود شد که اطلاعات شخصی او را برای فرد دیگری ارسال می‌کرد. به همین دلیل وی یک برنامه ضدجاسوسی طراحی کرد و آن را اوپت اوت نامید.






انواع

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






راه‌های نفوذ

پنجره‌های پاپ آپ :

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







نرم‌افزارهای ضد جاسوس افزار:

بعضی نرم‌افزارهای ضدجاسوسی به جای از بین بردن جاسوس افزار آن را روی سیستم نصب می‌کنند. از برنامه‌های مطمئن و معروف برای بالا بردن امنیت سیستم خود استفاده کنید.







برنامه‌های رایگان اینترنتی:

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







سی دی‌ها و فلش‌ها:

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







ویروس‌ها:

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

تشخیص آلوده بودن یک کامپیوتر به جاسوس افزار کار سختی نیست. سیستم آلوده نشانه‌های ساده‌ای دارد از جمله: ۵-۱- تغییر ناگهانی صفحه خانگی مرورگر بعضی از جاسوس افزارها که برای اهداف تبلیغاتی طراحی می‌شوند بدون اجازه کاربر صفحه خانگی مرورگر اینترنتی را تغییر می‌دهند. بسیاری از افرادی که سیستم آنها آلوده شده به طور مکرر صفحه خانگی مرورگر را مطابق میل خود تنظیم نموده و با تغییر دوباره آن مواجه می‌شوند. ۵-۲- ایجاد نوار ابزارهای جدید از نشانه‌های دیگر وجود جاسوس افزار ظاهر شدن نوار ابزارهای جدید بدون خواست کاربر در پنجره مرورگر است.







ظاهر شدن مداوم پنجره‌های پاپ آپ :

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







تغییر آدرس توسط مرورگر:

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







ایجاد آیکون‌های جدید روی صفحه نمایش:

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







عملکرد کند کامپیوتر:

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







خاموش شدن دیوار آتش و ضدویروس:

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






مشکلات

سرقت اطلاعات شخصی:

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







تاثیر منفی روی عملکرد کاربر:

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







کاهش کارایی سیستم:

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







استفاده از پهنای باند:

جاسوس افزار برای ارسال اطلاعات نیاز به برقراری ارتباط از طریق اینترنت دارد و باید از پهنای باند استفاده کند.






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






تعریف صنعتی

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






تعریف رایانه

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






فهرست سخت‌افزارها

بُردِ مادر یا برد اصلی (مادربورد)
نمایشگر (مانیتور)
جعبه رایانه (کیس)
صفحه‌کلید (کیبورد)
موشواره (ماوس)
چاپگر (پرینتِر)
پویشگر (اسکنر)
واحد پردازش مرکزی (سی‌پی‌یو یا پردازنده)
فلاپی‌دیسک
دیسک سخت
مودم
دیسک‌گردان نوری (درایو نوری) (CD و DVD)
بلندگو
یو اس‌ بی
کارت صدا
کارت گرافیک
قلم نوری
هدفون (دوگوشی)
کارت تلویزیون و رادیو
دوربین (وب‌کم)
میکروفون
هدست






برنامه

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






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

برنامه‌های رایانه‌ای از تنوع زیادی برخوردارند. از جمله می‌توان به این موارد اشاره کرد:

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






ویروس رایانه‌ای
تعریف ویروس

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






تاریخچه

اولین تحقیق واقعی علمی و آکادمیک بر روی ویروس‌ها توسط فرد کوهن در سال 1983، با نام ویروس که توسط لِن آدلمن ابداع شده بود، انجام شد. بعضاً از کوهن به عنوان «پدر ویروس‌های کامپیوتری» نام برده می‌شود، اما واقعاً ویروس‌هایی بودند که قبل از شروع تحقیقات او تولید شده بودند. ویروس Elk Cloner نوشته شده توسط ریچ اسکرنتا در سال 1982 در گردش بود و ویروس‌های تولید شده توسط جو دلینگر نیز بین سال‌های 1981 تا 1983 ساخته شده بودند؛ که همه‌ی آن‌ها برای پلتفرم‌های Apple II بودند. برخی منابع یک نقص فنی در Arpanet را در سال 1980 به عنوان اولین ویروس ذکر می‌کنند، اما آن فقط یک کد قانونی و مجاز بود که اشتباه کار می‌کرد و تنها مسأله‌ای که ایجاد می‌کرد این بود که داده‌ها را در بسته‌های شبکه پخش می‌کرد. ویروس‌های گریگوری بنفورد، تنها به به داستان‌های علمی‌اش ختم نشد. او در سال 1969 ویروس‌های غیر مخرب‌ خود را در جایی که امروزه «آزمایشگاه ملی لیوِرمور لارنس» خوانده می‌شود و در Arpanet اولیه تولید و منتشر کرد.






میزبان ویروس

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

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

در ذیل فهرست پسوندهای رایج فایل‌های اجرایی ارائه شده است و اکثر نرم‌افزارهای ضد ویروس در حالت عادی (بدون تنظیمات خاص) این فایل‌ها را ویروس‌یابی می‌کنند (البته در برخی برنامه‌های ضد ویروس ممکن است برخی پسوندها حذف یا اضافه شوند) :

.com ، .exe ، .dll ، .ovl ، .bin ، .sys ، .dot ، .doc ، .vbe ، .vbs ، .hta ، .htm ، .scr ، .ocx ، .hlp ، .eml

بنابراین یکی از اصلی‌ترین میزبان‌های ویروس، فایل‌های اجرایی هستند. از طرف دیگر برخی ویروس‌ها نیز از سکتور راه‌انداز (Boot Sector) و جدول بخش‌بندی دیسک (Master Boot Record یا Partition Table) به عنوان میزبان استفاده می‌کنند. سکتور راه‌انداز واحد راه‌اندازی سیستم‌عامل است که در سکتور شماره صفر دیسکت فلاپی و یا درایوهای منطقی یک دیسک سخت قرار دارد و جدول بخش‌بندی شامل اطلاعات تقسیم‌بندی دیسک سخت می‌باشد که آن نیز در سکتور شماره صفر دیسک سخت قرار دارد. اینگونه ویروس‌ها با قرار گرفتن در یکی از این دو محل، هنگام راه‌اندازی کامپیوتر، اجرا شده و در حافظه سیستم مقیم می‌شوند و تا زمان خاموش کردن کامپیوتر و یا راه‌اندازی دوباره، همانجا مانده و فلاپی‌ها و یا دیسک‌های سخت دیگر را آلوده می‌کنند.






عملکرد ویروس

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

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

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

۳ - فرض کنید که شما یک ویروس بر روی کامپیوتر خود داشته باشید. بسیار احتمال دارد که این ویروس به صورت غیرعمدی به یک دوست، همکار یا مشتری منتقل شود که این امر ممکن است باعث از بین رفتن اعتماد آنها به شما و شرکت شما شود.

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

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

در مورد اثرات تخریبی ویروس‌هایی که آنها را به صورت عمدی انجام می‌دهند می‌توان به موارد زیر اشاره نمود:

تخریب یا حذف برنامه‌ها و اطلاعات بخش‌های مختلف دیسک‌ها.
فرمت کردن دیسک‌ها.
کد کردن اطلاعات و برنامه‌ها.
تخریب اطلاعات حافظه فلش ها.

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






انواع ویروس‌ها

ارائه یک تقسیم‌بندی دقیق از ویروس‌ها کار مشکلی است و می‌توان ویروس‌ها را به روش‌های مختلفی تقسیم‌بندی کرد. این روش‌ها می‌تواند بر اساس میزبان ویروس، سیستم‌عاملی که ویروس می‌تواند در آن فعالیت کند، روش آلوده‌سازی فایل و ... باشد. در زیر به برخی از این روش‌ها اشاره می‌کنیم :







تقسیم بندی ویروس‌ها بر اساس مقصد آلوده‌سازی:

۱ - ویروس‌های فایلی (File Viruses) : ویروس‌های فایلی، معمولاً فایل‌های اجرایی را آلوده می‌کنند. فایل‌های آلوده به این نوع از ویروس‌ها اغلب (اما نه همیشه) دارای پسوند .com یا .exe هستند.

۲ - ویروس‌های ماکرو (Macro Viruses) : ویروس‌های ماکرو، مستندات برنامه‌هایی را که از امکان ماکرونویسی پشتیبانی می‌نمایند (مانند MS Word ، MS Excel و...) آلوده می‌کنند. فایل‌های اینگونه برنامه‌ها اجرایی نیستند ولی درون آنها قسمت‌هایی اجرایی به نام «ماکرو» وجود دارد که می‌تواند میزبان مناسبی برای ویروس‌های ماکرو باشد.

۳ - ویروس‌های بوت و پارتیشن سکتوری (Boot Sector and Partition Table Viruses) : اینگونه ویروس‌ها سکتور راه‌انداز (Boot Sector) دیسک سخت و دیسکت فلاپی یا جدول بخش‌بندی دیسک‌های سخت را آلوده می‌کنند. با راه‌اندازی سیستم از روی دیسکی که به اینگونه ویروس‌ها آلوده شده است، ویروس در حافظه مقیم شده و متعاقباً دیسک‌هایی را که مورد دسترسی قرار گیرند، آلوده می‌کند.

۴ - ویروس‌های اسکریپتی (Script Viruses) : این ویروس‌ها که اسکریپت‌های نوشته شده به زبان‌های ویژوال بیسیک یا جاوا می‌باشند، تنها در کامپیوترهایی اجرا می‌شوند که بر روی آنها Internet Explorer یا هر مرورگر وب دیگری با توانایی اجرای اسکریپت‌ها، نصب شده باشد و فایل‌های با پسوند .html ، .htm ، .vbs ، .js ، .htt یا .asp را آلوده می‌کنند.

ویروس‌ها جدا از تقسیم‌بندی فوق، ممکن است در یک یا چند دسته از دسته‌های زیر نیز قرار بگیرند:

ویروس‌های مقیم در حافظه (Memory Resident Viruses) :

اینگونه ویروس‌ها با مقیم شدن در حافظه، هنگام دسترسی به فایل‌های دیگر، آنها را آلوده می‌کنند.

ویروس‌های مخفی‌کار (Stealth Viruses) :

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

ویروس‌های کدشده (Encrypting Viruses) :

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

ویروس‌های چندشکلی (Polymorphic Viruses) :

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

ویروس‌های فعال‌شونده بر اساس رویداد خاص(Triggered Event Viruses) :

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






نشانه‌های وجود ویروس

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

۱ - سیستم در هنگام راه‌اندازی قفل می‌کند و احتمالاً پیغام‌های غیرمعمول روی صفحه ظاهر می‌گردد.

۲ - هنگام اجرای برنامه‌ها پیغام کمبود حافظه ظاهر شده و برنامه اجرا نمی‌گردد.

۳ - در کارچاپگر اختلال ایجاد می‌شود یا بدون هیچگونه فرمان چاپی شروع به کار می‌کند.

۴ - امکان دسترسی به برخی از درایوها وجود ندارد.

۵ - هنگام اجرای فایل‌ها، پیغام File is Damaged یا File is Corrupted نمایش داده می‌شود.

۶ - هنگام اجرای یک فایل، کاراکترها و یا پیغام‌های غیرعادی روی صفحه نمایش ظاهر می‌گردد.

۷ - هنگام کار در محیط‌های گرافیکی، تصاویر به هم می‌ریزد.

۸ - اصوات غیرمعمول یا موزیک از بلندگوهای کامپیوتر پخش می‌شود.

۹ - سیستم هنگام اجرای یک برنامه قفل کرده و حتی گاهی فشردن کلیدهای Ctrl+Alt+Del نیز نمی‌تواند سیستم را دوباره راه‌اندازی کند.

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

۱۱ - اندازه فایل‌های اجرایی افزایش می‌یابد.

۱۲ - خواص فایل‌های اجرایی تغییر می‌کند.

۱۳ - سرعت سیستم بطور نامحسوسی کاهش می‌یابد.

۱۴ - اطلاعات Setup کامپیوتر از بین می‌رود.

۱۵ - برنامه‌ها مراجعاتی به دیسکت انجام می‌دهند که قبلاً انجام نمی‌دادند.

۱۶ - کاهش فضای خالی دیسک بدون اینکه فایلی اضافه شده و یا به محتوای فایل‌ها افزوده شده باشد.

۱۷ - نرم‌افزارهای مقیم در حافظه با خطا اجرا شده یا اصلاً اجرا نمی‌شوند.

۱۸ - بعضی برنامه‌ها سعی در برقراری ارتباط با اینترنت را دارند.

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

۲۰ - نامه‌های الکترونیکی ناخواسته از روی سیستم ارسال شده و یا دریافت می‌گردد.
1:37 am
وبسایت یا تارنما چیست
مجموعه ای از فایلهای مختلف اعم از تصاویر، متون و یا فایلهای برنامه نویسی شده است که به منظوری خاص به شکلی با هم مرتبط شده اند. این فایلها روی یک کامپیوتر "میزبان" یا "سرور" قرار می گیرند و با یک نام دامنه مشترک فراخوانی می شوند. یکی از مهمترین سرویس‌های وب، پست الکترونیک است.





انواع سایت

سایتها بر اساس کاربرد و نوع برنامه نویسی به چند دسته تقسیم می شوند که عبارت است از :

سایتهای ثابت (Static Website):

این سایتها یکبار طراحی می شوند و اطلاعات مورد نیاز در داخل آنها قرار می گیرد و پس از آن برای تغییر در آنها نیاز به یک طراح حرفه ای یا نیمه حرفه ای سایت است. زبان برنامه نویسی اینگونه از سایتها غالباً HTML و Java Script هستند که در نوع توسعه یافته تر از CSS نیز بهره گرفته می شود.

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

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

اما از طرفی نیز عدم امکان ایجاد تغییرات توسط افراد عادی سبب می‌شود تا امکان بروز رسانی سایت توسط صاحبان و مدیران سایت صلب شود.

نکته: سایتهای ثابت (Static) برای افراد، شرکتها و سازمانهایی مناسب است که حداکثر یک یا دو بار در سال نیازمند به تغییر در محتوای سایت هستند.

سایتهای پویا (Dynamic Website): محتوای سایتهای داینامیک بعد از طراحی توسط افراد عادی که دسترسی به سیستم مدیریت محتوای سایت را داشته باشند قابل تغییر است. زبان برنامه نویسی وبسایتهای پویا میتواند براساس نیاز متفاوت باشد اما عمدتاً از زبانهای ASP ، ASP.Net و Php استفاده می‌شود و از زبانهای کمکی CSS و Silver light و یا Ajax برای ایجاد قابلیتهای ویژه نیز بهره گرفته می شود.

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

یکی از مزیتهای سایتهای داینامیک این است که هیچ محدودیتی برای ایجاد، تغییر یا حذف مطالب، تصاویر و صفحات و غیره وجود ندارد.

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

استفاده زیاد از کدها سبب کند شدن بارگذاری سایت و امتیاز آن در موتورهای جستجو می شود.

نکته: سایتهای پویا برای افراد، شرکتها و سازمانهایی مناسب است که بیش از دوبار در سال نیاز به تغییر درمحتوای سایت را دارند.

پرتالها (Portal): پرتالها سایتهای پویای جامعی هستند که چند هدف خاص را در یک سایت دنبال می کنند به عبارت دیگر مجموع چند سایت پویا که برای رسیدن به هدفی خاص در کنار هم قرار گرفته اند را می توان پرتال نامید. به عنوان مثال پرتال خبری می تواند از چند سایت داینامیک تشکیل شده باشد که هر یک امکانات خاصی چون عضو گیری، انتشار اخبار، انتشار تصاویر، نظر سنجی و ... را در اختیار مدیران آن قرار دهد.

تمام ویژگی‌های یک سایت پویا می تواند در یک پرتال نیز صدق کند.

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

سایتهای متحرک استاتیک و نیمه داینامیک (Static and Dynamic Flash Website): سایتهای فلش یا متحرک دو نوع استاتیک و نیمه داینامیک هستند و توسط نرم‌افزارهای خاصی ایجاد می شوند در برخی موارد از XML یا Action Script برای ایجاد قابلیتهای تغییر یا هوشمندی در این سایتها بهره گرفته می شود.

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

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

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

نکته: سایتهای فلش برای افراد و گروهها یا شرکتها و سازمانهایی مناسب است که نیاز به تبلیغات ندارند و عموم کاربران با آنها آشنا هستند مانند خوانندگان، سیاست مداران، بازیگران و گروههای موسیقی، هتلهای معروف، مکانهای توریستی.

سایتهای مجهز به سیستم مدیریت محتوا (Content Management Systems): سایتهای مجهز به سیستم مدیریت محتوا که در اصطلاح به CMS که مخفف Content Management System است مشهورند، وبسایتهایی از نوع پرتالها یا سایتهای پویا هستند که برای مصارف خاص توسط طراحان حرفه ای و یا شرکتهای طراحی حرفه ای ایجاد میشوند.

تمام مزایا و معایب مربوط به سایتهای پویا در مورد سایتهای مجهز به سیستم مدیریت محتوا صدق می کند.

البته در نظر داشته باشید که سایتهای پویا و پرتالها نیز مجهز به سیستم مدیریت محتوا هستند اما آنچه که در CMSها متفاوت است طراحی آنها و سیستمهای مدیریت محتوای آنها برای مصارف خاص است.

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

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

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



مزایای استفاده از وبسایت

وبسایت‌ها مزایای فراوانی را برای مدیران و صاحبان خود به همراه دارند که مهمترین آنها به شرح زیرند:

تاثیر سایت در اطلاع رسانی:

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

تاثیر سایت در بازاریابی:

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

ایجاد قابلیتهای جدید تبلیغاتی:

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

در دسترس بودن:

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

فعالیت در خارج از مرزهای جغرافیایی:

امروزه یکی از ملزومات فعالیت بدون مرز سایت است و تقریباً هیچکس نمی‌تواند مدعی فعالیت خارج از مرزهای جغرافیایی شود در حالی که وبسایتی ندارد.

درآمد زایی:

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

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



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



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

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

برنامه‌نویسی کامپیوتر (که اغلب در انگلیسی programming یا coding گفته می‌شود) فرایند نوشتن، اشکال زدایی(debug) و نگهداری کد منبع (source code) برنامه کامپیوتر می‌باشد. این کد منبع با یک زبان برنامه نویسی نوشته شده است. این کد منبع ممکن است تغییر داده شده یک کد قبلی و یا یک کد کاملاً جدید باشد. هدف برنامه نویسی ساختن یک برنامه می‌باشد که یک رفتار خواسته شده را به نمایش بگذارد.


تاریخچه
موضوع دستگاه‌هایی که به دنباله‌ای از دستورالعمل‌های از قبل تعریف شده عمل می‌کند بر می‌گردد به Greek Mythology.


برنامه نویسی مدرن
اندازه گیری کاربرد زبان

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


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


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


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



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

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

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


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

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

نسل اول زبان ماشین - زبان صفرو یک
نسل دوم زبانهایی مانند اسمبلی -قابل فهم تر برای انسان
نسل سوم زبانهایی مانند کوبول و پی ال وان و... -دستورات قابل فهم تر برای انسان و نیاز به کمپایلرها
نسل چهارم مثل زبانهای اوراکل و فاکس پرو و اس کیو الها - نزدیک به محاوره‌های انسانی
نسل پنج زبانهایی مانند prolog , ops5 - تمرکز بر حل مسئله و استفاده از الگوریتمهای نوشته شده توسط

برنامه نویس

یک زبان برنامه نویسی یک زبان مصنوعی است که برای بیان محاسباتی که توسط یک ماشین (مخصوصا رایانه) قابل انجام است، طراحی شده‌است.زبان‌های برنامه نویسی برای ایجاد برنامه‌هایی به کار می‌روند که رفتار یک ماشین را مشخص می‌کنند، الگوریتم دقیق را بیان می‌کنند، و یا روشی برای ارتباط انسانند. بسیاری از زبان‌های برنامه نویسی تعدادی قالب از ویژگی‌های نوشته شده دستوری(syntax) و معناشناسی (semantics) دارند، چرا که رایانه‌ها دستورات دقیقاً مشخص نیاز دارند. برخی توسط سند خصوصیات (specification document) تعیین شده‌اند. (برای مثال یک استاندارد ISO)، در حالی که برخی دیگر دارای پیاده سازی غالبی می‌باشند.(مانند Perl) اولین زبان برنامه نویسی به قبل از اختراع رایانه باز می‌گردد، و برای هدایت رفتار ماشین‌هایی مانند دستگاه‌های نساجی اتوماتیک و نوازنده‌های پیانو به کار می‌رفت. هزاران زبان برنامه نویسی خلق شده‌اند، بیشتر در زمینهٔ رایانه، زمینه‌ای که هر ساله بسیاری دیگر ایجاد می‌شوند.


تقسیم‌بندی
زبان‌های برنامه نویسی را می‌توان از چهار دیدگاه متفاوت مورد بررسی قرار داده و تقسیم بندی کرد: الف)روش‌های برنامه نویسی ۱-زیر روالی ۲-ساخت یافته ۳-مدولار ۴-شئ گرا ب)نزدیکی به زبان ماشین ۱-سطح پایین ۲-سطح میانی ۳-سطح بالا ج)نوع ترجمه ۱-مفسری ۲-کامپایلری د)رابط برنامه نویسی ۱-مبتنی بر متن ۲-مبتنی بر گرافیک (ویژوال)



تعاریف

ویژگی‌هایی که غالباً برای تشکیل یک زبان برنامه نویسی مهم شمرده می‌شوند:

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


هدف: زبان‌های برنامه نویسی با زبان‌های طبیعی تفاوت دارند و آن اینکه زبان‌های طبیعی فقط برای فعل و انفعالات بین مردم به کار می‌روند، در حالیکه زبان‌های برنامه نویسی همچنین به انسانها اجازه می‌دهد که از طریق دستورات با ماشین‌ها ارتباط برقرار کنند. برخی زبان‌های برنامه نویسی بوسیله یک دستگاه استفاده می‌شوند تا دستگاه دیگری را کنترل کند. برای مثال برنامه‌های پست اسکریپت(post script) غالباً توسط برنامه دیگری برای کنترل یک چاپگر و یا نمایشگر ایجاد می‌شوند.
ساختارها: زبان‌های برنامه نویسی ممکن است ساختارهایی برای تعریف و تغییر داده ساختارها یا کنترل جریان اجرا داشته باشند.
توان بیانگر: نظریه محاسبات، زبان‌ها را بوسیله محاسباتی که توان بیان آنها را دارند طبقه بندی می‌کند. تمام زبان‌های "کامل تورینگ" می‌توانند مجموعه یکسانی از الگوریتم‌ها را پیاده سازی کنند.ANSI/ISO SQL و Charity مثال‌هایی هستند از زبان‌هایی که کامل تورینگ نیستند، ولی غالباً زبان برنامه نویسی نامیده می‌شوند.

برخی مولفین اصطلاح" زبان برنامه نویسی" را محدود به آنهایی می‌کنند که می‌توانند تمام الگوریتم‌های ممکن را پیاده سازی کنند، گاهی اوقات اصطلاح" زبان رایانه" برای زبان‌های برنامه نویسی محدودتر به کار می‌رود. زبان‌های غیر محاسباتی، مانند زبان‌های مارک آپ(markup) HTML یا گرامرهای قراردادی مثل BNF، معمولاً زبان برنامه نویسی محسوب نمی‌شوند. یک زبان برنامه نویسی(که می‌تواند کامل تورینگ نباشد) ممکن است در این زبان‌های غیر محاسباتی (میزبان) تعبیه شوند.
ساعت : 1:37 am | نویسنده : admin | مطلب قبلی | مطلب بعدی
تک گرافیک | next page | next page