پایان نامه کارشناسی ارشد
مهندسی کامپیوتر - گرایش نرم افزار
چکیده
تقریبا یک دهه از پیدایش روش های چابک در مهندسی نرم افزار میگذرد. علت ظهور این روشها را میتوان در مشکلات
روشهای پیشین در مواجهه با پروژههای نرمافزاری و پیچیدگی ذاتی تولید نرم افزار پیدا نمود. گوناگونی نیازهای
مشتریان، محدودیتها و تغییرات تکنولوژی توسعه از یک سو و چالشهای نیروی انسانی توسعه دهنده نرمافزار از سوی دیگر، تولید نرمافزار را با مشکلات جدی روبرو مینماید. روشهای چابک برای مقابله با ضعفهای روشهای توسعه نرمافزار مطرح گردیدند و به سرعت مورد استقبال قرار گرفتند. به هر حال ایرادات گوناگونی نیز بر آنها وارد شده است و حتی روش XP که یکی از مطرح ترین روشهای چابک در سالهای اخیر بوده است نیز در مقابل انتقاداتی قرار گرفته است.
یکی از چالشهای روش XP مربوط به توجه کم این روش به فعالیتهای معماری نرمافزار است. راهحلهایی که تاکنون
برای مقابله با این چالش پیشنهاد شده است، ضعفهای خاص خود را دارند و هر یک به نوعی از ارائه یک رویکرد
مناسب باز ماندهاند. در این پایاننامه به ارائه رویکردی برای پاسخگویی به این چالش XP خواهیم پرداخت.
رویکرد پیشنهادی به گونهای طراحی شده است که توجه لازم را به اصول چابکی و ارزشهای XP داشته است. به علاوه
تلاش ویژهای در ارتباط با دستیابی به مزیتهای معماری نرمافزار که از طریق فعالیتهای معماری[1] حاصل میگردند،
انجام شده است. به عبارت دیگر راهحل پیشنهادی برای دستیابی به مزیتهای معماری نرمافزار برای روش XP به گونه-
ای عمل مینماید که با ارزشها و اصول چابکی در تناقض قرار نگیرد. در این تحقیق دو مطالعه موردی بررسی شده
است که هدف آنها ارزیابی رویکرد پیشنهادی به طور عملی بوده است. به علاوه، به تحلیل و بحث در رابطه با میزان موثر بودن آن در مقایسه با رویکردهای دیگر پرداختهایم. برای سهولت بکارگیری، ابزاری نیز توسعه داده شده است که امید است سنگ بنای ابزاری بسیار قوی برای روش XP در آینده نزدیک باشد.
کلمات کلیدی: چابکی، روش XP، معماری نرم افزار، فعالیت های معماری، ویژگی های کیفی.
فصل اول
روش XP و بحران معماری
نرم افزار
1-1- مقدمه
وجود یک روش توسعه مناسب برای یک پروژه نرم افزاری از اهمیت ویژهای برخوردار است. در دهههای اخیر،
تلاشهای متنوعی برای ارائه روشهای توسعه موثر که توان پشتیبانی از محیطهای گوناگون توسعه و نیازمندیهای متنوع
مشتریان را داشته باشند، صورت پذیرفته است. در دهه اخیر، روشهای چابک[2] به عنوان نسل جدید روشهای توسعه
مطرح گردیدند و تلاش نمودند بر مشکلات روشهای گذشته غلبه نمایند. به هر صورت روشهای چابک نیز
محدودیتهایی دارند 2[ ,1] که یکی از آنها مربوط به معماری نرمافزار و عدم توجه لازم به اهداف و مزایای آن است 4[ ,3].
هدف این پایان نامه، ارائه راه حلی برای چالش روش XP به عنوان یک روش چابک مطرح، از منظر معماری نرمافزار
است. برای پاسخگویی به این چالش که ریشه در توجه ناکافی به معماری نرمافزار دارد، دو فعالیت معماری پیشنهاد
میشود و نحوه جایگیری آنها در روش XP تشریح میگردد. همچنین به توصیف ویژگیهای ابزار پشتیبان این دو
فعالیت پرداخته میشود.
در ارتباط با نگارش این پایاننامه، ذکر این نکته لازم است که بسیاری از واژگان مورد استفاده به عنوان ادبیات
روشهای چابک، کمی با اصطلاحات علمی متفاوت هستند و به همین علت، معادلسازی آنها با واژگان فارسی اندکی
سخت است. از آنجائیکه روشهای چابک از میان خبرگان صنعتی ظهور نمودهاند، شاهد واژگان عامیانهتری در این حوزه
هستیم. در مجموع، به نظر میرسد که میل حامیان چابکی به غیررسمی عمل نمودن، تنها محدود به توسعه نرمافزار
نمیشود.
این فصل دربرگیرنده طرح مسئله، اهداف و محدوده پایان نامه و خلاصهای از نتایج راهحل پیشنهادی است.
همچنین ساختار فصلهای باقیمانده نیز در پایان این فصل توصیف میگردد.
1-2- طرح مسئله
در دهه اخیر، روشهای توسعه چابک به عنوان روشهایی جدید، متفاوت و موثر مطرح گردیدهاند. جدید، بدان جهت
که بیش از ده سال از انتشار اولین مقالات و کتابها در این زمینه نمیگذرد. متفاوت، بدان جهت که رویکردهای آنها، از
اصولی پیروی مینمایند که در مواردی به طور کامل در مقابل روشهای متداول پیشین قرار گرفته است و موثر، بدان
جهت که با اقبال جامعه توسعهدهندگان در مورد توسعه گونههایی از پروژههای نرمافزاری روبرو شده است. در چند
سال گذشته و از سالهای پایانی قرن بیستم میلادی، توجه فراوانی به این روشها به عنوان راه حل مقابله با تغییرات در محیط توسعه جلب شده است. این روشها با تاکید بیشتر به نظرات مشتری و تعامل با وی و همچنین تولید نشرهای کوچک و متعدد، سعی در کنترل سریع تغییرات و کمتر نمودن زمان مورد نیاز و هزینهها دارند [5].
از میان روشهای توسعه چابک، روش XP یکی از روشهایی است که بیشترین توجه توسعهدهندگان و دانشگاهیان را به خود جلب نموده است [6]. آنچنانکه کتب متعددی در رابطه با این روش نوشته شده است 10[ ,9 ,8 ,7] و بر
روی برخی جنبههای آن مانند زوج برنامهنویسی١ نیز تحقیقات متعددی صورت پذیرفته است 12[ ,11]. روش XP بر مبنای چهار ارزش ارتباط٢، سادگی٣، بازخور ٤ و جرأت٥ شکل گرفته [7] که البته ارزش احترام٦ نیز در نسخه جدید اضافه شده است [8]. فعالیتها و نقشهای مبتنی بر این ارزشها در کنار یک مدل فرآیندی، بنیان این روش را پیریزی مینمایند 8[ ,7].
اگرچه روش XP همچون دیگر روشهای چابک، مدلی کلان از سیستم را در ابتدای پروژه تهیه مینماید، یک
طراحی مفصل و مدون در ابتدای پروژه صورت نمیپذیرد و در واقع طراحی سیستم به صورت تکاملی انجام میشود. در XP، اغلب فعالیتهای طراحی نرمافزار در طول فعالیت زوج برنامهنویسی و به وسیله برنامهنویسان انجام میگیرد. به
همین علت، در طول فرآیند توسعه نرمافزار، ساختار سیستم، تغییرات و اصلاحات متعددی را متحمل میشود که به
علت طبیعت توزیع شده XP، این تغییرات غیر کنترل شده و در مواردی ممکن است در تضاد با یکدیگر و آنچه
سیستم به دنبال آن است، قرار گیرند. در نتیجه، به احتمال قوی محصول خروجی ممکن است از یک ساختار و معماری ضعیف رنج ببرد. به عبارت فنیتر، اگرچه توسع هدهندگان نیازهای وظیفهمندی را فراهم آوردهاند، توجه
کمتری به دستیابی ویژگیهای کیفی گردیده است. همچنین روش XP در استخراج و توصیف ویژگیهای کیفی که
پیشران اصلی معماری نرم افزار هستند نیز موثر عمل نمینماید [31]. اگرچه ویژگیهای کیفی ممکن است به نوعی در
قالب محدودیتهای پروژه ذکر گردند، این رویکرد چندان موثر و مورد تائید نیست [41] و این موضوع، ریشه در آن
دارد که XP به طور مشخص و سازماندهی شده به دنبال دستیابی به ویژگیهای کیفی و ارتقای معماری سیستم نیست.
آقای Beck معتقد است که در روش XP به اندازه دیگر روشها به معماری پرداخته میشود. همچنین صحیح
نیست که مطرح نماییم که XP فاقد هرگونه توجه به معماری است [7]. میخکوبی١ و استعاره٢ در XP، به طور
مشخص توجه به معماری سیستم دارند. راهحل میخکوبی که مشابه نمونهسازی است، برنامه سادهای با هدف حل یک مسئله مشخص است. گونهای از میخکوبی، میخکوبیهای معماری هستند که برای حل ابهامات مربوط به معماری استفاده میشوند [7]. به طور مثال فرض نمایید که تیم توسعه در مورد استفاده از CORBA مردد و پرسشهایی از منظر تواناییهای آن برای استفاده در پروژه دارد، در اینجا برنامهای ساده نوشته شده تا تواناییهای این تکنولوژی بررسی
گردد. به هر حال، به این نکته بایستی توجه شود که میخکوبیها به مسائل موردی توجه دارند و به ارائه یک طرح کامل
معماری منتهی نمیشوند.
برخی استعاره را یک بازنمایی از معماری سیستم میدانند 15[ ,41]. به هر حال فلسفه وجودی استعاره، ایجاد
بستری برای فراهم نمودن فهم ساده و مشترک در میان ذینفعان پروژه بوده است [7]. معمولا از یک بازنمایی ساده
برای نمایش سیستم استفاده میگردد تا براساس آن برنامهنویسان، آزمونگران، مدیران و مشتریان بتوانند با یکدیگر در
مورد سیستم گفتگو نمایند. به هر حال، در مورد نحوه رسیدن به یک استعاره مناسب ابهاماتی وجود دارد. شایان ذکر
است که استعاره بیان ساده شدهای از سیستم است و مسائل تکنیکی را کمتر پوشش میدهد. در مقایسه با معماری
نرمافزار، بایستی گفته شود که آنها تاکنون نتوانستهاند نقش مدلهای معماری را به خوبی بازی نمایند ,51 ,41 ,3] 16[. برخی محققان بر مبنای تجربه خود در استفاده از XP، به ضعف XP در ارائه مدلی سطح بالا از سیستم در زما Spike– علت انتخاب واژه »میخکوبی« کاربرد آن بوده است که در جهت حل ابهام در زمینهای خاص است. البته میتوان از واژه »ضربه« نیز استفاده نمود.
2 Metaphor
3 Architectural Spike
توسعه اشاره مینمایند [3]. پیچیدگی سیستم پس از گذشت مدتی از زمان توسعه، نیاز به تهیه مدلهای کلی و سطح
بالا از سیستم را برای درک بهتر ذینفعان ضروری مینماید که فراتر از آن چیزی است که استعاره ارائه میدهد [3].
در شرایطی که میخکوبی و استعاره بر روی ایجاد معماری اولیه تمرکز مینمایند، این فعالیت بازسازی است که به
اصلاح طراحی میپردازد [7]. به عبارت دیگر، بازسازی است که نقطه اتکای XP در رفع اشکلات طراحی و اصلاح کد
است. به هر صورت، گستره دید این فعالیت محلی و محدود به درون کلاسها و مشکلات طراحی مانند افزونگی کد است
و نگاهی کلان و بالادستی به معماری سیستم را پشتیبانی نمیکند.
عدم توجه کافی به معماری نرمافزار در روش XP، یکی از نکاتی است که به راستی این روش را به چالش کشانده و
این باور را پدید آورده که بهتر است XP در پروژههای غیر پیچیده و نه چندان مهم مورد استفاده قرار گیرد. با وجود
انتقادات موجود، روش XP به عنوان یکی از شناخته شدهترین روشهای چابک، ویژگیها و مزایایی را ارائه میدهد که به
راحتی قابل چشم پوشی نیستند 18[ ,71]. شاید یکی از دلایل عدم توجه به معماری نرمافزار در این روش آن است
که رشد و بلوغ معماری نرمافزار نیز در همین دهه اخیر اتفاق افتاده است، نکتهای که با نگاهی به مجلات، مقالات و
کنفرانسها قابل مشاهده است.
تمرکز معماری نرمافزار بر روی دستیابی ویژگیهای کیفی برای یک سیستم نرمافزاری است [91]. بنابراین
بکارگیری نگرش و دانش معماری نرمافزار در روش XP، میتواند این روش را در تولید سیستمهایی با ساختار مناسب
و دارای سطح قابل قبولی از کیفیت یاری نماید. به طور کلی، دو رویکرد تاکنون به منظور مرتفع نمودن این چالش XP ارائه گردیدهاند. یکی از آنها رویکرد یکپارچهسازی روشهای موجود معماری نرمافزار با روش XP [02] و دیگری
رویکرد استفاده از فعالیت معماری نقل توسعهدهنده[3] در این روش است [4]. به هر حال، تحقیقات انجام پذیرفته هنوز
نتوانستهاند به ترکیب مناسبی از چابکی و معماری دست یابند، چراکه رویکرد اول به ارزشهای چابکی و اصول XP
توجه کافی نداشته و رویکرد دوم نیز به اهداف معماری نرمافزار اهمیت کافی را نشان نداده است. به همین دلیل در این
پایاننامه به دنبال رفع این چالش XP بوده و بر توانمندسازی آن با فعالیتهای معماری متمرکز خواهیم شد. برای
رسیدن به این هدف، شناخت از مبانی چابکی و روشهای چابک، همچنین آشنایی با معماری نرمافزار، رویکردها و
دغدغه های آن از اهمیت فراوانی برخوردار است.
1-3- اهداف و محدوده
هدف این پایان نامه، ارائه راهحلی برای حل مشکل روش XP از جنبه معماری نرمافزار است. تمرکز بر روی برآوردن
ویژگیهای کیفی از طریق اعمال تصمیمات معماری، ایجاد مدلی انتزاعی از سیستم، دستیابی به درک کلی از سیستم و
ارتباط موثر میان ذینفعان است که همگی از مزایای توجه به معماری نرم افزار هستند 21[ ,91]. البته تاکید ویژهای بر
روی دستیابی به ویژگیهای کیفی وجود دارد، چرا که عمده توجه معماری نرمافزار را به خود معطوف مینماید ,91]
.]12
اگرچه اعمال رویکرد پیشنهادی در روش XP با فراهم آوردن دیدگاههای معماری، تاثیر مثبتی بر افزایش قابلیت
مقیاسپذیری این روش دارد، افزایش مقیاسپذیری XP در محدوده این پایاننامه قرار نمیگیرد. در این زمینه
روشهای متنوعی پیشنهاد شده 24[ ,32 ,22] و ابزارهای متعددی 26[ ,52] نیز توسعه یافته است. همچنین این
نکته نیز مهم است که اگرچه با اضافه شدن دو فعالیت پیشنهادی، تغییراتی در روش XP به وجود میآید، رویکرد
پایاننامه ارائه یک روش توسعه جدید و بحث متناسبسازی[4] [72] را مدنظر ندارد. در زمینه مدلسازی تنها به مدلهای
مورد نیاز فعالیتهای پیشنهادی میپردازیم و موضوع مدل سازی در روشهای چابک و XP و همچنین توصیف و
مستندسازی معماری نرم افزار خارج از محدوده این پایان نامه هستند.
Abstract
During the last decade, agile methods have emerged as a novel approach to develop software systems with the aim of solving problems recurring in developing software systems. Customer's satisfaction, environmental changes, and humanistic developers' challenges are some of the most important problems agile methods try to deal with. Through the years, they have become more popular, though opponents have been expressing their weaknesses. Extreme Programming (XP) is the most important agile method, and a lot of books and papers have been published on its features. Opponents, however, believe that XP has some shortcomings relating to the less attention to software architectural practices. Researchers have proposed some solutions, but they are not efficient enough and neglect some facts relating to both of agility and software architecture. This thesis proposes an innovative approach, including two architectural practices, to mitigate this XP's drawback.
The proposed approach is established upon agile manifesto and XP's values, and tries to achieve software architecture's advantages through employing new architectural practices. In this thesis, two case studies have been done to analyze the approach in a practical manner. Plus, we compare it with respect to similar works considering decisive factors. To simplify the application of the proposed approach, one supplementary tool has been developed, and we hope to add more features to support other XP's practices in the future.
Keywords: Agility, Extreme Programming, Software Architecture, Architectural Practices, Quality Attributes