معماری
پایان نامه مفهوم و دسته بندی معماری ها و جایگاه معماری نرم افزار در آن
![پایان نامه مفهوم و دسته بندی معماری ها و جایگاه معماری نرم افزار در آن](https://prodocfile.ir/images/200353458.jpg)
توضیحات فایل:
پایان نامه مفهوم و دسته بندی معماری ها و جایگاه معماری نرم افزار در آن
- بخشی از متن
- فهرست مطالب
مقدمه
پیشرفت و بزرگتر شدن جامعه بشری در دنیای امروزی و پیچیده تر شدن روابط بین آنها، باعث بوجود آمدن سیستمهای بزرگ و پیچیده در زندگی بشر امروزی شده است. با پیشرفت علم کامپیوتر و وارد شدن آن به بطن زندگی بشر، اکثر سیستمهایی که بشر امروزی با آنها سروکار دارد، به صورت کامپیوتری پیاده سازی می شوند.
زندگی بشر امروزی وابسته به سیستمهای نرم افزاری بزرگ و پیچیدۀ موجود می باشد. سیستمهای شرکتهای هواپیمایی و مسافربری، سیستمهای ارتباطی توزیع شده همانند تلویزیون، تلفنهای معمولی و همراه، سیستمهای بانکداری، سیستمهای مدیریت بورس، سیستمهای عمل جراحی راه دور، سیستمهای کنترل ماهواره های مختلف، سیستمهای معاملات راه دور و هزاران سیستم نرم افزاری دیگر که وجود خلل و نقصی در آنها تاثیرات جبران ناپذیری بر زندگی بشر امروزی خواهد داشت.
در نتیجه یکی از نیازهای حیاتی بشر امروزی اینست که سیستمهای بزرگ و پیچیدۀ موجود، بدون خطا، سریع، با امنیت و کارایی بالا و... در اختیار آنها گیرد. در نتیجه توسعه دهندگان سیستمهای نرم افزاری بزرگ و پیچیده، باید سیستمهایی با چنین ویژگیهایی، در اختیار کاربران قرار دهند.
در نتیجه ارائه سیستمهایی در مقیاس بزرگ که دارای برخی ویژگی ها همچون کارایی بالا، بدون خطا و بدون عیب، سریع و امن و...، نیاز توسعه دهندگان سیستمهای نرم افزاری مقیاس بزرگ می باشد. به این مشخصه ها در حوزه مهندسی نرم افزار نیازهای غیرعملیاتی یا مشخصه های کیفی می گویند.
مهمترین مسئله در توسعه سیستمهای نرم افزاری مقیاس بزرگ، مبحث معماری آن می باشد. معماری، ساختارهای موئلفه ها و زیرسیستمهای یک سیستم مقیاس بزرگ و ارتباط بین آنها می باشد. معماری نرم افزار، یکی از مهمترین حوزه ها در مهندسی نرم افزار است و دلیل آن تاثیر حیاتی معماری در موفقیت توسعه سیستمهای نرم افزاری است.
توسعه یک سیستم نرم افزاری مقیاس بزرگ با ویژگی های مذکور، نیازمند ارائه یک معماری مناسب و کامل برای سیستم نرم افزاری مورد نظر می باشد. در نتیجه ارائه یک معماری درست و مناسب برای چنین سیستمهایی از اهمیت حیاتی برخوردار است.
همیشه بشر از تجربیات قبلی خود یا دیگران در انجام کارهای فعلی بهره جسته است. در زمینه معماری نرم افزار نیز معماران نرم افزار برای ارائه یک معماری مناسب می توانند از تجربیات معماران گذشته و ماهر برای ارائه معماری خود بهره گیرند. امروزه برای سیستمهای گوناگون، معماریهای مختلفی توسط معماران ماهر ارائه شده است. این معماریها به کررات در سیستمهای مختلف مورد آزمایش قرار گرفته و اعتبار و صحت آنها برای استفاده در برخی از سیستمهای نرم افزاری اثبات شده است. به این معماری ها، الگوها یا سبکهای معماری نرم افزار می گویند.
در نتیجه یک معمار نرم افزار برای ارائه یک معماری مناسب، باید به سبکهای معماری موجود در حوزه سیستمی خود آشنایی داشته باشد تا بتواند از آنها برای ارائه یک معماری مناسب استفاده کند. یعنی معمار یک سیستم نرم افزاری برای ارائه یک معماری برای یک سیستم، باید تسلط کافی بر سبکهای معماری نرم افزار و مزایا، معایب و کاربردهای هر یک از آنها داشته باشد.
سبکهای معماری نرم افزار همه روزه توسط افراد و گروههای مختلف ارائه می شوند و هر گروه در حوزه سیستمی خود، به معرفی سبکهای جدید معماری نرم افزار می پردازد. درنتیجه یک معمار نرم افزار برای آشنایی به سبکهای معماری مربوط به حوزه خود، باید در یک دوره تناوب خاص مثلاً هر ماه، سبکهای معماری جدید را جمع آوری، بررسی و تحلیل کند. تا بتواند یک معماری درست و مناسب برای سیستم مورد نظر خود ارائه کند.
از طرفی با وجود سبکهای معماری مختلف برای حوزه های موجود، ممکن است برای یک کاربرد خاص، سبکهای زیادی پیشنهاد شده باشد. در برخی موارد ارائه کنندگان سبکها، روشهایی برای انتخاب یک سبک از بین سبکهای مختلف که توسط خودشان معرفی شده، ارائه می کنند. ولی همیشه این طور نیست و برای سبکهای مختلف که توسط افراد مختلف برای یک حوزه خاص ارائه شده است، روشی برای انتخاب یک سبک وجود ندارد.
از طرفی دیگر، همه روزه بر تعداد سبکهای معماری نرم افزار افزوده می شود و تعداد آنها در حال افزایش می باشد و هیچ کنترل مرکزی و واحد بر آنها وجود ندارد. این امر معماران سیستمهای نرم افزاری را در شناخت و استفاده از سبکها، دچار مشکل می کند یعنی با انباشته شدن سبکهای معماری نرم افزار، کار معماران نرم افزار در انتخاب یک سبک، خیلی مشکل خواهد شد.
در نتیجه می توان مشکلات موجود برای ارائه یک معماری را به صورت زیر بیان کرد:
1- با افزایش روز افزون سبکهای معماری نرم افزار، هیچ کنترل مرکزی و واحد برای آنها وجود ندارد. و در ارائه سبکهای نوعی پراکندگی وجود دارد.
2- برای سبکهای ارائه شده توسط گروههای مختلف، روشهای انتخاب و ارزیابی واحدی وجود ندارد.
3- برای ارائه یک سبک معماری نرم افزار به صورت یک مستند، روشی استاندارد وجود ندارد که همه از این استاندارد تبعیت کنند.
4- عدم وجود یک سری از مشخصه های کیفی استاندارد که همه ارائه کنندگان سبکها از آنها برای ارائه روشهای ارزیابی خود استفاده کنند.
5- به دلیل وجود سبکهای مختلف، یک معمار نرم افزار در انتخاب یک سبک معماری دچار سردرگمی خواهد شد.
و دهها مشکل دیگر که با ارائه روز افزون سبکهای معماری نرم افزار به صورت پراکنده و عدم کنترل مرکزی، معماران نرم افزار در استفاده از سبکهای معماری، امروزه و در آینده به آن دچار خواهند شد.
برای حل مشکلات ذکر شده تلاشهایی توسط گروههای مختلف انجام گرفته است و مبحث دسته بندی سبکهای معماری بوجود آمده است. برای دسته بندی سبکهای معماری نرم افزار روشهای مختلفی تاکنون ارائه شده است. دسته ای از روشها، سبکهای معماری نرم افزار را بر اساس نوع سبک آنها دسته بندی می کنند. یعنی ابتدا یک دسته بندی از انواع سبکهای معماری ارائه کرده سپس سبکهای معماری را در این دسته بندی قرار می دهند. ما به این نوع دسته بندی ها، دسته بندی موضوعی می گوییم. برخی دیگر، سبکها را بر اساس نوع سیستم مورد کاربرد آن سبک، دسته بندی می کنند. یعنی ابتدا یک دسته بندی از انواع سیستمهای نرم افزاری ارائه کرده، سپس سبکهای معماری را در این دسته بندی قرار می دهند. ما به این نوع دسته بندی، دسته بندی سیستمی می گوییم. سوالی که در این زمینه مطرح می شوند، اینست که آیا این روشها، مشکلات موجود را حل می کنند. یعنی با دسته بندی سبکها می توان مشکل معماران و پراکندگی سبکهای ارائه شده را حل کرد.
آنچه مسلم است، صرف دسته بندی سبکها به روش موضوعی یا سیستمی مشکلات موجود به طور کامل رفع نخواهد شد. به عنوان مثال مشکلاتی مانند ارائه پراکنده سبکها بدون کنترل مرکزی، عدم مستند سازی استاندارد سبکها، عدم وجود نحوه ارزیابی و انتخاب سبکهای همنوع و... هنوز پا برجا هستند.
در نتیجه عوامل دیگری نیز باید در این دسته بندی ها لحاظ گردند. به عنوان مثال نحوه ارزیابی سبکها که باید برای تمامی سبکها، روشهای ارزیابی با سبکهای همنوع خود ارائه شود یا روشی استاندارد برای مستند کردن سبکها در این دسته بندی ها وجود داشته باشد.
در نتیجه برای رفع مشکلات موجود، نیاز به یک استاندارد سازماندهی برای کلیه سبکها داریم که بر اساس این استاندارد بتوانیم کلیه سبکهای موجود و سبکهایی را که در آینده ارائه خواهد شد، سازماندهی کنیم. درنتیجه اگر توسعه چنین استانداردی را به عنوان یک سیستم در نظر بگیریم، می توانیم از روشهای توسعه سیستمها همانند مدلهای موازی یا فازبندی شده مثل RUP[1]، برای توسعه و تکمیل این استاندارد استفاده کنیم.
برای توسعه چنین استانداری می توان مراحل زیر را بر اساس متدولوژی RUP جنین تعریف کرد.
1- فاز اول شناخت (Inception): در این فاز به بررسی و شناخت مسئله موجود پرداخته و کلیه مفاهیم مورد نیاز برای آن را مورد بررسی قرار می دهیم. به طوری که دید درستی از مسئله و آنچه می خواهد داشته باشیم. در حقیقت مسئله مورد نظر، تعریف و مورد بررسی قرار می گیرد و مفاهیم مورد استفاده در مسئله شناخته می شوند.
با توجه به مسئله مورد نظر که توسعه یک استاندارد برای سازماندهی سبکهای معماری نرم افزار می باشد، در این فاز باید کلیه مفاهیم مورد نیاز برای توسعه این استاندارد شناخته شود. مفاهیمی که باید شناخته شود، به صورت زیر خواهد بود.
1-1- بررسی مفهوم معماری و دسته بندی های آن: در این مرحله به بررسی مفهوم معماری در حالت کلی پرداخته و بعد از آشنایی با مفهوم آن به بررسی انواع معماری های موجود می پردازیم. در ادامه جایگاه معماری نرم افزار در این دسته بندی را مشخص می نماییم.
1-2- بررسی مفهوم و تعریف معماری نرم افزار: در این مرحله به بررسی مفهوم معماری نرم افزار می پردازیم و با اشاره به تعریف معماری نرم افزار، سعی می کنیم درکی واضح و بدون ابهام از معماری داشته باشیم.
1-3- بررسی مشخصه های کیفی در معماری نرم افزار: با توجه به اهمیت مشخصه های کیفی در معماری نرم افزار و اینکه هدف اصلی معماری، دستیابی به میزان مطلوبی از این مشخصه ها است، در نتیجه باید مفهوم، تعریف و نحوه اندازه گیری هر یک از مشخصه های کیفی مورد بررسی قرار گیرد.
1-4- بررسی سبکها و الگوهای معماری نرم افزار: با توجه به مسئله مورد بررسی که توسعه یک استاندارد برای سازماندهی سبکهای معماری نرم افزار می باشد، باید مفهوم و تعریف سبک معماری مورد بررسی قرار گرفته و برای آشنایی بیشتر با آنها، برخی از سبکهای معماری نرم افزار را مطالعه و مورد بررسی قرار دهیم.
2- فاز دوم تکوین (Elaboration): در این فاز باید نیازمندیهای سیستم مورد نظر به صورت کامل شناخته شده و مورد تحلیل قرار گیرند. برای تحلیل نیازمندیها ابتدا باید فرایندهای توسعه سیستم را پیدا یا معرفی کرده سپس آنها را به موردهای کاربرد شکسته و با معرفی سناریو برای هر یک از آنها، گروههای کاری تشکیل شده و موردهای کاربرد را مورد تحلیل قرار دهند.
برای سیستم مورد نظر یعنی ارائه یک استاندارد برای سازماندهی سبکهای معماری نرم افزار مراحل زیر را پیشنهاد می دهیم.
2-1- تحلیل نیازمندی های مسئله: در این مرحله بر اساس شناختی که در فاز قبل از مفاهیم مرتبط با موضوع بدست آمده است، نیازمندیهای مورد نیاز مسئله مطرح می شود. در این مرحله روشهای قبلی نیز مورد بررسی قرار خواهد گرفت و بر اساس روشهای قبل، ایده ای برای توسعه این سیستم ارائه می شود.
2-2- بدست آوردن فرایندهای مورد نیاز سیستم: در این مرحله باید فرایندهای مورد نیاز برای توسعه سیستم و سازماندهی مذکور ارائه شود. هر یک از فرایندها تفضیل شده و برای هر یک پیشنهاداتی ارائه شود.
چکیده 3
مقدمه. 14
فصل اول
مفهوم و دسته بندی معماری ها و جایگاه معماری نرم افزار در آن. 20
1-1 مقدمه 20
1-2 تاریخچه معماری 20
1-3 مفهوم و تعریف معماری.. 21
1-4 چارچوبهای معماری.. 22
1-4-1 چارچوب معماری Zachman. 22
1-4-2 چارچوب معماری FEAF. 23
1-4-3 چارچوب معماری C4ISR.. 23
1-5 چارچوب ها و متدولوژی ها 23
1-6 دسته بندی معماری ها 25
1-6-1 معماری سیستم، معماری نرم افزار 25
1-6-2 معماری سازمان 26
1-6-3 معماری کسب و کار 26
1-6-4 معماری اطلاعات.. 27
1-6-5 معماری سیستمهای کاربردی.. 27
1-6-6 معماری داده 28
1-6-7 معماری تکنولوژی.. 28
1-7 معماریهای دیگر 30
فصل دوم
مفهوم معماری نرم افزار و مقایسه ای تحلیلی بر تعاریف آنها 32
2-1 مقدمه 32
2-2 مفهوم معماری نرم افزار 32
2-3 تعاریف معماری نرم افزار 33
2-4 دلایل وجود تعاریف مختلف برای معماری نرم افزار 35
2-4-1 وجود دیدگاهها و رویکردهای متفاوت.. 35
2-4-2 کیفی بودن شناسه "سطح بالا بودن" در مفهوم معماری.. 36
2-4-3 تفاوت در کلمات مورد استفاده در تعاریف... 36
2-5 ارائه جدول اجزاء تشکیل دهنده تعاریف.. 36
2-5-1 اجزاء معماری نرم افزار و منطق انتخاب اجزاء 37
2-5-2 ارتباط های بین اجزاء معماری نرم افزار 38
2-5-3 مجموعه اجزاء معماری نرم افزار و ارتباط بین آنها 39
2-6 تعریف و مقایسه پارمترهای متناظر در چارچوب.. 40
2-6-1 رابطه، ارتباط، تعامل، اتصال.. 41
2-6-2 اجزاء نرم افزاری، موئلفه، زیرسیستم. 42
2-6-3 خصوصیت، واسط، رفتار 44
2-6-4 ساختار، سازماندهی، چارچوب.. 45
فصل سوم
مفهوم، تعریف و سنجش مشخصه های کیفی در معماری نرم افزار 47
3-1 مقدمه 47
3-2 مفهوم کیفیت نرم افزار و مشخصه های کیفی.. 47
3-3 تعریف کیفیت در نرم افزار و مشخصه های کیفی.. 49
3-4 Observable via Execution 50
3-5 Not Observable via Execution 50
3-6 معرفی برخی از صفات کیفی نرم افزار بر اساس دسته بندی [Bass 03] 52
3-7 صفات دسته اول: صفات کیفی سیستمی.. 53
3-7-1 Availability 54
3-7-2 Performance 54
3-7-3 Security 55
3-7-4 Functionality 55
3-7-5 Usability 56
3-7-6 Modifiability 56
3-7-7 Portability 57
3-7-8 Reusability 57
3-7-9 Integrability 58
3-7-10 Testability. . 58
3-8 صفات دسته دوم: صفات کیفی کسب و کار 59
3-8-1 Time to Market 59
3-8-2 Cost and benefit 59
3-8-3 Projected lifetime of the system 59
3-8-4 Targeted Market 59
3-8-5 Rollout schedule 59
3-8-6 Integration with legacy systems 60
3-9 صفات دسته سوم: صفات کیفی معماری.. 60
3-9-1 Conceptual Integration 60
3-9-2 Correctness and Completeness 60
3-9-3 Buildability 60
3-10 Trade-Off موجود بین صفات کیفی.. 60
فصل چهارم
سبک ها و الگوهای معماری نرم افزار و نحوه ارزیابی و انتخاب آنها 64
4-1 مقدمه و تاریخچه 64
4-2 تعریف سبک معماری.. 65
4-2-1 تعاریف مختلف سبک معماری نرم افزار 65
4-3 معرفی برخی سبک های متداول. 65
4-3-1 سبک های متمرکز روی داده 66
4-3-2 سبک های جریان داده 67
4-3-3 سبک های ماشین مجازی.. 68
4-3-4 سبک های فراخوانی و بازگشت... 69
4-3-5 سبک های موئلفه های مستقل.. 71
4-3-6 سبک های چند ریختی.. 72
4-4 الگوهای معماری نرم افزار 73
4-5 سازماندهی الگوها 73
4-5-1 الگوهای پیاده سازی.. 75
4-5-2 الگوهای طراحی 75
4-5-3 الگوهای معماری.. 75
4-6 الگوها و سبک ها 77
4-7 ارزیابی و انتخاب یک سبک معماری نرم افزار 77
4-7-1 پارامترهای ارزیابی سبکها 77
4-7-2 جدول ارزیابی سبکها 77
4-7-3 تکمیل جدول ارزیابی سبکها 78
4-7-4 ارائه الگوریتم استفاده از جدول.. 78
4-7-5 مشکلات موجود. 80
فصل پنجم
طرح مشکل موجود، سوابق، راهکارها و کارهای انجام شده 82
5-1 مقدمه 82
5-2 طرح مشکل موجود در سبکهای معماری نرم افزار 82
5-3 دسته بندی های سبکهای معماری.. 84
5-3-1 دسته بندی های موضوعی.. 84
5-3-2 دسته بندی سبکهای معماری بر اساس [Clements 02-1] 86
5-3-3 دسته بندی های سیستمی.. 89
فصل ششم
ارائه یک استاندارد برای سازماندهی سبکهای معماری نرم افزار 93
6-1 مقدمه 93
6-2 ورودی و خروجی های یک استاندارد سازماندهی سبکها 93
6-3 بررسی جنبه های موجود برای ارائه یک استاندارد سازماندهی.. 94
6-3-1 دسته بندی های سیستمی.. 94
6-3-2 دسته بندی های موضوعی.. 94
6-3-3 روشهای ارزیابی سبکهای معماری نرم افزار 95
6-3-4 روشهایی استاندارد برای مستند کردن و جمع بندی سبکها 95
6-4 اجزاء استاندارد سازماندهی سبکها 97
6-4-1 دسته بندی پیشنهادی برای کلیه سبکهای معماری نرم افزار 97
6-4-2 کاتالوگ مستند سازی کلیه سبکهای معماری نرم افزار 98
6-5 معرفی فرایند ایجاد استاندارد سازماندهی سبکها 99
6-6 فاز اول: تهیه استانداردهای مورد نیاز 100
6-6-1 قدم اول: ارائه یک استاندارد برای دسته بندی انواع سیستم های نرم افزاری.. 101
6-6-2 قدم دوم: ارائه یک استاندارد برای دسته بندی انواع سبکهای معماری نرم افزار 103
6-6-3 قدم سوم: ارائه یک استاندارد برای مستند کردن هر سبک معماری نرم افزار 105
6-6-4 قدم چهارم: ارائه یک استاندارد برای دسته بندی انواع مشخصه های کیفی.. 107
6-7 فاز دوم: تهیه دسته بندی استاندارد و قالب استاندارد کاتالوگ سبکها 109
6-7-1 قدم اول: ارائه یک قالب دسته بندی استاندارد برای سبکهای معماری نرم افزار 110
6-7-2 قدم دوم: ارائه یک قالب استاندارد برای کاتالوگ کلیه سبکهای معماری نرم افزار 112
6-8 فاز سوم: جمع آوری و مستند کردن سبکهای موجود و ارائه روشهای ارزیابی.. 113
6-8-1 قدم اول: اضافه کردن سبکهای دسته بندی های موضوعی به استاندارد. 113
6-8-2 قدم دوم: اضافه کردن سبکهای دسته بندی های سیستمی به استاندارد. 113
6-8-3 قدم سوم: تهیه یا ارائه مدل ارزیابی برای سبکهای هر نوع سبک/نوع سیستم. 114
6-9 فاز چهارم: ارائه طرحهای کاربرد، توسعه و سازگاری استاندارد 114
6-9-1 قدم اول: ارائه طرح استاندارد ارائه سبکهای جدید. 114
6-9-2 قدم دوم: ارائه طرحها و قوانین توسعه استانداردهای موجود. 114
6-10 جمع بندی کلی استاندارد ارائه شده 115
فصل هفتم
مدلسازی فرایندهای استاندارد ارائه شده، بر اساس UML. 118
7-1 مقدمه 118
7-2 فرایند مدلسازی فرایند. 118
7-3 مدل کردن منابع کسب وکار 119
7-4 مدل کردن اهداف کسب وکار 120
7-5 تعیین Actorهای کسب وکار 120
7-6 مدل جریانهای کاری موجود در استاندارد 121
7-7 جریانهای کاری فاز اول. 122
7-7-1 فاز اول - قدم اول.. 122
7-7-2 فاز اول- قدم دوم. 123
7-7-3 فاز اول - قدم سوم. 123
7-7-4 فاز اول - قدم چهارم. 124
7-8 جریانهای کاری فاز دوم 124
7-8-1 فاز دوم - قدم اول.. 125
7-8-2 فاز دوم - قدم دوم. 125
7-9 جریانهای کاری فاز سوم 126
7-9-1 فاز سوم - قدم اول.. 127
7-9-2 فاز سوم - قدم دوم. 127
7-9-3 فاز سوم - قدم سوم. 128
7-10 جریانهای کاری فاز چهارم 128
7-10-1 فاز چهارم - قدم اول.. 129
7-10-2 فاز چهارم - قدم دوم. 129
7-11 مدل خروجی های کسب وکار 130
فصل هشتم
خلاصه، نتیجه گیری و کارهای آینده 132
8-1 مقدمه 132
8-2 خلاصه و نتیجه گیری.. 132
8-3 کارهای آینده 133
8-4 در نهایت 135
منابع و مراجع. 136
فهرست جدول ها
فهرست شکل ها
پروداک فایل
تسهیل در دسترسی به فایل مورد نظر در فروشگاه های فایل دارای نماد اعتماد الکترونیکی
جستجو و دریافت سریع هر نوع فایل شامل: دانشگاهی: مقاله، تحقیق، گزارش کارآموزی، بررسی، نظری، مبانی نظری
آموزشی و تدریسی: پاورپوینت، فایل، پروژه، درسنامه، طرح درس روزانه، درس پژوهی، یادگیری، آموزش، معلم، دانشآموزان، سناریوی آموزشی، بکآپ کودک.
فناوری و دیجیتال: دانلود، بکآپ، ppt، اتوکد، قابل ویرایش، حسابداری، سامسونگ دیجیتال، pdf.
روانشناسی و علوم تربیتی: پاورپوینت، طرح درس نویسی
هنری و طراحی: معماری، عکاسی، وکتور، طراحی
سایر: تم تولد، بکآپ تولد، ابتدایی، خرید دانلود رایگان، اصول، کورل، بکآپ آتلیه