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

مهندسی نرم افزار ( SE ) طراحی ، توسعه و ثبت نرم افزار با بکارگیری تکنولوژی ها و کار با علم کامپیوتر ، مدیریت پروژه ، مهندسی محدوده های کاربرد طرح همبست ، مدیریت دارایی دیجیتال و دیگر زمینه ها است .
اصطلاح مهندسی نرم افزار پس از ۱۹۶۸ عمومیت یافت در حین کنفرانس نرم افزار NATO 1968 بوسیله ریکس fl باور و از آن به بعد گسترش یافت .
این اصطلاح معانی متفاوت خاصی دارد :

• بعنوان اصطلاح کنونی غیر رسمی برای محدوده وسیعی از فعالیت ها که قبلاً در برنامه ریزی و تحلیل های سیستم بکار می رفت .
• بعنوان اصطلاح وسیع کلیه جنبه های کار برنامه ریزی کامپیوتر در مقابل تئوری برنامه ریزی کامپیوتری که علم کامپیوتر نامیده می شود .
• بعنوان اصطلاح حمایت از یک راهکار خاص برای برنامه ریزی کامپیوتری که باید بعنوان قاعده مهندسی به جای هنر آن به کار رود و از کد بندی اعمال توصیه شده ای حمایت می کند که به شکل متدلوژی های مهندسی نرم افزاری می باشند .

• مهندسی نرم افزار کار ، کاربرد یک راهکار سیستماتیک ، قانونمند و کمی برای توسعه عملکرد و حفظ نرم افزار است که کاربرد مهندسی در نرم افزار است . ( مطالعه راهکارهایی در استاندارد IEEE 610,12
محدوده و تمرکز :
مهندسی نرم افزار با مفهوم ، توصیه و تعدیل یک سیستم نرم افزاری است که این قاعده با شناسایی ، تعریف ، شناخت و اصلاح ویژگی های لازم نرم افزار منتج سرو کار دارد .
این ویژگی های نرم افزاری می تواند شامل مواردی شود که آمادگی طرح و مختصات تکنیکی است که اگر مناسب اجرا شود منتج به نرم افزاری می شود که می تواند برای برآورد این الزامات اصلاح شود .

مهندسی نرم افزار همچنین مربوط به ویژگی های فرآیند توسعه نرم افزار است . در این زمینه با ویژگی های هزینه توسعه ، طول توسعه و ریسک های توسعه نرم افزار سرو کار دارد .

نیاز به مهندسی نرم افزار :
نرم افزار در مواردی یافت می شود که اطمینان زیادی انتظار می رود ، در شرایطی مثل بررسی و کنترل طرح های نیروی هسته ای یا خطوط هوایی ، چنینی کاربردهایی شامل میلیونها خط رمز می شود که ماشین مدرن پیچیده ای است بعنوان مثال : یک خط هوایی مدرن میلیونها بخش دارد و نرم افزار این خط هوایی ۴ میلیون خط رمز دارد .

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

ویژگی SE چیست؟
ریاضیات: برنامه ها ویژگی های ریاضی زیادی دارند مثلاً اصلاح وپیچیدگی الگاریتم های زیاد که مفاهیم ریاضی قابل اثبات هستند، برنامه ها محدودند. لذا دراصل توسعه دهندگان به روش ریاضی برنامه های بسیاری می دانند. استفاده ازریاضیات در مهندسی نرم افزار اغلب روشهای رسمی نامیده می شود.ولی تئوری محاسبه اثبات مفید برنامه راثابت می کند، ریاضیات برای قطعات رمز کوچک کار می کند ومقیاس بندی مشکلی دارد.

مهندسی: مهندسی نرم افزار یک قاعده مهندسی است چون راهکارهایی وویژگیهای خاصی برای مهندسی دارد. تحلیل ،تثبیت و رمزبندی مناسب غلاتی از یک مهندس می باشند. دیویدپارنز معتقد است که مهندسی نرم افزار مهندسی است .برنامه هاارزیابی می شوند مثلاً عملکرد ومقیاس برنامه ها تحت یارکار متفاوت ارزیابی می شود. موثر بودن پردازش ها، شبکه های سریعتر، پایه های اطلاعاتی نوین مباحث مهندسی اند. معادلات ریاضی گاهی از ارزیابی هااستتناج می شود. راهکارهای ریاضیات برای تحلیل وسیع سیستم خوب عمل می کند اما اغلب مقایسه اجزای کوچک رمز بی معنی است.

تولید :
برنامه ها بعنوان توالی مراحل ساخته می شوند، تعریف مناسب وانجام این مراحل شبیه خط تولید است . مدافعین امید به بهبود تولید توسعه گران کیفیت برنامه های نهایی دارند. این راهکارپردازش های متفاوتی دارد در حالی که دیگران از قبیل مولفین programmers stone این نظریه را پذیرفته اند که درواقع قادر اجرای هوش مصنوعی است. یک طراح خط تولید را شبیه سازی می کند.
مدیریت پروژه :

پروژه های نرم افزار تجاری خواهان مدیریتند. اینها بودجه هاو برنامه ریزی هایی برای تنظیم هستند. استخدام و هدایت افراد، منابع لازم که تمامی اینها درمحدود، مدیریتند.

هنرهای شنیداری و تجسمی :
برنامه ها حاوی اجزای هنرمندانه اند مثل نوشتنی یا نقاشی، صحبتهای کاربر باید خوشایند باشد وارتباط صوتی و دیداری مطلوب را به کاربران نهایی می دهد.آنچه مدنظر است”طراحی خوب”است که اغلب ذهنی است وحس زیبایی را مشخص می کند .

بدلیل اینکه هنرمندان گرافیک اجزای گرافیک برای صحبتهای کاربر گرافیکی خلق می کنند ، طراحی گرافیک طرح و واکنش درموقعیت طراح همبست دارد.
-بتهای کاربرمستلزم شناخت تکنیکی– گرافیکی با رمز است تکنولوژی انیمیشن کامپیوتر، خودکار بودن تولید گرافیک ، جمع بندی گرافیک ها با تکنولوژی ثبت صوتی وکاربرد ریاضی است. می توان گفت که مهندسی صوتی تصویری لازم است.

همبست های کاربر یا متن خواندنی می تواند از کپی رایت تخصصی و نوشته تکنیکی ارتقاء یابد.
رمز باید برای برنامه ریزان خوشایند باشد . نام متغیر یا نام طبقه یک سوال هنری است.
عملکرد :
عمل نرم افزار نوشتاری مستلزم این است که توسعه گران انرژی یافتن پاسخ ها به خود را از کیبرد بیابند. خلق نرم افزار عملکردی است که شبیه آنچه است که ورزشکاران در زمین انجام می دهند. هنرمندان و موسیقی دانان روی صحنه برخی معتقدند که SE برای خلق رمز نیاز به تهیج دارد. گاهی اوقات یک جرقه خلاق برای خلق معماری یا واحد رمز برای حل مشکل خاصی مورد نیاز است .دیگران معتقدند که قاعده یک نسبت کلیدی است ،برنامه ریزی مزدوج تاکید بر این نقطه نظر دارد. برخی براین تاکید دارند.
شاخه ای ازکدام زمینه ؟

آیاSE شاخه ای از برنامه ریزی است یک شاخه از علم کامپیوتر یک شاخه از مهندسی رسمی یا زمینه ای که خودش است. در این مورد بحث زیادی شده است و مفاهیم خاصی دارد جواز آن یک مبحث قطب بندی است به برخی از آن دفاع می کنند وبرخی مخالفند.

شاخه برنامه ریزی :
برنامه ریزی تاکید بر نوشتنی رمز دارد مستقل ازپروژه ها ومشتریان. مهندسی نرم افزار تاکید نوشتنی رمز و کاربرد آن دارد. بعنوان یک شاخه برنامه ریزی SE هیچ جواز خاصی یا مبحث تخصصی ندارد.

شاخه علم کامپیوتر:
بسیاری معتقدند که مهندسی نرم افزار بخشی از علم کامپیوتر بدلایل خاصی است آنها از اینکه SE بخشی از علم کامپیوتر باشد دفاع می کنند. هم علم کامپیوتر و هم مهندسی نرم افزار از برنامه ها مراقبت می کنند،علم کامپیوتر تاکید بر حقایقی مفید دارد، برخی معتقدندکه علم کامپیوتر مانند فیزیک و شیمی مهندسی رسمی است. بعنوان شاخه ای از علم کامپیوتر ،SE احتمالاً جواز اندک موارد تخصصی کمی دارد.

شاخه مهندسی :
برخی از متصدیان ومحصلین SE از قاعده SE بعنوان مهندسی دفاع کردهاند و معتقدند که عمل مهندسی شامل استفاده از ریاضی ، علم وتکنولوژی روز می باشد برای هدفمند بودن،SE مدل مهندسی مجاز و تخصصی را برمی گزینند.

زمینه ای مجزا :
اخیراً مهندسی نرم افزار هویت خود را یافته اندو زمینه مجزایی شده است ،متصدیان میدانند که جامعه عظیمی در حق خود هستند ،مخندسی نرم افزار نیاز به ایجاد شکلی از مقررات مناسب برای موارد خود دارد.وجواز آن در آمریکا نامناسب است زیرا خلق نرم افزار بیانگر مشکلی از نوشتنی است و برنامه ریزان باید جواز داشته باشند ومهندسین نرم افزار باید دارای جواز دولتی باشند والاّ مجرمند حتی اگر نرم افزار را بدون جواز دولت توسعه دهند تخلف محسوب می شود.
انجمن آمار آمریکا مهندسین نرمافزار کامپیوتر را به عنوان دسته فرعی تخصصی کامپیوتر به همراه مشاغلی از قبیل دانشمند،برنامه ریز و توزیع کننده شبکه میدارند،BLS تمامی قواعد مهندسی دیگررا طبقه بندی می کند منجمله مهندسین سخت افزار کامپیوتر که بعنوان مهندسین هستند.

تخصص مهندسی نرم افزار :
از سال ۲۰۰۴ انجمن آمار کار آمریکا ۷۶۰۸۴۰ مهندس نرم افزار را که در این شغل در آمریکا بودند را شناسایی کرد . در مقایسه ۴/۱ میلیون متصدی در زمینه مهندسی ترکیبی دارد . حدود ۵/۱ میلیون متصدی در اروپا ، آسیا و جای دیگر وجود دارد . پیش آهنگان SE شامل یری پوهم و فردیروکز ، CAR هوار و دیوید پارناس می باشند ، بحث SE کیفی بودن فرد و کسانی که استاندارد را تنظیم می کنند می باشد .

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

بحث درباره اصطلاح مهندسی :
برخی معتقدند که توسعه نرم افزار اصطلاح مناسب تری از مهندسی نرم افزار برای فرآیند خلق نرم افزار است ، پیت مک برین معتقد است که این اصطلاح سطح فرآیند مهمی است که برای همه توسعه نرم افزار مناسب نیست او استفاده هنرمند را مناسب می دارند زیرا به مهارت توسعه گر بستگی دارد که کلیه موفقیت بجای فرآیند تولید است با استفاده از مقایسه رسمی هر کسی که در این ساختار کار می کند یک مهندسی بد یمن نیست و هر کسی که رمز می نویسد یک مهندسی نرم افزار نیست .

برخی افراد این زمینه را برای عنوان مهندسی مناسب می دانند ، مخالفت نیز از قواعد مهندسی رسمی ناشی می شود که متصدیان آن معمولاً به استفاده از عنوان مهندسی در آموزش آن معترضند . در هر یک از چند دهه اخیر حداقل یک راهکار ریشه ای نوین دارد جریان اصلی رشد نرم افزار شده است به این مفهوم که این زمینه تغییر سریعی در قاعده مهندسی دارد . افراد دیگر معتقدند که راهکارهای بیشه ای نوین در واقع بجای انقلابی بودن تکاملی اند . بروز مخص ابزار نوین بجای تغییرات اساسی .

 

آموزش :
افراد با پشتوانه های متفاوت آموزش سهم مهمی در SE دارند ، امروزه مهندسین نرم افزار می توانند مدرک مهندسین نرم افزار ، کامپیوتر و علم کامپیوتر کسب کنند .

مدارک نرم افزار :

حدود نیمی از متصدیان امروزه مدارک علم کامپیوتر دارند ، عده ای از آنها مدرک مهندسی نرم افزار دارند ، در ۱۹۹۶ انجمن روجستر تکنولوژی اولین مدرک BSSE در ایالات متحده را تثبیت کردند و تثبیت ABE1 را در ۲۰۰۳ داشتند . از آن به بعد مدرک فارغ التحصیلی مهندسین نرم افزار در دانشگاه های زیادی تاسیس شد یک برنامه تحصیلی بین المللی برای فارغ التحصیلی مهندسین نرم افزار بوسیله CCSE اخیراً تعریف شده است از سال ۲۰۰۴ در آمریکا ۵۰ دانشگاه دارایی این رشته بودند که هم علم کامپیوتر و هم اصول و اعمال مهندسی را تعلیم می دهند . اولین مدرک مهندسی کامپیوتر در دانشگاه ستیل در سال ۱۹۷۹ اخذ شده از آن به بعد مدرک مهندسی کامپیوتر در بسیاری از دانشگاه ها مرسوم شد .

مدارک این محدوده :
برخی متصدیان مدارک ریاضی ، علوم ، مهندسی یا تکنیکی دیگر دارند و برخی مدرک فلسفه یا غیر تکنیکی دارند و برخی مدارکی ندارند توجه داشته باشید که بررسی بوسیله مدارک ریاضی و ادسگر دیجکسترا مدارکی در فیزیک داشتند ولی در مهندسی نرم افزار خلاقیت داشته اند .

اشتغال :
بیشتر مهندسین نرم افزار شاغل یا قراردادی هستند . مهندسین نرم افزار با تجار عوامل دولتی و سازمان های غیر انتفاعی کار می کنند برخی نیز کار آزاد دارند ، برخی سازمانها متخصصین برای انجام فرآیند توسعه نرم افزار دارند . و برخی دیگر از مهندسین نرم افزار می خواهند که کارهایی برای آنها انجام دهند . در پروژه های بزرگ ، افراد نقش های بسیاری را دارند مثل : تحلیلگران ، معماران و غیره و در دانشگاه ها بعنوان محقق و استاد هستند .
بحث درباره چشم انداز شغلی مهندسین نرم افزار و دیگر مخصصین وجود دارد . بعنوان مثال یک بازار آتی آن لاین در آمریکا سعی دارد که پاسخ دهد که آیا شغل های IT بیشتری منجمله مهندسی نرم افزار در سال ۲۰۱۲ نسبت به ۲۰۰۲ وجود خواهد داشت یا نه .

تاییدیه :
تایید به مهندسین نرم افزار بحث داغی است . برخی آن را ابزاری برای بهبود تخصص می دانند و دیگران آن را زیاد موثر نمی دانند بیشتر برنامه های تاییدیه در صنعت نرم افزار در جهت تکنولوژی های خاصی است و برای انجمن هایی است که افرادی که از این تکنولوژی تا استفاده می کنند بکار می رود . تادییه کلی متصدیان نرم افزار مورد بحث است .