وبلاگ جوجه مهندس ها

یادداشت های دو دانشجوی مهندسی کامپیوتر

وبلاگ جوجه مهندس ها

یادداشت های دو دانشجوی مهندسی کامپیوتر

آشنائی با متدولوژی RUP – قسمت دوم

فازهای RUP

Phases

مدل RUP از چهار فاز تشکیل شده است ، که هر فاز با توجه به حجم و میزان پروژه می تواند از چندین مدل تکرار و توسعه  تشکیل شود. در انتهای هر فاز یا هر تکرار یک مرحله زمانی به نام milestone وجود دارد که در آن زمان تیم توسعه باید به یکسری اهداف کلیدی و از پیش تعیین شده رسیده باشد و خروجی مناسبی برای تحویل به مشتری و متاثرین  سیستم داشته باشد . متاثرین سیستم می توانند هریک از اشخاص مدیر بخش ، مشتری و یا مدیر پروژه باشد.
فازهای RUP عبارتند از :
1.فاز آغازین
2.فاز جزئیات یا برنامه ریزی
3.فاز تولید یا ساخت
4.فاز استقرار

 فاز آغازین

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

فاز جزئیات یا برنامه ریزی

هدف این مرحله آنالیز دقیق مساله ، شناخت سایر جزئیات سیستم و ساخت یک بنیان معماری برای توسعه و پیاده سازی و حذف عناصر با ریسک بالا از سیستم است. بدین منظور باید دید دقیق و کامل از هر یک از مولفه ها ، با در نظرگرفتن سایر مولفه ها و اجزای سیستم داشته باشیم.
در انتهای این فاز محاسبات مهندسی کامل شده و تصمیم گیری برای سپردن پروژه به فاز تولید انجام می شود.این محاسبات باید به گونه ای دقیق انجام شود که در فاز بعدی که فاز تولید و پیاده سازی سیستم است ، نقطه ابهامی برای پیاده سازی وجود نداشته باشد. همچنین در این فاز باید عناصر مهم ریسکی رفع شود و برای راه حل آن چاره اندیشی شود.
خروجی های این فاز عبارتند از:
- لیست دقیق ریسک ها و ارائه راه حل بهینه و راه حل های جایگزین به ازای هرریسک
- مستند معماری نرم افزار (Software Architecture Document)
این مستند شامل تحلیل و طراحی کلان سیستم و آنالیز دقیق کلیه مولفه های سیستم است که مواردی از قبیل ساخت نمونه اولیه  ،مدل موارد استفاده ، مدل تجربه کاربر (User Experience Model) ، معماری سیستم، مدل آنالیز (Analysis Model) ، مدل داده ای سیستم  ( Data Base Model)و نحوه نصب و راه اندازی ( Deployment Model)را دربرمی گیرد.
- اولویت بندی موارد استفاده
موارد استفاده سیستم را بر حسب  
• موارد استفاده ریسکی
• موارد استفاده تاثیرگذار بر معماری سیستم
• موارد استفاده مهم برای مشتری
• موارد استفاده ای که پیش نیاز موارد استفاده دیگر هستند
اولویت بندی کرده ، برای واگذاری به تیم های توسعه در مستندی آماده می شود.
- تنظیم برنامه زمان بندی
برنامه ریزی مربوط به زمانبندی فاز ها ، milestone ها و فعالیت های مربوط به هریک از اعضای تیم با توجه به اولویت و زمان لازم به ازای هر مورد استفاده  در این فاز آماده می شود.
معیارهای ارزیابی موفقیت این فاز به شرح زیر است:
• کامل بودن معماری انتخاب شده برای سیستم
معماری سیستم باید برای تمام نیاز های سیستم مناسب بوده وپاسخگوی توسعه و گسترش سیستم در آینده و نیازهای آتی سیستم نیز باشد.
• شناسائی کامل ریسک ها و مناسب بودن راه حل های ارائه شده به ازای هر ریسک
• کامل بودن طرح و برنامه ریزی ارائه شده برای پروژه ، به گونه ای که موفقیت پروژه را تضمین کند.
• قابل قبول بودن هزینه واقعی در مقابل هزینه تخمین زده شده

 فاز ساخت یا تولید

در این فاز با استفاده از خروجی های فاز قبلی تمامی مولفه و موارد استفاده بر حسب اولویت ها به تیم های توسعه واگذار شده و هر تیم موظف به آنالیز ، طراحی ، پیاده سازی و تست آن است.پس از اتمام پیاده سازی هر رده از موارد استفاده ، آن را به مشتری و متاثرین سیستم تحویل داده و نظر آن ها را درباره سیستم و روند پیاده سازی جویا می شویم. مهمترین مزایای این روش کشف و رفع هر گونه خطا و اشتباه در مراحل ابتدائی و آغازین پیاده سازی است و همچنین مشتری در روند انجام و پیشرفت پروژه قرار می گیرد.
می توان تولید بسیاری از موارد استفاده را در تیم های مختلف و به طور موازی با هم انجام داد و از این طریق پیشرفت پروژه را تسریع بخشید.
خروجی های این فاز شامل موارد زیر می باشد :
- نسخه بتا  ( Beta Release) محصول
  نسخه بتا ، نسخه ای از محصول است که برای انجام عمل تست بتا ( Beta Testing) در اختیار کاربران قرار می گیرد.
- راهنمای کاربران
از آن جا که نسخه بتا برای تست بتا در اختیار کاربران قرار می گیرد ، در این مرحله باید راهنمائی برای کاربران آماده شده و در اختیار آن ها قرار گیرد.
در این مرحله سیستم ، جوانب کار و کاربران آن بررسی می شود که آیا محصول می تواند بدون احساس هیچ ریسک جدی در اختیار کاربر قرار گیرد.
مهمترین معیارهای ارزیابی این فاز ، شامل پاسخ به سوالات زیر است:
• آیا محصول تا آ ن جا که ممکن است توسعه پیدا کرده تـا در معـرض ارتباط با کاربر قرار گیرد؟
• آیا متاثرین سیستم برای قراردادن محصول به دست کاربران آماده هستند؟
• آیا هزینه واقعی در مقابل هزینه تخمین زده شده برای پروژه قابل قبول است؟

فاز استقرار

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

آشنائی با متدولوژی RUP – قسمت اول

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

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

واژه های کلیدی : مورد استفاده (usecase) ، کاربر (actor) ، تکرار (iteration) ، متاثر (stakeholder) ، مستند دیدگاه  (vision)، نیازمندیهای تکمیلی  (supplementalry)، آغازین (inception) ، جزئیات (elaboration) ، تولید (construction) ، استقرار (transition)

 تاریخچه RUP

مدل RUP طی سالها تکامل یافته و تجربه شرکت ها و افراد متخصص زیادی که در پروژه های مختلفی شرکت داشته اند را به همراه دارد.
Rational Objectory Process 4.0 از ترکیب و ادغام دو روش به نام های Rational Approach و Objectory Process 3.8  به وجود آمد که مفهوم اصلی موارد استفاده و ساختار فرایند را از آن ها به ارث برد .و ساختار توسعه تکراری و معماری را از پیش زمینه های قبلی به همراه داشت .این نسخه RUP  مفهوم مدیریت نیازمندی ها را نیز شامل می شدو فرایند کامل تست را از SQA – شرکتی که بعد ها با شرکت Rational ادغام شد- به ارث برده بود. و اولین مدل فرایند بود که از زبان تازه ابداع شده UML 0.8 برای مدلسازی استفاده می کرد.Objectory Process در سوئد و توسط شخصی به نام ایوار جکوبسون  ابداع شده بود که نتیجه تجربه کاری وی با اریکسون بود.این مدل فرایند با نام Objectory AB محصول شرکت وی شد که عمده تمرکز آن بر مفهوم موارد استفاده و متدهای طراحی شیء گرا بود ، که به سرعت مورد توجه و استقبال بسیاری از شرکت های جهان قرارگرفت . در4.1   Rational Objectory Process مفهوم دقیق بر جمع آوری نیازمندیها به آن اضافه شد . و مفاهیم مدیریت تغییرات ، مهندسی و مدلسازی فرایند مربوط به تجارت و کسب و کار ، تست کارآیی ، مهندسی داده ها و طراحی شیءگرا در نسخه Rational Unified Process 5.0 به آن اضافه شد.
به طور کلی مدل فرایند RUP حاصل تلاش و تجربه ایوار جکوبسون  ، گردی بوچ  و جیمز رام باو  در زمینه تحلیل و طراحی شیءگرا می باشد.

 مفاهیم پایه فرایند

یک مدل فرایند توصیف می کند که چه کسی ، چه کاری را ، چگونه و در چه مدت زمانی طی می کند . RUP از چهار عنصر پایه زیر برای توصیف این مفاهیم استفاده می کند.
• Worker ، چه کسی
• Artifact ، چه چیزی
• Activity ، چگونه
• Workflow ، چه مدت زمانی

Worker  : رفتار و مسئولیت یک شخص یا گروهی از افراد که با هم به عنوان یـک تـیم کـار می کنند را تعریف می کند . می توان worker را به عنوان یک کلاه در نظر گرفت که یـک شخص می تواند در پروژه آن را به سر بگذارد ، با توجه به این که یک شـخص مـی توانـد چندین کلاه متفاوت نیز به سربگذارد . در واقع یک تعریف رول است که مشخص می کند اشخاص کار را چگونه پیش ببرند .
Artifact : هر نوع محصولی که در طول پروژه تولید می شود و در مراحلی دیگر مصرف می شود تا محصول نهائی تولید شود. مدل طراحی ، مدل موارد استفاده ، مستند معماری نرم افزار و یا سورس برنامه ، همه مواردی از artifact هستند.
Activity : واحد کاری که به شخص در رول خاص واگذار می شود و معمولا به صورت ایجاد یا به روزرسانی چند artifact تعریف می شود.
Workflow : روندکاری مراحل انجام قسمت های مختلف پروژه را مشخص می کند.

من که شاخ در آوردم!!

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

مرکز مشاوره : چه نوع کامپیوتری دارید؟
مشتری : یک کامپیوتر سفید...
*
مشتری : سلام، من «سلین» هستم. نمی تونم دیسکتم رو دربیارم
مرکز : سعی کردین دکمه رو فشار بدین؟
مشتری : آره، ولی اون واقعاً گیر کرده
مرکز : این خوب نیست، من یک یادداشت آماده می کنم...
مشتری : نه ... صبر کن ... من هنوز نذاشتمش تو درایو ... هنوز روی میزمه .. ببخشید ...
*
مرکز : روی آیکن My Computer در سمت چپ صفحه کلیک کن.
مشتری : سمت چپ شما یا سمت من؟
*
مرکز : روز خوش، چه کمکی از من برمیاد؟
مشتری : سلام ... من نمی تونم پرینت کنم.
مرکز : میشه لطفاً روی Start کلیک کنید و ...
مشتری : وش کن رفیق؛ برای من اصطلاحات فنی نیار! من بیل گیتس نیستم، لعنتی!
*
مشتری : سلام، عصرتون بخیر، من مارتا هستم، نمی تونم پرینت بگیرم. هر دفعه سعی می کنم می گه : «نمی تونم پرینتر رو یدا کنم» من حتی پرینتر رو بلند کردم و جلوی مانیتور گذاشتم ، اما کامپیوتر هنوز می گه نمی تونه پیداش کنه...
*
مشتری : من توی پرینت گرفتن با رنگ قرمز مشکل دارم...
مرکز : آیا شما پرینتر رنگی دارید؟
مشتری : نه.
*
مرکز : الآن روی مانیتورتون چیه خانوم؟
مشتری : یه خرس Teddy که دوست پسرم از سو پرمارکت برام خریده.
*
مرکز : و الآن F8 رو بزنین.
مشتری : کار نمی کنه.
مرکز : دقیقاً چه کار کردین؟
مشتری : من کلید F رو 8 بار فشار دادم همونطور که بهم گفتید، ولی هیچ اتفاقی نمی افته...
*
مشتری : کیبورد من دیگه کار نمی کنه.
مرکز : مطمئنید که به کامپیوترتون وصله؟
مشتری : نه، من نمی تونم پشت کامپیوتر برم.
مرکز : کیبوردتون رو بردارید و 10 قدم به عقب برید.
مشتری : باشه.
مرکز : کیبورد با شما اومد؟
مشتری : بله
مرکز : این یعنی کیبورد وصل نیست. کیبورد دیگه ای اونجا نیست؟
مشتری : چرا، یکی دیگه اینجا هست. اوه ... اون یکی کار می کنه!
*
مرکز : رمز عبور شما حرف کو ک a مثل apple، و حرف بزرگ V مثل Victor، و عدد 7 هست.
مشتری : اون 7 هم با حروف بزرگه؟
*
یک مشتری نمی تونه به اینترنت وصل بشه...
مرکز : شما مطمئنید رمز درست رو به کار بردید؟
مشتری : بله مطمئنم. من دیدم همکارم این کار رو کرد.
مرکز : میشه به من بگید رمز عبور چی بود؟
مشتری : پنج تا ستاره.
*
مرکز : چه برنامه آنتی ویروسی استفاده می کنید؟
مشتری :   .Netscape
مرکز : اون برنامه آنتی ویروس نیست.
مشتری : اوه، ببخشید... Internet Explorer
*
مشتری : من یک مشکل بزرگ دارم. یکی از دوستام یک Screensaver روی کامپیوترم گذاشته، ولی هربار که ماوس رو حرکت میدم، غیب میشه!
*
مرکز : مرکز خدمات شرکت مایکروسافت، می تونم کمکتون کنم؟
مشتری : عصرتون بخیر! من بیش از 4 ساعت برای شما صبر کردم. میشه لطفاً بگید چه قدر طول میکشه قبل از اینکه بتونین کمکم کنید؟
مرکز : آآه..؟ ببخشید، من متوجه مشکلتون نشدم؟
مشتری : من داشتم توی Word کار می کردم و دکمه Help رو کلیک کردم بیش از 4 ساعت قبل. میشه بگید کی بالاخره کمکم می کنید؟
*
مرکز : چه کمکی از من برمیاد؟
مشتری : من دارم اولین ایمیلم رو می نویسم.
مرکز : خوب، و چه مشکلی وجود داره؟
مشتری : خوب، من حرف a رو دارم، اما چه طوری دورش دایره بذارم؟