توضیحات

توجه : به همراه فایل word این محصول فایل پاورپوینت (PowerPoint) و اسلاید های آن به صورت هدیه ارائه خواهد شد

 تحقیق معماری نرم افزار دارای 131 صفحه می باشد و دارای تنظیمات و فهرست کامل در microsoft word می باشد و آماده پرینت یا چاپ است

فایل ورد تحقیق معماری نرم افزار  کاملا فرمت بندی و تنظیم شده در استاندارد دانشگاه  و مراکز دولتی می باشد.

توجه : توضیحات زیر بخشی از متن اصلی می باشد که بدون قالب و فرمت بندی کپی شده است

بخشی از فهرست مطالب پروژه تحقیق معماری نرم افزار

چکیده   
فصل اول
معرفی موضوع تحقیق
1-1- مقدمه  
1-2- طرح مسئله  
1-3- تمرکز تحقیق   
1-4-  فعالیت های مرتبط   
1-5- ساختار تحقیق  
فصل دوم
آشنایی با ادبیات تحقیق
2-1- معماری  
2-1-1- معماری نرم افزار   
2-1-2-مراحل فرآیند معماری نرم افزار  
2-1-3- اهمیت معماری نرم افزار  
2-2- تصمیمات معماری  
2-3- ویژگیهای کیفی در معماری نرم افزار   
2-3-1 -انواع ویژگیهای کیفی در معماری نرم افزار  
2-3- 1-1- صفات کیفیتی سیستمی  
2-3-1-2- صفات کیفیتی تجاری  
2-3-1-3-  صفات کیفیتی وابسته  به معماری  
2-3-2- ویژگی های کیفی معماری نرم افزار از نگاهی دیگر  
2-3-3- مدل های کیفیت   
2-3 -4-وجود مصالحه میان ویژگیهای کیفی  
2-4- ارزیابی و تحلیل معماری  
2-5- دلایل ارزیابی معماری نرم افزار  
2-6- نتیجه گیری     
فصل سوم
مروری بر روش¬های تصمیم¬گیری
3-1- فرآیند تصمیم گیری   
3-2- یک معیار در مقابل چند معیار، تعداد پایان¬پذیری گزینه در مقابل تعداد بی¬پایان گزینه   
3-3-  توابع تصمیم¬گیری بر مبنای چندویژگی  
3-3-1- تحلیل سود و هزینه   
3-3-2- روش های ابتدایی   
3-3-2-1- تحلیل موافقان و مخالفان   
3-3-2-2- روش¬های بیش¬کم و بیش¬بیش  
3-3-2-3- روش¬های ربطی و گسسته  
3-3-2-4- روش واژه¬نگاری  
3-3-3- روش هایMAUT   
3-3-3-1- شیوه ساده رتبه¬بندی بر مبنای چندویژگی  
3-3-3-2- میانگین¬های کلی  
3-3-3-3- فرایند سلسله مراتبی تحلیلی  
3-3-4- روش های برتری داشتن  
3-3-4-1- روشELECTERE   ¬
3-3-4-2- روشPROMETHE   ¬
3-3-5- تصمیم گیری گروهی  
3-4 نتیجه گیری  
فصل چهارم
ارائه روشی جهت انتخاب معماری نرم افزار مناسب از میان معماری های کاندید بر اساس مصالحه بین ویژگی های کیفی
4-1- روش پیشنهادی   
4-2- مراحل روش پیشنهادی  
4-2-1- شناسایی تصمیمات طراحی و نیازهای کیفی  
4-2-2- شناسایی کاندیدهای مختلف برای هر تصمیم طراحی  
4-2-3- مقایسه نسبی کاندیدهای مختلف در تأمین هر یک از ویژگیهای کیفی برای هر تصمیم
طراحی   
4-2-4- مقایسه نسبی ویژگیهای کیفی از لحاظ تأمین شدن هر یک از کاندیدها برای هر تصمیم
طراحی  
4-2-5- تعدیل ماتریس QA توسط ماتریس AC برای هر تصیم طراحی  
4-2-6- الویت دهی به نیازهای کیفی   
4-2-7- اعمال اولویت نیازهای کیفی  
4-2-8- محاسبه عدم اطمینان   
4-2-9- نرمالسازی  
4-2-10- انتخاب کاندید مناسب  
4-3- نتیجه گیری  
1-3-4- منافع و محدودیت های بدست آمده  
فصل پنجم
مطالعه موردی
5-1- پروژه Glass Box   
5-2-  تحلیل و بررسی مساله موردی  
5-3- به کار گیری روش پیشنهادی  
5-3-1- مرحله 1و2   
5-3-2- مرحله 3   
5-3-3- مرحله4   
5-3-4- مرحله 5: تعدیل ماتریس QA توسط ماتریس AC برای هر تصمیم طراحی  
5-3-4-1- تعدیل ماتریس QA مربوط به تصمیم طراحی ARCH  
5-3-4-2- تعدیل ماتریس QA مربوط به تصمیم طراحی EVNT  
5-3-4-3- تعدیل ماتریس QA مربوط به تصمیم طراحی AUHT  
5-3-5- مرحله 6و7 : الویت دهی به نیازهای کیفی و اعمال اولویت بر QAO  
5-3-6- مرحله 8: تخمین عدم اطمینان  
5-3-7- مرحله 9: نرمالسازی  
5-3-8- مرحله 10: انتخاب کاندید مناسب  
5-4- نتیجه گیری  
فصل ششم
نتیجه گیری و کارهای آینده
6-1 مروری بر تحقیق  
6-2 دسته بندی روش های متداول در ارزیابی ویژگی های کیفی از لحاظ زمان ارزیابی  
6-3 جایگاه روش ارائه شده در تحقیق  
6-4 کارهای آینده  
فهرست منابع و مراجع  

بخشی از فهرست مطالب پروژه تحقیق معماری نرم افزار

[1]     L. Bass, P. Clements, and R. Kazman, “Software Architecture in Practice”, 2 ed: Addison-Wesley,

[2]     M. Lindvall, R.T. Tvedt, P. Costa, “An Empirically-BasedProcess for Software Architecture Evaluation”, in Empirical Software Engineering, 8(1), p.83-108,

[3]     J.A McCall, “Quality factors”,in Encyclopedia of Software Engineering, J.I. Marciniak (ed),John Wiley &Sons,New York, P. 958-969,

[4]     C. Hofmeister, R. Nord, D. Soni, “Applied Software Architecture”, Addison-Wesley, Reading MA.,

[5]     I. Jacobson, G. Booch, J. Rumbaugh, “The Unified Software Development Process”, Addison-Wesley, Reading MA,

[6]     J. Bosch, “Design & Use of Software Architectures – Adoptingand Evolving a Product Line Approach“, Addison-Wesley, Harlow UK,

[7]     L. Lundberg, et al. “Quality Attributes in Software Architecture Design”, Proceedings of the IASTED 3rd International Conference on Software Engineering andApplications. Oct,

[8]     S.M.Sharafi,” Extending Team Automata to Evaluate Software Architectural Design”. COMPSAC,  p. 393-400, (2008)

[9]     PO.Bengtsson, “Architecture-Level Modifiability Analysis”, ISBN 91-7295-007-2, Blekinge Institute of Technology, Dissertation SeriesNo2002-2,

[10] M. Svahnberg, C. Wholin, and L. Lundberg, “A Quality-Driven Decision-Support Method for Identifying Software Architecture Candidates”, Int. Journal of Software Engineeringand Knowledge Engineering. 13(5),  p. 547-573, ,

[11] T.Al-Neem, I.Gorton, M.A.Babar, F.Rabhi and B.Benatalah, “A quality-driven Systematic Approach for Architecting Distributed SoftwareApplications”, In Proceedings of the 27th International Conference on Software Engineering (ICSE), st.louis, USA,( 2005)

[12] L.Dobrica, E. Niemela, “A Survey on software architecture analysis methods ”, IEEE Transaction on software engineering, Vol 28,NO-7,July

[13] D.E. Perry and A.L. Wolf, “How Do You Define Software Architecture”, Software Engineering Institute (SEI), Carnegie Mellon University,

[14] D.Garlan, M.Shaw, “An Introduction to Software Architecture”, Technical Report, CMU/SEI-94-TR-21,

[15] Technical Report IEEE, “Recommended Practice for Architectural Description of Software Intensive Systems”, IEEE Standards Department, The Architecture Working Group of the Software EngineeringCommittee, P1471-2000, September

[16] J.McGovern, SW.Ambler, ME.Stevens, J.Linn, V.Sharan, EK.Jo, “A Practical Guide to Enterprise Architecture”, Prentice Hall PTR , October 28,

[17] Frederick , Brooks,  “The Mythical Man-Month: Essays on Software Engineering: Anniversary Edition”, Addison-Wesley, ISBN 0-201-83595-9,  A republication of The Mythical Man-Month with four extra chapters,

[18]  H.Astudillo, “Five Ontological Levels to Describe and Evaluate Software Architecture”, Department de Informatics, Universidad Technical Federico Santa Maria Avda.Espaa 1680, Valparaiso, Chile,

[19]  S.Thiel, “A Framework to Improve the Architecture Quality of Software-Intensive Systems”, 2005

[20]  R.Harris, “Introduction to Decision Making”, VirtualSalt,

[21]  D.Baker, D.Bridges, R.Hunter, G.Johnson, J.Krupa, J.Murphy and K.Sorenson, “Guidebook to Decision-Making Methods”, WSRC-IM-2002-00002, Department of Energy, USA,

[22] UK DTLR, “Multi Criteria Analysis: A Manual”, Department for Transport, Local Government and the Regions, UK,

[23] RL.Keeney and H.Raiffa, “Decisions with Multiple Objectives” Performances and Value Trade-Offs, Wiley,New York,

[24] R.E.Steuer, “Multiple Criteria Optimization” Theory, Computation and Application, Wiley, New York,

[25] B.Roy, “Classement et choix en présence de points de vue multiple (la méthode electre)”, RAIRO, 2, p.57-75,

[26] I.Linkov, A.Varghese, S.Jamil,T.P.Seager, G.Kiker and T.Bridges, “Multi-criteria decision analysis: A framework for structuring remedial decisions at the contaminated sites”, In: Linkov, I. and Ramadan, A.B. (Eds.) Comparative Risk Assessment and Environmental Decision Making, Springer, New York, p. 15-54,  2004

[27] W.Edwards, “How to use multiattribute utility measurement for social decisionmaking”, IEEE Transactions on Systems, Man, and Cybernetics, SMC-7, p.  326-340,  1977

[28] Cs. Mészros and T. Rapcsk, “On sensitivity analysis for a class of decision systems”, Decision Support Systems 16, p.231-240,

[29] T. L. Saaty, “The Analytic Hierarchy Process”, McGraw Hill, Inc., New York NY,

[30] T.L. Saaty and L.G.Vargas, Comparison of eigenvalue, logarithmic least squares and least squares methods in estimating ratios., Mathematical Modelling, 5, p. 309-324,

[31] J.Figueira, S.Greco and M.Ehrgott, (Eds), “Multiple Criteria Decision Analysis” State of the Art Surveys, Springer, New York,  2004

[32] J.P. Brans and Ph.Vincke, “A preference ranking organization method”, Management Science, 31,p. 647-656,

[33] J.P.Brans, Ph.Vincke and B.Marechal, “How to select and how to rank projects: The PROMETHEEmethod”, European Journal of Operational Research, 24, p.228- 238,

[34] J.P.Brans and B.Mareschal, “The PROMCALC & GAIA decision support system for multicriteria decision aid”, Decision Support Systems, 12, p.297-310,

[35] P.Cski, T.Rapcsk, P.Turchnyi  and M.Vermes, “Research and development for group decision aid in Hungary by WINGDSS”, a Microsoft Windows based group decision support system., Decision Support Systems 14,p.  205-21, 1995

[36] R.F.Dyer and E.H.Forman, “Group decision support with the Analytic Hierarchy Process”, Decision Support Systems, 8, p. 99-124,

[37] V.S.Lai, K.W.Bo and W.Cheung, “Group decision making in a multiple criteria environment: A case using the AHP in software selection”., European Journal of Operational Research, 137, p. 134-144,

[38] C.Macharis, J.P.  Brans, and B. Mareschal, “The GDSS PROMETHEE Procedure”, Journal of Decision Systems, 7, p.283-307,

[39] T.A. Al-Naeem, et al., “Towards Systemtic Approaches for Designing B2B Applications”, International Journal of Electronic Commerce, Accepted to appear in

[40] K.P. Yoon and C. Hwang, “Multiple Attribute Decision Making: An Introduction: Sage Publications”, 1995

[41] I. Gorton and J. Haack, “Architecting in the Face of Uncertainty: An Experience Report”, Proc. International Conference on Software Engineering,. Edinburgh, Scotland,

[42] سید مهران شرفی ، “ارائه روشی جهت استخراج و ارزیابی ویژگی های غیر وظیفه مندی مبتی بر توصیفات رسمی معماری نرم افزار”،پایان نامه دکتری ، دانشگاه آزاد اسلامی واحد علوم تحقیقات، 1386

[43] وفایی جهان مجید ،فریدون شمس،سعید ستایش”روش احتمالی سنجش ارزش تصمیم های معماری برای ارزیابی معماری نرم افزار”،دوازدهمین کنفرانس بین المللی انجمن کامپیوتر ایران1385

[44] مربم پور کمالی انارکی، “بهبود روش های ارزیابی صفات کیفتی معماری نرم افزار”، پایان نامه کارشناسی ارشد، دانشگاه آزاد اسلامی واحد علوم تحقیقات، 1384

2-1) معماری

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

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

 به طور کلی یک معماری خوب بایستی ویژگی های زیر را دارا باشد[1]

1-     مستندات معماری روشن و قابل فهم باشد

2-     مولفه های آن قابل استفاده مجدد باشد

3-     قابلیت تغییر بالایی داشته باشد

4-     نیازهای تمام سهامداران را تا حد امکان برآورد سازد

2-1-1) معماری نرم افزار

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

   در واقع می توان گفت، معماری نرم افزار چیزی کاملا متفاوت با متدولوژی های به کار گرفته در طراحی نرم افزار نمی باشد بلکه با نمایش وجوه تازه تری از سیستم به عنوان مکمل آنها عمل می کند

   تعاریف متعددی از معماری نرم افزار تا کنون ارائه شده است که این مطلب گواه بر این می باشد که تعریف معماری نرم افزار کار ساده ای نیست، در ادامه چند تعریف از معماری بیان می شود

1)      پری و ولف در سال 1992 معماری نرم افزاری را به این صورت تعریف کرده اند:[13]

            معماری نرم افزار مجموعه ای از اجزاء معماری )طراحی( است که شکل خاصی دارند. این اجزاء معماری               3 دسته اند: پردازشی، داده ای و اتصالی

 2)      شاو و گارلن در سال 1994 اجزاء معماری نرم افزار به صورت مفهومی به موارد ذیل طبقه بندی کردند[14]

           مولفه[1] : یک موجودیت محاسباتی

           متصل کننده[2] : یک اثر متقابل و تعامل بین مولفه ها

           واسط[3] : یک نقطه تعامل بین مولفه ها و متصل کننده ها با محیط های خارجی

3)      بیس و همکاران در سال 1998 معماری را به صورت زیر تعریف کرده است[1]

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

4)      جکبسون و همکاران در سال 1999 چنین تعریفی از معماری ارائه کردند[5]

   معماری مجموعه ای از تصمیمات مهم در مورد سازماندهی یک سیستم نرم افزاری، انتخاب اجزاء  ساختاری و واسط هر یک از آنها که سیستم را تشکیل داده اند، به همراه رفتارهایی از اجزاء که توسط آنها با اجزاء دیگر همکاری می کنند، ترکیب اجزاء ساختاری و رفتاری در زیر سیستمهای بزرگ و در حال رشد و همچنین روشی جهت راهنمایی و  سازماندهی می باشد

5)      IEEEدر سال 2000 از معماری نرم افزار چنین تعریفی ارائه نموده است :[15]

   سازماندهی اساسی یک سیستم که شامل مؤلفه ها، ارتباط بین هر یک از آنها با یکدیگر و با محیط سیستم، و اصولی حاکم بر طراحی و تکامل آن می باشد

6)      امسی گاورن و همکاران در سال 2003 معماری نرم افزار را اینگونه معرفی می کند[16]

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

   به طور کلی در تعریف های ارائه شده از معماری نرم افزار  توسط محققان تمرکز روی مولفه ها و اتصال دهنده ها به عنوان مهمترین اجزاء معماری می باشند. معماری علاوه بر ساختار به رفتار سیستم نیز می پردازد. معماری نرم افزار به بررسی ویژگی های خاص می پردازد که این ویژگی ها معمولاً نیازهای غیر وظیفه مندی یا نیازهای کیفی می باشد

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

  معماری نرم افزار از عوامل متعددی تاثیر می پذیرد که در زیر ذکر شده است[1]

1-     معماری از ذینفعان[4] تاثیر می پذیرند  (مشتریان ، استفاده کننده گان نهایی ، توسعه دهندگان ، مدیر پروژه ، نگهدارندگان و;)

2-     معماری از سازمانهای توسعه دهنده تاثیر می پزیرند

3-     معماری از تجارب معمار اثر می گیرند

4-     معماری از محیط تکنیکی اثر می پذیرند

قابل ذکر است که معماری بر عواملی که از آنها تاثیر می پذیرد ، تاثیر می گذارد

   یکی از مراحل فرایند در تولید سیستم های نرم افزاری ، معماری نرم افزار می باشد. اما نمی توان به صورت دقیق و قطعی مشخص کرد که این مرحله در کدام نقطه از این فرایند قرار دارد اما در حالت کلی معماری بعد از فاز تحلیل و قبل از طراحی می باشد و برای ساخت معماری نرم افزار یک سیستم باید آن را به زیر سیستم ها و واسط های آن ها و ارتباط بین آنها تجزیه کرد. در شکل2-1 فازهای فرایند تولید نرم افزار نشان داده شده است [1]

   همانطور که در شکل 1-2 مشخص می باشد فاز معماری در مرکز فرآیند تولید نرم افزار قرار دارد و با پیشرفت فرایند ، در تکرار های مختلف ، نسخه های مختلفی از معماری ایجاد خواهد شد که هرنسخه جدید از نسخه قبلی خود کاملتر و دقیق تر خواهد بود

    همانطور که در شکل می توان مشاهده کرد برای رسیدن به معماری مطلوب آگاهی از نیازها امری لازم و ضروری است و پس از امکان سنجی و تحلیل نیازها می توان وارد مرحله تولید معماری شد

   اخیراً سازمانهای تولید نرم افزار ، استفاده از معماری را در فرآیند تولیدنرم افزار امری ضروری می دانند و همچنین محققان تلاشهای بیشماری در این زمینه انجام داده اند  به خصوص در دو سال اخیر معماری نرم افزار به عنوان  یک محدوده تحقیقاتی مهم و اصلی در مهندسی نرم افزار خود را مطرح شده است

2-1-2)  مراحل فرایند معماری نرم افزار

   برای ساخت یک معماری نرم افزار که با استفاده از آن بتوان طراحی نرم افزار را تحقق بخشید و عمل ساخت  مدیریت نهایی نرم افزار را دنبال کرد بایستی مراحلی را طی کرد که هر یک از این مراحل در زیر به طور مختصر شرح داده شده است

الف) ایجاد یک مورد کاری[5] برای سیستم

   ساختن مورد کاری بسیار وسیع تر از یک ارزیابی ساده بازار کار مورد نیاز برای یک سیستم است این گام یکی از بهترین گامها در یافتن نیازهای آینده است. در این مرحله سوالاتی معمار سیستم را به خود مشغول می کند مانند

1-     هزینه محصول باید چقدر باشد ؟

2-     هدف تجارت چیست ؟

3-     آیا محدودیتی برای کار با سیستم وجود دارد ؟

   این سوالات تنها توسط یک معمار پاسخ داده نمی شود ولی اگر یک معمار نیز نتواند این سوالات را در مورد کارخود مطرح کند طرح او نمی تواند اهداف تجارت را بدست آورد

ب) یافتن و فهم نیازمندی ها

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

   تکنیک دیگری که به ما کمک می کند که نیازها را پیدا کنیم ساختن یک مدل نمونه اولیه[7]  می باشد ، مدل نمونه اول به مدل کردن ، طراحی واسطه کاربر و تحلیل بهره روی منابع کمک می کند. این روش کمک می کند که بتوانیم سیستم را برای سهامداران واقعی جلوه دهیم و به سرعت در مورد طراحی واسطه کاربر تصمیم بگیریم. علاوه بر فهم نیازمندیها ، ویژگی های کیفی مطلوب شکل معماری را تحت تاثیر قرار می دهد ، این ویژگی ها گاهی با هم در تضاد می باشند و بایستی یک معماری ارائه داده شود که بین این ویژگی ها مصالحه برقرار کند

ج) ساختن یا انتخاب معماری

   در کتاب Fred brooks,mythical man-month به طور واضح راجع به این موضوع بحث می کند که جامعیت معنای و جامعه نگری واژه کلیدی برای طراحی است و آن جامعیت تنها زمانی رخ می دهد که چند فکر برای طراحی معماری سیستم دور هم جمع شود ، یعنی چند معمار با هم در مورد طراحی معماری آن سیستم هم فکری کنند [17]

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

د) نمایش و اعلام معماری

   یک معماری برا ی اینکه بتواند ستون یک طرح و پروژه باشد باید به طور واضح و روشن به همه سهامداران معرفی شود. توسعه دهندگان باید بخشی از کار را که به آن نیز دارند درک کنند ، تست کننده گان باید ساختار کاری که بر عهده گرفته اند را بفهمند و مدیران باید برنامه پیشنهادی برای کار خود را پیدا کنند و در پایان مستند سازی معماری باید آموزنده و روشن وخوانا باشد معمار نیز باید مطمئن باشد که معماری ارائه شونده نیازمندیهای کیفی و رفتاری مطلوب را برآورده می سازد. معماری را می توان به کمک زبان توصیف معماری[8] نمایش داد

ه) تحلیل و ارزیابی معماری

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

و)  پیاده سازی سیستم بر اساس معماری

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

ز) حصول اطمینان از تطبیق پیاده سازی با معماری

   در پایان وقتی که یک معماری ساخته و استفاده شد وارد مرحله نگهداری می شود. در این مرحله باید مطمئن شویم معماری واقعی و ارائه آن با هم مطابقت دارند

2-1-3) اهمیت معماری نرم افزار

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

الف) ارتباط میان سهامداران

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

 ب) تصمیمات زود هنگام طراحی

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

 ج) قابلیت استفاده مجدد در معماری

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

2-2) تصمیمات معماری

   یکی از مسولیت ها معماری اتخاذ تصمیمات معماری است. به وسیله تصمیمات معماری ، معماری سیستم های نرم افزاری آشکار وروشن می شود. تصمیمات معماری ، تصمیماتی هستند که از دیدگاه کلی سیستم اتخاذ می شوند و دامنه وسیعی را در بر دارند ، هر تصمیمی که در محدوده کوچکی گرفته شود معماری نیست بنابراین سطح تصمیمات معماری با تصمیمات طراحی جزئی و پیاده سازی متفاوت است و در سطح بالاتری از تجربه رخ می دهد. در واقع تصمیمات معماری در برگیرنده ویژگی های کلیدی کلان و سطح بالای یک معماری می باشد. این تصمیمات عناصر ساختاری و کلیدی سیستم و همچنین صفات قابل روئیت آنها از خارج و روابط بین آنها را شناسایی می کند. همچنین تعریف می کنند که چگونه نیازمندیهای مهم وابسته به معماری به دست خواهند آمد. جدول 2-1 تصمیمات را بر اساس وسعت تاثیر آنها طبقه بندی می کند[44]

تقسیم بندی از نظر وسعت

   بخشی از تصمیمات در سطح تک تک مولفه هامی باشد و این تصمیمات مربوط به مولفه های محلی[9] می باشد که در محدوده ی کوچکی ساخته می شود و یا از یک منظر محلی ساخته می شود این تصمیمات معماری نیستند ولی بخشی از تصمیمات در سطح کل مولفه ها یا به عبارتی در سطح کل سیستم می باشند[10]. که در محدوده وسیعی ساخته می شوند که این تصمیمات معماری هستند مانند انتخاب سبک ، انتخاب صفات کیفی و;

تقسیم بندی از نظر اثر بخشی :

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

    طبق تقسیم بندی که در بالا ذکر شد می توان تصمیمات را به طور کلی در چهار گروه قرار داد

1-تصمیماتی که در سطح مولفه  می باشند و اهمیت تاثیر کم دارند که جزء تصمیمات معماری نمی باشند

2-تصمیماتی که در سطح کل سیستم می باشند ولی اهمیت کم دارند که جزء تصمیمات معماری نمی باشند

3-تصمیمات محلی که اثرات زیاد روی سیستم دارند که جزء تصمیمات معماری نمی باشند ولی به عنوان مجموعه خطوط راهنما در معماری به حساب می آیند

4-تصمیماتی که در محدوده وسیعی ساخته می شوند و در سطح کل سیستم می باشند و تاثیر زیادی روی سیستم دارند که جزء تصمیمات معماری می باشند. این گروه از تصمیمات تاثیر مهم و اساسی در سیستم دارند

 تصمیمات معماری روی جنبه های مختلف که برخی ازآنها در زیر ذکر شده است اثر گذار است

1-     مشخص نمودن اولویت ها در سیستم  : طبق تصمیمات معماری مشخص می شود که کدام ویژگی کیفی و کدام سبک و کدام الگو و کدام از اولویت بالاتری نسبت به یکدیگر برخوردارند. و اگر بین آنها برخورد[11] باشد بین آنها مصالحه بر قرار می شود و بهترین حالت انتخاب می شود

2-     تجزیه وترکیب سیستم :برای غلبه بر پیچیدگی های سیستم در حال تولید که این پیچیدگی ها توسط تصمیمات معماری مشخص شده است باید سیستم به اجزای کوچکتر تجزیه شود که این اجزاء همان مولفه ها می باشند سیستم بایستی به نحوی به مولفه ها تجزیه شود که هر مولفه به مولفه دیگر وابستگی نداشته باشد و ساختار داخلی هر مولفه مستقل از ساختار داخلی مولفه دیگر باشد مولفه ها می توانند از نتیجه مولفه دیگر استفاده نمایند و سپس با ترکیب این مولفه ها سیستم تولید می شود

3-     ویژگی های سیستم و راههای میانبر : زمانی که تصمیمات معماری اتخاذ می شود ویژگی های سیستم مشخص خواهد شد. در ضمن اخذ این تصمیمات باید سعی شود تصمیماتی که سریع تر ما را به سیستم مطلوب می رساند انتخاب شود

4-     جامعیت سیستم :تصمیمات معماری اگر به گونه ای باشند که مولفه های سیستم به صورت یک پارچه و هماهنگ باشند به جامعیت سیستم کمک می کند

بنابراین طبق مطالبی که در بالا بیان شد معماری مجموعه ای از تصمیمات مهم جهت سازماندهی یک سیستم نرم افزاری ، انتخاب اجزاء سیستم و ساختار این اجزاء و تعاملات بین اجزاء می باشد

2-3) ویژگی های کیفی در معماری نرم افزار

   امروزه سیستم های کامپیوتری در بسیاری از برنامه های کاربردی مورد استفاده قرار می گیرند که باجان و مال انسانها سرو کار دارند ، بنابراین وقوع کوچکترین خطا حین کار در این سیستم ها ممکن است جان و مال بسیاری از انسانها را به خطر بیاندازد. توسعه دهندگان این سیستم ها مسئول درک و فهم نیازهای این برنامه های کاربردی می باشند و بایستی سیستم را به نحوی سازماندهی کنند که نیازهای تعیین شده را برآورده سازد، بر طبق گفته بیس و همکاران در سال 2003 نیازمندیهای سیستم به طور کلی به دو دسته زیر تقسیم می شوند[1]

1- نیازهای وظیفه مندی [12]

عبارت است از توانایی سیستم برای انجام کاری که به آن اختصاص داده شده است

2-نیازهای غیر وظیفه مندی [13]

که به آنها ویژگی های کیفی [14]نیز گفته می شود

سیستم های حساس بایستی نیازهای غیر وظیفه مندی را نیز تامین نماید. تامین این نیازها باعث افزایش کیفیت سیستم خواهد شد

   نیازهای وظیفه مندی و غیر وظیفه مندی (ویژگی های کیفی) متعامد هستند ویژگی های کیفی را می توان با پارامترهای خاص معرفی نمود. این ویژگی های کیفی بایستی توسط معمار لیست شود و به سهامداران معرفی شود تا سهامداران بتوانند در مورد آنها اظهار نظر کنند و اولویت های خود را به اطلاع معمار رسانند، در نهایت معمار معماری را معرفی کند که به بهترین شکل نیازهای سهامداران را تا حد ممکن برآورده سازد [10]

   تمرکز ما  در این بخش بر روی ویژگی های کیفی می باشد. ویژگی ها ی کیفی از لحاظ ارزیابی به دو دسته تقسیم می شوند [44]

1-ویژگی های کیفی قابل مشاهده در زمان اجرا [15]

   این ویژگی ها مشخص می کنند که سیستم در حین اجرا چقدر خوب کار می کند و آیا نتایج مورد نیاز را برآورده می سازد و آیا نتایج را در زمان درست برآورده می سازد یا خیر ؟این  ویژگی های کیفی ویژگی هایی هستند که در طول  اجرا قابل مشاهده می باشند یعنی باید سیستم اجرا شود تا مشخص شود با اجرای سیستم ویژگی های کیفی مورد نیاز سهامداران برآورده می شود یا خیر؟

ویژگی های کیفی قابل مشاهده در زمان اجرا 5 مورد می باشند که در زیر ذکر شده اند

 - کارایی[16]

 - امنیت[17]

 - در دسترس بودن[18]

 - قابلیت عملکرد یا وظیفه مندی[19]

 -          قابلیت کاربرد و استفاده[20]

2-ویژگی های کیفی غیر قابل مشاهده در زمان اجرا[21]

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

 ویژگی های کیفی غیر قابل مشاهده در زمان اجرا 5 مورد می باشند که در زیر ذکر شده اند

  - قابلیت اصلاح پذیری[22]

 - قابلیت حمل[23]

 - قابلیت تجمیع پذیری[24]

 - قابلیت استفاده مجدد[25]

 - قابلیت آزمایش[26]

دو نکته در رابطه با ویژگی های کیفی مطرح می باشد که در زیر توضیح داده شده است

1-     معماری برای تحقق و درک  بسیاری از ویژگی های کیفیِ مهم و بحرانی در سیستم می باشد و این ویژگی های مورد نظر می بایستی در سطح معماری طراحی و ارزیابی شوند

2-      معماری تنها قادر به دستیابی به ویژگی های کیفی نمی باشد بلکه اساس دستیابی به کیفیت است اما برخی از این ویژگی های کیفی وابسته به معماری نیستند و تحقیق در زمینه دستیابی به این ویژگی ها  در معماری کار درستی نیست. به همین علت می گوییم یکسری ویژگیها در زمان معماری و طراحی قابل ارزیابی هستند و برخی دیگر باید به زمان بعد محول شود

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

2-3-1)  انواع ویژگیهای کیفی در معماری نرم افزار

[1]- Components

[2]- Connector

[3]- Interface

[4] – Stakholders

[5] – Business Case

[6] – Use Case

[7] – Prototype

[8] – Architecture Description Language (ADL)

[9] – Local

[10] – Systematic-broad scope

[11] – Confilict

[12] – Functional Requirements

[13] – None Functional Requirements

[14] – Quality Attributes

[15] – Observable via Execution

[16] – Performance

[17] – Security

[18] – Availability

[19] – Functionality

[20]- Usability

[21] – Not Observable via Execution

[22]- Modifiability

[23] – Portability

[24] – Integritability

[25] – Reusability

[26] – Testability

برای دریافت اینجا کلیک کنید

سوالات و نظرات شما

برچسب ها

سایت پروژه word, دانلود پروژه word, سایت پروژه, پروژه دات کام,
Copyright © 2014 icbc.ir