نیاز به مهندسی نرم افزار

نرم افزار عموما از محصولات و موقعیتهایی شناخته میشود که قابلیت اطمینان زیادی از آن انتظار میرود، حتی در شرایط طاقت فرسا، مانند نظارت و کنترل نیروگاههای انرژِی هسته‌ای، یا هدایت یک هواپیمای مسافربری در هوا، چنین برنامه‌هایی شامل هزاران خط کد هستند، که از نظر پیچیدگی با پیچیده ترین ماشینهای مدرن قابل مقایسه‌اند. بعنوان مثال یک هواپیمای مسافربری چند میلیون قطعه فیزیکی دارد (و یک شاتل فضایی خدود ده میلیون بخش دارد)، در حالی که نرم افزار هدایت چنین هواپیمایی میتواند تا ۴ میلیون خط کد داشته باشد.
[ویرایش]
تکنولوژی‌ها و روشهای عملی

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

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