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

