Transcript فصل 1

‫فصل ‪1‬‬
‫مهندس ی نرم افزار ‪:‬‬
‫ایجاد روندی سیستماتیک ‪ ،‬منظم و قابل اندازه گیری برای تولید و نگهداری نرم افزار را وظیفه‬
‫ی علم مهندس ی نرم افزار می دانیم‪.‬‬
‫مهندس ي نرم افزار‪ ،‬شاخه اي است از مهندس ي‪ ،‬كه با بهره گیري از دانش علمي‪ ،‬به ارائه ي راه‬
‫حل هايي مقرون به صرفه‪ ،‬در قالب دستاوردهاي نرم افزاري و به منظور حل مسائل و‬
‫مشكالت عملي و خدمت به جامعه ي بشري‪ ،‬اقدام مي نمايد‪.‬‬
‫سه معیار مهم ‪:‬‬
‫‪ .3‬کیفیت نرم افزاری که می خواهیم تولید کنیم‪.‬‬
‫‪ .2‬هزینه‬
‫‪ .1‬زمان‬
‫تعریف نرم افزار ‪:‬‬
‫مجموعه ای از برنامه های کامپیوتری ‪ ،‬روال ها ‪ ،‬قوانین ‪ ،‬مستندات و داده ها را نرم افزار می‬
‫گوییم‪.‬‬
‫مسائل و مشکالت نرم افزار در دنیای کنونی‪:‬‬
‫‪ .1‬قابلیت اطمینان نرم افزار ‪ :‬بدان معنا که نرم افزار به درستی اجرا شود‪.‬‬
‫‪ .2‬هزینه ی نرم افزار ‪ :‬هدف‪ :‬کاهش هزینه ی خرید نرم افزار با حفظ کیفیت ‪.‬‬
‫‪ .3‬اعمال تغییرات و دوباره کاری‬
‫انواع نرم افزار ‪:‬‬
‫‪ .1‬چکشخوار ( قابل اعمال تغییرات )‬
‫‪ .2‬غیر چکشخوار ( غیرقابل تغییر )‬
‫هدف مهندس ی نرم افزار ‪:‬‬
‫تولید سیستم به گونه ای که دوباره کاری و تغییر حداقل شود‪.‬‬
‫در نظر گرفتن تولید نرم افزار به صورت یک روند‪:‬‬
‫تولید نرم افزار از مجموعه ای از فعالیتها ساخته می شود‪.‬‬
‫در تولید یک نرم افزار دارای محدودیتهایی هستیم ‪ .1 :‬زمان ‪ .2‬هزینه ‪ .3‬محدودیتهای تکنیکی‬
‫در تولید نرم افزار هدف ساخت یک نرم افزار با کیفیت باال و هزینه کم می باشد‪.‬‬
‫تولید نرم افزار یک روال و یا روندی است که از مجموعه ای از کارها تشکیل شده است‪.‬‬
‫ویژگی های روال های تولید نرم افزار ‪:‬‬
‫‪ .1‬قابل پیش بینی بودن ‪ .1 :‬کیفیت ‪ .2‬هزینه ‪ .3‬زمان ‪ .4‬پیش بینی ارتباط بین فعالیتها‬
‫(اولویت در ترتیب انجام مراحل)‬
‫‪ .2‬هر روال یا روند تولید باید قابل تست باشد ‪.‬‬
‫‪ .3‬امکان روال های تولید جهت حذف سریع خطاها و جلوگیری از به وجود آمدن خطاها‬
‫‪ .4‬اصالح روال تولید‬
‫ویژگی های یک نرم افزا ر به صورت یک محصول‪Software as a product :‬‬
‫‪ .1‬نرم افزار یک محصول مهندس ی است و با اصول مهندس ی باید تولید شود‪.‬‬
‫‪ .2‬نرم افزار یک محصول قابل تغییر یا چکشخوار است‪.‬‬
‫‪ .3‬نرم افزار به دلیل اینکه محصولی فیزیکی نیست ‪ ،‬خراب یا مستهلک نمی شود‪ .‬اما در عمل به‬
‫دلیل اعمال تغییرات مداوم شاید دیگر قابل استفاده نبوده و می بایست نرم افزار دیگری جای آن‬
‫را بگیرد‪.‬‬
‫ً‬
‫‪ .4‬نرم افزار برخالف بسیاری از محصوالت مهندس ی دیگر ‪ ،‬قالبا به صورت سفارش ی ساخته می‬
‫شود و از اجزای آماده در آن کمتر استفاده می شود که یکی از اهداف مهندس ی نرم افزار ‪ ،‬افزایش‬
‫استفاده از قطعات نرم افزاری آماده است‪.‬‬
‫دالیل استفاده از مهندس ی نرم افزار در پروژه های مهندس ی ‪:‬‬
‫?‪Software Engineering‬‬
‫مهندس ی نرم افزار نقش اساس ی در باال بردن کیفیت نرم افزار و کاهش هزینه ها دارد‪.‬‬
‫‪Why‬‬
‫نقش مهندس ی نرم افزار در پروژه های مهندس ی ‪:‬‬
‫‪The influencing role of Software Engineering‬‬
‫‪ .1‬کاهش وابستگی به افراد متخصص به صورت خاص‬
‫‪ .2‬باالبردن کیفیت ارتباطات تیمی‬
‫‪ .3‬تخمین مناسب شامل تخمین زمان و هزینه‬
‫‪ .4‬مدیریت تغییرات‬
‫‪ .5‬کنترل زمان انجام پروژه ها‬
‫‪ .6‬برقراری ارتباط و درک متقابل از نرم افزار بین تولید کنندگان‪ ،‬کاربران و مدیران‬
‫‪ .7‬انجام و ارائه ی آموزش های مناسب‬
‫‪ .8‬انجام پیش بینی های الزم جهت مواجهه با افزایش توقع کاربران‬
‫اهداف مهندس ی نرم افزار ‪Software Engineering Goals :‬‬
‫‪ .1‬باال بردن کیفیت ‪ -1 :‬تطبیق نرم افزار با نیازمندیها‬
‫‪ -2‬جوابگویی نیازهای کار بران‬
‫‪ -3‬فارغ از خطا بودن یا کم خطا بودن و کارآیی باالی نرم افزار‬
‫* نرم افزار با کیفیت مناسب نرم افزاری است که هم نیازهای صریح و هم نیازهای ذهنی ما را رفع نماید‪.‬‬
‫هر چقدر نرم افزار از منابع کمتری استفاده کند ‪ ،‬کارآیی باالتری دارد‪.‬‬
‫‪ .2‬قابل دسترس ی باشد‪.‬‬
‫‪ .3‬اهداف متناقض باید بصورت تعادل درآیند‪.‬‬
‫مهندس نرم افزار فردی است که قواعد و اصول علم مهندس ی نرم افزار را در روند ایجاد یک نرم افزار یا در‬
‫حین تولید یک پروژه ی نرم افزار ی استفاده می کند‪.‬‬
‫ویژگی های یک مهندس نرم افزار ایده آل‪:‬‬
‫‪ .1‬یک برنامه نویس خوب باشد‪.‬‬
‫‪ .2‬با روش های مختلف طراحی آشنایی داشته باشد‪.‬‬
‫‪ .3‬امکان ترجمه و تبدیل نیازهای کاربران‬
‫‪ .4‬قابلیت ارتباط با طیف مختلف کاربران و مدیران‬
‫‪ .5‬دارا بودن قابلیت باالی مدیریتی‬
‫فصل ‪2‬‬
‫‪Software Development Processes‬‬
‫روال های تولید نرم افزار ‪:‬‬
‫ویژگیهای روال های تولید نرم افزار ‪:‬‬
‫‪ .1‬هر روال از یک سری فازهای متنوع ساخته شده است‪.‬‬
‫‪ .2‬هر فاز با یک خروجی مشخص خاتمه پیدا می کند‪ ( .‬وقتی فاز تمام شد‪،‬‬
‫نتیجه ی آن یک محصول است ‪ .‬مثل ‪ :‬گزارش ‪ ،‬برنامه ‪) ... ،‬‬
‫‪ .3‬فازهای تولید نرم افزار در روال های مختلف با ترتیب و توالی مختلف‬
‫انجام می شود‪.‬‬
‫چرا روال تولید به صورت فازبندی یا مرحله بندی شده است؟‬
‫‪ .1‬هر فاز یا مرحله نگرش ی متفاوت به نرم افزار ارائه می دهد‪.‬‬
‫‪ .2‬شکستن یک مسئله ی بزرگ به مساائل کوچکتر باعث آسان تر شدن حل مسئله می شود‪.‬‬
‫‪ .3‬ارتقاء کیفیت نرم افزار با فازبندی به دلیل کنترل کیفیت در حین تولید آن انجام می شود‪.‬‬
‫‪ .4‬فازبندی شدن تولید نرم افزار باعث کاهش هزینه ی تولید می شود‪ .‬کیفیت باال می رود ‪،‬‬
‫هزینه ی نگهداری کاهش می یابد‪ .‬اشکاالت هر مرحله یا هر فاز قابل بازبینی هستند و در هر فاز‬
‫افراد متخصص به آن فاز‪ ،‬روی آن کار می کنند و کار با کیفیت باالتری انجام می شود‪.‬‬
‫فازها یا مراحل تولید نرم افزار ‪:‬‬
‫‪ .1‬تعیین یا مشخص کردن نیازمندی ها و ارئه ی آن در ی فاز قابل فهم‪.‬‬
‫‪ .2‬تعیین اینکه کار چطور باید انجام شود تا کیفیت باال رود‪ .‬برای اینکه کدام راه ‪ ،‬راه مناسب‬
‫تری برای انجام نیازمندی ها ست‪.‬‬
‫‪ .3‬ارائه ی راهکاری برای پیاده سازی برنامه ای که قبال نیازهای آن را شناخته ایم‪ .‬اینکه نیازمند چه‬
‫اجزایی هستیم و هر جزء باید در کجا قرار بگیرد و چگونه به اجزای دیگر متصل شود‪.‬‬
‫به عنوان مثال در یک طراحی به گونه ی ساخت یافته (مثل زمانی که با زبان ‪ C‬برنامه ای را می‬
‫نویسیم‪ ).‬باید مشخص شود چه ماژول ها یا فانکشن هایی دارد و فانکشن ها چگونه در کنار هم‬
‫قرار می گیرند‪.‬‬
‫‪ ( Implementation .4‬پیاده سازی یا همان کد نویس ی )‬
‫‪ : Testing .5‬تست کد نوشته شده ‪ unit -1 :‬یا واحد‪ :‬تست کوچکترین عناصر برنامه ‪ ،‬تست‬
‫ماژول ها یا ‪ function‬ها‬
‫‪ : system -2‬قسمتهای مختلف سیستم را به هم متصل کرده و تست‬
‫می کنیم ‪ .‬به این نوع تست ‪ ،‬تست آلفا گفته می شود‪ .‬تستی که در گروه تولید کننده ی نرم افزار‬
‫به مجتمع برای کل برنامه انجام میشود‪.‬‬
‫‪ : acceptance -3‬تست تجاری یا تست بتا‪ .‬تست قابل قبول بودن پس‬
‫از تست شرکت یا ‪ system‬به برخی از مشتریان حرفه ای برای تست داده می شود‪.‬‬
‫‪ Conversion .6‬یا انتقال ‪ :‬تحویل به مشتری و بردن محصول به محیط کاری واقعی و راه اندازی‬
‫آن در محیط واقعی‬
‫روشهای ‪ -1 : conversion‬استراتژی موازی ‪ : parallel strategy‬کار کردن همزمان نرم افزار با‬
‫نسخه های قبلی برای سیستم هایی که اهمیت باالیی دارند و در صورت ایجاد مشکل‪ ،‬مشکل بزرگ و‬
‫غیرقابل جبران باشد‪.‬‬
‫‪ -2‬قطع ناگهانی ‪ : Direct Cutover‬اینکه تصمیم گرفته شود نرم افزار قبلی از‬
‫امروز کنار گذاشته شود و نرم افزار جدید مورد استفاده قرار گیرد‪ ( .‬پس از اطمینان صحت عملکرد )‬
‫‪ -3‬راه اندازی نمونه ای ‪ : Pilot Study‬نرم افزار را مثال برای دو کاربر خاص‬
‫نوشته و برا ی تست مورد استفاده قرار می دهیم‪.‬‬
‫‪ -4‬راه اندازی فاز بندی شده ‪ : Phased‬محصول را مرحله به مرحله راه اندازی می‬
‫کنیم‪.‬‬
‫ً‬
‫‪ .7‬مرحله ی نگهداری یا پشتیبانی ‪ : maintenance‬اگر نرم افزار مشکالتی داشته باشد ‪ ،‬مجددا به‬
‫سازنده مراجعه شده و بررس ی می شود‪.‬‬