دانلود مقاله-تحقیق-پروژه-کارآموزی

مرجع کامل خرید و دانلود گزارش کار آموزی ، گزارشکار آزمایشگاه ، مقاله ، پروژه و پایان نامه های کلیه رشته های دانشگاهی

دانلود مقاله-تحقیق-پروژه-کارآموزی

مرجع کامل خرید و دانلود گزارش کار آموزی ، گزارشکار آزمایشگاه ، مقاله ، پروژه و پایان نامه های کلیه رشته های دانشگاهی

مقاله بررسی UML و کاربرد آن

مقاله بررسی UML و کاربرد آن در 40 صفحه ورد قابل ویرایش
دسته بندی فنی و مهندسی
فرمت فایل doc
حجم فایل 28 کیلو بایت
تعداد صفحات فایل 40
مقاله بررسی UML و کاربرد آن

فروشنده فایل

کد کاربری 6017

مقاله بررسی UML و کاربرد آن در 40 صفحه ورد قابل ویرایش


فهرست
چکیده
مقدمه
دیاگرام uml
دیاگرامهای کلاس
تعریف
عناصرهای دیاگرام کلاس
دیاگرامهای توالی
عناصر دیاگرامهای توالی

گراف کلاس

نمایش دیاگرام کلاس به گراف کلاس و قبود چندتایی
قبود چندتایی
قید کلی
قید عدم وجود
نمایش دیاگرامهای توالی توسط گرامرهای گراف‌گونه
پیامهای بین دو شیء موجود:
پیامهایی که یک شیء جدید را ایجاد می‌کنند:
پیامهای که باعث از بین رفتن یک شیء می‌گردند
آنالیز سازگاری بین ندیاگرامهای کلاس و توالی
چک وجود
چک آشکاری
چک چند‌تایی
الگوریتمهای چک سازگاری
چک وجود و چک آشکاری
الگروریتم چک چند‌تایی
چک قانون با قیود کلی
چک قوانین با قیود عدم وجود
چکیده
مقدمه
بررسی معیار کامل بود و سازگاری
دیاگرامهای حالت UML
آنالیز ایستا
حالتها و انتقالها
گاردها
انتقالهای ترکیبی
آنالیز دسترسی
تبدیل گراف
قوانین
قانون در روش Double Pushowt
قوانین در روش Single Pushout
قانون معکوس
کاربرد قانون
کاربرد شرایط
گرامر گراف گونه
مقدمه ای بر مفاهیم گرافهای نوع ویژگی
گرافها
مورفیزم



چکیده:

در مدلسازی شیئ‌گرای نرم افزار با استفاده ازUML چهره‌هایی مختلف یک سیستم با استفاده از دیاگرامهای مختلف نمایش داده می‌شوند. ساختار پایدار سیستم از طریق دیاگرامهای کلاس واکنش بین قطعات مختلف مدل از طریق دیاگرام‌های کنش مثل دیاگرام‌های توالی و دیاگرانم‌های همکاری نمایش داده می‌شود. بنابراین یک مدل کامل شامل چندین دیاگرام از انواع مختلف می‌باشد. بنابراین سازگاری بین دیاگرامهای مختلف از اهمیت بسیاری برخوردار است.

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

آنالیز سازگاری شامل موارد “ وجودی” ، “ آشکاری” و “ چند تایی” می‌گردد برای آنالیز سازگاری از تکنیکهای جبری موجود، برای گرامرهای گراف‌گونه استفاده شده است.

1­ـ ممقدمه

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

برای درک بهتر راه حل ارائه شده در بخش بعد، ابتدا دیاگرام‌های کلاس و توالی و ویژگیهایی که باید بررسی گردند، مورد مطالعه قرار می گیرند.

دیاگرامهای UML

UML یک زبان مدلسازی یکپارچه می باشد ،‌که برای مدلسازی انواع سیستم های نرم افزاری مبتنی بر متدولوژی شیئی گرا در نظر گرفته شده است . این زبان برای تشریح ، نمایش ،‌ساخت و X مستند سازی سیستم های نرم افزاری مورد استفاده قرار می گیرد. نسخه1-1 UML در نوامبر 1997 توسطOMG مورد قبول واقع شده است و نسخه 3-1 آن از مارس 1999در دسترس می‌باشد. به خاطر استفاده فراوان این زبان در صنعت و تحقیقات این زبان بصورت استاندارد در آمده است.

1-2- دیاگرامهای کلاس

1-1-2- تعریف

دیاگرامهای کلاس ساختار ایستای سیستم را نمایش می‌دهند، یعنی عناصر موجود در سیستم، ساختار داخلی آنها و ارتباط آنها با سایر عناصر سیستم را مشخص می کنند. عناصر سیستم بصورت کلاس در دیاگرام کلاس نمایش داده می‌شوند.

چند نوع مارتباط ایستا بین کلاسها وجود دارد یعنی تناظر، مجتمع، ترکیب، وابستگی و تعمیم .

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

2-1-2 عناصر دیاگرامهای کلاس

یک کلاس یک شرح برای مجموعة اشیائی است ،‌که دارای یک ساختار ، رفتار ، ارتباطها و معنی می باشند. هر کلاس دارای یک نام می باشد و می تواند متعلق به یک بسته باشد.

اشیائی که از یک کلاس هستند دارای یک لیست ویژگیها و یک لیست متدهای یکسان می‌باشند،اماL1 مقادیر ویژگیها ممکن است متفاوت باشند. یک دیاگرام کلاس می‌تواند دارای اشیایی باشد، که نمونه‌هایی از کلاسها می‌باشند. شکل معمول تعریف یک ویژگی بصورت زیر می‌باشد.
Visibility name : type ?? expression

نوع ویژگی (type- expression) توسط UML تعریف نمی‌شود و این مقدار وابسته به زبان می‌باشد در حقیقت نوع متغیر، برای زبانی است، که در نهایت کلاس مورد نظر در آن ایجاد و پیاده‌سازی خواهد شد. ممکن است کلاسهای موجود در دیاگرام کلاس به عنوان نوع متغیر برای ویژگیها مورد استفاده قرار گیرند. این زمانی است که یک ویژگی یک مرجع برای یک شیء از آن کلاس نگهداری می‌کند. آشکاری ویژگیها شامل یکی از موارد protecded(#) , public(+) و prirate(-) می‌باشد. ویژگیهای عمونی (public) برای سایر کلاسها قابل دسترس هستند،ویژگیهای محافظت شده تنها برای اشیاء همان کلاس و یا زیرکلاسهای آن قابل دسترس می‌باشند و ویژگیهای خصوصی(( prirate تنها برای خود شیء قابل دسترس می‌باشند. سایر جزئیات مثل مقادیر اولیه، چند تایی و رشته‌های مربوط به ویژگی ها ،‌ همگی اختیاری هستند.

یک متد در UMLتوسط یک رشته که به شکل زیر می‌باشد تعریف می‌گردد.

Visitility name (parameter
Visibility name (parameter – list): return-type-expression

لیست پارامترهای هر متد شامل یکسری پارامتر می‌باشد که همگی دارای فرمتی به شکل زیر هستند.
Name: type-expression

آشکاری متدها همانند ویژگیها مورد بررسی قرار می‌گیرد. متدی که یک عملیات را محقق می‌سازد دارای همان خصوصیات عملیات می‌باشد و البته دارای یک بدنه پیاده‌سازی می‌باشد که عملیات را پیاده‌سازی می‌کند.

کلاسها بصورت درختی توسط بسته‌ها ؟؟سازماندهی می‌گردند.

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

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

از طرفی بصورت تئوری امکان وجود چند رابطه تناظر بین دو کلاس وجود دارد. اما در برخی موارد این مسأله تمکن است نیک دیاگرام ناسازگار ختم گردد.

روابط تجمع و ترکیت انواع خاصی از ناظر هستند که رابطه "بخشی از" را نمایش می‌دهند. باری نمایش این روابط انتقال خط واصل بین د رکلاس یک لوزی قرار داده نمی‌شود که در رابطه ترکیب این لوزی توپر و در رابطه تجمع این لوزی تو خالی می‌باشد. رابطه تجمع به طور کلی رابطه کل و جزء را نمایش می‌دهد.

یک رابطه ترکیب یک رابطه قوی‌تر نسبت به تجمع می‌باشد و به این معنی است، که جزء در نظر گرفته برای ترکیب تنها برای ترکیب می‌باشد و نمی‌تواند جزء شیء دیگری باشد. این بدان معنی است، که تمام اجزای یک ترکیب هنگام از بین رفتن ترکیب از بین می‌روند.

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

uml امکان ارث‌بری یگانه و چند گانه را ممکن ساخته است. در طول این مقاله تنها ارث‌بری یگانه مورد بررسی قرار می‌گیرد، اما ارث‌بری چندگانه مشکلی برای چک سازگاری نیست.

uml رابطه تناظر را همراه با دو انتهای آن در نظر می‌گیرد. بنابراین امکان اضافه کردن ویژگیهای مربوط به دو انتهای یک رابطه تناظر در نظر گرفته شده است.

با افزودن یک Rolename به یک سمت رابطه، اشیاء کلاس آن سمت یک نام بدست می‌آورند، که توسط اشیاء کلاس سمت دیگر مورد استفاده قرار می‌گیرد.

چندتایی درنظر گرفته شده برای هر ارتباط تعداد اشیائی را که توسط آن رابطه با شیء مورد نظر در ارتباط هستند، تعیین می‌کند.

چند‌تایی یک بازه از اعداد غیر منفی است که بصورت (حد بالا…حد پایین) می‌باشد. حد پایین صفر به این معنی است که شیء نیازی به یک مرجع ندارد. از طرف دیگر حد پایین 1 وجود شیء متناظر را قطعی می‌کند، یعنی حداقل یک مرجع برای شیء متناظر باید وجود داشته باشد. جدول(x) مقادیر ممکن باری بازة چند‌تایی را نمایش می‌دهد.

ممکن است دیاگرام کلاس با توجه به چند تایی ها منجر به یک دیاگرام شیء تهی گردد و یا ناسازگاری بوجود آید. آشکاری یک رابطه تناظر می‌تواند محدود گردد. این کار با استفاده از کلمات کلیدی protected (#) , Public (+) و یا private (-) صورت می‌گیرد. این کلمات کلیدی دسترسی و استفاده از rolename ها را محدود می‌سازند. مفهوم این کلمات کلیدی همانند آن چیزی است، که برای ویژگیها گفته شده است . شکل(X) یک دیاگرام کلاس همراه با رابطه‌های تناظر یکطرفته و دو طرفه، تجمع و تعمیم می‌باشد.

4-4 الگوریتمهای چک سازگاری

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

دراینجا دو الگوریتم ارائه شده است الگوریتم اول مربوط به چک وجود و آشکاری می‌باشد وم الگوریتم دوم برای چک چند‌تایی در نظر گرفته شده است

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

در صورتی که الگوریتم چک وجود و آشکاری با خطا و مواجه شود، در آنصورت آن قانون برروی گراف فعلی قابل اجرا نمی‌باشد.

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

ندهای مستقل ندهای هستند که هیچ ومابستگی چند‌تایی به یکدیگر نداترند.الگوریتم 5-4-1 چک وجود و چک آشکاری

این الگوریتم یک قانون از گرامر‌گراف گونه و گراف کلاس را مورد استفاده قرارمی‌دهد. قوانین درگرامر‌گراف‌گونه بصورت L ® R نمایش داده می شوند، که L وR هر دو گراف هستند. این الگوریتم بر اساس وجود مورفیزم‌هایی بین گرافهای LوR و گراف کلاس (CG) می باشد.در حقیقت باید مومرفیزم‌هایCG , R®CG ® L وجود داشته باشند و البته این مورفیزمها باید کامل باشند.

قسمت اصلی این الگوریتم بر اساس جزئیات ویژگیهای موجود درمورفیزم می‌باشد. نوع ویژگیها ، نام کلاسها، نقشها و مجموعه‌های ویژگیها وعملیات بصورت صریح تعریف شده اند و در مورفیزم مورد استفاده قرار می‌گیرند. تنها مشکلی که در این بخش موجود دارد، چک آشکاری است. چک وجود از طریق مورفیزم به راحتی قابل دستیابی است، ولی چک آشکاری با توجه به وجود بسته‌ها ، نقشها، ویژگیها و عملیات بصورت فرمال امکان پذیر نیست و در این مقاله ارائه نشده است . شکل (1-5) یک چک وجود ناموفق را نشان می‌دهد. در این شکل قسمت سمت راست قانون( R ) با گراف کلاس دارای مورفیزم نیست .

5-4-2 الگروریتم چک چند‌تایی

این الگوریتم از یک قانون، مجموعه قیود چندتایی و گراف فعلی استفاده می‌کند. این الگوریتم از دو الگوریتم که وابسته به نوع قید چند‌تایی می‌باشند، استفاده می‌کند. هر قانون باید با تمامی قیود چندتایی چک شود.

- چک قانون با قیود کلی

این الگوریتم یک قانون بصورت L®R و یک قید کلی بصورت P®C را گرفته و حد پایین یک چندتایی را بررسی می‌کند. برای چک حد پایین، باید تمام تداخل های مناسب بین R و P بدست آیند.یک تداخل مناسب گفته می‌شود، اگر ندهای ایجاد شدة جدید در R با بخشی ازP تداخل داشته باشند و یا اگر قانون بخشی را حذف می‌کند، آن بخش مورد نیاز C باشد. به این ترتیب یک مجموعه از تداخلها ایجاد می‌گردد. هرتداخل O باید با قانون p®C گسترش یابد. به این ترتیب یک مجموعه ازگسترشهایی به نام H بدست می‌آید. اگر بتنوان قانون را بصورت معکوس بر یکی از این گسترشها اعمال کرد. بدون اینکه شرایط را زیر پا گذاشت، درآنصورت سازگاری اثبات می‌گردد.

شکل (2-5) یک چک ناموفق برای حد پایین چند‌تایی را نشان می‌دهد. در این مثال حد پایین مورد بررسی این است، که کلاس B حداقل با یک کلاس C در ارتباط می‌باشد.O تنها تداخل ممکن می‌باشد و عکس قانون برای گسترش H قابل اعمال نیست، به این ترتیب ناسازگاری با قیود کلی چند‌تایی مورد بررسی قرار می‌گیرد.

- چک قوانین با قیود عدم وجود

این الگوریتم یک قانون به شکل R L ® و قید عدم وجود N را گرفته و حد بالای یک چندتایی را چک می‌کند. در این الگوریتم هم، تمام تداخلهای مناسب قسمت سمت راست قانون (R) و قید عدم وجود (N) بدست می آیند. یک تداخل مناسب است اگر قسمتهای جدید ایجاد شده در R با قید عدم وجود تداخل داشته و از طرفی امکان اعمال قانون بصورت معگوس بر روی آن ومجود داشته باشد.

نتیجه اعمال این الگوریتم بدست آمدن چندین قید کاربردی منفی می‌باشد. یک ناسازگاری زمانی حاصل می‌ گردد، که نتوان قانون را با توجه به قیود بدست آمده بر روی گراف فعلی اعمال کرد. این زمانی رخ می‌دهد، که یک مورفیزم از قید کاربردی منفی به گراف فعلی وجود داشته باشد. شکل (3-5) یک چک ناموفق برای حد بالای یک چند‌تایی را نشان می‌دهد. استفاده از قانون با قید کاربردی منفی به همراه گراف فعلی S” امکان پذیر نیست. زیرا مومرفیزم بین َL و S” وجود دارد.


تحقیق معماری نرم افزار

کامل ترین و بی نقص ترین تحقیقی که میتوان در مورد معماری نرم افزار به انجام رسانید
دسته بندی کامپیوتر و IT
بازدید ها 23
فرمت فایل docx
حجم فایل 712 کیلو بایت
تعداد صفحات فایل 50
تحقیق معماری نرم افزار

فروشنده فایل

کد کاربری 4513
کاربر

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


فهرست مطالب



عنوان شماره صفحه
چکیده 3
فهرست مطالب 4
فهرست جدول‌ها 10
فهرست شکل‌ها 11


مقدمه 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


فهرست جدول‌ها



شماره جدول شماره صفحه
جدول ‏1 1 : چارچوب‌های مهم معماری 23

جدول ‏2 1 : یک چارچوب برای تعاریف معماری نرم‌افزار 40
جدول ‏2 2 : پارامترهای متناظر در چارچوب 41

جدول ‏4 1: الگوهای معماری نرم‌افزار ارائه شده در [Buschmann 96] 76
جدول ‏4 2: یک مثال برای سبکها و اعداد مربوط به هر یک از مشخصه‌های کیفی آنها 79
جدول ‏4 3: مقادیر مشخصه‌های کیفی که کاربر درخواست نموده است. 80
جدول ‏4 4: مجموع قدر مطلق تفاضلات محاسبه شده برای هر سبک 80
جدول ‏4 5: مجموع مربعات تفاضلات محاسبه شده برای سبکهایی که مقدار SAD یکسانی دارند 80

جدول ‏5 1 : دسته‌بندی سبکهای معماری نرم‌افزار در [Shaw 96] 85
جدول ‏5 2 : دسته‌بندی [Fielding 00] 86
جدول ‏5 3 : دسته‌بندی سبکهای معماری نرم‌افزار بر اساس [Clements 02-1] 89
جدول ‏5 4 : دسته‌بندی [Buschmann 96] 89
جدول ‏5 5: سبکهای ارائه شده برای سیستمهای پردازش توزیع شده از [Morisawa 02] 90
جدول ‏5 6: سبکهای ارائه شده برای سیستمهای اطلاعاتی سازمان از [Kolp 01] 90
جدول ‏5 7: سبکهای ارائه شده در [Hawthorne 05] 90
جدول ‏5 8: سبکهای ارائه شده برای سیستمهای تجارت الکترونیک از [Widhani 02] 90
جدول ‏5 9: سبکهای ارائه شده برای سیستمهای مدیریت منابع از [Kircher 04] 91

جدول ‏6 1: انواع سیستمهایی که تاکنون برای آنها سبک معماری ارائه شده است. 102
جدول ‏6 2: استانداردی برای مستند کردن هر سبک بر اساس استاندارد [Clements 02-1] 106
جدول ‏6 3: عبارات اختصاری استفاده شده در جدول 111


فهرست شکل‌ها



شماره شکل شماره صفحه
شکل ‏1 1: مفهوم معماری تدبیرات و نقشه‌های قبل از ساخت سیستمها است. ]ایزایران 81[ 21
شکل ‏1 2 : نحوه بیان متدولوژی‌ها با چارچوب‌ها ]ایزایران 81[ 24
شکل ‏1 3 : معماری سازمان و زیرمعماری‌های مربوطه از ]ایزایران 81[ 26

شکل ‏2 1 : مفهوم معماری نرم‌افزار، طراحی سطح بالا می‌باشد 33
شکل ‏2 2 : جزء معماری به ناظر و منظر معمار بستگی دارد 37
شکل ‏2 3 : R یک رابطه بیرونی و R1 یک رابطه درونی است 38
شکل ‏2 4: فرامدل پیشنهادی برای رابطه، ارتباط، تعامل، اتصال 42
شکل ‏2 5: فرامدل ارائه شده برای جزء، موئلفه، سیستم و... 43
شکل ‏2 6: فرامدل پیشنهادی برای رفتار، خصوصیت، واسط 45

شکل ‏3 1: فرامدل ارتباط مشخصه‌های کیفی با دیگر مفاهیم موجود در معماری از [Albin 03] 50
شکل ‏3 2: تاکتیک‌های ارائه شده برای دستیابی به حد مطلوب Availability در [Bass 03] 51
شکل ‏3 3: دسته‌بندی مشخصه‌های کیفی بر اساس [Bass 03] 53
شکل ‏3 4: Trade-Offهای موجود بین مشخصه‌های کیفی و حد مطلوب آنها از [Barbacci 95] 61
شکل ‏3 5: ارتباط صفات کیفی و وابستگی آنها به یکدیگر از [Fitzpatrik 96] 62
¬¬¬
شکل ‏4 1: دسته‌بندی Garlan و Shaw برای سبک‌های معماری نرم‌افزار از [Shaw 96] 66
شکل ‏4 2 : مدل سبک‌های متمرکز روی داده از [Shaw 96] 67
شکل ‏4 3 : سبک Pipe and Filter از [Shaw 96] 68
شکل ‏4 4 : سبک برنامه اصلی و زیرروال از [Shaw 96] 69
شکل ‏4 5: سبک معماری Object Oriented از [Shaw 96] 70
شکل ‏4 6 : نمونه‌ای از سبک لایه‌ای مورد استفاده در استاندارد ارتباطی ISO از [Shaw 96] 71
شکل ‏4 7: مجموعه از الگوها از [Trowbridge 03] 74
شکل ‏4 8: نمایش روابط الگوها با خطوط از [Trowbridge 03] 74
شکل ‏4 9: سطوح انتزاع الگوها از ]زاداحمد 85[ 75
شکل ‏4 10: الگوی لایه‌ای از ]زاداحمد 85[ 76
شکل ‏4 11 : جدول ارزیابی سبکهای معماری نرم‌افزار بر اساس پارامترِ مشخصه‌های کیفی 78

شکل ‏5 1: قسمتی از دسته‌بندی سبکهای معماری نرم‌‌افزار از [Shaw 97] 85
شکل ‏5 2 : ارتباط بین نوعِ دید معماری، سبک معماری، دید معماری از [Clements 02-1] 88

شکل ‏6 1: ورودی و خروجی‌های سیستم استاندارد سازماندهی سبکهای معماری نرم‌افزار 94
شکل ‏6 2: جنبه‌هایی که باید برای ارائه استاندارد سازماندهی سبکها در نظر بگیریم. 96
شکل ‏6 3 : منظرها و ناظرهای هر سبک معماری نرم‌افزار 98
شکل ‏6 4: اجزاء اصلی استاندارد سازماندهی سبکهای معماری نرم‌افزار 98
شکل ‏6 5: دسته‌بندی اولیه برای سبک‌های معماری نرم‌افزار از [Ryoo 05] 104
شکل ‏6 6: یک دسته‌بندی قابل توسعه برای سبک‌های معماری نرم‌افزار از [Ryoo 05] 104
شکل ‏6 7: مدل کیفیت McCall از [Astudillo 04] 108
شکل ‏6 8: مدل کیفیت ISO/9126 از [Astudillo 04] 109
شکل ‏6 9: نمونه یک دسته‌بندی انواع سیستمها برای سیستمهای اطلاعاتی 110
شکل ‏6 10: قالب دسته‌بندی پیشنهادی برای سیستمهای اطلاعاتی 111
شکل ‏6 11: فرایند ارائه قالب استاندارد برای تهیه کاتالوگ سبکها 112
شکل ‏6 12: فرایند ایجاد یک استاندارد برای سازماندهی سبکهای معماری نرم‌افزار 117

شکل ‏7 1: منابع کسب‌وکار مورد استفاده در کل فرایند 119
شکل ‏7 2: سلسله مراتب اهداف در فرایند معرفی شده 120
شکل ‏7 3: Actorهای کسب‌وکار موجود در فرایند ارائه شده 121
شکل ‏7 4: فازهای فرایند ارائه استاندارد 121
شکل ‏7 5: مدل قدمهای ارائه شده برای فاز اول 122
شکل ‏7 6: مدل فرایند ارائه شده برای قدم اول از فاز اول 123
شکل ‏7 7: مدل فرایند ارائه شده برای قدم دوم از فاز اول 123
شکل ‏7 8: مدل فرایند ارائه شده برای قدم سوم از فاز اول 124
شکل ‏7 9: مدل فرایند ارائه شده برای قدم چهارم از فاز اول 124
شکل ‏7 10: مدل قدمهای ارائه شده برای فاز دوم 125
شکل ‏7 11: مدل فرایند ارائه شده برای قدم اول از فاز دوم 125
شکل ‏7 12: مدل فرایند ارائه شده برای قدم دوم از فاز دوم 126
شکل ‏7 13: مدل قدمهای ارائه شده برای فاز سوم 126
شکل ‏7 14: مدل فرایند ارائه شده برای قدم اول از فاز سوم 127
شکل ‏7 15: مدل فرایند ارائه شده برای قدم دوم از فاز سوم 127
شکل ‏7 16: مدل فرایند ارائه شده برای قدم سوم از فاز سوم 128
شکل ‏7 17: مدل قدمهای ارائه شده برای فاز چهارم 128
شکل ‏7 18: مدل فرایند ارائه شده برای قدم اول از فاز چهارم 129
شکل ‏7 19: مدل فرایند ارائه شده برای قدم دوم از فاز چهارم 129
شکل ‏7 20: خروجی‌های هر یک از مراحل که منجر به استاندارد نهایی خواهد شد. 130

مقدمه



پیشرفت و بزرگتر شدن جامعه بشری در دنیای امروزی و پیچیده‌تر شدن روابط بین آنها، باعث بوجود آمدن سیستمهای بزرگ و پیچیده در زندگی بشر امروزی شده است. با پیشرفت علم کامپیوتر و وارد شدن آن به بطن زندگی بشر، اکثر سیستمهایی که بشر امروزی با آنها سروکار دارد، به صورت کامپیوتری پیاده‌سازی می‌شوند.
زندگی بشر امروزی وابسته به سیستمهای نرم‌افزاری بزرگ و پیچیدۀ موجود می‌باشد. سیستمهای شرکتهای هواپیمایی و مسافربری، سیستمهای ارتباطی توزیع شده همانند تلویزیون، تلفنهای معمولی و همراه، سیستمهای بانکداری، سیستمهای مدیریت بورس، سیستمهای عمل جراحی راه دور، سیستمهای کنترل ماهواره‌های مختلف، سیستمهای معاملات راه دور و هزاران سیستم نرم‌افزاری دیگر که وجود خلل و نقصی در آنها تاثیرات جبران ناپذیری بر زندگی بشر امروزی خواهد داشت.
در نتیجه یکی از نیازهای حیاتی بشر امروزی اینست که سیستمهای بزرگ و پیچیدۀ موجود، بدون خطا، سریع، با امنیت و کارایی بالا و... در اختیار آنها گیرد. در نتیجه توسعه دهندگان سیستمهای نرم‌افزاری بزرگ و پیچیده، باید سیستمهایی با چنین ویژگیهایی، در اختیار کاربران قرار دهند.
در نتیجه ارائه سیستمهایی در مقیاس بزرگ که دارای برخی ویژگی‌ها همچون کارایی بالا، بدون خطا و بدون عیب، سریع و امن و...، نیاز توسعه دهندگان سیستمهای نرم‌افزاری مقیاس بزرگ می‌باشد. به این مشخصه‌ها در حوزه مهندسی نرم‌افزار نیازهای غیرعملیاتی یا مشخصه‌های کیفی می‌گویند.
مهمترین مسئله در توسعه سیستمهای نرم‌افزاری مقیاس بزرگ، مبحث معماری آن می‌باشد. معماری، ساختارهای موئلفه‌ها و زیرسیستمهای یک سیستم مقیاس بزرگ و ارتباط بین آنها می‌باشد. معماری نرم‌افزار، یکی از مهمترین حوزه‌ها در مهندسی نرم‌افزار است و دلیل آن تاثیر حیاتی معماری در موفقیتِ توسعه سیستمهای نرم‌افزاری است.
توسعه یک سیستم نرم‌افزاری مقیاس بزرگ با ویژگی‌های مذکور، نیازمند ارائه یک معماری مناسب و کامل برای سیستم نرم‌افزاری مورد نظر می‌باشد. در نتیجه ارائه یک معماری درست و مناسب برای چنین سیستمهایی از اهمیت حیاتی برخوردار است.
همیشه بشر از تجربیات قبلی خود یا دیگران در انجام کارهای فعلی بهره جسته است. در زمینه معماری نرم‌افزار نیز معماران نرم‌افزار برای ارائه یک معماری مناسب می‌توانند از تجربیات معماران گذشته و ماهر برای ارائه معماری خود بهره گیرند. امروزه برای سیستمهای گوناگون، معماریهای مختلفی توسط معماران ماهر ارائه شده است. این معماریها به کررات در سیستمهای مختلف مورد آزمایش قرار گرفته و اعتبار و صحت آنها برای استفاده در برخی از سیستمهای نرم‌افزاری اثبات شده است. به این معماری‌ها، الگوها یا سبکهای معماری نرم‌افزار می‌گویند.
در نتیجه یک معمار نرم‌افزار برای ارائه یک معماری مناسب، باید به سبکهای معماری موجود در حوزه سیستمی خود آشنایی داشته باشد تا بتواند از آنها برای ارائه یک معماری مناسب استفاده کند. یعنی معمار یک سیستم نرم‌افزاری برای ارائه یک معماری برای یک سیستم، باید تسلط کافی بر سبکهای معماری نرم‌افزار و مزایا، معایب و کاربردهای هر یک از آنها داشته باشد.
سبکهای معماری نرم‌افزار همه روزه توسط افراد و گروههای مختلف ارائه می‌شوند و هر گروه در حوزه سیستمی خود، به معرفی سبکهای جدید معماری نرم‌افزار می‌پردازد. درنتیجه یک معمار نرم‌افزار برای آشنایی به سبکهای معماری مربوط به حوزه خود، باید در یک دوره تناوب خاص مثلاً هر ماه، سبکهای معماری جدید را جمع‌آوری، بررسی و تحلیل کند. تا بتواند یک معماری درست و مناسب برای سیستم مورد نظر خود ارائه کند.
از طرفی با وجود سبکهای معماری مختلف برای حوزه‌های موجود، ممکن است برای یک کاربرد خاص، سبکهای زیادی پیشنهاد شده باشد. در برخی موارد ارائه کنندگان سبکها، روشهایی برای انتخاب یک سبک از بین سبکهای مختلف که توسط خودشان معرفی شده، ارائه می‌کنند. ولی همیشه این طور نیست و برای سبکهای مختلف که توسط افراد مختلف برای یک حوزه خاص ارائه شده است، روشی برای انتخاب یک سبک وجود ندارد.
از طرفی دیگر، همه روزه بر تعداد سبکهای معماری نرم‌افزار افزوده می‌شود و تعداد آنها در حال افزایش می‌باشد و هیچ کنترل مرکزی و واحد بر آنها وجود ندارد. این امر معماران سیستمهای نرم‌افزاری را در شناخت و استفاده از سبکها، دچار مشکل می‌کند یعنی با انباشته شدن سبکهای معماری نرم‌افزار، کار معماران نرم‌افزار در انتخاب یک سبک، خیلی مشکل خواهد شد.
در نتیجه می‌توان مشکلات موجود برای ارائه یک معماری را به صورت زیر بیان کرد:
1- با افزایش روز افزون سبکهای معماری نرم‌افزار، هیچ کنترل مرکزی و واحد برای آنها وجود ندارد. و در ارائه سبکهای نوعی پراکندگی وجود دارد.
2- برای سبکهای ارائه شده توسط گروههای مختلف، روشهای انتخاب و ارزیابی واحدی وجود ندارد.
3- برای ارائه یک سبک معماری نرم‌افزار به صورت یک مستند، روشی استاندارد وجود ندارد که همه از این استاندارد تبعیت کنند.
4- عدم وجود یک سری از مشخصه‌های کیفی استاندارد که همه ارائه کنندگان سبکها از آنها برای ارائه روشهای ارزیابی خود استفاده کنند.
5- به دلیل وجود سبکهای مختلف، یک معمار نرم‌افزار در انتخاب یک سبک معماری دچار سردرگمی خواهد شد.
و دهها مشکل دیگر که با ارائه روز افزون سبکهای معماری نرم‌افزار به صورت پراکنده و عدم کنترل مرکزی، معماران نرم‌افزار در استفاده از سبکهای معماری، امروزه و در آینده به آن دچار خواهند شد.
برای حل مشکلات ذکر شده تلاشهایی توسط گروههای مختلف انجام گرفته است و مبحث دسته‌بندی سبکهای معماری بوجود آمده است. برای دسته‌بندی سبکهای معماری نرم‌افزار روشهای مختلفی تاکنون ارائه شده است. دسته‌ای از روشها، سبکهای معماری نرم‌افزار را بر اساس نوع سبک آنها دسته‌بندی می‌کنند. یعنی ابتدا یک دسته‌بندی از انواع سبکهای معماری ارائه کرده سپس سبکهای معماری را در این دسته‌بندی قرار می‌دهند. ما به این نوع دسته‌بندی‌ها، دسته‌بندی موضوعی می‌گوییم. برخی دیگر، سبکها را بر اساس نوع سیستم مورد کاربرد آن سبک، دسته‌بندی می‌کنند. یعنی ابتدا یک دسته‌بندی از انواع سیستمهای نرم‌افزاری ارائه کرده، سپس سبکهای معماری را در این دسته‌بندی قرار می‌دهند. ما به این نوع دسته‌بندی، دسته‌‌بندی سیستمی می‌گوییم. سوالی که در این زمینه مطرح می‌شوند، اینست که آیا این روشها، مشکلات موجود را حل می‌کنند. یعنی با دسته‌بندی سبکها می‌توان مشکل معماران و پراکندگی سبکهای ارائه شده را حل کرد.
آنچه مسلم است، صرف دسته‌بندی سبکها به روش موضوعی یا سیستمی مشکلات موجود به طور کامل رفع نخواهد شد. به عنوان مثال مشکلاتی مانند ارائه پراکنده سبکها بدون کنترل مرکزی، عدم مستند‌سازی استاندارد سبکها، عدم وجود نحوه ارزیابی و انتخاب سبکهای همنوع و... هنوز پا برجا هستند.
در نتیجه عوامل دیگری نیز باید در این دسته‌بندی‌ها لحاظ گردند. به عنوان مثال نحوه ارزیابی سبکها که باید برای تمامی سبکها، روشهای ارزیابی با سبکهای همنوع خود ارائه شود یا روشی استاندارد برای مستند کردن سبکها در این دسته‌بندی‌ها وجود داشته باشد.
در نتیجه برای رفع مشکلات موجود، نیاز به یک استاندارد سازماندهی برای کلیه سبکها داریم که بر اساس این استاندارد بتوانیم کلیه سبکهای موجود و سبکهایی را که در آینده ارائه خواهد شد، سازماندهی کنیم. درنتیجه اگر توسعه چنین استانداردی را به عنوان یک سیستم در نظر بگیریم، می‌توانیم از روشهای توسعه سیستمها همانند مدلهای موازی یا فازبندی شده مثل RUP ، برای توسعه و تکمیل این استاندارد استفاده کنیم.
برای توسعه چنین استانداری می‌توان مراحل زیر را بر اساس متدولوژی RUP جنین تعریف کرد.
1- فاز اول – شناخت (Inception): در این فاز به بررسی و شناخت مسئله موجود پرداخته و کلیه مفاهیم مورد نیاز برای آن را مورد بررسی قرار می‌دهیم. به طوری که دید درستی از مسئله و آنچه می‌خواهد داشته باشیم. در حقیقت مسئله مورد نظر، تعریف و مورد بررسی قرار می‌گیرد و مفاهیم مورد استفاده در مسئله شناخته می‌شوند.
با توجه به مسئله مورد نظر که توسعه یک استاندارد برای سازماندهی سبکهای معماری نرم‌افزار می‌باشد، در این فاز باید کلیه مفاهیم مورد نیاز برای توسعه این استاندارد شناخته شود. مفاهیمی که باید شناخته شود، به صورت زیر خواهد بود.
1-1- بررسی مفهوم معماری و دسته‌بندی‌های آن: در این مرحله به بررسی مفهوم معماری در حالت کلی پرداخته و بعد از آشنایی با مفهوم آن به بررسی انواع معماری‌های موجود می‌پردازیم. در ادامه جایگاه معماری نرم‌افزار در این دسته‌بندی را مشخص می‌نماییم.
1-2- بررسی مفهوم و تعریف معماری نرم‌افزار: در این مرحله به بررسی مفهوم معماری نرم‌افزار می‌پردازیم و با اشاره به تعریف معماری نرم‌افزار، سعی می‌کنیم درکی واضح و بدون ابهام از معماری داشته باشیم.
1-3- بررسی مشخصه‌های کیفی در معماری نرم‌افزار: با توجه به اهمیت مشخصه‌های کیفی در معماری نرم‌افزار و اینکه هدف اصلی معماری، دستیابی به میزان مطلوبی از این مشخصه‌ها است، در نتیجه باید مفهوم، تعریف و نحوه اندازه‌گیری هر یک از مشخصه‌های کیفی مورد بررسی قرار گیرد.
1-4- بررسی سبکها و الگوهای معماری نرم‌افزار: با توجه به مسئله مورد بررسی که توسعه یک استاندارد برای سازماندهی سبکهای معماری نرم‌افزار می‌باشد، باید مفهوم و تعریف سبک معماری مورد بررسی قرار گرفته و برای آشنایی بیشتر با آنها، برخی از سبکهای معماری نرم‌افزار را مطالعه و مورد بررسی قرار دهیم.
2- فاز دوم – تکوین (Elaboration): در این فاز باید نیازمندیهای سیستم مورد نظر به صورت کامل شناخته شده و مورد تحلیل قرار گیرند. برای تحلیل نیازمندیها ابتدا باید فرایندهای توسعه سیستم را پیدا یا معرفی کرده سپس آنها را به موردهای کاربرد شکسته و با معرفی سناریو برای هر یک از آنها، گروههای کاری تشکیل شده و موردهای کاربرد را مورد تحلیل قرار دهند.
برای سیستم مورد نظر یعنی ارائه یک استاندارد برای سازماندهی سبکهای معماری نرم‌افزار مراحل زیر را پیشنهاد می‌دهیم.
2-1- تحلیل نیازمندی‌های مسئله: در این مرحله بر اساس شناختی که در فاز قبل از مفاهیم مرتبط با موضوع بدست آمده است، نیازمندیهای مورد نیاز مسئله مطرح می‌شود. در این مرحله روشهای قبلی نیز مورد بررسی قرار خواهد گرفت و بر اساس روشهای قبل، ایده‌ای برای توسعه این سیستم ارائه می‌شود.
2-2- بدست آوردن فرایندهای مورد نیاز سیستم: در این مرحله باید فرایندهای مورد نیاز برای توسعه سیستم و سازماندهی مذکور ارائه شود. هر یک از فرایندها تفضیل شده و برای هر یک پیشنهاداتی ارائه شود.
2-3- تفضیل فرایندهای ارائه شده: در این برای هر یک از فرایندهای موجود باید روش توسعه آنها ارائه شود. برای هر فرایند دو حالت وجود دارد. اول اینکه این فرایند قبلاً توسط گروههای دیگر مورد بررسی و تحلیل قرار گرفته و پیاده‌سازی شده است. دوم اینکه برای فرایند، کارهای قبلی یا وجود ندارد و یا اینکه ناقص بوده و پیاده‌سازی مطلوب ما انجام نشده است. که باید روشی جدید برای توسعه فرایند ارائه شود.
3- فاز سوم – ساخت (Construction): در این مرحله بر اساس فرایندها و موردهای کاربرد بوجود آمده، باید بر اساس مدیریت انجام شده و تقسیم کار بین گروههای کاری مختلف، هر فرایند توسعه یابد و پیاده‌سازی گردد. مراحل این فاز بر اساس فرایندهای بدست آمده از فاز قبل تنظیم خواهد شد. در این مرحله می‌توان از تکنیکهای موازی‌سازی عملیات، تکرار عملیات و... استفاده کرد.
4- فاز چهارم – انتقال (Transition): در این مرحله با اتمام توسعه سیستم، باید سیستم مورد نظر به سیستم واقعی موجود انتقال یابد. برای این فاز مراحل زیر را پیشنهاد می‌کنیم:
4-1- تشکیل سازمان استانداردسازی سبکها: باید برای پیاده‌سازی واقعی استاندارد سازماندهی بدست آمده، یک سازمان تشکیل گردد و با معرفی استاندارد مذکور، باعث گردد سبکهای معماری نرم‌افزار از این به بعد در قالب استاندارد این سازمان ارائه گردد.
4-2- معرفی روشهای نگهداری و توسعه استاندارد: در این مرحله باید روشهایی برای نگهداری و توسعه استاندارد ارائه شده معرفی گردد که با اضافه شدن سبکهای مختلف به آن سازگاری استاندارد حفظ شود.
4-3- معرفی روشهای استفاده از استاندارد: در این مرحله باید روشهای استفاده از استاندارد شامل استفاده از سبکهای موجود در استاندارد و نحوه اضافه کردن سبکها به آن معرفی شود.

در این پایان‌نامه فازهای اول و دوم یعنی شناخت و تکوین از مراحل توسعه استاندارد سازماندهی سبکهای معماری نرم‌افزار، انجام گرفته است. فصلهای پایان‌نامه نیز بر همین اساس طرح‌ریزی شده‌اند.
برای انجام هر مرحله از فاز اول، یک فصل در نظر گرفته شده است.
در فصل اول به بررسی مفهوم معماری و دسته‌بندی آنها پرداخته‌ایم.
در فصل دوم به بررسی مفهوم معماری نرم‌افزار پرداخته و کلیه مفاهیم موجود در حوزه معماری نرم‌افزار را تعریف کرده و تحلیلی بر تعاریف موجود معماری نرم‌افزار آورده‌ایم.
در فصل سوم به بررسی برخی از مشخصه‌های کیفی مهم موجود در معماری نرم‌افزار پرداخته و مفهوم، تعریف و نحوه سنجش آنها را مورد بررسی قرار داده‌ایم.
در فصل چهارم به بررسی سبکهای معماری نرم‌افزار پرداخته و برخی از سبکهای مهم موجود را بررسی کرده و مشخصه‌های کیفی هر سبک را تشریح کرده‌ایم. در ادامه همین فصل به بررسی الگوهای نرم‌افزار و بخصوص الگوهای معماری پرداخته و ارتباط آن را با سبکهای معماری نرم‌افزار ذکر کرده‌ایم.
فصلهای بعدی برای انجام فاز دوم ارائه شده است.
در فصل پنجم به بررسی انواع دسته‌بندی‌های سبکهای معماری نرم‌افزار پرداخته و کارهای انجام شده قبلی در این رابطه را ارائه نموده‌ایم.
در فصل ششم فرایند پیشنهادی خود را برای توسعه این استاندارد ارائه کرده‌ایم. سپس تک‌تک مراحل فرایند ارائه شده را تشریح کرده و برای هر یک، کارهای انجام شده قبلی را آورده و برای برخی نیز روشهایی جدید ارائه نموده‌ایم.
در فصل هفتم فرایند ارائه شده را با استفاده از UML مدل کرده و فرایند پیشنهادی را در قالب دیاگرامهای UML ارائه نمودیم. برای مدل کردن فرایندها از روش Eriksson و Penker که جدیدترین روش مدل کردن فرایندها در UML است استفاده کردیم و دیاگرامها را در نرم‌افزار شرکت Sparx بنام Enterprise Architect 6.1 کشیده و در این فصل آورده‌ایم.
در فصل آخر نیز بعد از بیان خلاصه‌ای از کل پایان‌نامه و نتیجه‌گیریهای انجام شده، کارهای آینده که در ادامه این پایان‌نامه می‌توان انجام داد، به عنوان کارهای آینده ذکر نموده‌ایم.