مهندسی نرم افزار :
مهندسی نرم افزار ( SE ) طراحی ، توسعه و ثبت نرم افزار با بکارگیری تکنولوژی ها و کار با علم کامپیوتر ، مدیریت پروژه ، مهندسی محدوده های کاربرد طرح همبست ، مدیریت دارایی دیجیتال و دیگر زمینه ها است .
اصطلاح مهندسی نرم افزار پس از 1968 عمومیت یافت در حین کنفرانس نرم افزار NATO 1968 بوسیله ریکس fl باور و از آن به بعد گسترش یافت .
این اصطلاح معانی متفاوت خاصی دارد :
• بعنوان اصطلاح کنونی غیر رسمی برای محدوده وسیعی از فعالیت ها که قبلاً در برنامه ریزی و تحلیل های سیستم بکار می رفت .
• بعنوان اصطلاح وسیع کلیه جنبه های کار برنامه ریزی کامپیوتر در مقابل تئوری برنامه ریزی کامپیوتری که علم کامپیوتر نامیده می شود .
• بعنوان اصطلاح حمایت از یک راهکار خاص برای برنامه ریزی کامپیوتری که باید بعنوان قاعده مهندسی به جای هنر آن به کار رود و از کد بندی اعمال توصیه شده ای حمایت می کند که به شکل متدلوژی های مهندسی نرم افزاری می باشند .
• مهندسی نرم افزار کار ، کاربرد یک راهکار سیستماتیک ، قانونمند و کمی برای توسعه عملکرد و حفظ نرم افزار است که کاربرد مهندسی در نرم افزار است . ( مطالعه راهکارهایی در استاندارد IEEE 610,12
محدوده و تمرکز :
مهندسی نرم افزار با مفهوم ، توصیه و تعدیل یک سیستم نرم افزاری است که این قاعده با شناسایی ، تعریف ، شناخت و اصلاح ویژگی های لازم نرم افزار منتج سرو کار دارد .
این ویژگی های نرم افزاری می تواند شامل مواردی شود که آمادگی طرح و مختصات تکنیکی است که اگر مناسب اجرا شود منتج به نرم افزاری می شود که می تواند برای برآورد این الزامات اصلاح شود .
مهندسی نرم افزار همچنین مربوط به ویژگی های فرآیند توسعه نرم افزار است . در این زمینه با ویژگی های هزینه توسعه ، طول توسعه و ریسک های توسعه نرم افزار سرو کار دارد .
نیاز به مهندسی نرم افزار :
نرم افزار در مواردی یافت می شود که اطمینان زیادی انتظار می رود ، در شرایطی مثل بررسی و کنترل طرح های نیروی هسته ای یا خطوط هوایی ، چنینی کاربردهایی شامل میلیونها خط رمز می شود که ماشین مدرن پیچیده ای است بعنوان مثال : یک خط هوایی مدرن میلیونها بخش دارد و نرم افزار این خط هوایی 4 میلیون خط رمز دارد .
تکنولوژی های و اعمال :
مهندسین نرم افزار از بسیاری از تکنولوژی ها و اعمال متفاوت دفاع می کنند یا عدم توافق زیاد این بحث 60 سال است که ادامه دارد و همیشه ادامه خواهد داشت – مهندسین نرم افزار تکنولوژی ها و اعمال وسیعی دارند و متصدیان از تکنولوژی متنوع ، به جمع آورنده ها فرآیندهای کلمه و غیره استفاده می کنند . متصدیان تلاش فراوانی مثل برنامه ریزی مزدوج ، بررسی های رمز و ملاقات های روزمره ، هدف هر مهندس نرم افزار باید ایده ای از مدل طراحی می باشد که شفاف باشد و خوب ثیت شده باشد .
ویژگی SE چیست؟
ریاضیات: برنامه ها ویژگی های ریاضی زیادی دارند مثلاً اصلاح وپیچیدگی الگاریتم های زیاد که مفاهیم ریاضی قابل اثبات هستند، برنامه ها محدودند. لذا دراصل توسعه دهندگان به روش ریاضی برنامه های بسیاری می دانند. استفاده ازریاضیات در مهندسی نرم افزار اغلب روشهای رسمی نامیده می شود.ولی تئوری محاسبه اثبات مفید برنامه راثابت می کند، ریاضیات برای قطعات رمز کوچک کار می کند ومقیاس بندی مشکلی دارد.
مهندسی: مهندسی نرم افزار یک قاعده مهندسی است چون راهکارهایی وویژگیهای خاصی برای مهندسی دارد. تحلیل ،تثبیت و رمزبندی مناسب غلاتی از یک مهندس می باشند. دیویدپارنز معتقد است که مهندسی نرم افزار مهندسی است .برنامه هاارزیابی می شوند مثلاً عملکرد ومقیاس برنامه ها تحت یارکار متفاوت ارزیابی می شود. موثر بودن پردازش ها، شبکه های سریعتر، پایه های اطلاعاتی نوین مباحث مهندسی اند. معادلات ریاضی گاهی از ارزیابی هااستتناج می شود. راهکارهای ریاضیات برای تحلیل وسیع سیستم خوب عمل می کند اما اغلب مقایسه اجزای کوچک رمز بی معنی است.
تولید :
برنامه ها بعنوان توالی مراحل ساخته می شوند، تعریف مناسب وانجام این مراحل شبیه خط تولید است . مدافعین امید به بهبود تولید توسعه گران کیفیت برنامه های نهایی دارند. این راهکارپردازش های متفاوتی دارد در حالی که دیگران از قبیل مولفین programmers stone این نظریه را پذیرفته اند که درواقع قادر اجرای هوش مصنوعی است. یک طراح خط تولید را شبیه سازی می کند.
مدیریت پروژه :
پروژه های نرم افزار تجاری خواهان مدیریتند. اینها بودجه هاو برنامه ریزی هایی برای تنظیم هستند. استخدام و هدایت افراد، منابع لازم که تمامی اینها درمحدود، مدیریتند.