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