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