مفاهیم متدولوژی RUP

عنوان مقاله: مفاهیم متدولوژی RUP

RUP Methodology Concepts

نويسنده/ مترجم: اکبر قراخانی بهار

Akbar Gharakhani Bahar

آدرس­ پست الکترونیکی نویسنده/ مترجم: [email protected]

تاریخ تهیه: 1384

ارسال کننده: همفکران جامعه مجازی - تاریخ ارسال: 1388

آدرس­ پست الکترونیکی ارسال کننده:

موضوع اصلی: توليد نرم­افزار - موضوع فرعی: متدولوژی­های نرم­افزار

سه کلیدواژه اصلی به ترتیب اهمیت: مبانی RUP، جنبه­های عمومی RUP، معماری مبتنی بر جزء

سه کلیدواژه فرعی به ترتیب اهمیت: سند چشم­انداز، طرح توليد نرم­افزار، مدیریت پروژه نرم­افزاری

 

چکیده مقاله

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

دریافت فایل PDF مقاله

مفاهیم متدولوژی RUP

مقدمه

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

 

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

 

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

 

RUPبه عنوان متدولوژی ایجاد نرم­افزار، مراحل سه گانه تولید نرم­افزار را در 4 فاز به شرح زیر تعریف می­نماید:

  • فاز اول - آغازی – inception: رسیدن به این که چه نرم­افزاری می­خواهیم بسازیم.
  • فاز دوم – تکمیلی – elaboration: رسیدن به این که نرم­افزار را چگونه باید بسازیم.
  • فاز سوم - ساخت – construction: ساختن نسخه آزمایشی نرم­افزار
  • فاز چهارم - انتقال – transition: تکمیل و عملیاتی کردن نسخه نهایی نرم­افزار

 

در RUPپایان هر فاز  در واقع با «تکمیل و تحویل محصولات فاز» مشخص می­شود. در این صورت گفته می­شود که «ملاک» (mile stone) برای پایان آن­ فاز برآورده شده یا به آن رسیده شده است. ملاک­های نشان دهنده پایان هر فاز دارای عناوینی مرتبط با محصولات خود هستند.

 

مبانی RUP

متدولوژیRUP خود دارای ابعادی مبتنی بر تکنیک­های شیئی­گرا است. این گفته بدین معناست که RUP  نیز دارای دو بعد «ساختار» و «رفتار» است. یک بعد آن زمان و شامل فاز، تکرار و ملاک­های پایان هر فاز است که جنبه­های «پویا» (dynamic) یا رفتار RUP را نمایندگی می­کند و «دوره عمر» (life cycle) نرم افزار را در برمی­گیرد.

 

بعد دیگر آن فرایندهای اصلی و به عنوان هسته، شامل فعالیت­ها، محصولات جانبی کار و قواعد مربوطه است که جنبه­های «ایستا» (static) یا ساختار RUP را نمایندگی می­کند و با دسته­بندی فعالیت­های مهندسی نرم­افزار به صورتی منطقی، «جریان­های کار» (work flows) نرم­افزار را در برمی­گیرد. بعد فرایندهای اصلی یا جریان­های کار به ترتیب شامل موارد زیر است:

 

  1. مدل­سازی کار و فعالیت – Business Modeling
  2. نیازمندی­های منجر به درخواست نرم­افزار - Requirements
  3. تجزیه و تحلیل و طراحی – Analysis and Design
  4. پیاده­سازی - Implementation
  5. تست و آزمون - Test
  6. انتقال محصول به محیط کاربران - Deployment
  7. مدیریت ترکیب­بندی و تغییرات – Configuration and Change Management
  8. مدیریت پروژه – Project Management
  9. محیط - Environment

 

مطالب گفته شده در مورد ساختار و رفتار RUP و میزان پرداختن به گردش­کارها در هر فاز، در جدول زیر نشان داده شده است:

 

جریان­های کار

فازها

آغازی

تکمیلی

ساخت

انتقال

مدل­سازی کار

 خیلی زیاد

خیلی زیاد

زیاد

کم

نیازمندی­ها

 خیلی زیاد

خیلی زیاد

زیاد

کم

تجزیه و تحلیل و طراحی

 زیاد

خیلی زیاد

خیلی زیاد

کم

پیاده­سازی

کم

خیلی زیاد

خیلی زیاد

زیاد

تست و آزمون

کم

زیاد

خیلی زیاد

کم

انتقال

خیلی کم

کم

زیاد

خیلی زیاد

ترکیب­بندی و تغییرات

کم

کم

خیلی زیاد

خیلی زیاد

مدیریت پروژه

زیاد

زیاد

زیاد

زیاد

محیط

زیاد

زیاد

زیاد

زیاد

 

عنوان

فازها

آغازی

تکمیلی

ساخت

انتقال

تعداد تکرارهای قابل انجام

2

2

3

2

درصد تقریبی از کل فرایند

5 الی 10

درصد

20 الی 30

درصد

50 الی 65

درصد

10 الی 15

درصد

 

متدولوژیRUP همچنین بر مبنای اصول عملیاتی مشخصی در تولید نرم­افزار که از آن­ها تحت عنوان «بهترین اعمال قابل انجام» (best practices)  یاد می­شود، ارائه شده است. این اعمال را می­توان به صورت زیر  برشمرد:

  1. ایجاد نرم­افزار در قالب تکرارهای مختلف
  2. مدیریت نیازمندی­های منجر به درخواست نرم­افزار
  3. استفاده از معماری موسوم به «مبتنی بر جزء» (component – based) در طراحی نرم­افزار
  4. مدل­سازی به صورت نموداری
  5. ارتقاء پیوسته کیفیت نرم­افزار
  6. کنترل دقیق تغییرات در نرم­افزار

در ادامه مطلب به شرح هریک از موارد بالا می­پردازیم.

 

ایجاد نرم­افزار در قالب تکرارهای مختلف

هر کدام از فازهای چهارگانه RUP در قالب یک یا چند تکرار انجام می­شود. هر تکرار در واقع شامل یک پروژه کوچک در بطن پروژه اصلی است که با انجام آن و ضمن ارائه یک محصول میانی، یک گام به محصول نهایی نزدیک می­شویم. در تکرارهای مربوط به هر فاز سعی می­شود تا «قابل تحویل» (deliverable) های آن فاز تهیه و ارائه شوند. بنابراین هر فاز شامل تعداد تکرارهای لازم برای ارائه قابل تحویل­های آن فاز است.

 

در روش سنتی تولید نرم­افزار یا قالب­های کار مبتنی بر آن که از آن­ تحت عنوان روش «آبشاری» (waterfall) یاد می­شود، شروع یک فاز تا پایان یافتن فاز قبلی ممکن نیست. به بیان دیگر، در این روش، کار تولید نرم­افزار از ابتدا تا انتها به صورت مراحل پشت سرهم انجام می­شود. مزایای استفاده از روش تکراری به جای روش آبشاری را می­توان به صورت زیر برشمرد:

  • واقعیت این است که سفارش دهندگان نرم­افزار قادر نیستند تمامی نیازمندی­های منجر به درخواست تولید نرم­افزار را نظیر آنچه که در روش سنتی عمل می­شود، در ابتدای کار عنوان کنند. به بیان دیگر، نیازمندی­های اولیه عنوان شده برای تولید نرم­افزار در طول فرایند تولید آن تغییر می­کنند. تجربیات نشان می­دهند که یکی از دلایل شکست پروژه­های نرم­افزاری، تغییرات در نیازمندی­های عنوان شده اولیه است که در نهایت به بی­استفاده ماندن محصول نرم­افزاری تولید و ارائه شده در انتهای کارمنجر می­شود.
  • در روش سنتی، سفارش­دهندگان نرم­افزار بعد از دادن سفارش خود، برای تحویل محصول مورد نظر باید تا انتهای کار منتظر بمانند. با این نحوه عمل، به خاطر تغییرات در نیازمندی­ها، آنان غالبا در انتهای کار با محصولی روبرو می­شوند که ممکن است دیگر برای آنان قابل استفاده نباشد. گفته شده که این روش یادآور نظریه «انفجار بزرگ» (big bang) در ایجاد عالم هستی است، که در مورد نرم­افزار به «تحویل همه چیز در آخر کار» تعبیر می­شود و تولیدکنندگان و استفاده­کنندگان را دچار مشکل می­کند. متدولوژی RUP  برای رفع این مشکل، روش تدریجی در قالب تکرارها را تجویز می­کند که ثمره آن تحویل تدریجی محصول و رفع نواقص کار در هر تحویل جدید است.  در RUP  کل فرایند به 6 الی 9 قطعه کوچکتر تحت عنوان تکرار تقسیم می­گردد و سعی می­شود در طی هر کدام از آن­ها بخش مشخصی از محصولات تولید شده و تحویل شوند.
  • یکی دیگر از عوامل شکست پروژه­های نرم­افزاری، مخاطراتی است که گاه با وجود کوچک و ناچیز بودن نیز یک پروژه نرم­افزاری را به شکست می­کشانند. مخاطرات در راه عملیاتی شدن نرم­افزار در دست تولید، در طول فرایند تولید به تدریج رخ می­نمایند. در RUP هدف این است که این قبیل مخاطرات از ابتدای کار مورد شناسایی قرار گرفته و در زمان­های مناسب تدابیر مناسب برای آنان اتخاذ گردد. با استفاده از مفهوم تکرار، با مخاطرات بهتر می­توان برخورد کرد.
  • با استفاده از مفهوم تکرار می­توان بخش­های مشترک قابل استفاده مجدد از نرم­افزار را بهتر تشخیص داد و در نتیجه به آن نوع معماری از نرم­افزار رسید که «استفاده مجدد» (reuse) از بخش­های تهیه شده قبلی را امکان­پذیر سازد.
  • در طول تکرارهای مختلف، خطاهای موجود به تدریج برطرف می­شوند. در نتیجه رفع همه خطاها به زمان تست نهایی نرم­افزار موکول نمی­گردد.
  • در روش سنتی، بسیاری از منابع انسانی تدارک دیده شده برای تولید نرم­افزار، در زمان­هایی که هنوز کاری برای انجام ندارند، معطل می­مانند. با استفاده از مفهوم تکرار و تاکید بر ارائه یک بخش از محصول نهایی (حتی­الامکان بخشی از نرم­افزار قابل اجرا) در هر تکرار، تقریبا تمامی افراد با تمامی تخصص­ها در تمامی طول فرایند تولید نرم­افزار به کار مشغول می­شوند.
  • استفاده از مفهوم تکرار باعث می­شود که بتوان خود فرایند تولید نرم­افزار را نیز به تدریج اصلاح نمود.

 

مدیریت نیازمندی­های منجر به درخواست نرم­افزار

مدیریت نیازمندی­های تولید نرم­افزار، عاملی کلیدی در موفقیت هر پروژه نرم­افزاری است. نیازمندی­ها باید شناسایی شده و تغییرات در آن­ها در فرایند تولید نرم­افزار باید به دقت مورد توجه قرار گیرند. درRUP«موارد کاربرد سیستم» (system use cases) به عنوان مبنای کار قرار دارد. موارد کاربرد سیستم وسیله­ای برای مستندسازی نیازمندی­ها و ارتباط با کاربران سیستم جهت رسیدن به درکی مشترک از آن­چه که تحویل خواهد شد، می­باشد. هر مورد کاربرد از سیستم در واقع به منزله یک نیاز برای درخواست ایجاد سیستم است. معنی این گفته آن است که موارد کاربرد سیستم می­توانند تعیین کننده نحوه عمل در بقیه فرایند تولید نرم­افزار نیز باشند. استفاده از این روش، شناخت نیازمندی­ها و مدیریت تغییرات در آن­ها را تسهیل می­کند.

 

استفاده از معماری «مبتنی بر جزء» در طراحی نرم­افزار

«جزء/ مؤلفه» (component) یک بخش از نرم­افزار است که دارای عملکرد در محدوده مشخصی است. هر جزء از نرم­افزار به این مفهوم باید بتواند به عنوان عنصری از یک معماری کل نرم­افزار عمل نماید. مزایای این رویکرد در تولید نرم­افزار را می­توان به صورت زیر بر شمرد:

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

 

همان­طور که دیده می­شود، مفهوم جزء یا مؤلفه نرم­افزاری ضمن ملحوظ داشتن ویژگی «بخشی کردن» (modulation) نرم­افزار که در روش­های قبلی نیز مورد توجه بوده است، شرایطی را فراهم کرده است که در آن تولید نرم­افزار به جای نوشتن خط به خط برنامه­ها، به صورت نوعی تالیف یا تصنیف نرم­افزار با استفاده از اجزاء یا مؤلفه­های از پیش آماده انجام می­شود.

 

مدل­سازی به صورت نموداری

يک مدل­ در واقع فرم­ ساده شده و به صورت قابل نمایش در آمده يک چیز واقعی است. در طراحی یک مدل از یک شیئی واقعی معمولا به جنبه­هایی از آن توجه می­شود که در کار مورد نظر ما دارای اهمیت باشند. برای مدل سازی سیستم­های نرم­افزاری زبان خاصی تحت عنوان UML(Unified Modeling Language) به وجود آمده است که در RUP نیز از آن استفاده می­شود. باید گفت که UML تنها مجموعه­ای از نمادها و روش­ها برای ساختن مدل­ها است و نحوه ساختن نرم­افزار را به ما نشان نمی­دهد. با استفاده از UML در قالبی نظیر RUP است که نحوه ساختن نرم­افزار مشخص می­گردد.

 

ارتقاء پیوسته کیفیت نرم­افزار

در RUP سعی شده است که وظیفه کنترل کیفی به جای وظیفه بودن برای یک فرد یا گروهی از افراد خاص، وظیفه همه افراد درگیر در کار نرم­افزار باشد. در RUP کنترل کیفی هم در سطح محصول، تحت عنوان «کیفییت محصول» (product quality)، شامل کیفیت محصولی که تولید خواهد شد، به همراه تمامی اجزاء آن و هم در سطح فرایند تحت عنوان «کیفیت فرایند» (process quality)، شامل محصولات جانبی برای تولید نرم­افزار نظیر مدل­ها و غیره مورد توجه قرار دارد.

 

کنترل دقیق تغییرات در نرم­افزار

در روش سنتی تولید نرم­افزار، برای اعمال تغییرات محدودیت­هایی وجود دارد و زمان اعلام و انجام تغییرات غالبا به اوایل شروع پروژه محدود می­شود. در RUP برعکس روش سنتی، این محدودیت دامنه کمتر و زمان بیشتری را در بر می­گیرد و به بیان دیگر محدودیت کمتری وجود دارد. فلسفه وجود تکرارها در RUP نیز به خاطر همین موضوع است. با این وجود هر گونه تغییری غالبا هزینه­ای دارد و RUPمی­خواهد این هزینه­ها را در حد ممکن کم کند.

 

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

 

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

 

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

 

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

  • هزینه انجام تغییرات در کلیات کار و فعالیت و موارد کاربرد سیستم، در فاز  اول (آغازی) پایین است و در فاز دوم (تکمیلی) افزایش می­یابد. بنابراین کاربران سیستم به خصوص باید در مورد سند چشم­انداز بررسی بیشتری کرده و آن را در فاز اول نهایی کرده و به تصویب برسانند.
  • انجام تغییرات در مورد معماری سیستم از قبیل سیستم­های فرعی و رابط­های کاربران سیستم در فاز دوم (تکمیلی) و تا آخر آن بدون مشکل خاصی قابل انجام است، ولی از فاز دوم و به بعد مشکل شده و هزینه­بر می­شود. بنابراین کاربران سیستم باید در فاز دوم، معماری ارائه شده برای سیستم را نهایی کرده و به تصویب برسانند.
  • همان­طور که دیدیم، در فاز سوم (ساخت)، نوعی «جزء/ مؤلفه» (component) گرایی تجویز شده و بر آن تاکید می­شود. بنابراین هزینه­های مربوط به تغییرات در مؤلفه­های سیستم تا پایان فاز سوم پایین است ولی در فاز چهارم (انتقال) افزایش می­یابد. هر جزء یا مؤلفه بخشی برنامه­ای از سیستم است که کار محدود و معینی را روی یک یا مجموعه­ای از اشیاء سیستم انجام می­دهد. بدین خاطر توصیه می­شود که در پایان فاز ساخت نوعی «فریز کردن» تغییرات در سطح مؤلفه­ها در نظر گرفته شود.
  • باید توجه کرد که در فاز چهارم (انتقال)، کاستن از برخی امکانات دارای مشکل سیستم و موکول کردن آن­ها به ترخیص بعدی از نرم­افزار، یکی از راه­های رسیدن زودتر به نرم­افزار قابل اجراست. بنابراین توصیه می­شود که در هنگام تحویل گرفتن سیستم، از سیاست «همه چیز یا هیچ چیز» پیروی نشود.

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

 

جنبه­های قابل توصیه عمومی RUP

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

جنبه­های قابل توصیه عمومی RUP به شرح زیر قابل بیان است:

  1. تهیه سندی به عنوان چشم­انداز از مشخصات کلی نرم­افزار در دست تولید
  2. تهیه طرح تولید نرم­افزار و مدیریت پروژه با استفاده از آن
  3. شناسایی مخاطرات در راه پروژه و نرم­افزار در دست تولید و کوشش در جهت حذف یا تخفیف آن­ها
  4. ردگیری پیشرفت پروژه
  5. ارزیابی کارهای انجام شده از نظر هزینه
  6. پای­بندی به معماری مبتنی بر«جزء/ مؤلفه»
  7. ساخت و تست پیش­رونده بخش­های محصول نهایی
  8. تعیین و ارزیابی نتایج میانی
  9. مدیریت و کنترل تغییرات درخواستی
  10. پای­بندی به اصول حمایت از کاربران محصول تولیدی

در ادامه مطلب به شرح هریک از موارد بالا می­پردازیم.

 

سند چشم­انداز

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

سند چشم­انداز باید موارد زیر را در بر گیرد:

·         مفاهیم کلیدی در قالب «اصطلاحات» (glossary)

·    مسئله­ای که به کمک نرم­افزار می­خواهیم آن را حل کنیم در قالب «بیان مسئله» (problem statement)

·         طرف­های کار و کاربران نهایی و نیازهای آنان از درخواست سیستم

·         جنبه­های مختلف محصول تولیدی

·         نیاز­های عملکردی در قالب «موارد استفاده» (use cases) از سیستم

·         نیاز­های غیر عملکردی

·         محدودیت­های طراحی

 

طرح تولید نرم­افزار

طرح تولید برای یک محصول به اندازه خود محصول دارای اهمیت است. در RUP سندی تحت عنوان «طرح تولید نرم­افزار» (Software Development Plan = SDP) تهیه می­شود که در آن جنبه­های مختلف تولید نرم­افزار مورد شرح و بسط قرار می­گیرد. نسخه اولیه این سند از محصولات فاز آغازی است و در تمامی طول فرایند ایجاد نرم افزا از فاز آعازی تا فاز انتقال باید مورد تجدید نظر قرار گرفته و به­هنگام شود.

 

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

 

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

 

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

مقدمه، خلاصه­ای از کل سند شامل:

  • اهداف مورد نظر از تهیه طرح ایجاد نرم­افزار و موارد استفاده از این طرح در عمل
  • دامنه، پروژه­ها و طرح­های مرتبط با این طرح یا تاثیر گیرنده از این طرح
  • تعاریف کلی و اختصارات مورد استفاده در این طرح
  • منابع مورد استفاده برای تهیه طرح
  • مرور مطالب دیگر ارائه شده در این طرح

مرور پروژه شامل:

  • اهداف و دامنه پروژه
  • فرض­های اولیه و محدودیت­ها
  • محصولات پروژه
  • تکامل طرح تولید نرم­افزار

سازمان پروژه شامل:

  • ساختار سازمانی اعضای تیم پروژه
  • روابط بیرونی پروژه
  • نقش­ها و مسئولیت­های افراد

مدیریت پروژه شامل:

  • تخمین­های به عمل آمده
  • طرح عملیاتی و تقسیم کار پروژه شامل طرح هر فاز، اهداف تکرارها، ترخیص محصولات هر فاز و غیره
  • نظارت بر پروژه و نحوه کنترل آن

ضمائم

 

شناسایی و کم اثرکردن مخاطرات

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

 

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

 

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

 

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

 

ردگیری پیشرفت پروژه

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

 

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

 

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

 

ارزیابی کار از نظر هزینه

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

 

پای­بندی به معماری مبتنی برجزء/ مؤلفه­های نرم­افزاری

همان­طورکه دیدیم، در RUP استفاده از معماری مبتنی بر جزء­های نرم­افزاری و این نکته که قطعات اصلی نرم­افزاری چه هستند و چگونه باهم مرتبط می­گردند تا محصول نهایی را به وجود آورند، دارای اهمیت زیادی است. به منظور بحث در این زمینه­ها ابتدا باید نمایشی از معماری نرم­افزار که در آن جنبه­های کلی نر­م­افزار مورد شرح قرار گیرد، تهیه شود. این مطالب در سندی تحت عنوان «سند معماری نرم­افزار» (software architecture document) آورده می­شود.

 

منظور از معماری سیستم، اجزاء و مؤلفه­های مهم آن نظیر سیستم­های فرعی تحت آن و رابط­های کاربران آن­ها و رابط کاربران خود سیستم است.معماری سیستم شامل اسکلتی از ساختمان سیستماست که معادل 10 الی 20 درصد برنامه یا کد نهایی تهیه شده برای سیستم را در برمی­گیرد. از آنجا که رسیدن به یک معماری درست در ابتدای کار مشکل است، بنابراین ضرورت دارد که افراد خبره­تری برای تهیه آن درگیر شوند.

 

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

 

یکی از معایب روش­های قبلی تجزیه کار برنامه­نویسی که از آن می­توان با عنوان «تجزیه عملکردی» (functional decomposition) یاد کرد، جدا بودن داده­ها از رویه­های عملیاتی به کارگیرنده آن­ها است. این کار باعث هزینه­بر شدن انجام اصلاحات و یا توسعه سیستم می­شود. به عنوان مثال، در این روش، تغییر در نوع یک داده ممکن است چندین رویه عملیاتی را متاثر کند. در استفاده از این روش­ها، آنچه که مهم است مشکل بودن تعیین رویه­های عملیاتی است که ممکن است از چنین تغییری متاثر شوند. این وضعیت عامل عمده بحران سال 2000 در مورد سیستم­های نرم­افزاری بود که به بحران Y2K شهرت یافت.

 

در مقابل، پای­بندی به معماری موسوم به اجزاء/ مؤلفه­های نرم­افزاری که در واقع بیان دیگری از مفهوم «شیئی» (object) است، باعث مجتمع شدن داده­ها با رویه­های عملیاتی به کار گیرنده آن­ها شده و آن را به صورت یک جزء برنامه­ای مستقل در می­آورد. بنابراین اعمال تغییرات در داده­ها اعم از نوع یا انجام عملیات روی آن­ها، در این جزء مستقل محدود می­شود. این وضعیت به نوبه خود باعث استحکام سیستم و تسهیل اعمال تغییرات بدون نگرانی از تاثیرات جانبی آن می­شود. استفاده از این ایده به تدریج به تشکیل مجموعه­هایی از اجزاء با «قابلیت استفاده مجدد» (reusable) منجر می­شود.

 

بنابراین به منظور استفاده از چنین اجزاء برنامه­ای تنها لازم است که از محیط رابط آن­ها با سایر اجزاء برنامه­ای نظیر آن مطلع بود و خود را از پیچیدگی­های درونی آن­ها دور نگاه داشت. جالب این که در صورت لزوم، بدون هیچ تغییری در این محیط رابط که ممکن است در برنامه­های بی­شماری به کار گرفته شده باشد، می­توان محتوای عملیاتی دیگری را به جای محتوای تعریف شده قبلی آن تعریف کرد و به کار گرفت. این خاصیت یکی از ویژگی­های مهم اجزاء و مؤلفه­های نرم­افزاری مورد توجه در بحث ما است که از آن با نام «کپسوله کردن» (encapsulation) یاد می­شود.

 

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

 

ساخت و تست پیش­رونده بخش­های محصول نهایی

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

 

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

 

تعیین و ارزیابی نتایج

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

 

مدیریت و کنترل تغییرات در محصول تولیدی

ضرورت جریان کار مدیریت ترکیب­بندی و تغییرات در RUP آن است که با درخواست تغییرات، اثرات لازم در بخش­های پروژه حادث شود تا ضمن در نظر گرفتن اکثریت درخواست­های کاربران نرم­افزار، سیستمی با کیفیت مناسب و قابل تحویل در زمان مورد نظر داشته باشیم. باید گفت که حتی پیش از ارائه هر مورد قابل ارائه به کاربران، درخواست انجام تغییرات وجود دارد. بنابراین مهم خواهد بود که این گونه تغییرات دریافت شده و مورد توجه قرار گیرند.

 

پای­بندی به حمایت از کاربران از محصول تولیدی

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

 

منابع

در تهيه اين مقاله از نوشته­های افراد زير که  مبتنی بر تجربيات عملی نامبردگان و به صورت الکترونيکی بوده­اند، استفاده شده است:

 

سمت حرفه­ای

نام

Director, RUP Development and Product Management Teams

Kroll, Per

Rational Fellow, Rational Software Canada

Kruchten, Philippe

Development Manager, RUP,  Rational Software Canada

Probasco, Leslee

Project Management Consultant

Wideman, Max

RUP Implementation Workshop Group

...

 


مطالب مشابه :


آموزش (The Universal Modelling language) UML

برنامه نویسی حرفه ای مقدمه ای بر uml: 1) مقاله و کتاب و آموزش uml , rup




فرآیند یکپارچه رشنال ( RUP ) - Rational Unified Process

گروه رایانه ای وارش , گروه وارش , دانلود , دانولد , داونلود , خرید بازی کامپیوتری , داونلد ,




مفاهیم متدولوژی RUP

مفاهیم متدولوژی rup. مقدمه. متدولوژی rup همچنین بر مبنای اصول هزینه­ای دارد و rup می­خواهد




پایان نامه کامپیوتر تحقیق کامپیوتر

خبره و هوشمند در بازيابي اطلاعات 39 112 مروري بر rup و قابليت‌هاي آن در مقدمه ای بر




برچسب :