مهندسي نرم افزار پيشه اي است که به ياري دانش يارانه و دیگر فناوریها و روشها به آفریدن و نگاهداری
نرم افزار رايانه اي مي پردازد. مسائل اصلی مهندسی نرمافزار تولید
نرم افزار بر اساس موارد زیر است:
- الزام هاي تعيين شده
- در زمان تعيين شده
- در محدوده بودجه پيش بيني شده
مهندسی نرمافزار طراحی، برنامه نویسی، توسعه، مستندسازی و نگهداري
نرم افزار با بکارگرفتن روشهای فنی و عملی از علوم کامپیوتر، مدیریت پروژه، مهندسی، محدوده کاربرد، طراحی رابط، مدیریت تجهیزات دیجیتال و سایر زمینهها است.
کاربردهای مهندسی نرمافزار دارای ارزشهای اجتماعی و اقتصادی هستند، زیرا بهرهوری مردم را بالا برده، چند و چون زندگی آنان را بهتر میکنند. مردم با بهرهگیری از
نرم افزار، توانایی انجام کارهایی را دارند که قبل از آن برایشان شدنی نبود. نمونههای از این دست
نرمافزارها عبارتاند از: سامانه هاي توکار، نرم افزار اداري، بازي هاي رايانه اي و اينترنت.
فناوري ها و خدمات مهندسی نرمافزار به کاربران برای بهبود بهره وري و کيفيت ياري مي رساند. نمونه هايي از زمينه بهبود عبارتند از: پايگاه داده ها، زبان ها، کتابخانه ها، الگوها، فرايندها و ابزار.
پيشينه مهندسي نرم افزار
اصطلاح مهندسی نرمافزار بعد از سال ۱۹۶۸ شناخته شد. این اصطلاح طی کنفرانس «مهندسی نرمافزار ناتو ۱۹۶۸» (که در گارميش آلمان برگزار شد) توسط ریاست کنفرانس F.L.Bauer معرفی شد و از آن پس بطور گسترده مورد استفاده قرار گرفت.
اصطلاح مهندسینرمافزار عموماً به معانی مختلفی به کار میرود:
- بهعنوان یک اصطلاح غیر رسمی امروزی برای محدوده وسیع فعالیتهایی که قبلا برنامه نويسي و تحليل سيستم ها نامیده میشد.
- بهعنوان یک اصطلاح جامع برای تمامی جنبههای عملی برنامهنویسی کامپیوتر، در مقابل تئوری برنامه نویسی کامپیوتر، که علوم کامپيوتر نامیده میشود.
- بهعنوان اصطلاح مجسم کننده طرفداری از یک رویکرد خاص نسبت به برنامهنویسی کامپیوتر که اصرار میکند، مهندسی نرمافزار، بجای انکه هنر یا مهارت باشد، باید بهعنوان یک رشته عملی مهندسی تلقی شود و از جمع کردن و تدوین روشهای عملی توصیه شده به شکل متدولوژیهای مهندسی نرمافزار طرفداری میکند.
- مهندسی نرمافزار عبارتست از : ۱-کاربرد یک رویکرد سیستماتیک، انتظام یافته، قابل سنجش نسبت به توسعه، عملکرد و نگهداری نرمافزار، که کاربرد مهندسی در نرمافزار است و ۲-مطالعه روشهای موجود در استاندارد IEEE
محدوده مهندسي نرم افزار و تمرکز آن
مهندسی نرمافزار به مفهوم توسعه و بازبینی یک سیستم
نرمافزاری مربوط میباشد. این رشته علمی با شناسایی، تعریف، فهمیدن و بازبینی خصوصیات مورد نیاز
نرم افزار حاصل سر و کار دارد. این خصوصیات
نرمافزاری ممکن است شامل: پاسخگویی به نیازها، اطمینانپذیری، قابلیت نگهداری، در دسترس بودن، آزمونپذیری، استفاده آسان، قابلیت حمل و سایر خصوصیات باشد.
مهندسی نرمافزار ضمن اشاره به خصوصیات فوق، مشخصات معین طراحی و فنیای را آماده میکند که اگر بدرستی پیادهسازی شود،
نرمافزاری را تولید خواهد کرد که میتواند بررسی شود که آیا این نیازمندیها را تامین میکند یا خیر.
مهندسی نرمافزار همچنین با خصوصیات پروسه توسعه
نرمافزاری در ارتباط است. در این رابطه، با خصوصیاتی مانند هزینه توسعه
نرم افزار، طول مدت توسعه
نرم افزار و ریسکهای توسعه
نرم افزار درگیر است.
نياز به مهندسي نرم افزار
نرم افزار عموماً از محصولات و موقعیتهایی شناخته میشود که قابلیت اطمینان زیادی از آن انتظار میرود، حتی در شرایط طاقت فرسا، مانند نظارت و کنترل نیروگاههای انرژِی هستهای، یا هدایت یک هواپیمای مسافربری در هوا، چنین برنامههایی شامل هزاران خط کد هستند، که از نظر پیچیدگی با پیچیدهترین ماشینهای مدرن قابل مقایسهاند. بهعنوان مثال یک هواپیمای مسافربری چند میلیون قطعه فیزیکی دارد (و یک شاتل فضایی خدود ده میلیون بخش دارد)، در حالی که نرمافزار هدایت چنین هواپیمایی میتواند تا ۴ میلیون خط کد داشته باشد.
تکنولوژي ها و روش هاي عملي
مهندسین نرمافزار طرفدار تکنولوژیها و روشهای عملی بسیار متفاوت و مختلفی هستند، که با هم ناسازگارند. این بحث در سالهای دهه ۶۰ میلادی شروع شد و ممکن است برای همیشه ادامه پیدا کند. مهندسین نرمافزار از تکنولوژیها و روشهای عملی بسیار متنوعی استفاده میکنند. کسانی که کار عملی میکنند از تکنولوژیهای متنوعی استفاده میکنند : کامپایلرها، منابع کد، پردازشگرهای متن. کسانی که کار عملی میکنند از روشهای عملی بسیار متنوعی استفاده میکنند تا تلاشهایشان را اجرا و هماهنگ کنند : برنامه نویسی در دستههای دونفری، بازبینی کد، و جلسات روزانه. هدف هر مهندس نرمافزار بایستی رسیدن به ایدههای جدید خارج از مدلهای طراحی شده قبلی باشد، که باید شفاف بوده و بخوبی مستند شده باشد.
با وجود رشد فزاینده اقتصادی و قابلیت تولید فزایندهای که توسط
نرم افزار ایجاد شده، هنوز هم بحث و جدلهای ماندگار درباره کیفیت
نرم افزار ادامه دارند.