بیگمان، نرمافزار یکی از پیچیدهترین و در عین حال قابل انعطافترین دستاوردهای بشر میباشد. با وجودیکه بیش از چند دهه از پیدایش نرمافزار نمیگذرد، این پدیدهی شگفتآور قرن بیستم، به عنوان یکی از مؤلفههای کلیدی فناوریهـای نوین اطلاعاتی و ارتباطاتی، تاثیر شـگرفی بر کلیهی جوانب زنـدگی بشـر داشته است. امروزه نرمافزار، سوخت لازم برای راهاندازی و بهحرکت درآوردن موتورهای اقتصادِ نوین تلقی میشود. هیچ سازمان و کسبوکار نوینی، نمیتواند بدون نرمافزار به حرکت و تکامل خود ادامه دهد.
بهطور کلی فناوری اطلاعات و ارتباطات و به طور خاص نرمافزار، گونههای جدیدی از ارتباطات و تعاملات را شکل داده است. به کمک این پدیده و دستاوردِ منحصر به فرد، قادر هستیم اطلاعات را به شکلهایی که تاکنون حتی تصور هم نمیکردیم، ایجاد نموده و الگوهای جدیدی را در میان آنها کشف نماییم. روشهای درمان بیماریها، روشهای یادگیری، روشهای کسبوکار، و به طور خلاصه، روشهای زندگی به شدت تحت تأثیر فناوریهای اطلاعاتی و ارتباطی قرار گرفته است. به کمک این فناوریها، بشر توانسته پا را از مرزها و قلمروهای پیشین فراتر نهاده و قدم در دنیای پر رمز و راز هستی نهد. دسترسی به فضای بیکران آسمانها از یک سو و وارد شدن به دنیای اتمها (در مقیاس نانو) از سوی دیگر، نمونههای آشنایی از تأثیرات و جلوههای بکارگیری فناوریهای نوین اطلاعات و ارتباطات و به خصوص نرمافزار میباشد.
در طول چند دههی اخیر، با کمک رایانهها و نرمافزارهای مختلف، حجم دانش بشری چندین برابر شده است. در آیندهی بسیار نزدیک، هر یک از ما شاهدِ بکارگیری نرمافزار در منزل، خودرو، تلویزیون، ساعتِ مچی، کتاب، و حتی لباسهای خود خواهیم بود.
اما به واسطهی تغییرات بسیار سریع و غافلگیرکنندهی فناوریهای نوین اطلاعاتی و ارتباطی و بهطور خاصْ نرمافزار، و به موازاتِ آن، تغییر نیازها، خواستهها، و انتظارات استفادهکنندگان از نرمافزار و قابلیتهای آن، طراحی و تولید نرمافزار، بسیار پیچیده است. عوامل دیگری مانند رقابت شدید، کمبود نیروی متخصص و حرفهای، عدمِ دسترسی به دانش و تجربهی موفق دیگران، لزوم تولید سریع، لزوم تولید مقرون به صرفه، نیاز روز افزون به همکاری میان رشتههای مختلف، و مهمتر از همه، عدمِ استفادهی مناسب از اصول و مبانی مهندسی در طراحی تولید نرمافزار، این صنعت را با چالشهای بسیاری روبرو نموده است.
حدود شش دههی پیش، یعنی در اوایل پیدایش نرمافزار، استفادهکنندگانِ این فراوردهی نوین، همان طراحان و تولیدکنندگان آن بودند. در آن زمان، نرمافزار عمدتاً برای محاسبات و حل مسائل ریاضی استفاده میشد. وجود زبانهای سطحِ پایین و محدودیتهای سختافزاری (کمبود حافظه و سرعت پردازشِ کم) از دیگر مشخصههای دوران اولیهی پیدایش نرمافزار است. در آن روزهای اولیه، نرمافزار چیزی جدا از سختافزار نبود و حتی برای فروش سختافزار، بطور رایگان در آن تعبیه میشد! اما با گسترش دامنهی کاربرد رایانه و به تبعِ آن نرمافزار در زمینههای مختلف، به مرور شرایطی به وجود آمد که استفادهکنندگان و کاربرانِ نرمافزار از طراحان و تولیدکنندگان آن جدا شدند؛ سازمانها و شرکتهایی بهوجود آمدند که کارشان صرفاً تولید نرمافزار بود. حالا دیگر نرمافزار قیمت داشت و اتفاقاً برخلاف روندِ کاهش قیمت در سختافزارها، روز به روز بر قیمت نرمافزار افزوده میشد. نیازهای جدید استفادهکنندگان فراتر از محاسبات (رایانِش) بود. آنها به مدیریت اطلاعات نیاز داشتند. پیدایش زبانهای سطح بالا و رفع محدودیتهای سختافزاری، از دیگر مشخصههای عصر جدید نرمافزار میباشد. درست در همین زمان است که اولین شکستها و مشکلات نیز خود را نشان دادند. مشکلات و چالشها به قدری جدی و پر هزینه بود که از آن به بحرانِ نرمافزار یاد میشد.
سرانجام برای اولین بار، در سال ۱۹۶۸ و در یک کنفرانس که توسط ناتو در کشور آلمان برگزار شده بود، بر لزوم مهندسیِ این دستاورد جدیدِ بشر، یعنی نرمافزار، تأکید شد. از آن زمان به بعد، با مطرحشدن روزافزون مفهوم مهندسی نرمافزار و در نتیجه با گسترش تکنیکهای مهندسی، ابزارها، و دانش و تجربه، صنعت نرمافزار به یکی از صنایع برتر جهانی تبدیل شده است.