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