-
مجموعه مباحث مهندسی نرم افزار 1
با سلام خدمت تموم عزیزان ..!
از این به بعد در این بخش مطالبی در مورد مهندسی نرم افزار ارائه می کنم..!
امیدوارم مورد توجه همه قرار بگیره.
تهیه و تنظیم : Y@SiN
باشگاه دانشجويان پيام نور
نكته: از دوستان اگر کسی به بحث مهندسی نرم افزار حتی در سطوح دانشگاهی علاقه داره می تونه با دنبال کردن این بخش مرحله ی نخست مهندسی نرم افزار رو با موفقیت طی کنه.
Y@SiN
فعلا امضا نداريم.باشگاه داريم
-
بخش اول : مقدمه ای بر مهندسی نرم افزار
فهرست :
بحران نرم افزار
مفهوم مهندسی
تعريف مهندسی نرم افزار
ماهيت نرم افزار و تفاوت مهندسی نرم افزار با ساير رشته های مهندسی
کاربردهای نرم افزار
اهميت مهندسی نرم افزار
ارکان مهندسی نرم افزار
تعريف متدلوژی نرم افزاری
Y@SiN
فعلا امضا نداريم.باشگاه داريم
-
بحران نرم افزار:
بحران نرم افزار اولين بار بصورت رسمی در کنفرانسی در سال 1968 ميلادی مطرح گرديد . عوامل اصلی اين بحران عبارتند از :
هزينه بالای ايجاد نرم افزار
تاخير در توليد و تحويل نرم افزار
نگهداری پرهزينه نرم افزار
پيشرفت سريع سخت افزار
کيفيت پايين نرم افزار
افزايش پيچيدگی کاربردها
تفاوت مهندس و محقق علوم:
يک محقق علوم با استفاده از دانش موجود ، دانش نوينی را استخراج می نمايد، ولی يک مهندس از دانش موجود در عمل برای يافتن بهترين راه حل مسئله استفاده می نمايد . يک مهندس به صرفه اقتصادی و قابليت اطمينان راه حل خود می انديشد.
تعريف مهندسی نرم افزار:
تعريف مهندسی نرم افزار از ديد پارناس (Parnas) :
کار چند نفره برای توليد چند نسخه (version) از برنامه
تعريف پارناس به علت قديمی بودن مهندسی نرم افزار را با برنامه سازی يکی می داند.
تعريف مهندسی نرم افزار بنا بر پيشنهاد انجمن IEEE :
مهندسی نرم افزار عبارت است از بکارگيری يک روش سيستماتيک، منظم و قابل اندازه گيری برای توليد و توسعه ، عملياتی کردن و نگهداری نرم افزار . به عبارت ديگر بکارگيری اصول مهندسی در توليد نرم افزار.
تعريف مهندسی نرم افزار (از نگاهی ديگر) :
شامل مجموعه ای از تکنيکها و قواعد معتبر مهندسی بمنظور توليد نرم افزار قابل اطمينان و مقرون بصرفه.
-------------------------------------------------------------------------------------------------------------------------------------------------
ماهيت نرم افزار
جهت مشخص شدن ماهيت نرم افزار آنرا با يک محصول فيزيکی (همانند سخت افزار ) مقايسه می نماييم :
نرم افزار توسعه داده می شود در صورتيکه سخت افزار ساخته می شود ) بکارگيری واژه develop بجای create).
هزينه های نرم افزار در مهندسی آن متمرکز است . لذا مديريت پروژه های نرم افزاری متفاوت از مديريت ساير پروژه های مهندسی است .
نرم افزار محصولی منطقی است ، در صورتيکه سخت افزار يک محصول فيزيکی قابل لمس است .
جمع آوری نيازمنديها در رشته های مهندسی با کمک صاحب نظران و طراحان در رشته مربوطه صورت می پذيرد ، در صورتيکه جمع آوری اطلاعات جهت تعيين نيازمنديهای نرم افزار از طريق افراد معمولی صورت می پذيرد . لذا وجود درخواستهای ناقص و اشتباه از سوی کاربران ، يا تغيير نيازمنديهای آنها امری غير عادی تلقی نمی شود.
مفهوم استفاده مجدد در نرم افزار و سخت افزار : صنعت به سمت نصب قطعات حرکت می نمايد ، ليکن اين امر در نرم افزار کمرنگتر می باشد.
روشها و ابزارهای آزمايش نرم افزار متفاوت از روشها وابزارهای سخت افزار است.
نرم افزار به تدريج دچار فرسودگی نمی گردد ، بلکه فاسد می شود.
Y@SiN
فعلا امضا نداريم.باشگاه داريم
-
کاربردهای نرم افزار
نرم افزار برای هر موردی که در آن مورد مجموعه ای مشخص از مراحل رويه ای (يعنی بصورت الگوريتميک) تعريف شده است می تواند بکار گرفته شود.
کاربردهای اصلی نرم افزار در موارد زير است :
نرم افزار سيستم : مجموعه ای از برنامه ها می باشد که جهت ارائه سرويس به ساير برنامه ها ايجاد گرديده است . همانند کامپايلرها ، سيستم مديريت بانک اطلاعات DBMS ، ويراستارها و سيستم عامل
نرم افزار بلادرنگ : جهت تحليل و کنترل رخدادهای دنيای واقعی استفاده می شود. اين نرم افزار در هنگام وقوع رخداد بصورت بلادرنگ پاسخ مناسب را ارائه می نمايد . کنترل واکنشها در يک کارخانه توليد مواد شيميائی مثالی از اين مورد می باشد.
نرم افزار تجاری :
پردازش اطلاعات تجاری پر کاربرد ترين بخش استفاده از نرم افزار را تشکيل می دهد. سيستمهای کاربردی همانند سيستمهای حسابداری ، فهرست موجودی و عمليات ثبت نام دانشجويان مثالهائی از اين گروه نرم افزار می باشد.
نرم افزار علمی و مهندسی
نرم افزار کامپيوتر شخصی
نرم افزار جاسازی شده
نرم افزار هوش مصنوعی
نرم افزار Web
اهميت مهندسی نرم افزار:
نرم افزار دارای پيچيدگی می باشد . به علت ماهيت نرم افزار امکان حذف پيچيدگی وجود ندارد ، ليکن می توان آنرا کنترل نمود .
در خصوص سوالات زير تفکر نمائيد :
چگونه می توان نرم افزاری جهت يک سيستم پيچيده ايجاد نمود ؟
برنامه نويسی چه جايگاهی در مهندسی نرم افزار دارد ؟ و چنانچه جهت توسعه سيستمها در مراحل آغازين کار و قبل از انجام تمهيدات لازم به سراغ برنامه نويسی برويم چه مشکلاتی ايجاد می شود ؟
جهت انجام پروژه نرم افزاری با هزينه مناسب (منظور از هزينه در اينجا ابعاد مالی ، زمانی و نيروی انسانی است) و کيفيت خوب چه راهکارهايي را می بايست اتخاذ نماييم ؟
بطور متوسط طول عمر نرم افزار در کشور ما تقريبا نصف طول عمر نرم افزار در جوامع صنعتی است . دليل اين اختلاف را در چه می بينيد؟
آيا استفاده از دستورالعملها ، مستندات و نمودارهايي که مهندسی نرم افزار آنها را توصيه می نمايد ، صرفا جهت مستند سازی است يا مزايای ديگری نيز دارد؟
Y@SiN
فعلا امضا نداريم.باشگاه داريم
-
تکنولوژی مهندسی نرم افزار
متدولوژی:
متد (روش) : فرايندی منظم که با استفاده از مجموعه ای از نمادگذاريهای خوش تعريف ، مجموعه ای از مدلها را ايجاد می کند که هر کدام قسمتی از سيستم نرم افزاری در حال توسعه را توصيف می نمايد .
متدولوژی :
ارائه چارچوب کاری معين در قالب فرمها ، نمودارها ، قالبهای متنی با توجه به فرايند توسعه
مجموعه ای از روشها که در تمام چرخه حيات سيستم نرم افزاری اعمال شده و بر يک نوع نگرش کلی درباره جهان نرم افزار متکی می باشند.
انتظار از متدولوژی:
بازشناسی : دريافت و توصيف نيازمنديها
بازنمايي : قدرت بيان و تشريح (notation)
گذر : دارای تکنيک و دستورالعمل برای گذر از يک مرحله به مرحله ديگر باشد.
Y@SiN
فعلا امضا نداريم.باشگاه داريم
-
فرايند ( Process ):
فهرست:
فرايند
ابزار
فعاليتهای مهندسی نرم افزار
مدل های فرايند
Y@SiN
فعلا امضا نداريم.باشگاه داريم
-
فرايند:
فرايند نرم افزار نقشه راهی (Road Map) است که دو هدف زير را دنبال می نمايد:
کيفيت بالا
زمانبندی مناسب
لايه های مهندسی نرم افزار
اساس مهندسی نرم افزار لايه فرايند می باشد.
فرايند چارچوبی برای مجموعه ای از KPA ها(Key Process Area )ايجاد می نمايد.
KPA :
ايجاد پايه ای جهت کنترل مديريتی پروژه های نرم افزاری
ايجاد بستری جهت انجام روشهای فنی ، توليد محصولات کاری (مدلها، مستندات ، گزارشها ، فرمها ، داده ها و غيره) ، مشخص نمودن مراحل ، حصول اطمينان از کيفيت و مديريت خوب تغييرات
روشهای مهندسی نرم افزار شيوه های فنی جهت ايجاد نرم افزار را فراهم می نمايد . برخی از وظيفه هائی که روشهای مهندسی نرم افزار بايد آنها را پوشش دهد عبارت است از :
تحليل خواسته ها ، طراحی ، ساخت برنامه ها ، آزمايش و پشتيبانی
روشها شامل فعاليتهای مدلسازی و ساير فنون توصيفی نيز می گردد.
ابزار:
ابزارهای مهندسی نرم افزار جهت پشتيبانی از فرايندها و روشها مطرح می گردند. زمانی که دارای مجموعه ای از ابزارها باشيم بگونه ای که اطلاعات ايجاد گرديده توسط يک ابزار ، ورودی برای ساير ابزارها بوده و توسط آنها استفاده گردد ، سيستمی برای پشتيبانی توسعه نرم افزار ايجاد می شود که به آن مهندسی نرم افزار به کمک کامپيوتر (CASE) گوئيم.
فعاليتهای مهندسی نرم افزار:
بطور کلی فعاليتهای مربوط به مهندسی نرم افزار در سه فاز زير دسته بندی می گردد:
فاز تعريف
فاز توسعه
فاز پشتيبانی
نگهداشت تصحيحی
نگهداشت تطبيقی
نگهداشت بهبودی
نگهداشت پيشگيرانه
فازهای فوق با يکسري فعاليتهای چتری ( Umbrella activities) تکميل می گردد. مهمترين آنها عبارتند از:
کنترل و رديابی نمودن پروژه های نرم افزاری ، تضمين کيفيت نرم افزار ، مديريت پيکربندی نرم افزار ، تهيه مستندات ، مديريت قابليت استفاده مجدد ، سنجش و مديريت ريسک.
Y@SiN
فعلا امضا نداريم.باشگاه داريم
-
مدل فرايند:
تعيين يک راهکار توسعه که شامل لايه های فرايند ، روشها ، ابزار و فازها ( تعريف ، توسعه و پشتيبانی) باشد را الگوی مهندسی نرم افزار يا مدل فرايند می نامند.
مدلهای فرايند نرم افزار عبارتند از :
مدل ترتيبی خطی
مدل ايجاد نمونه اوليه (Prototyping Model)
مدل RAD
مدل افزايشی (Incremental Model)
مدل حلزونی(Spiral Model)
مدل حلزونی برنده - برنده (Win-Win)
مدل توسعه همزمان
مدل توسعه مبتنی بر مولفه ( Component Base Development)
مدل روشهای رسمی (Formal Method)
تکنيکهای نسل چهارم
مدل ترتيبی خطی(مدل آبشاری ، چرخه حيات کلاسيک):
طراحی نرم افزار بر روی چهار مورد زير تمرکز می نمايد :
ساختمان داده ها
معماری نرم افزار
نمايش واسط ها
الگوريتم ها
معايب روش
مدل ساخت نمونه اوليه:
Y@SiN
فعلا امضا نداريم.باشگاه داريم
-
-
برچسب برای این موضوع
مجوز های ارسال و ویرایش
- شما نمی توانید موضوع جدید ارسال کنید
- شما نمی توانید به پست ها پاسخ دهید
- شما strong>نمی توانید فایل پیوست ضمیمه کنید
- شما نمی توانید پست های خود را ویرایش کنید
-
قوانین انجمن