خلاصه درس مهندسی نرم افزار---مطالعه برای ارشد و ...

sara-afshar777

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

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

سوال اول : نرم افزار چیست؟
جواب اول :
یک محصول هست که صرف نظر از اندازه و نوع و ساختارکامپیوتر بر روی آن اجرامی شود.

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

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

نکته :
نرم افزار کامپیوتری عامل اصلی در ایجاد تمایز بین محصول وخدمات مختلف هست!!!؟؟؟؟؟؟؟؟؟


.سوال دوم : مهندسی نرم افزار چیست؟

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


نکته:
نرم افزار هم محصول هست و هم وسیله ( وسیله ای برای انتقال وحمل محصول )

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

می گویند دنیا به مانند زندان هست این روزها نمی دانم چرا بیشتر از هر زمان دیگر حس زندانی بودن می کنم .

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

سه مشخصه اصلی که نرم افزار را از سخت افزار ( منظور از سخت افزارهم شامل وسایل الکترونیکی می شود وهم شامل وسایل مکانیکی هم در مقیاس میکرو ونانو وهم در مقیاس ماکرو) متمایز می کند

مشخصه اول: نرم افزار طراحی ( توسعه ) می شود ولی سخت افزار ساخته می شود.

بحث :
به نظر من تفاوتی که مد نظر نویسنده بوده اینکه در مرحله طراحی محصول اگر محصول سخت افزاری باشد به هنگام بروز اشکال در ساخت سخت افزار باید از نو دوباره کاری کرد ولی در مورد نرم افزار اگر در مرحله طراحی مشکلی یا نقصی به وجود آید به راحتی می توان این مشکل ونقص را برطرف کرد

مشخصه دوم : نرم افزار فرسوده نمی شود ولی منسوخ می شود در حالی که سخت افزار به مرور زمان با کار کردن بیشتر فرسوده شده ودچار نقص می شود .

بحث :
با توجه به نمودار ص 42 کتاب پرسمن ( منحنی وارونه شکل ) می تونیم متوجه شویم که چرا همیشه برای اکثر تولیدات کارخانه ها ( چه در زمینه وسایل صنعتی وچه در زمینه وسایل خانگی و... )یک دوره ضمانت کالا بعد از خرید در نظر می گیرند( البته این برداشت شخصی من هست)

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

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

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


فاکتورهای تعیین ماهیت یک برنامه کاربردی:

1- محتوای اطلاعات :
منظور، معنی وشکل اطلاعات ورودی وخروجی

2-میزان قطعیت اطلاعات(قابلیت پیش بینی وزمان بندی اطلاعات ) :
نرم افزارها یا اصولا روی منطق بولی ( قطعی ) ساخته می شوند ویا اینکه برمبنای منطق فازی ( غیر قطعی) ساخته می شود.

3-میزان دقت وصحت اطلاعات :




نکته:در راه توسعه نرم افزار ما باید به ماهیت مشکلاتی که بر کیفیت نهایی نرم افزار تاثیر می گذارد پی ببریم.
سوال :
منظور از بحران نرم افزارچیست ؟ اینکه پرسمن می گویند علم توسعه نرم افزار از یک بیماری مزمن رنج می برد چیست ؟



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

درواقع مشکل اکثر افرادی که نمی توانند به یک تحلیل گر حرفه ای تبدیل شوند این است که نمی توانند در مدت زمان کوتاهی اطلاعات بیشتری از ویژگیهای محصول مورد نظر مشتری بدست آورند( معمولا هر کسی بیشتر در زمینه حوزه فعالیت خودش اطلاعات تخصصی دارد )
نظر شخص من این هست که یک تحلیل گر باید مثل یک روزنامه نگار کنجکاو وسمج باشد که برای بدست آوردن اطلاعات مورد نظرش حتی از آبدارچی محیط عملیاتی واطلاعاتی خودش صرفنظر نمی کند بخصوص توی کشور ما که یک آبدارچی بیشتر از کارمندان یک اداره یا شرکت اطلاعات دارند!!!
 
آخرین ویرایش توسط مدیر:

sara-afshar777

عضو جدید
بچه ها !!!!!!!!!!!!!
این طوری که نمیشه همه بگن هستم اما موقع عمل هیشکی نباشه اگه منظورتون از هستم اینکه دارین برا ارشد می خونین خب دیگه برین واسه خودتون بخونین
توی خیلی از وبلاگها و سایتها هم منبع هستش ولی همانطور که برا عنوان تاپیک زدم اینکه باااااااااااااا هم درس بخونیم
سعی کنید حداقل روزی یک بار به نت سربزنین
من یک دونه خلاصه برا درس مهندسی نرم افزار گذاشتم نمی دونم خوندید یا نه ؟
مفید بود ؟ نبود ؟
چه سوالهایی توذهنتون ایجاد کرد
بهتره خلاصه درسها چطوری باشه ؟
مثلا mtt534 عزیز بایستی تا الان خلاصه یکی از دروس هوش یا شبکه رو می ذاشت وبقیه هم همینطور
قرار نیست همه یه خلاصه بزارن
کافی یک نفر به عهدهاش بگیره و خلاصه یه درسی رو در بیاره و بزاره توی تاپیک مخصوص به خودش
بعدبه بقیه توی همین تاپیک خبر بده که بله
من خلاصه رو آماده کردم
بعدش بچه ها میان اون خلاصه رو میخونن
اشکالاتشون و سوالاتش رو مطرح می کنن وهر کس می تونه جواب می ده
فعلا یکی دو هفته این طوری ادامه می دیم بعدش که کل بچه های تیم ارشد خون ها مشخص شد
می ریم سراغ حل تست و حل تشریحی تستها
بچه ها باور کنید الان داریم سربالایی رو می ریم بالا سخته ولی وقتی راه افتادیم دیگه خیلی برامون این طور درس خوندن شیرین میشه
 

.:Shila:.

عضو جدید
کاربر ممتاز
[FONT=&quot]1-نرم افزار:[/FONT]​
[FONT=&quot]الف)یک محصول است[/FONT]​
[FONT=&quot]ب)یک محصول نیست[/FONT]​
[FONT=&quot]ج)هم یک محصول است و هم ابزاری برای تحویل محصول[/FONT]​
[FONT=&quot]د)هیچکدام

[/FONT]​
[FONT=&quot]2-نرم افزار یک محصول منطقی است و[/FONT]​
[FONT=&quot]الف)دورانداختنی نیست[/FONT]​
[FONT=&quot]ب)براساس نیاز مشتریان ساخته می شود[/FONT]​
[FONT=&quot]ج)ساخته نمی شود بلکه همواره توسعه داده می شود[/FONT]​
[FONT=&quot]د)هرسه مورد

[/FONT]​
[FONT=&quot]3-جمله"نرم افزار از بین نمی رود بلکه کیفیت آن تنزل می یابد"
[/FONT]​
[FONT=&quot]الف)درست است[/FONT]​
[FONT=&quot]ب)نادرست است

[/FONT]​
[FONT=&quot]4-کدامیک از جملات زیر در مورد مهندسی نرم افزار درست است؟[/FONT]​
[FONT=&quot]الف)تنها محصول قابل تحویل برای یک پروژه موفق،برنامه در حال کار است.[/FONT]​
[FONT=&quot]ب)مهندسی نرم افزار بر تهیه مستندات تاکید دارد.[/FONT]​
[FONT=&quot]ج)هدف اصلی مهندسی نرم افزار تولید نرم افزاری با کیفیت بالاست[/FONT]​
[FONT=&quot]د)با نوشتن و اجرای برنامه وظیفه مهندسین نرم افزار پایان می یابد[/FONT]​
 
آخرین ویرایش:

sara-afshar777

عضو جدید
در ضمن این تست ها برگرفته از کتاب مهندسی نرم افزار "پارسه" هست
خیلی خیلی ممنون شیلاجون:heart:
شیلا جون اگه میشه این جزوه رو توی تاپیک قرار بده چون من اصلا در مورد نرم افزار تستی ندارم
بازم مرسی عزیزم:gol::gol:
 

.:Shila:.

عضو جدید
کاربر ممتاز
سارا جون pdf کتاب رو ندارم چه جوری بذارم؟؟؟؟؟؟؟؟؟؟
 

str.ahmadian

عضو جدید
سلام بچه ها
مرسی از فعالیت مفیدتون
خوبه بالاخره شروع کردین
بچه ها اگه کسی جزوه ی مفید داره یا منبع خوب و کاملی رو میشناسه که خودمون بتونیم بخونیم و یاد بگیریم(بدون مراجعه به استاد) لطفآ لهم معرفی کنه
 

sara-afshar777

عضو جدید
اولا جمعیا سلام
ثانیا خسته نباشید از خلاصه دروس و تستهای مرتبطی که می زارید
نه دیگه من نیستم
راستی چرا ما ایرانی ها نمی تونیم با هم جمعی کار کنیم و هم فکری کنیم
وقتی کسی هم بگه فلان جام درد می کنه همه براش زود نسخه می پیچن وهمه دکتر میشن
اما از همدردی خبری نیست
بازم می گم
من دیگه نیستم اصلا باهموتون قهرم
اصرار نکنین قهرم دیگگگگه
 

.:Shila:.

عضو جدید
کاربر ممتاز
اولا جمعیا سلام
ثانیا خسته نباشید از خلاصه دروس و تستهای مرتبطی که می زارید
نه دیگه من نیستم
راستی چرا ما ایرانی ها نمی تونیم با هم جمعی کار کنیم و هم فکری کنیم
وقتی کسی هم بگه فلان جام درد می کنه همه براش زود نسخه می پیچن وهمه دکتر میشن
اما از همدردی خبری نیست
بازم می گم
من دیگه نیستم اصلا باهموتون قهرم
اصرار نکنین قهرم دیگگگگه
سارا جون من که تستها رو گذاشتم ولی کسی سعی نکرد جواب بده که رو جوابها بحث کنیم امروز ساعت 5 هم قراره جواب تستهای هوش رو با هم بحث کنیم اگه می خوای تو هم تو بحث شرکت کن که خوشحالمون می کنی در ضمن زود ناامید نشو ایرانی ها تا راه بیفتند یه کم طول می کشه ولی وقتی راه افتادن کیه که جلوشونو بگیره پس گر صبر کنی..... بقیه شو خودت می دونی عزیزم منتظر همه بچه ها هستم 5 امروز ok؟
 

.:Shila:.

عضو جدید
کاربر ممتاز
یه بسم الله و بعدشم حل تستهای بالایی(جواب تستها توی کتاب نبود پس احتمال اشتباه بودن جوابهای من هست لطفا نظراتتون رو بدین:
جواب سوال 1 گزینه ج
سوال 2 گزینه د
سوال 3 گزینه الف
سوال 4 گزینه ج
 

.:Shila:.

عضو جدید
کاربر ممتاز
:(سارا جون هنوزم قهری؟
کجایی؟ دلم برات تنگ شده:gol:
اگه می بینی کسی غیر من و تو فعال نیست، بی خیال، ما با هم کار می کنیم ok؟;):)
 

.:Shila:.

عضو جدید
کاربر ممتاز
آقای کربلایی شما از سارای ما خبری ندارین؟
دیگه نمیاد؟؟؟؟؟
 

کربلایی

مدیر بازنشسته
آقای کربلایی شما از سارای ما خبری ندارین؟
دیگه نمیاد؟؟؟؟؟

سلام
سارا خانوم حق دارند ناراحت باشند! خود من هم در این میان کم کاری کرده ام!
البته من نمی خوام توجیه کنم، اما باور کنید شرایط کاری من بگونه ای است که نمی توانم برنامه ریزی منظمی داشته باشم! شرایط اداره و شعلم باعث می شود تا تمام برنامه هایم به هم بخورد!
غلت این که نتوانستم در اینجا حظور فعالی داشته باشم هم همین است!

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

daghighbin

عضو جدید
سلام
بنده هر بار که میام نت به این تاپیک سر میزنم ولی یه مدت هست خبری از بچه ها مخصوصاً سارا خانم نیست.خواهشن به کارتون ادامه بدید و دلسرد نشین
اگه میبینید که من خودم فعال نیستم به این دلیل که هنوز شروع نکردم ولی هرچه زودتر باید شروع کنم و باهاتون همکاری میکنم.قول میدم:smile:
:book::):w10::lol:
 

sara-afshar777

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

خداجون کاش می تونستم مثل خیلی ها در مورد خیلی چیزها بی تفاوت باشم کاش می تونستم
 

.:Shila:.

عضو جدید
کاربر ممتاز
سارا جون بیخیال شو میدونم بعضی وقتها نمیشه ولی سعی کن ارتباطت رو با دوستانت قطع نکنی
قول میدم بهتر شی
 

sara-afshar777

عضو جدید


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

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

سوال دوم : آیا فرآیند نرم افزاری با مهندسی نرم افزار یکی هست ؟

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

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

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

یک تعریف جامع از مهندسی نرم افزار ( تعریف IEEE ) :
1- بکارگیری یک روش سیستماتیک ، منظم وکمیت پذیربرای ارایه ، عملیات ، حفظ و نگهداری نرم افزار است یعنی بکارگیری مهندسی و شیوه های آن در نرم افزار .
2- بررسی رهیافتهای آورده شده در قسمت 1
مهندسی نرم افزار یک فناوری لایه لایه هست
لایه های مهندسی نرم افزار:
به ترتیب از پایین به بالا:
1- ملاحظات کیفیتی یا همان مدیریت ( پایین ترین لایه )
2- فرآیند
3- روشها ی تکنیکی ( چگونگی انجام کار از نظر فنی )
4- ابزار یا همان مهندسی نرم افزار بوسیله کامپیوتر -CASE( بالاترین لایه )
نکته :مهمترین لایه در مهندسی نرم افزار لایه فرآیند هست در واقع این لایه بقیه لایه ها را مانند چسب به هم وصل می کند.

نکته : مهندسی نرم افزار از سه موضوع مستقل شامل تعریف ، توسعه ، پشتیبانی و نگهداری تشکیل شده است.
مرحله تعریف : (what)
- چه نوع اطلاعاتی باید پردازش شوند؟
- عملکرد مطلوب چیست ؟
- نوع وضعیت سیستم مورد انتظار چیست ؟
- چه نوع رابط هایی باید ایجادشوند؟
- محدودیتهای موجود در طرح کدام ها هستند؟
- چه معیارهایی به عنوان معیار صحت وموفقیت سیستم بکار می رود ؟
بحث : در واقع در مرحله تعریف سه کار اصلی باید صورت گیرد
1- مهندسی سیستم ( مهندسی اطلاعات ) گاها البته فکر کنم بهش مهندسی نیازها هم می گویند
2- طراحی ( برنامه ریزی ) پروژه نرم افزاری
3- تحلیل موارد مورد نیاز

مرحله توسعه : (how)
- داده ها چگونه ساخته می شوند ؟
- اجرای کار در ساختار وچار چوب نرم افزاری چگونه هست ؟
- اجرای جزییات کار چگونه هست؟
- رابطه ها چگونه توصیف شونند ؟
- طرح مورد نظر ما چگونه تبدیل به یک برنامه کامپیوتری شود؟ ( نوع زبان رویه ای باشد یا غیر رویه ای )
توضیح :در زبان رویه ای ما چگونگی انجام کار را باید قدم به قدم به ماشین اعلام کنیم مثلا اول تعریف متغیر بعد نسبت دادن مقدار و بعد انجام عملیات مثلا ضرب و تقسیم ( محاسباتی ) یا عملیات منطقی مثل مقایسه و.......... ( یکی از زبان های رویه ای زبان پاسکال هست یا c++ )


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

بحث : کارهایی که در مرحله توسعه صورت می گیرد مختلف هستند اما کار اصلی را می توان نام برد
1- طراحی نرم افزار
2- تولید کد
3- انجام آزمون نرم افزار

مرحله پشتیبانی : (support)
این مرحله روی تغییر ( change ) متمرکز هست
و شامل تغییرات عمده زیر هست :
1- اصلاح
اگر مشتری در نرم افزار متوجه نقصی شد باید نرم افزار تغییر یابد
2- تطابق : (adaptation)
منظور از تطابق این هست که به مرور زمان محیط اصلی که نرم افزار بر روی آن طراحی شده بود ( مثل CPU ،سیستم عامل، قواعد تجاری و مشخصه های محصول خارجی) تغییر می کند.

3- بهبود وضعیت : ( enhancement )
به مرور که کاربر از نرم افزار استفاده می کند متوجه کارهایی می شود که اگر آنها روی نرم افزار پیاده شود کارایی نرم افزار را بالاتر می برد این کارهای اصلاحی در واقع چیزی بیش از نیاز اصلی و اولیه می باشد.


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

در ادامه فرآیند ها و مدلهای مختلف فرآیند رو بحث می کنیم
 

sara-afshar777

عضو جدید
بررسی انواع مدلهای فرآیند نرم افزاری

فرآیند نرم افزار
به شکل 2-2 صفحه 52 کتاب پرسمن ( زبان اصلی ) یا شکل 2-2 صفحه 8 فصل دوم پرسمن ( کتاب ترجمه شده به فارسی) رجوع شود.

فعالیتهای مشترک فرآیند نرم افزار












فعالیتهای چتر گونه ( پوششی )

فعالیتهای چارچوب

مجموعه وظایف

وظایف

شاخصها و تحویل دادنی ها

نکات تضمین کیفیت نرم افزار SQA



















مدلهای فرآیند نرم افزار :
در این قسمت می خواهیم انواع مدلهای فرآیند نرم افزار را بررسی کنیم بخشی که فکر می کنم باید حوصله بیشتری خرج کنیم تا بتوانیم انواع مدلها را از هم تشخیص دهیم سعی می کنم تا جایی که می توانم با مثال جلو بروم .
برای ارایه مدل فرآیند یا همان ارایه یک پارادایم ( منظور نمونه) همانطور که پیشتر بیان شد باید به ماهیت و نوع پروژه نرم افزاری توجه داشت برای انتخاب یک یا دو مدل از بین چندین مدل بایستی مراحل بررسی وضع موجود ، تعریف مشکل ، توسعه فنی( یعنی حل مشکل بوسیله بکارگیری فناوری) و منسجم کردن را طی کنیم .
مدل ترتیبی خطی :
به این مدل گاهی مدل آبشاری (Waterfall model) یا چرخه حیات کلاسیک نیز می گویند.
مشخصه اصلی و بارز در این مدل این هست که دیدگاهی نظام مند و زنجیر وار به فرآیند تولید نرم افزار دارد. وشامل مراحل زیر هست به ترتیب از راست به چپ:
تحلیل====<< طراحی====<< کدگذاری====<< آزمون====<< پشتیبانی

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

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

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

mohandeseit

دستیار مدیر مهندسی فناوری اطلاعات
کاربر ممتاز
لازم ميدانم كه از سارا خانم به خاطر زحماتشون در تالار مهندسيIT تشكر مي كنم.:heart:
 

sara-afshar777

عضو جدید
مدل نمونه سازی :(prototyping model)


مشتری وتحلیل گر نشسته اند و دارند در مورد پروژه حرف می زنند تحلیلگر می خواهد دقیقا بداند مشتری چه می خواهد چه مشکلی دارد و خلاصه نیازمندیهای مشتری چی هست اما مشتری دقیقا نمیتواند توضیح دهد نیازش چیست فقط دارد کلی گویی می کند و اطلاعات لازم را نمی دهد نمی گوید ورودیهای مسئله چیست و قرار چه بلایی سر ورودیها آورده شود تا خروجی موردنظرش بدست آید اما خب ، خواسته مشتری بحق هست حالا باید چیکار کرد بهترین کار ساختن یک نمونه اولیه طبق گفته های مشتری هست . اینجوری مسئله و خود مشکل هم برای مشتری و هم برای تحلیل گر عینیت می یابد
واگر نمونه خواست مشتری را برآورد نکرد دوباره تحلیل گر و مشتری با هم در مورد حوزه و دامنه مشکل صحبت می کنند تحلیل گر می از مشتری می خواهد دقیقا توضیح دهد این قسمت چی می خواهد و ............
توجه : گاهی وقتها مشتری با دیدن نمونه اولیه اصرار می کند و تاکید دارد این همان چیزی هست که او می خواهد واز تیم پروژه می خواهد زودتر دست بکار شده و محصول نهایی راتولید کنند ولی در اینجور مواقع باید مدیریت مقاومت کند چیزی که مشتری از نمونه ما می بینید بیشتر یک اسباب بازی هست تا یک نرم افزار واقعی، به قول پرسمن ما آدامس بادکنکی! به مشتری نشان دادیم . ممکن هست نمونه پیش ساخته ما فقط دارای ورودی و خروجی مورد نظر مشتری باشد واصلا الگوریتم وساختمان داده ای مابین آنها وجود نداشته باشد که روی ورودیها کار کرده وآنها را به خروجی مورد نظر مشتری تبدیل کند . یا شاید الکوریتمی که بکار بردیم آن کارایی لازم را نداشته باشد.
در هرصورت باید توجه داشته باشیم که مدل نمونه سازی بیشتر جهت رفع نیازهای مشتری و مشخص شدن مشکلات او به صورت واضح بکار می رود بیشتر مواقع نمونه ای که می سازیم چیزی نیست که بتوان اسمش را محصول نام گذاری کرد این نمونه ممکن هست خیلی کند ، خیلی بزرگ وحتی دارای مشکلات زیادی باشد


مدل ساخت سریع برنامه ها : ( RAD)
Rapid Application Development یا توسعه سریع برنامه ها بیشتر تاکید روی سیکل بسیار کوتاه تولید دارد در واقع این مدل از روی مدل زنجیره ای که پیشتر بیان شد نسخه برداری شده اما ویژگی اصلی آن سرعت بالای تولید هست . بیشتر موقعی از این مدل استفاده می شود که پروژه کوچک ، نیازمندیها و مراحل کارکاملا واضح باشد مدت زمان تولید وتحویل پروژه 60 الی 90 روز هست وبیشتر در مورد سیستمهای اصلاعاتی بکار می رود مثلا پروژه لیست خرید وفروش اجناس در یک مغازه بستنی فروشی یا یک سوپر مارکت کوچک .

مدل RAD شامل مراحل کاری زیر هست :
· مدلسازی تجاری
جریان اطلاعات در میان کارهای تجاری بشکلی مدلسازی می شود ( فلوچارت اطلاعات )
و برای اینکار باید به سوالات زیر پاسخ دهیم
- چه اطلاعاتی تولید می شود ؟
- چه کسی این اطلاعات را تولید می کند؟
- این اطلاعات به کجا می روند ؟
- چه کسی آنها را پردازش می کند؟
· مدلسازی داده ای
در این مرحله که بعد از مرحله مدلسازی تجاری صورت می گیرد در حین مطالعه فلوچارت اطلاعات، داده ها و اهداف و مشخصات آنها مشخص می شود .
· مدلسازی فرآیند
داده های بدست آمده از مرحله قبل باید چه پردازشهایی روی آنها انجام شود تا به اطلاعات تبدیل گردند .
تذکر : در مرحله مدلسازی تجاری تحلیلگر هرآن چیزی را که در محیط عملیاتی می بیند را عینا مستند می کند مثلا در یک مغازه بستنی فروشی پروسه وارد شدن مشتری به مغازه تا مشاهده منوی انواع بستنی ها و سفارش بستنی مورد نظر خود تا پرداخت مبلغ بستنی به صندوق دار را ما می توانیم به عنوان مرحله مدلسازی تجاری در نظر بگیریم اما اینجا داده هایی مثل مشتری ، بستنی ، منوسفارش ، قیمت انواع بستنی و صندوق دار رو در مرحله مدلسازی داده ای استخراج کنیم اما اینکه دقیقا بدانیم صاحب مغازه برای مکانیزه کردن مغازه خود چه نیازی دارد باید در مرحله مدلسازی فرآیند انجام دهیم مثلا موقعی که مشتری سفارش یک عدد بستنی قیفی می دهد اول باید یک عدد از ظرف نان بستنی برداشت و یک واحد از تعداد کل نان ها کم کرد بعد مبلغ بستنی رو به عنوان یک واحدخرید برای تاریخ امروز ثبت کرد و......
· تولید برنامه کاربردی
معمولا از زبان های برنامه نویسی نسل چهارم برای تولید کد استفاده می کنند یا اگر امکانش باشد از قطعات قبلی که ساختند استفاده می کنند مثلا امروزه هیچ کس دوبار کد تبدیل تاریخ میلادی به شمسی رو نمی نویسد بلکه Component ( قطعه ) از پیش ساخته ای دارد که از آن استفاده می کند یا قطعه محاسبات به ریال یا حتی قطعه ارسال در آمد امروز مغازه به حساب بانکی صاحب مغازه ( البته این در صورتی امکان دارد که تمامی خرید وفروشها توسط کارت خرید و کارت های الکترونیکی صورت گرفته باشد نه به صورت پول نقد و دستی )
البته باید توجه داشت که در مدل RAD در تمامی مراحل کاری تا جایی که می توان از ابزارهای خودکار استفاده کرد.
· مرحله آزمون وگردش
با توجه به اینکه اکثر قطعات محصول به روش استفاده مجدد مورد توجه قرار گرفته اند وقبلا آزمون خود را داده اند بنابراین کار چندانی برای این مرحله باقی نمی ماند مگر قطعاتی که جدید هستند وباید آزمایش شوند.
معایب مدل RAD
· در مواقعی که پروژه قابل اندازه گیری اما بزرگ باشد این مدل نیازمند منابع انسانی کافی هست
· در این مدل هم مشتری وهم تولید کننده باید کاملا با هم به توافق برسند که با همکاری بایکدیگر بتوانند فعالیتها را به سرعت انجام دهند. در غیر این صورت پروژه با شکست مواجه می شود
· اگر سیستم به درستی پیمانه بندی نشود طرح ممکن شکست بخورد
· این روش وقتی که خطرات فنی زیاد هست اصل مناسب نخواهد بود بخصوص وقتی که نرم افزار قرار هست از یک فناوری جدید استفاده کند
 

goodnews

عضو جدید
يك خواهش

يك خواهش

سلام بچه ها
صميمانه از زحمات همه دوستان به ويژه سارا جان تشكر مي كنم.
من تازه با جمع شما آشنا شدم
ميشه خواهش كنم خلاصه مطالب رو طوري قرار بديد كه قابل دانلود باشه؟
ممنون
 

marzie_91889

عضو جدید
سلام سارا جان من مرضيه هستم. مطالبي كه ميذاري عاليه. ميخواستم برام خلاصه فصل 10 (مهندسي سيستم) كتاب مهندسي نرم افزار پرسمن را بذاري. اگه فايل پاور پوينتشم داري ممنون ميشم بذاري براي دانلود.:) :gol:
 

marzie_91889

عضو جدید
درخواست خلاصه مهندسي سيستم

درخواست خلاصه مهندسي سيستم

سلام سارا جان من مرضيه هستم. مطالبي كه ميذاري عاليه. ميخواستم برام خلاصه فصل 10 (مهندسي سيستم) كتاب مهندسي نرم افزار پرسمن را بذاري. اگه فايل پاور پوينتشم داري ممنون ميشم بذاري براي دانلود.:) :gol:
 

honey.it

عضو جدید
سلام دوستان
چرا دیگه ادامه نمی دید؟
دلسرد شدید؟
مطمئن باشید بازدید زیاده ولی همه نظر نمی ذارن.
به هر حال از طرف همه از سارا خانم تشکر میکنم و امیدوارم توی این تالار و بخصوص این تاپیک همه دروس رو برای ارشد با هم مرور کنیم,انشاا... :gol::gol::gol:
 

f.raha

عضو جدید
سلام دوستان منم دارم برای ارشد می خونم البته هنوز 1 ترم از کارشناسیم مونده. مشکلم اینه که نمی دونم درسارو چجوری و چقدر بخونم شما هم این مشکل رو دارین یا نه؟ مثلا من هردو جلد کتاب پرسمن رو دارم و تو دانشگاه هم همین کتاب رو خوندم ولی می دونم تو کنکور از همه فصلها سوال نمی یاد ولی به نظرتون خلاصه فصلا رو خوندن کار درستیه؟ آخه اینطوری بهتره همه کتاب پوران پژوهش رو بخونیم چون خلاصه است و تست هم داره کتاب خوبیه.می شه لطفا درباره ی نحوه ی درس خوندنتون هم توضیح بدید؟خیلیییییییییی ممنونم
 

Narciss

عضو جدید
سلام دوستان منم دارم برای ارشد می خونم البته هنوز 1 ترم از کارشناسیم مونده. مشکلم اینه که نمی دونم درسارو چجوری و چقدر بخونم شما هم این مشکل رو دارین یا نه؟ مثلا من هردو جلد کتاب پرسمن رو دارم و تو دانشگاه هم همین کتاب رو خوندم ولی می دونم تو کنکور از همه فصلها سوال نمی یاد ولی به نظرتون خلاصه فصلا رو خوندن کار درستیه؟ آخه اینطوری بهتره همه کتاب پوران پژوهش رو بخونیم چون خلاصه است و تست هم داره کتاب خوبیه.می شه لطفا درباره ی نحوه ی درس خوندنتون هم توضیح بدید؟خیلیییییییییی ممنونم
سلام!دقسقا شرایطت مثل منه.منم یه سال از درسم مونده و در درس مهندسی نرم افزار موندم که چه جوری بخونمش.
 

f.raha

عضو جدید
سلام نارسیس
ازت ممنونم بالاخره یکی پیدا شد باهام همدردی کنه.بچه ها انگار همه مشغولند کسی ج منو نداد تو پیشنهادی نداری؟
 
بالا