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

از ویکی‌پدیا، دانشنامهٔ آزاد.

پرش به: ناوبری, جستجو

مهندسی نرم‌افزار پیشه‌ای است که به یاری دانش رایانه و دیگر فناوری‌ها و روش‌ها به آفریدن و نگاهداری نرم‌افزار رایانه‌ای می‌پردازد.

مسائل اصلی مهندسی نرم‌افزار تولید نرم‌افزار بر اساس موارد زیر است:

  • الزامات تعیین شده
  • در زمان تعیین شده
  • در محدودهٔ بودجه پیش‌بینی شده

کاربردهای مهندسی نرم‌افزار دارای ارزش‌های اجتماعی و اقتصادی هستند، زیرا بهره‌وری مردم را بالا برده، چند و چون زندگی آنان را بهتر می‌کنند. مردم با بهره‌گیری از نرم‌افزار، توانایی انجام کارهایی را دارند که قبل از آن برایشان شدنی نبود. نمونه‌های از این دست نرم‌افزارها عبارت‌اند از: سامانه‌های توکار، نرم افزار اداری، بازی‌های رایانه‌ای، و اینترنت.

فناوری‌ها و خدمات مهندسی نرم افزار به کاربران برای بهبود بهره‌وری و کیفیت یاری میرساند. نمونه‌هایی از زمینه‌های بهبود: دادگان، زبان‌ها، کتابخانه‌ها، الگوها، فرآیندها و ابزار.


فهرست مندرجات

[ویرایش] تعریف مهندسی نرم افزار

مهندسی نرم افزار طراحی،برنامه نویسی، توسعه، مستند سازی و نگهداری نرم افزار با بکارگرفتن روشهای فنی و عملی از علوم کامپیوتر ، مدیریت پروزه ، مهندسی ، محدوده کاربرد، طراحی رابط، مدیریت تجهیزات دیجیتال و سایر زمینه‌ها است.

اصطلاح مهندسی نرم افزار بعد از سال ۱۹۶۸ شناخته شد، طی کنفرانس مهندسی نرم افزار ناتو ۱۹۶۸ (که در گارمیش آلمان برگزار شد) توسط ریاست کنفرانس F.L. Bauer معرفی شد، و از آن پس بطور گسترده مورد استفاده قرار گرفت.

اصطلاح مهندسی نرم‌افزار عموماً به معانی مختلفی به کار می‌رود :

  • به‌عنوان یک اصطلاح جامع برای تمامی جنبه‌های عملی برنامه‌نویسی کامپیوتر، در مقابل تئوری برنامه نویسی کامپیوتر، که علوم کامپیوتر نامیده می‌شود.
  • به‌عنوان اصطلاح مجسم کننده طرفداری از یک رویکرد خاص نسبت به برنامه‌نویسی کامپیوتر ، که اصرار می‌کند که مهندسی نرم‌افزار، بجای انکه هنر یا مهارت باشد، باید به‌عنوان یک رشته عملی مهندسی تلقی شود و از جمع کردن و تدوین روشهای عملی توصیه شده به شکل متدولوژی‌های مهندسی نرم افزارطرفداری می‌کند.
  • مهندسی نرم افزار عبارتست از : الف) کاربرد یک رویکرد سیستماتیک، انتظام یافته، قابل سنجش نسبت به توسعه، عملکرد، و نگهداری نرم افزار، که کاربرد مهندسی در نرم افزار است و ب) مطالعه روشهای موجود در استاندارد IEEE

[ویرایش] محدوده مهندسی نرم افزار و تمرکز آن

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

مهندسی نرم افزار همچنین با خصوصیات پروسه توسعه نرم افزاری در ارتباط است. در این خصوص، با خصوصیاتی مانند هزینه توسعه نرم افزار، طول مدت توسعه نرم افزار، و ریسک‌های توسعه نرم افزار درگیر است.

[ویرایش] نیاز به مهندسی نرم افزار

نرم افزار عموماً از محصولات و موقعیتهایی شناخته می‌شود که قابلیت اطمینان زیادی از آن انتظار میرود، حتی در شرایط طاقت فرسا، مانند نظارت و کنترل نیروگاههای انرژِی هسته‌ای، یا هدایت یک هواپیمای مسافربری در هوا، چنین برنامه‌هایی شامل هزاران خط کد هستند، که از نظر پیچیدگی با پیچیده ترین ماشینهای مدرن قابل مقایسه‌اند. به‌عنوان مثال یک هواپیمای مسافربری چند میلیون قطعه فیزیکی دارد (و یک شاتل فضایی خدود ده میلیون بخش دارد)، در حالی که نرم افزار هدایت چنین هواپیمایی میتواند تا ۴ میلیون خط کد داشته باشد.

[ویرایش] تکنولوژی‌ها و روشهای عملی

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

با وجود رشد فزاینده اقتصادی و قابلیت تولید فزاینده‌ای که توسط نرم افزار ایجاد شده ، هنوز هم بحث و جدل‌های ماندگار درباره کیفیت نرم افزار ادامه دارند.

[ویرایش] ماهیت مهندسی نرم افزار

David Parnas گفته‌است که مهندسی نرم افزار یک شکل از مهندسی است. Steve McConnell گفته‌است که هنوز اینطور نیست، ولی مهندسی نرم افزار باید یک شکل از مهندسی بشود. Donald Knuth گفته‌است که برنامه نویسی یک هنر است.

دیوان فعالیتهای آماری آمریکا دسته بندی کرده‌است مهندسان نرم افزار را به عنوان زیرگروهی از «متخصصین کامپیوتر»، با فرصت‌های شغلی ای مانند دانشمند کامپیوتر، برنامه نویس، و مدیر شبکه. BLS دسته بندی می‌کند تمام مهندسین دیگر این شاخه علمی ، که شامل مهندسین سخت افزار کامپیوتر نیز هست، را به‌عنوان «مهندسین» .

[ویرایش] جستارهای وابسته

رشته‌های مهندسی

الکترونیک | برق | پزشکی | پلیمر | راه آهن | ژئوماتیک | شهرسازی | شیمی | صنایع | طراحی صنعتی | عمران | هیدرولوژی | فناوری اطلاعات | قدرت | کامپیوتر | کشاورزی | گاز طبیعی | محیط زیست | مخابرات | معدن | معماری | مکانیک | مواد | نساجی | نفت | نقشه‌برداری | هسته‌ای | هوافضا 

[ویرایش] مهندسی نرم افزار

مهندسی نرم افزار روش سیستماتیک برای تولید نرم افزار وارائه سرویس است.

هدف در مهندسی نرم افزار ارائه روشی جامع جهت تولید نرم افزار مبتنی بر نیازهای واقعی متقاضیان است. برای رسیدن به این هدف در اولین مراحل نیاز‌ها را شناخت وحاصل شناخت را در قالب مدل‌هایی گویا و بدون ابهام مطرح نمود. سمیه نباتی

[ویرایش] منابع

1- پارسا، سعید. تحلیل وطراحی سیستم. چاپ ۵، تهران: دانشگاه علم وصنعت ایران، 

2- Fast Track UML 2.0 by Kendall Scott

3- Systems Analysis and Design With UML 2.0 by Alan Dennis,Barbara Wixom,David Tegarden 2005 - Wiley

[ویرایش] پیوند به بیرون