خانه » پروژه » فناوری اطلاعات » دانلود پروژه بررسی معماری نرم افزار ، بررسی انواع روشها و دیدگاه های معماری نرم افزار
دانلود پروژه بررسی معماری نرم افزار ، بررسی انواع روشها و دیدگاه های معماری نرم افزار

دانلود پروژه بررسی معماری نرم افزار ، بررسی انواع روشها و دیدگاه های معماری نرم افزار

بررسی معماری نرم افزار ، بررسی انواع روشها و دیدگاه های معماری نرم افزار

فهرست مطالب
۱   مقدمه ۷
۲  معماری نرم افزار چیست ؟ ۹
۲-۱- تعاریف پایه در معماری نرم افزار ۱۲
الگوهای معماری یا سبکهای معماری ۱۲
مدل مراجع ۱۳
معماری مرجع ۱۳
۲-۲   دیدگاه های معماری ۱۴
دیدگاه Bass 15
دیدگاه ۴+۱ ۱۶
دیدگاه‌های دیگر ۱۷
۳ طراحی معماری نرم افزار ۱۷
۳-۱     کارکرد‌های سیستم و معماری نرم‌افزار ۱۸
۳-۲   ویژگی‌های کیفی ۱۹
۳-۳ ویژگی‌های کیفی سیستم ۲۱
۳-۴   سناریو‌های ویژگی‌کیفی ۲۲
۳-۵   ویژگی‌های کیفی کسب و کار ۲۴
۳-۶   ویژگی‌های کیفی معماری ۲۵
۳-۷     یک طراحی معماری خوب باید دارای چه ویژگی‌هایی باشد؟‌ ۲۶
۳-۸  دستیابی به ویژگیهای کیفی ۲۷
تاکتیکهای معماری         ۲۷
الگوهای معماری ۲۹
ارتباط تاکتیکها و الگوهای معماری ۳۱
۴ روشهای طراحی معماری نرم افزار ۳۲
۴-۱ طراحی مبتنی بر ویژگی ۳۲
۴-۲ طراحی به کمک سبک های معماری مبتنی بر ویژگی     ۳۴
۴-۳ طراحی با ملاحظات اقتصادی با استفاده از روش آنالیز سود هزینه ۳۹
۵  ویژگی کیفی قابلیت تغییر ۴۷
۵-۱   تعریف قابلیت تغییر ۴۷
۵-۲   مشخص نمودن نیاز‌های قابلیت تغییر با استفاده از سناریو‌های کیفی ۴۸
۵-۳   مدل سازی قابلیت تغییر در سطح معماری نرم افزار   ۴۹
۵-۴   تاکتیک‌های قابلیت تغییر ۵۰
۵-۵  تاکتیک‌هایی که تغییرات را محلی می‌کنند. ۵۲
۵-۶ تاکتیک‌هایی که میدان دید وظایف را کاهش می دهند. ۵۳
۵-۷ تاکتیک‌هایی که از پخش شدن تغییرات جلوگیری می‌کنند. ۵۴
۵-۸    ارزیابی قابلیت تغییر ۵۶
ارزیابی نحوه اختصاص وظایف ۵۷
ارزیابی وابستگی بین ماژول‌ها ۵۸
انواع وابستگی ۵۸
نحوه بازنمایی وابستگی‌ها ۶۱
روش Brute-force 62
استفاده از بستار انتقالی ۶۳
استفاده از روش‌های بهینه سازی ۶۴
استفاده از جدول وابستگی‌ها ۶۴
۵-۹ تصمیم گیری نهایی در مورد طراحی ویژگی کیفی قابلیت تغییر ۶۵
۶ مطالعه موردی ۶۶
۶-۱  مرحله ۱ – انتخاب یک سناریو حقیقی ۶۶
۶-۲  مرحله ۲ – بررسی نوع سناریو حقیقی   ۶۷
۶-۳ مرحله ۳ – انتخاب چهارچوب استدلال مناسب ۷۰
۶-۴ مرحله ۴ – مشخص نمودن پارامتر‌های محدود و آزاد     ۷۴
۶-۵ مرحله ۵ –  مشخص کردن تاکتیک‌های وابسته به پارامتر‌های آزاد     ۷۵
۶-۶ مرحله ۶ – اختصاص مقادیر اولیه به پارامتر‌های آزاد       ۷۷
۶-۷ مرحله ۷ – انتخاب تاکتیک‌ها و به کاربردن آنها برای دستیابی به پاسخ مناسب     ۷۸
استفاده از کامپایلر به عنوان واسط ۸۲
استفاده از سیستم‌عامل به عنوان واسط ۸۳
۶-۸ مرحله ۸ : اختصاص مسئولیت‌ها به عناصر معماری ۸۴
۷   خلاصه و نتیجه گیری ۸۶
۸   مراجع ۸۷

فهرست مطالب

شکل ۱ –  ارتباط بین الگوی معماری، مدل مرجع و معماری مرجع ۱۴
شکل ۲ –   بخش‌های تشکیل دهنده سناریو ویژگی کیفی ۲۳
شکل ۳ – خلاصه ای از تاکتیک های قابلیت تغییر ۲۳
شکل ۴ – خلاصهای از تاکتیکهای کارایی ۲۸
شکل ۵ – مجموعه ای از مهمترین الگوهای معماری ۳۰
شکل ۶ – ورودیها و خروجیهای روش ADD 33
شکل ۷ – الگوی معماری خط لوله همزمان ۳۷
جدول ۱ – پارامترهای الگوی خط لوله همزمان ۳۷
جدول ۲ – خروجی فاز اول روش CBAM 41
شکل ۸ –  نمودار مقایسه میزان کاربرد هر راهبرد در مقابل هزینه ۴۱
شکل ۹ –  انواع نمودار‌های ممکن برای سودمندی براساس پاسخ ۴۴
شکل ۱۰ – معماری سه لایه ۵۱
جدول ۳ – نحوه بازنمایی وابستگی بین دو ماژول ۶۱
شکل ۱۱ – نمودار جریان داده ( تغییرات به طور غیر مستقیم از A به B منتقل می‌شود) ۶۳
جدول ۴- سناریو حقیقی قابلیت تغییر برای سیستم مورد مطالعه ۶۷
جدول ۵ – سناریو عمومی قابلیت تغییر برای مسئله مورد بررسی ۶۸
شکل ۱۲ – نمایش سیستم به صورت دو ماژول وابسته ۶۹
جدول ۶ – چهارچوب استدلال برای ویژگی کیفی قابلیت تغییر ۷۱
شکل ۱۳ – پارامتر‌های اثر گذار بر روی هزینه تغییرات ۷۳
جدول ۷ – پارامتر‌های قابلیت تغییر و تاکتیک‌های اثر گذار بر روی آنها ۷۵
جدول ۸ – قانون‌هایی که نحوه استفاده از تاکتیک‌ها را مشخص ۷۸
شکل ۱۴ – تکه طراحی تاکتیک شکستن زنجیره وابستگی ۸۴
شکل ۱۵ – اختصاص وظایف با توجه به تاکتیک‌های اعمال شده ۸۵
چکیده
با گسترش روز افزون استفاده از مدل های فرایند مبتنی بر معماری، طراحی معماری نرم افزار اهمیت ویژه ای یافته است. یک طراحی معماری خوب، طراحی است که نیاز های کیفی مورد انتظار مشتری را برآورده نماید. در این گزارش روش  های گوناگون طراحی معماری نرم افزار مورد بررسی قرار خواهد گرفت. سپس ویژگی کیفی قابلیت تغییر به طور دقیق و جزئیات معرفی خواهد شد و سپس معماری یک سیستم مطالعه موردی با دیدگاه دستیابی به قابلیت تغییر طراحی خواهد شد.
مقدمه
امروزه یکی از مهمترین ویژگی‌های هر سیستم نرم‌افزاری، کیفیت می‌باشد. با پیشرفت‌های انجام شده و گسترش ابزار‌های گوناگون برای توسعه نرم‌افزار، توسعه نرم‌افزار‌هایی که کارکرد‌های مورد نظر مشتریان را برآورده سازند، امری آسان و سریع گشته است. در حال حاضر، تفاوت بین دو نرم‌افزار را توانایی نرم‌افزار‌ها در برآورده ساختن ویژگی‌های کیفی مورد انتظار تعیین می‌کند.
معماری نرم افزارِ یک برنامه یا سیستم کامپیوتری، ساختار یا ساختارهایی از سیستم می باشد، که در برگیرنده اجزاء، صفات قابل مشاهده آن اجزا و ارتباط بین آنها باشد[Bass 03]  . معماری نرم‌افزار شامل اولین تصمیمات طراحی سیستم می‌باشد و این تصمیمات زیربنای فعالیت‌های طراحی، پیاده‌سازی، استقرار و نگهداری سیستم می‌باشد. همچنین معماری نرم‌افزار، اولین عنصر قابل ارزیابی در فرایند توسعه نرم‌افزار می‌باشد[Bass 03]  . بنابراین برای طراحی سیستمی که نیاز‌های کیفی مورد نظر را برآورده سازد، تولید معماری نرم‌افزار اولین گام در دستیابی به کیفیت در نرم‌افزار و همچنین ارزیابی ویژگی‌های کیفی است.
در مدل های فرایند توسعه نرم افزار مبتنی بر معماری  معمولاً ابتدا نیاز های کیفی سیستم تعیین شده و سپس معماری نرم افزار مربوطه طراحی می گردد. پس از طراحی معماری، می توان به ارزیابی آن پرداخت و تغییرات لازم را در طراحی مورد نظر ایجاد داد. بنابراین دو بخش اساسی در مدل های فرایند توسعه نرم افزار مبتنی بر معماری، بخش های طراحی و ارزیابی معماری نرم افزار می باشند. این دو بخش در ارتباط مستقیم با یکدیگر می باشند و هر یک مکمل دیگری می باشد. بنابراین فرایند طراحی معماری را می توان شامل ساخت معماری نرم افزار، ارزیابی آن و اصلاح معماری پیشنهادی دانست.
در این گزارش، هدف بررسی روش های موجود در طراحی معماری نرم افزار بر اساس ویژگی های کیفی مورد نظر مشتریان و بررسی نحوه خودکار سازی فرایند طراحی معماری با ارائه ابزار هایی برای این منظور می باشد. ادامه مطالب گزارش به این صورت طبقه بندی شده اند. در بخش ۲ توضیح مختصری در ارتباط با معماری نرم افزار و مفاهیم مرتبط با آن ارائه می شود. این مفاهیم در ادامه مطالب گزارش به کار گرفته خواهند شد. در بخش ۳ طراحی معماری نرم افزار، ویژگی های یک طراحی خوب و عوامل تاثیرگذار در طراحی معماری مورد بررسی قرار خواهند گرفت. در بخش ۴ روش های طراحی معماری نرم افزار مورد بررسی قرار خواهند گرفت. در بخش ۵ خلاصه و  نتیجه گیری ارائه خواهد شد. در بخش ۶ مراجع مورد استفاده در این گزارش معرفی می گردد.
۲ معماری نرم افزار چیست ؟
برای معماری نرم‌افزار، تعریفی که به طور عمومی پذیرفته شده باشد، وجود ندارد. افراد مختلف، معماری نرم‌افزار را به اشکال گوناگون تعریف کرده‌اند. این تعاریف، از لحاظ ظاهری متفاوتند ولی به مفهوم مشترکی اشاره می‌کنند.
در [Bass 03] معماری نرم افزار به صورت زیر تعریف شده است :
معماری نرم افزار یک برنامه یا سیستم کامپیوتری، ساختار یا ساختارهایی از سیستم می باشد، که در برگیرنده اجزاء، صفات قابل مشاهده آن اجزا و ارتباط بین آنها باشد.
از تعریف فوق می توان به نتایج زیر دست یافت :
• معماری، اجزای نرم افزار را تعریف می نماید. همچنین در این تعریف، از جزئیاتی از اجزا، که در نحوه استفاده و ارتباط با اجزای دیگر کاربردی ندارند؛ صرف نظر می گردد.
• هر سیستم نرم افزار شامل چندین ساختار می باشد؛ و هیچ یک از این ساختارها، به تنهایی معماری نرم افزار نمی باشد. بلکه این ساختارها در کنار یکدیگر معماری نرم افزار را تشکیل می دهند.
• هر سیستم نرم افزاری دارای یک معماری می باشد. (زیرا هر سیستم نرم افزاری دارای اجزایی است که این اجزا با یکدیگر دارای رابطه می باشند).
• رفتار هریک از اجزاء، بخشی از معماری نرم افزار می باشد. (زیرا این رفتار در نحوه ارتباط بین اجزا تاثیرگذار است.)
• معماری نرم افزار باید قابل ارزیابی باشد تا بتوان از روی آن تشخیص داد سیستم مورد نظر بر پایه معماری انتخاب شده نیازهای خود را برآورده خواهد کرد یا خیر.
علاوه بر تعاریف ارائه شده در [Bass03] تعاریف گوناگون دیگری نیز برای معماری نرم افزار ارائه شده است که در اینجا به برخی از آنها اشاره خواهیم کرد :
در [IEEE00]معماری نرم افزار به صورت زیر تعریف شده است :
معماری نرم‌افزار، سازمان زیربنایی سیستم می‌باشد، که در قالب اجزا  و روابط بین آنها و همچنین روابط آنها با محیط، بیان شده است و برای طراحی و تکامل آن اصولی وجود دارد.
در این نوع تعریف، فرایند تولید معماری، عضوی از معماری در نظر گرفته شده است. ( زیرا قوائد و اصول طراحی و تکامل نیز عضوی از معماری در نظر گرفته شده اند.‌) در حالی که این موارد جزء معماری محسوب نمی‌گردند. معماری هر سیستم نرم‌افزاری می‌تواند بدون توجه به نحوه تولید آن مشخص و ارزیابی گردد.
در [Booch 98]  معماری نرم افزار مجموعه‌ای از تصمیمات مهم درباره ساختار سیستم نرم‌افزاری ، انتخاب اجزاء ساختاری و ارتباطات بین آنها و همچنین مشخص نمودن نحوه همکاری این اجزاء با یکدیگر می‌باشد. وقتی این اجزاء در کنار یکدیگر سیستم بزرگی را تشکیل دهند معماری نرم افزار به وجود خواهد آمد.
در [Garlan 93]، معماری نرم‌افزار سطحی از طراحی تعریف شده است که دارای ویژگی‌های زیر می‌باشد :
• ورای الگوریتم و ساختمان داده طراحی شده باشد.
• شامل ساختار کلی سیستم، ساختار‌های کنترلی عمده، پروتکل‌های ارتباطی، اختصاص کارکرد‌ها به اجزاء، توزیع فیزیکی اجزاء باشد.
• ترکیبی از اجزاء طراحی باشد که از بین گزینه‌های طراحی موجود انتخاب شده است.

در تعاریف ارائه شده توسط [Booch 98] و [Garlan 93]، از معماری به عنوان ساختار کلی سیستم نام‌ برده شده است. باید توجه داشت، ضعف این تعریف نسبت به تعریف ارائه شده توسط [Bass 03] در محدود کردن ساختار سیستم به تنها یک ساختار می‌باشد. در حالی که سیستم برای مشخص کردن معماری، دارای ساختار‌های گوناگون باشد.
در [RUP 03] معماری نرم‌افزار سازمان یا ساختار اجزاء اصلی سیستم که از طریق واسط‌هایی با هم ارتباط برقرار می‌کنند؛ می‌باشد به طوری که هر یک از اجزاء از اجزاء کوچکتری تشکیل شده که این اجزاء کوچک نیز با یکدیگر ارتباط دارند. در این تعریف نیز، به ساختار‌های گوناگون اشاره نشده است. گرچه در [RUP 03] در مرحله طراحی معماری نرم‌افزار، ساختار‌ها یا دیدگاه های مختلفی برای معماری معرفی شده است.

دیدگاه ما نسبت به معماری، دیدگاه [Bass 03] می‌باشد. یکی از نکات مهم در این تعریف، امکان ارائه ساختار‌های گوناگون برای معماری می‌باشد. این ساختار‌ها نباید محدود به چندین ساختار پیش فرض باشند. به عنوان مثال برای تولید معماری یک سیستم امن، می‌توان مدل امنیتی سیستم را نیز عضو معماری قرار داد. زیر بررسی و ارزیابی آن قبل از مرحله پیاده سازی بسیار حیاتی می‌باشد.

۲-۱ تعاریف پایه در معماری نرم افزار
در این بخش به بررسی برخی از مفاهیم پایه در معماری نرم افزار خواهیم پرداخت. در بخش های بعدی از این مفاهیم پایه استفاده زیادی خواهد شد.
الگو های معماری یا سبک های معماری
الگوهای معماری   یا سبک  های معماری  شامل شرحی از اجزاء و نوع روابط بین آنها می باشد به نحوی که تعدادی قانون برای معرفی اجزاء و نحوه ارتباط بین آنها، مشخص گردد. [Bass 03]
به عنوان مثال client-server یک الگوی معماری است که مشخص می کند سیستم دارای دو جزء می باشد و این دو جزء تحت پروتکل خاصی با یکدیگر ارتباط دارند.
هر الگوی معماری در برگیرنده تعدادی معیار کیفی  می باشد و معمار نرم افزار بر اساس نیازهای کیفیتی مورد نظر، الگوی معماری مناسب را انتخاب می نماید.
در بسیاری از موارد از سبک‌های معماری، به جای الگوهای معماری استفاده می گردد.
از دیدگاه ما الگو‌های طراحی باید بتوانند یک یا چند نیاز کیفی را برآورده نمایند. زیرا درصورتی که تنها کارکرد مد نظر باشد بدون استفاده از الگوی خاصی می‌توان به آن دست یافت.

مدل مرجع
مدل مرجع، تقسیم بندی و تجزیه کارکردهای مختلف یک سیستم به همراه جریان داده های بین هریک از بخش‌ها می باشد. در حقیقت مدل مرجع، تقسیم بندی یک مسئله مشخص به اجزاء می‌باشد به گونه ای که این اجزا توانایی حل مسئله را داشته باشند. به عنوان مثال، مدل مرجع برای یک نرم افزار سیستم عامل، شامل بخش‌هایی نظیر : مدیریت حافظه، مدیریت دیسک، مدیریت فعالیت‌ها و … می‌باشد.

معماری مرجع
معماری مرجع، مدل مرجعی می باشد که به اجزای نرم افزاری نگاشت شده است. در حقیقت در معماری مرجع، جایگاه هریک از کردهای سیستم در قالب اجزای نرم افزاری تشکیل دهنده سیستم مشخص شده است. هر جزء نرم افزار در این مدل ممکن است قسمتی از یک کارکرد یا چندین کارکرد را پیاده سازی نماید. به عنوان مثال برای یک سیستم‌عامل، مدیریت حافظه توسط جزء هسته انجام شود. مدیریت دیسک توسط جزء مدیر دیسک و هسته انجام شود و …
ارتباط بین الگوهای معماری، مدل مرجع و معماری مرجع در شکل ۱ نمایش داده شده است.
شکل ۱ –  ارتباط بین الگوی معماری، مدل مرجع و معماری مرجع

۲-۲ دیدگاه های معماری
سیستم های مدرن و امروزی به اندازه ای پیچیده هستند که یه ساختار و دیدگاه واحد، توانایی نمایش همه جنبه های آنها را ندارد.[Bass 03] بنابراین برای نمایش معماری یک سیستم نرم افزاری از دیدگاه های مختلف استفاده می کنیم. یک ساختار یا دیدگاه معماری، نمایش مجموعه ای از اجزای معماری مرتبط با یکدیگر و ارتباط بین این اجزا می باشد.

دیدگاه Bass
بر اساس طبقه بندی ارائه شده در [Bass 03] ساختارهای معماری نرم افزار قابل دسته بندی از سه گروه عمده به شرح زیر می باشند:
• ساختار ماژول‌ها
در این ساختار، اجزاء تشکیل دهنده ماژول ها هستند. ماژول، یک واحد پیاده سازی شده از سیستم می‌باشد. ساختار ماژول‌ها نمایشی مبتنی بر کد  از سیستم می باشد. هر ماژول شامل طیفی از وظایف  می‌باشد. در ساختار ماژول‌ها، بیشترین تاکید بر نحوه پخش شدن وظایف مختلف بر روی ماژول‌ها و نحوه ارتباط ماژول‌ها با یکدیگر است. در این ساختار تاکید خاصی روی ساختار‌های اجرایی نمی‌شود.
• ساختار اجزاء و رابط‌ها
در این دیدگاه، اجزاء تشکیل دهنده واحد‌های در حال اجرا  می باشند(واحد‌های محاسباتی). همچنین رابط‌ها نحوه ارتباط و گفتگوی بین اجزاء را نشان خواهند داد. این ساختار مشخص کننده اجزای مهم اجرایی و نحوه ارتباط آنها با یکدیگر است. همچنین این ساختار مواردی نظیر : مهمترین محل‌های ذخیره اطلاعات، نحوه تکرار داده‌ها، اجزایی که به طور موازی اجرا می‌گردند، می‌باشد.
• ساختار تخصیص منابع
این ساختار ارتباط بین اجزاء نرم افزاری و اجزائی که در محیط خارجی تولید و استقرار نرم افزار وجود دارند را نشان می دهد. این ساختار، نحوه استقرار اجزاء برنامه روی پردازنده‌ها، فایل‌های مربوط به هریک از بخش‌های برنامه نرم‌افزاری در طول پیاده‌سازی، اجرا و تست و نحوه اختصاص وظایف پیاده‌سازی به تیم را مشخص می‌نماید.
در این دیدگاه، از ابزار UML استفاده نشده ولی از لحاظ مفهومی قابلیت پیاده سازی با استفاده از UML وجود دارد.

دیدگاه ۴+۱
این دیدگاه در [Kruchten 95] ارائه شده و امروزه به عنوان استاندارد در IEEE 1471 [IEEE 00] مطرح می‌باشد. در این دیدگاه، ساختارهای معماری به صورت زیر طبقه بندی شده اند :
• Logical View
• Process View
• Deployment View
• Implementation View
• Use-case View
همچنین این دیدگاه در [RUP 03] نیز به عنوان استاندارد توسعه معماری نرم افزار معرفی گردیده است. پایه این دیدگاه متدولوژی شیء گرا و ابزار استفاده از آن UML می باشد. برای استفاده بهینه از این دیدگاه پیشنهاد می شود که مدل فرایند انتخابی به صورت تکراری و بر پایه RUP انتخاب گردد.

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

    راهنما

    » فراموش نکنید! بخش پشتیبانی مقاله آنلاین ، در همه ساعات همراه شماست

    اطلاعات ارتباطی ما پست الکترونیکی: Article.university@gmail.com

    تماس با پشتیبانی+ ایدی تلگرام 09383646575

    برای سفارشتان از سایت ما کمال تشکر را داریم.

    از اینکه ما را انتخاب نمودید متشکریم.

    معادله فوق را حل نمایید *

    تمام حقوق مادی , معنوی , مطالب و طرح قالب برای این سایت محفوظ است