مقدمه
بعد از آشنایی با سختافزار که همچون جسم کامپیوتر است؛ بایستی با بعد نرمافزار «Software» که بعنوان روح در کامپیوتر است، آشنا شد. نرمافزار، بعنوان عنصر درونی و غیرقابل لمس سیستم، بر روی سختافزار مینشیند «در آن نصب میشود»، به آن هویت میبخشد و نیز جهت عملکرد درست سیستم، سختافزار را کنترل، هدایت و نظارت مینماید و بر فعالیتهای آن نظم و انسجام مستمر میبخشد؛ در واقع، یک سیستم کامپیوتری هرچقدر هم که سریع و قدرتمند باشد، بدون نرمافزار عملاٌ عنصری بیفایده و بلااستفاده است؛ یعنی حتی روشن هم نمیشود چه برسد به علمکرد سریع و دقیق؛ بایستی توجه داشت که سختافزار و نرمافزار، هر دو در کنار هم معنی مییابند. بایستی به این نکتهی بسیار مهم توجه داشت، که با تعویض نرمافزار، حتی عملکردهای پیش فرض سیستمی هم، تغییری اساسی مییابند. دانش نرمافزار، فقط و فقط به یک بخش کامل و بزرگ «مهندسی نرمافزار» تعریف میشود که بقیهی عناصر، زیرشاخهای از آن هستند؛ اما یک نرمافزار، بطور ذاتی به دو بخش اصلی «نرمافزار سیستم و نرمافزار کاربردی»، تقسیم میشود که دارای چندین زیربخش میباشد؛
مهندسی نرمافزار
مهندسی نرمافزار «Software Engineering»، دانش تخصصی و دانشگاهی است که جهت طراحی، تولید و توسعه انواع نرمافزار به کار میرود. این دانش با روشهای اصولی و مهندسی شده، جهت ارتقای کارایی و بهینهسازی منابع سیستم، دائماٌ در حال توسعه و پیشرفت است؛ از ابتدای ساخت کامپیوترها، هزینهی تولید و توسعهی سختافزار در طول زمان، کمتر و کمتر شده، گرچه طراحی آن پیچیدهتر شده است؛ اما نرمافزار از ابتدای وجود، همچنان با پیچیدگی ذاتی و درونی که دارد، هزینههای طراحی، تولید و توسعهی آن، همواره افزایش مییابد؛ در این زمان است که مفهوم مهندسی نرمافزار، بیش از پیش اهمیت مییابد؛ بطوریکه با تکنیکهایی تخصصی سعی در ایجاد نرمافزارهایی ایمن، کارا، سریع و دقیق دارد؛ که در عین سادگی و قدرت ذاتی بیش از قبل، سعی در کاهش هزینههای سنگین توسعه و نگهداری دارد. مهندسی نرمافزار، شامل یک بخش اصلی و بسیار مهم «معماری نرمافزار» است؛ که دانشی در رابطه با ساختار درونی سیستمها، میباشد.
نرمافزار سیستمی
نرمافزار سیستمی «System Software»، بعنوان اصلیترین نرمافزرا در کامپیوتر است بطوری که با سیستم روشن میشود و تا انتهای کار، بیوقفه در حال فعالیت و نظارت مستمر است؛ این نرمافزار سه وظیفهی اصلی «مدیریت منابع اعم از سختافزار و نرمافزار، شناسایی قطعات و عیبیابی آنها و اجرای برنامههای کاربردی در حین کار و سرانجام، ایجاد محیط کاربری مناسب جهت سهولت استفاده» دارد؛ همانند سیستم عامل.
نرمافزار کاربردی
نرمافزار کاربردی «Application»، برنامهای ثانویه است که در جهت رفع نیازهای مختلف کاربران، طراحی و تولید میشود؛ که در طی مدت زمان تصمیم بر توسعه و یا توقف آن، گرفته میشود؛ یعنی یک برنامهی کاربردی، میتواند چندین بار و یا فقط یک بار، توسعه داده شود. نرمافزارهای کاربردی شامل؛ برنامههای اداری، ویراستاری متون، گرافیکی و بازیهای کامپیوتری و برنامهی دستگاههای صنعتی میباشد.
میانافزار
میانافزار «Middleware»، نرمافزاری سیستمی مستقل از سیستمعامل، پایگاه داده و سایر نرمافزارهاست که خدماتی سیستمی به نرمافزارهای کاربردی ارائه میدهد؛ در واقع، کار توسعهدهنده را در برقراری ارتباط و سهولت در انجام وظایف ورودی / خروجی «I/O» ساده مینماید و درنهایت آنها میتوانند بر توسعهی برنامههایشان و هدف نهایی سیستم، متمرکز شوند. کار اصلی یک میانافزار، ترجمهی دستورات نرمافزاری برای سختافزارهای سیستمی است.