دانشکده

دانلود فایل ها و تحقیقات دانشگاهی ,جزوات آموزشی

دانشکده

دانلود فایل ها و تحقیقات دانشگاهی ,جزوات آموزشی

مبانی مهندسی نرم افزار DFD 7 ص

لینک دانلود و خرید پایین توضیحات

فرمت فایل word  و قابل ویرایش و پرینت

تعداد صفحات: 7

 

DFD پیشنهادی

DFD سطح دوم



خرید و دانلود  مبانی مهندسی نرم افزار   DFD  7 ص


نرم افزار Fault Tolerance با استفاده از Simulated Annealing 20 ص

لینک دانلود و خرید پایین توضیحات

فرمت فایل word  و قابل ویرایش و پرینت

تعداد صفحات: 20

 

به نام خدا

نرم افزار Fault Tolerance با استفاده از Simulated Annealing

چکیده :

در این مقاله سعی می کنیم بهترین مینیمم را برای تابع زیر به دست بیاوریم :

 

برای این منظور از روش simulated Annealing (SA) استفاده می کنیم .

SA یکی از روشهای بهینه سازی حل مسئله است که در واقع الهام گرفته شده از فرایند ذوب و دوباره سرد کردن مواد می باشد و به همین دلیل به شبیه سازی حرارتی شهرت یافته است .

پس از حل مسئله با روش SA ، سعی می کنیم آن را در یک نرم افزار تحمل خطا به کار ببریم. برای داشتن یک نرم افزار تحمل خطا تکنیکهای مختلفی وجود دارد که ما در این مقاله با استفاده از تکنیک های افزونگی و تنوع طراحی از روش Acceptance Voting (AV) بهره برده ایم .

مقدمه :

Fault: باعث errorدر سیستم می شود که به آنbug هم گفته می شود .

Error : حالتی از سیستم است که منتج به خرابی می شود .

Failure : حالتی است که سیستم از سرویس مورد نظر منحرف شود .

2-1- تحمل خطا (Fault Tolerance):

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

3-1- سیستم تحمل پذیر خطا (System Fault Tolerance ) :

سیتم تحمل پذیر خطا معادل با سیستم قابل اعتماد ( Dependable ) می باشد که باید ویژگی های (قابلیت دسترسی ، قابلیت اعتماد ، ایمنی و قابلیت نگهداری را داشته باشد :

- قابلیت دسترسی: سیستم در هر لحظه آماده استفاده باشد .

- قابلیت اعتماد: سیستم پیوسته و بدون عیب کار کند .

- ایمنی: وقتی سیستم fail می شود اتفاق فاجعه آمیزی رخ ندهد .

- قابلیت نگهداری: سیستم شدهfail به راحتی قابل ترمیم باشد.

4-1- افزونگی ( Redundancy):

یکی از روشهای تحمل خطا در سیستم های نرم افزاری افزونگی است . افزونگی ، قابلیتی است در تحمل خطا به طوری که می توان با افزایش سخت افزار و یا کپی برداری از تمام نرم افزار و یا قسمتی از نرم افزار و یا کپی برداری از data تحل خطا را در سیستم تضمین کرد .

5-1- تنوع طراحی (Design Diversity) :

برای تولید یک سیستم تحمل پذیر خطا می توان یک نرم افزار را به شرکت های مختلف برنامه نویسی داد تا برنامه را بنویسد و برای تولید نتیجه نهایی نیز می توان از الگوریتم voting استفاده کرد پس باید از یک نرم افزار طراحی های مختلف داشته باشیم .

روشهایی که از تکنیک تنوع طراحی استفاده می کنند عبارتند از:

1-5-1- Recovery Blocks(RCB)

یک تکنیک تحمل خطای نرم افزاری تنوع طراحی است. یک روش دینامیک است و ازیک AT(Acceptanc test) استفاده می کند. از افزونگی نرم افزاری استفاده میکند یعنی در اینجا ما از نرم افزار چندین گپی داریم از AT برای تست شرط استفاده می کند که آیا شرط برقرار شده است یا نه، اگربرقرار بود که خروجی تولید می شود و گرنهback ward Recovery انجام می دهد و Alternate بعدی کار را انجام می دهد و اگر هیچ یک از نتایج Alternate ها پاس نشد یک خطا اتفاق می افتد.

2-5-1- N- version programming(NVP):

از تکینیک های اصلی تنوع طراحی نرم افزاری است یک روش استاتیک است یعنی تمامtask هایی که قرار است به عنوان variant ها عمل کند تا خروجی تولید شود مشخص اند. از روش Forward Recoveryاستفاده می کند. پایه عملیات آن به این صورت است که n تا نسخه همزمان اجرا می شود و یک مکانیزم تصمیم گیری روی نتایج ورژن ها اعمال می کنیم اگر توانستیم به تصمیم جامعی برسیم که نتیجه برگردانده می شود و گرنه یک exception اتفاق می افتد.

3-5-1- : N self– Checking programming(NSCP)

با استفاده از NSCP با داشتن افزونگی نرم افزاری می خواهیم رفتار برنامه ها را که همزمان می شوند را چک کنیم ،در این روش از یک مقایسه کنند. که نقش اساسی در تصمیم گیری داردیعنی وظیفه اش این است که نتایج variant ویک الگوریتم مقایسه ای یکAT برای هرحقیقت سخت افزار تشکیل می شود که با افزایش سخت افزارها این موارد نیز افزایش

می یابند.

N در NSCP همیشه زوج است و نشان دهنده تعداد variant هاست جفت ها همزمان اجرا می شوند. درNSCP زمانی خطا اتفاقی می افتد که یا نتایج جفت ها با هم موافق نباشد ویا نتایج تولید شده بوسیله جفت های موافق باهم متفاوت باشند.



خرید و دانلود  نرم افزار   Fault Tolerance با استفاده از Simulated Annealing 20 ص


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

لینک دانلود و خرید پایین توضیحات

فرمت فایل word  و قابل ویرایش و پرینت

تعداد صفحات: 16

 

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

مهندسی نرم افزار ( SE ) طراحی ، توسعه و ثبت نرم افزار با بکارگیری تکنولوژی ها و کار با علم کامپیوتر ، مدیریت پروژه ، مهندسی محدوده های کاربرد طرح همبست ، مدیریت دارایی دیجیتال و دیگر زمینه ها است .

اصطلاح مهندسی نرم افزار پس از 1968 عمومیت یافت در حین کنفرانس نرم افزار NATO 1968 بوسیله ریکس fl باور و از آن به بعد گسترش یافت .

این اصطلاح معانی متفاوت خاصی دارد :

بعنوان اصطلاح کنونی غیر رسمی برای محدوده وسیعی از فعالیت ها که قبلاً در برنامه ریزی و تحلیل های سیستم بکار می رفت .

بعنوان اصطلاح وسیع کلیه جنبه های کار برنامه ریزی کامپیوتر در مقابل تئوری برنامه ریزی کامپیوتری که علم کامپیوتر نامیده می شود .

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

مهندسی نرم افزار کار ، کاربرد یک راهکار سیستماتیک ، قانونمند و کمی برای توسعه عملکرد و حفظ نرم افزار است که کاربرد مهندسی در نرم افزار است . ( مطالعه راهکارهایی در استاندارد IEEE 610,12

محدوده و تمرکز :

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

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

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

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

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

تکنولوژی های و اعمال :

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

ویژگی SE چیست؟

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

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

تولید :

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

مدیریت پروژه :

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



خرید و دانلود  مهندسی نرم افزار 16 ص


مبانی مهندسی نرم افزار DFD 7 ص

لینک دانلود و خرید پایین توضیحات

فرمت فایل word  و قابل ویرایش و پرینت

تعداد صفحات: 7

 

DFD پیشنهادی

DFD سطح دوم



خرید و دانلود  مبانی مهندسی نرم افزار   DFD  7 ص


درک مفهوم نرم افزار (و سرانجام درکی از مهندسی نرم افزار) 58 ص

لینک دانلود و خرید پایین توضیحات

فرمت فایل word  و قابل ویرایش و پرینت

تعداد صفحات: 58

 

ویژگیهای نرم افزار

برای درک مفهوم نرم افزار (و سرانجام درکی از مهندسی نرم افزار)، بررسی آن دسته از ویژگیهای نرم افزار که آن را از دیگر چیزهای ساخته دست بشر متمایز می سازد، اهمیت دارد. هنگامی که سخت افزاری ساخته می شود، فرآیند آفرینش بشری (تحلیل، طراحی، ساخت، آزمون)، سرانجام به یک شکل فیزیکی منتهی می شود. اگر یک کامپیوتر جدید می سازیم، طرحهای اولیه، ترسیمات طراحی رسمی و نمونه های اولیه به یک محصول فیزیکی (تراشه ها، مدارها، منبع تعذیه و غیره) تکامل می یابند.

نرم افزار یک عنصر سیستمی منطقی است نه فیزیکی. از این رو، نرم افزار دارای ویژگیهایی است که تفاوت چشمگیری با ویژگیهای سخت افزار دارند.

1. نرم افزار، مهندسی و بسط داده می شود و چیزی نیست که به معنای کلاسیک کلمه، ساخته شود.

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

هزینه های نرم افزار در مهندسی آن متمرکز است. این بدان معناست که پروژه های نرم افزاری را نمی توان همانند پروژه های تولید معمولی مدیریت کرد.

2. نرم افزار فرسوده نمی شود.

شکل 1-1 نمودار آهنگ شکست را به صورت تابعی از زمان برای سخت افزار نشان می دهد. این رابطه که غالباً ((منحنی وانی)) نامیده می شود، نشان می دهد که سخت افزار، آهنگ شکست نسبتاً شدیدی در ابتدای عمر خود نشان می دهد (این شکستها را غالباً می توان به عیوب طراحی و تولید نسبت داد)؛ این عیوب تصحیح می شوند و آهنگ شکست برای یک دورۀ زمانی به حدی ثابت نزول می کند (که امید می رود، بسیار پایین باشد). با گذشت زمان، سخت افزار شروع به فرسایش کرده دوباره آهنگ شکست شدت می گیرد.

نرم افزار نسبت به ناملایمات محیطی که باعث فرسایش نرم افزار می شود، نفوذپذیر نیست. بنابراین، در تئوری، منحنی شکست برای نرم افزار باید شکل منحنی ایده آل شکل 2-1 را به خود بگیرد. عیوب کشف نشده باعث آهنگ شکست شدید، در ابتدای عمر برنامه می شود. ولی، این عیوب برطرف می شوند (با این امید که خطاهای دیگر وارد نشود) و منحنی به صورتی که نشان داده شده است، هموار می شود. منحنی ایده آل نسبت به منحنی واقعی مدلهای شکست نرم افزار، بسیار ساده تر است (برای اطلاعات بیشتر، فصل 8 را ببینید). ولی، معنای آن واضح است، نرم افزار هرگز دچار فرسایش نمی شود بلکه فاسد می شود!

این تناقض ظاهری را می توان با در نظر گرفتن ((منحنی واقعی)) به بهترین وجه توضیح داد (شکل 2-1). نرم افزار در دوران حیات خود دستخوش تغییر می شود (نگهداری). با اعمال این تغییرات، احتمال دارد که برخی عیوب جدید وارد شوند و باعث خیز منحنی آهنگ شکست شوند (شکل 2-1). پیش از آن که منحنی بتواند به آهنگ شکست منظم اولیه خود برسد، تغییر دیگری درخواست می شود که باعث خیز دوباره منحنی می شود. حداقل میزان شکست به آهستگی افزایش می یابد – نرم افزار در اثر تغییر فاسد می شود.

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

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

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

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

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

کاربردهای نرم افزار

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



خرید و دانلود  درک مفهوم نرم افزار (و سرانجام درکی از مهندسی نرم افزار) 58 ص