معماری نرمافزار چیست؟
معماری نرم افزار یک برنامه، یک ساختار یا ساختارهایی از سیستم است که شامل عناصر نرم افزار و مشخصات خارجی قابل رویت آن عناصر و ارتباط بین آنها میباشد. معماری نرم افزار اصطلاحا یک big picture از نرمافزار هست که از دید کلان به سیستم نگاه میکند و فقط چیزهای مهم را مشاهده میکند. یک تعریف دیگر نیز این است که تصمیماتی که آرزو میکنیم کاش میتونستیم زودتر بگیریم!
معماری به جزئیات دقیق نمیپردازد و یک چکیده از سیستم است که جزئیاتی که تاثیری بر چگونگی استفاده عناصر یا ارتباط آنها با دیگر عناصر را ندارند، حذف میکند. در واقع معماری نرم افزار یک سیستم، تصمیمات طراحی مربوط به ساختار و رفتار کلی سیستم را نشان میدهد. معماری به ذینفعان کمک می کند تا بفهمند و تجزیه و تحلیل کنند که چگونه سیستم به کیفیت های اساسی مانند قابلیت تغییر، در دسترس بودن ، امنیت، پرفورمنس، قابلیت نگهداری بالا و ... دست می یابد.
با توجه به تعریف معماری نرمافزار، یک سیستم میتواند شامل یک یا چند ساختار باشد پس معماری می تواند شامل چندین دید مختلف از سیستم باشد. مثل تقسیم یک برنامه به واحدهای مختلف برای واگذاری به تیمهای برنامه نویس.
حالا چرا باید معماری نرم افزار رو ارزیابی بکنیم؟
به خاطر اهمیت تصمیمات معماری، لازم است که این تصمیمات به درستی موشکافی و بررسی شوند. مخصوصاً، همیشه مقرون به صرفهتر است که کیفیت نرمافزار در چرخهی حیات آن در سریعترین زمان ممکن ارزشیابی شود، موضوع در واقع همان بحث مهم Early Testing است، اگر مشکلات زودتر در چرخهی حیات نرمافزار پیدا شوند، تغییر و تصحیح مورد نیاز در نیازمندیها، توصیفها یا طراحی، سادهتر خواهد بود و هزینه کمتری خواهد داشت. بررسی کیفیت نرمافزار نمیتواند با تأخیر در پروژه انجام شود و باید از ابتدا به همراه طراحی در نظر گرفته شود. برای پروژه خوب است که طراحیهای منتخب، درطول فاز طراحی ارزشیابی شوند که اگر مشکلی وجود داشت، کنار گذاشته شوند، قبل از اینکه جهت تصحیح، کارطولانی مدتی موردنیاز باشد.
البته طراحی، پیادهسازی، تست یا تصمیمات مدیریتی ضعیف، همیشه میتواند یک معماری قابل قبول را خراب کند بنابراین تصمیمات در همۀ مراحل چرخهی حیات - از طراحی سطح بالا تا کد کردن و پیادهسازی - روی کیفیت تأثیر خواهد داشت. پس، کیفیت نمیتواند کاملاً بر پایه توصیفات معماری ارزیابی شود. ارزیابی بر پایهی معماری فقط یکی از جنبههای مشخصات کیفی سیستم را فراهم میکند و جهت ارزشیابی کیفیت کلی سیستم، لازم است ولی کافی نیست.
ارزیابی معماری، قبل از اینکه این معماری تبدیل به یک محصول شود، دارای ارزش اقتصادی بالایی است و یک تکنیک بسیار مؤثر است. همچنین، وقتی میخواهیم به یک نرمافزار بزرگ دست یابیم، این نرمافزار زمان حیات طولانی مدتی در سازمان توسعه دهنده خواهد داشت و مهم است که سازمان مفاهیمی از معماریهای کاندید را بهبود دهد. این امر، ارزیابی تناسب معماریهای کاندید با کیفیت های مورد نظر را ممکن میسازد. توجه شود که معماری نمیتواند عملکردی با کیفیت سیستم را گارانتی کند.
پس برای اجتناب کردن از تلف شدن سرمایه و زمان که به دلیل انتخاب معماری نامناسب می باشد، توصیف کردن یك نقشه معماری رسمی و معتبر که قابل ارزیابی باشد، قبل از شروع به پیاده سازی یك سیستم، می تواند بسیار مفید باشد. تکنیکهای توصیف رسمی به عنوان زبان توصیف معماری به ما اجازه ارزیابی و اعتبارسنجی معماری انتخاب شده را می دهد، تا مشخص نماید که آیا معماری پذیرفته شده برای رسیدن به نیازمندیهای غیر وظیفه مندی مشخص شده برای آن سیستم مناسب است یا خیر. در ارزیابی و تحلیل معماری باید به شیو های عمل نمود که نیازهای همۀ ذی نفعان در نظر گرفته شود . ارزیابی معماری در مرحله اعتبار بخشی یا اعتبار سنجی به یك سیستم نرم افزاری و یا در مرحلة پذیرش آن سیستم باید انجام گیرد.
پس در نهایت به صورت کلی از فواید ارزیابی معماری می توان به ملاقات صاحبان سهام، کاهش هزینه نگهداری، اولویت بندی ویژگیهای کیفیتی، بهبود کیفیت مستندات معماری، بهبود کیفیت معماری نرم افزار، کاهش ریسك و هزینه کمتر در تغییرات سیستم، اشاره نمود.
نقش هاي کلیدي در فرآیند ارزیابی:
- مشاور
- معمار
- مدیر پروژه
- تیم ارزیابی
- ذینفعان
حالا با توجه به اهمیت این موضوع، روش های گوناگونی برای ارزیابی ارائه شده و انتخاب روش ارزیابی مناسب با توجه به نوع سیستم و تنوع روش ها یکی از مباحث اصلی و حساس در این زمینه است که تو 4 دسته بیانشون میکنن:
مبتنی بر تجربه:
ارزیابی مبتنی بر تجربه بر اساس تجربه قبلی و دانش حوزه توسعه دهندگان یا مشاوران و معمارات است، افرادی که قبلا با الزامات و دامنۀ سیستم نرمافزار ی آشنا شدهاند، می توانند بر اساس تجربه قبلی بگویند که آیا یک معماری نرمافزار به اندازۀ کافی خوب است یا نه؟ یا مشاوره هایی برای بهبود این معماری بدن و به هر شکلی اون رو ارزیابی کنند، شرکت اعوان و تیم چکاپ درواقع در این حوزه فعالیت می کنند.
مبتنی بر ریاضی:
برای اندازهگیری تناسب سیستمهای نرمافزاری حیاتی، مانند نرم افزارهای حوزه های پزشکی، هواپیما و مأموریت های فضایی، ارزیابی کمی ویژگیهای کیفی عملیاتی مهم است و باید انجام بشود و چون اکثر روشهای ارزیابی معماری نرمافزار مبتنی بر سناریو از استدلال های کیفی برای ارزیابی ویژگیهای کیفی در زمان توسعه، استفاده میکنند، نمیتوانند این سیستم ها را ارزیابی کنند، بنابراین، تعدادی از روشهای ارزیابی معماری نرمافزار مبتنی بر مدل ریاضی ایجاد شدهاند.
این روش ها معماری نرم افزار را با استفاده از معادلات ریاضی شناخته شده مدل می کنند، در این روش اطلاعات دقیق عددی مهم هستند و برای مثال برای اندازه گیری دقیق پرفورمنس(مثلا این سیستم توانایی انجام چند TPS را دارد و چندتا مدنظر ماست) یا قابلیت اعتماد و ... از این روش استفاده می شود.
مبتنی بر شبیه سازی:
اصولاً این تکنیك ها مبتنی بر شبکه های پتری رنگی و شبکه های پتری سطح بالا می باشند، چون شبکه های پتری رنگی و شبکه های پتری سطح بالا امکان تجزیه و تحلیل پرقدرت و شبیه سازی های مناسب را فراهم می نماید و همچنین امکان استفاده از ابزارهای توانمند را مهیا می سازد، همچنین امکان مشخص کردن و ارزیابی کردن صفات کیفی غیر وظیفه مندی را می دهد، استفاده از این تکنیك به ما اجازه می دهد که قسمت هایی از طرح و نقشه معماری را که برای پاسخگویی به نیازمندیهای غیر وظیفه مندی نامناسب می باشد، تشخیص داده و شناسایی نماییم. این روشِ مدلسازی به دلیل سادگی و قابلیت بالایی که دارد بسیار مورد توجه قرار گرفته است.
و اما رویکرد مبتنی بر سناریو:
این روش در عمل بیشتر مورد استفاده قرار می گیرد، انواع گوناگونی دارد و در این مقاله بیشتر این رویکرد را تعریف میکنیم و تمرکز بیشتری نسبت به بقیه روی این روش خواهیم داشت:
اغلب تجزیه و تحلیل معماری نرم افزار بر اساس صفات کیفیتی مانند امنیت، کارایی، قابلیت نگهداری، قابلیت اطمینان و ... انجام می گیرد. پس می توان جهت ارزیابی معماری نرم افزار از سناریوها استفاده کرد. سناریوها میزان تطابق یك معماری را با درخواستهای مطروحه توسط ذی نفعان مشخص می کند. در واقع می توان گفت که تکنیکهای مبتنی بر سناریو، انواع تعاملات میان ذی نفعان و سیستم را بررسی می نمایند و مجموعه ای از نیازهای ذی نفعان را از روی سناریوها استخراج می نمایند و بررسی می کنند که معماری حاصل تا چه اندازه توانایی برآورده کردن این سناریوها را دارد و همچنین اگر تغییری در معماری حاصل مورد نیاز است، میزان این تغییرات تا چه حد است . میزان این تغییرات ملاکی برای ارزیابی است در مقایسه این سه تکنیك می توان گفت که تکنیکهای مبتنی بر سناریو چون مربوط به یك سیستم خاص بوده و بعنوان یك بخشی از فرآیند توسعه سیستم می باشند، اصولاً همه جوانب سیستم را در بر می گیرد و به عبارتی ارزیابی کاملی از سیستم را انجام می دهد . تکنیکهای اندازه گیری، سوالهای کمی را هم برای معماری ارائه می دهند. این تکنیکها بر روی انداز ه گیری کیفی متمرکز می شوند.
بعضی از ویژگی های رویکرد مبتنی بر سناریو:
رویکردهای مبتنی بر سناریو کاملاً بالغ در نظر گرفته می شوند و همینطور به طور گسترده در عمل مورد استفاده قرار می گیرند.
در ادامه انواع روش های مبتنی بر سناریو رو مورد بررسی قرار می دهیم:
روشهای رویکرد مبتنی بر سناریو:
SAAM (Scenario-based Software Architecture Analysis Method):
این روش در سال 1993 و به منظور ارزیابی بعضی از صفات کیفتی معماری مانند قابلیت اصلاح پذیری، قابلیت حمل و جابجایی، قابلیت گسترش، قابلیت نگهداری، قابلیت تجمیع، قابلیت اطمینان ایجاد گردیده است. روش ارزیابی SAAM قابلیت تشخیص نقاط ضعف و قدرت یک معماری را دارد. تاکید این روش بر روی قابلیت اصلاحپذیری است به گونهای که این روش به راحتی میتواند نقاطی از معماری نرم افزار سیستم مورد نظر را که نیازمندی قابلیت اصلاح پذیری را برآورده نساخته، مشخص نماید و یا اگر چند معماری متفاوت از سیستم وجود دارد که عملکرد یکسانی دارند، این روش میتواند از جنبهی قابلیت اصلاحپذیری آنها را مقایسه کند و به صورت نسبی آنها را رتبه بندی نماید.
روش SAAM ابتدا از مراحل مختلف تولید نرم افزار، مصنوعات را دریافت می کند و سپس با ایجاد سناریوها اقدام به ارزیابی معماري نرم افزار می نماید.
سه ورودي زیر توسط این روش دریافت می شود:
1- سند دیدگاه و سند تشریح گردانندگان کسب و کار
2- مدل نیازمندیهاي سیستم شامل موارد کاربري و توصیف موارد کاربري
3- مستندات تشریح معماري
هر یک از سناریوها از نظر اینکه در معماري سیستم، برقرار است یا خیر، مورد سنجش قرار می گیرد و عدد صفر و یک به هر یک نسبت داده می شود. گاه یک سناریو در تعارض با سناریوي دیگري قرار می گیرد بدین معنا که نمی توان همزمان به هر دو سناریو در سیستم دست یافت. بین سناریوها با دادن فاکتور وزنی به هر کدام، مصالحه برقرار میشود.
این روش ارزیابی شامل شش مرحلۀ اصلی است:
1) مرحلۀ ایجاد سناریوها : سناریوهای سیستم به این شکل ساخته میشوند که ذی نفعان سعی می کنند که با کمک جرقه های ذهنی انواع فعالیت هایی که سیستم باید پشتیبانی نماید را تعیین کنند و تغییرات و اصلاحاتی که در مورد این فعالیتها به نظرشان میرسد را نیز اعلام و پیش بینی کنند، بعدش این فعالیتها گروهبندی میشوند و سناریوها بدست میآیند.
2) توصیف معماریها : اولا مستنداتی که اولید میشوند، باید تمام بخشهای ایستا و پویای سیستم را به خوبی معرفی کرده باشند. در این مرحله از ارزیابی، معماری یا معماریهای کاندید مشخص میشوند. مستنداتی که برای معرفی معماری یا معماریهای کاندید استفاده میشود باید به نحوی تهیه شده باشد که برای همۀ افراد شرکتکننده در ارزیابی قابل درك باشد.
3) دستهبندی و اولویتبندی سناریوها : در این مرحله، سناریوها به دو دستۀ مستقیم و غیرمستقیم تقسیم میشوند. سناریوهای مستقیم به منظور اندازهگیری کارایی یا قابلیت اطمینان معماری به کار میروند، ولی سناریوهای غیرمستقیم برای اندازهگیری صفت کیفی قابلیت اصلاح پذیری سیستم استفاده میشود. یک سناریوی مستقیم بهوسیلۀ معماری کاندید پشتیبانی میشود و برپایهی نیازمندیهایی است که سیستم از آن متحول خواهد شد. یک سناریوی غیرمستقیم دنبالهای از رویدادها برای تحقق بخشیدن یا انجام معماری میباشد. معماری کاندید باید تغییرات جزئی و یا کلی بیابد تا با سناریوهای غیرمستقیم انطباق یابد.
4) ارزیابی سناریوهای غیرمستقیم به صورت جداگانه : ولی در مورد سناریوهای غیرمستقیم معمار باید شرح دهد که برای اینکه معماری شامل این سناریو گردد، باید چه تغییراتی در معماری ایجاد گردد و چون صحبت از تغییرات است، نیاز به ارزیابی سناریوهای غیرمستقیم مشاهده میشود اما در مورد سناریوهای مستقیم، فقط لازم است که معمار چگونگی اجرای سناریو توسط معماری را شرح دهد،
5) ارزیابی تعاملات سناریوها : وقتی دو یا چند سناریو روی مؤلفهی یکسان معماری درخواست تغییر داشته باشند، آن سناریوها باهم در تعاملاند، در نتیجه مؤلفههای تحت تأثیر یا باید اصلاح شوند یا به مؤلفههای کوچکتری تقسیم شوند تا از تعامل بین سناریوهای مختلف جلوگیری شود. وجود تعاملات زیاد بین مؤلفهها نشان میدهد که معمار، مفهوم جداسازی موضوعات را در بین مؤلفهها اعمال نکرده است و به بیان دیگر معماری از مسائل غیرمرتبط پشتیبانی میکند.
6) ارزیابی کلی : در این مرحله به هر سناریو وزنی متناسب با میزان اهمیت آن سناریو در موفقیت سیستم داده خواهد شد. وزن داده شده به اهداف کاری پشتیبانی شده، به وسیلهی آن سناریو و همچنین اهداف کاری کل سیستم بستگی دارد. با استفاده از این روش وزن دهی میتوان با جمع نمودن رتبههای مشخص شده برای هر سناریو، رتبهی کلی چند معماری کاندید را به دست آورده، و آنها را با هم مقایسه نمود.
معایب روش SAAM :
روش ارزیابی SAAM قابلیت تشخیص نقاط ضعف و قوت یك معماری را دارد . تأکید این روش بر روی قابلیت اصلاح پذیری است به گونهای که این روش به راحتی میتواند نقاطی از معماری نرم افزار سیستم مورد نظر را که نیازمندی قابلیت اصلاح پذیری را برآورده نساخته، مشخص نماید و یا اگر چند معماری متفاوت از سیستم وجود دارد که عملکرد یکسانی دارند، این روش می تواند از جنبه قابلیت اصلاح پذیری آنها را مقایسه کند و به صورت نسبی آنها را رتبه بندی نماید .البته این روش می تواند ارزیابی سریعی بر روی صفات کیفیتی مختلفی از جمله ، قابلیت اصلاح پذیری، قابلیت حمل و جابجایی، قابلیت گسترش، قابلیت نگهداری،قابلیت تجمیع، قابلیت اطمینان هم داشته باشد، ولی اساس ارزیابی این روش بر پایة قابلیت اصلاح پذیری است .این روش ارزیابی پس از طراحی معماری بدون جزئیات، می تواند وارد عمل شود.
به صورت کلی:
ATAM (Architecture based Tradeoff Analysis Method):
این روش مکانیزمی به نام درخت ابزار را برای استخراج ملزومات کیفی به روشنی، پیشنهاد میکند. درخت ابزار با ''ابزار'' به عنوان گره ریشه آغاز میشود. ابزار یک بیان کلی ''خوب'' از یک سیستم است. به طور معمول، عملکرد، اصلاح، امنیت، قابلیت استفاده و در دسترس بودن فرزندان ابزار هستند، اما شرکت کنندگان برای نامگذاری خود آزاد هستند. در سطح بعدی، کیفیت به توضیحات بیشتر مبتنی بر نگرانیهای ذی نفعان تصحیح میشود.
پالایش و پخش ادامه مییابد تا زمانی که سناریوهای کیفی که برگهای درخت ابزار هستند، ظاهر شوند. ATAM نقاط حساسیت، معاوضه، خطر و بدون خطر را با اولویتبندی و تجزیه و تحلیل سناریوهای کیفی شناسایی میکند سپس تصمیمگیریهای معماری برای حمایت از هر نقطه ساخته میشوند.
روش ATAM به صورت کاملاً جدا از روش SAAM و روشهای مبتنی بر آن، توسعه یافت و هدف از آن تحلیل صفات کیفیتی خاص بر اساس معماری بود. ATAM بر روی جنبه های کیفیتی معماری با جزئیات بیشتر بحث میکند و در عمل نسخۀ تقویت شدهای از SAAM می باشد. ATAM به عنوان یك مدل مارپیچی از طراحی در سال1991 مطرح شد و در سال 1999 مدل مارپیچی تحلیل و طراحی که تکامل فعلی و میزان پیشرفت را شرح می داد، مطرح گردید .
در واقع ATAM یك روش مبتنی بر سناریو برای ارزیابی صفات کیفیتی مانند : قابلیت اصلاح پذیری، قابلیت حمل، قابلیت توسعه، و قابلیت تجمیع می باشد. این روش چگونگی ارضاء شدن اهداف کیفیتی ویژه توسط معماری نرمافزار را تحلیل میکند. این روش، یك فرآیند تکرارپذیر میباشد .
این روش نیز بر اساس روش SAAM است و بیشتر تمرکز آن بر روي چهار فاکتور کیفی، تغییرپذیری، کارایی، دسترس پذیری و امنیت است. در این روش با توجه به چهار فاکتور کیفی فوق، سناریوهایی ارائه شده است. افرادي که تجربه کمتري دارند تمایل بیشتري به این روش دارند، زیرا سناریوها در این روش از قبل نوشته شده است.
یکی از مسائلی که روش ATAM به آن پرداخته تحلیل مدل مصالحۀ سناریوها با یکدیگر است.
موضوعات مطروحه در این تحلیل عبارتند از اولویت بندي سناریوها، تشخیص تناقض سناریوها و نمره دادن به هر یک از سناریوها.
از روش ATAM می توان در خط تولید نرم افزار (SPL) نیز بهره جست تا بتوان ریسک هاي بالقوه موجود در معماري مربوطه را کشف کرد.
به صورت کلی:
ALMA (Architecture-Level Modifiability Analysis):
خب ALMA یک روش تجزیه و تحلیل مبتنی بر سناریو برای ارزیابی اصلاح پذیری معماری نرمافزار با نگهداری، پیشبینی هزینه و ارزیابی ریسک ارائه شده است. ALMA از تغییر سناریوی ارائه شده توسط ذی نفعان سیستم استفاده میکند. تجزیه و تحلیل اصلاح با تعریف مجموعهای از سناریوها که ممکن است در طول تکامل سیستم رخ دهد شروع میشود. سناریوها به منظور بررسی اینکه چگونه به خوبی معماری فعلی را پشتیبانی کنند و یا ممکن است تغییرات آینده را در خود جای دهند مورد استفاده قرار میگیرند.
این روش میزان تغییرپذیري معماري را بررسی میکند و در انتها یا معماري نرم افزار بهبود می یابد و یا معماري مجدد انجام می شود. همچنین در این روش یک معماري موجود در ابتداي کار وجود دارد که آن را توسط روش SAAM ارزیابی میکنند. سپس مشکلات معماري مشخص شده و سناریوهاي تغییر (یك سناریوی تغییر برای یك سیستم، یك رویداد ویژه ای را شرح می دهد که به واسطة اتفاق افتادن این رویداد در چرخة حیات آن سیستم، سیستم نیازمند اصلاح شود ) مشخص می شود. سپس ارزیابی تغییرات انجام داده می شود و در انتها نتیجهگیري می شود ،آیا معماري قابل اصلاح هست یا خیر و زمان و هزینه براي این اصلاح نرمال است یا خیر.
بنابراینALMA یك روش ارزیابی مبتنی بر سناریو می باشد که برای ارزیابی صفات کیفیتی نرم افزار که روی قابلیت اصلاح پذیری متمرکز است، ایجاد شده است.
به صورت کلی:
SBAR (Scenario-Based Architecture Reengineering) :
یك خصوصیت برجسته این روش آن است که برای ارزیابی معماری سیستم موجود، خود سیستم می تواند استفاده شود . فرآیند ارزیابی می تواند به روش کامل یا آماری انجام شود.SBAR به عنوان روشی برای اندازه گیری سیستم نرم افزاری شناخته شده است.(مهندسی مجدد معماری). در فرآیند ارزیابی کامل، مجموعه ای از سناریوها تعریف و با هم ترکیب می شوند.
به صورت کلی:
FAAM (Family-Architecture Assessment Method):
خب FAAM یك روش برای ارزیابی معماری خانوادهای از سیستمهای اطلاعاتی است که روی دو صفت کیفیتی قابلیت توسعه و قابلیت تعامل پذیری متمرکز می شود . هدف این روش برقرار کردن فرآیندی برای ارزیابی خانواده معماریهای سیستمهای اطلاعاتی میباشد که توسط خطوط راهنما، متریکها، توصیه ها و فرآیندها پشتیبانی می شود. FAAM تجربیات SAAM و با اضافه نمودن یك دید خانوادگی و تکنیکهای پیشرفته، جهت تسهیل ارزیابی ایجاد شده است. همچنین FAAM تنها برای ارزیابی تعامل پذیری و قابلیت توسعه سیستمهای یك خانواده توسعه داده شده است.
براي نمونه این روش میتواند براي خانوادهاي از سیستمهاي مالی، سیستمهاي منابع انسانی، سیستمهاي محاسباتی، سیستمهاي مدیریت بیمارستانی و .. مورد استفاده قرار گیرد.
در این روش تکلیف مسئول ارزیابی مشخص است که باید اقدام به ارزیابی چه سناریوهایی کند. بدین ترتیب در این روش نیازي به جلسات طوفان فکري بین اعضاي تیم ارزیابی نیست، زیرا سناریوهاي مربوطه از قبل تعیین و بر روي آنها تفکر شده است.
CBAM (Cost-Benefit Analysis Method):
خب CBAM زمانی شروع به کار میکند که روش ATAM کنار گذاشته شده است، یعنی پس از اینکه معماری توسط روش ATAM ارزیابی شد، این روش شروع میشود و از محصولاتی که توسط ATAM به عنوان خروجی تولید شده است، استفاده می نماید. CBAM پلی بین دو موضوع تولید و توسعة نرم افزار و اقتصاد سازمان در طول فرآیند معماری را ایجاد می نماید. این روش هزینهها و سودها را به صفات کیفیتی اضافه مینماید که در بیشتر اوقات نیاز به مصالحه بین این صفات و صفات دیگر وجود دارد.
روشهای قبلی مانند SAAM و ATAM صفات کیفیتی مانند قابلیت اصلاح پذیری، قابلیت استفاده، کارایی و غیره را در نظر می گرفتند و بر اساس آنها تصمیمات معماری مورد نیاز را اتخاذ می کردند اما CBAM مدعی است که عواملی مانند هزینه ها، سودها و ریسکها نیز باید به عنوان صفات کیفیتی در نظر گرفته شوند، چرا که آنها در تصمیمات معماری تاثیر به سزایی میگذارند.
در این روش هزینه به عنوان یک خصوصیت کیفی درنظر گرفته میشود و تصمیمات معماري را در حوزه هاي استقرار و پیاده سازي گرفته میشود و اثرات آن هزینه را در نظر می گیرد.
هر خصوصیت کیفی که برای ما یک مزیت به وجود بیاورد باید به این سوال پاسخ دهیم که در مقابل این مزیت، چقدر هزینه کرده ایم؟ ابتدا سود حاصل از آن را از نظر ریالی و اجتماعی برآورد می کنیم، سپس محاسبه مطلوبیت را انجام می دهیم و در انتها مشخص میشود که تصمیم معماري شما آیا توجیه دارد یا خیر؟
به صورت کلی:
بررسی کلی و مقایسۀ مختصر روشهای مبتنی بر سناریو:
در روش SAAM مهمترین پارامتری که مورد ارزیابی قرار میگیرد قابلیت اصلاح پذیری بوده و از مزایای این روش قابل استفاده بودن برای هر نوع معماری است و از معایب این روش نیز نداشتن تکنیکهایی برای انجام مراحل و متریکهای مشخص است.
در روش ATAM مهمترین پارامتری که مورد ارزیابی قرار میگیرد قابلیت اصلاح پذیری و قابلیت حمل و قابلیت تجمیع پذیری بوده و از مزایای این روش قابل استفاده برای صفات پویا و ثابت، تولید سناریوها بر اساس نیازمندیها، ایجاد درخت سودمندی است و از معایب این روش نیز نیاز به داشتن تکنیکهای مفصلی از دانش و همچنین وابستگی به فرهنگ و تجربه ذی نفعان است.
در روش CBAM مهمترین پارامتری که مورد ارزیابی قرار میگیرد، هزینه ها، سودها، و زمانبندی بوده و از مزایای این روش تعیین میزان برگشت سرمایه در ایجاد تغییرات است و از معایب این روش نیزاین است که بطور مستقل بکار نمی رود و وابسته به روش دیگر است. در روش ALMAمهمترین پارامتری که مورد ارزیابی قرار میگیرد قابلیت اصلاح پذیری بوده و از مزایای این روش مشخص نمودن شرایط توقف تولد سناریو و مشخص کردن تکنیکهای تکرار مراحل است و از معایب این روش نیز کامل نبودن ارزیابی ریسك و نبود تصمیم گیری در مورد درستی نتایج و تمرکز روی صفات ایستا است. در روش FAAM مهمترین پارامتری که مورد ارزیابی قرار میگیرد تعامل پذیری و قابلیت گسترش بوده و از مزایای این روش داشتن تکنیکهایی برای تقویت تیم ارزیابی است و از معایب این روش نیز تمرکز روی صفات ایستا و به کار رفتن در محیطهای خاص است.
همچنین در روش SBAR پارامترهای متنوعی مورد ارزیابی قرار میگیرد و از مزایای این روش همکاری در طراحی معماری و ارزیابی بر مبنای سناریو است و از معایب این روش نیز نیاز به دانش و تخصص است.
مدلهای بلوغ نرم افزار
امروزه استفاده از ایده بلوغ در حال افزایش است و در راستای ترسیم مسیریمنطقی جهت خدمات ی سازمان، به کار گرفته میشود. همانطور که میدانیم پیچیدگی زیادی در حیطۀ نرم افزار و در بخش اجرا و تکمیل موفقیت آمیز پروژهها وجود دارد.
هدف از مدلهای بلوغ ارائه شده این است که چارچوبی را فراهم نمایند، تا به سازمانها کمک کنند درجۀ فعلی تکامل خود را ارزیابی کنند و در کنار آن با طی مسیر مشخص شده در این مدلها به تعالی بیشتر دست یابند و بتوانند پروژههای خود را بهتر و موثرتر مدیریت کرده و به نتیجه برسانند.
به صورت کلی:
انواع مختلفی از مدلهای بلوغ وجود دارد. موردی که برای استفاده انتخاب می کنید ممکن است به صنعت شما یا آنچه که شما نیاز دارید ارزیابی کنید، بستگی داشته باشد، در ادامه انواع آن را بررسی میکنیم:
Capability Maturity Model Integration(CMMI) :
یکپارچهسازی مدل بلوغ توانایی (Capability Maturity Model Integration) مدل فرآیندی است برای تعریف و ترویج رفتارهای سازمانی که منجر به بهبود کارایی میگردد. CMMI یک شیوۀ بهبود فرایندی است که با عناصر اصلی فرایندهای موثر سازمان یافته است. در مدل CMMI سازمانها این قابلیت را دارند که زمان سیکل های روند توسعه را کاهش داده و امکان پیشگویی میزان کارایی حاصل از هر عملیات و همچنین امکان سازگاری محصولات با نظر کاربران نهایی را برآورده سازند.
مدل بلوغ قابلیت CMMI، با بکارگیری دانش و تجارب در مدیریت فرایندها و با تکبه بر این اصل که "کیفیت سیستم یا محصول شدیدا متاثر از فرایندی است که در توسعه و نگهداشت آن به کار رفته است"، ایجاد شده است. مدل CMMI علاوه بر بهبود، برای ارزیابی و مقایسۀ سازمانها نیز به کار میرود.
مدل CMMI در دانشکده مهندسی نرمافزار دانشگاه Carnegie Mellon با پشتوانه دولت، سازمانهای نظامی، صنایع و مراکز علمی ایجاد شد. در حال حاضر توسط انیستیتو CMMI که بخشی از دانشگاه Carnegie Mellon است، اداره میشود.
همچنین CMMI تلاش میکند عملکرد سازمانها را با بیان آنچه برای ارائه محصولات و خدمات بهتر لازم است، بهبود بخشد. باید دقت داشت که CMMI فراتر از یک مدل فرآیندی است و علاوه بر آن یک مدل رفتاری نیز هست. کسب و کارها میتوانند از این مدل برای تدوین معیارهای ارزیابی قابل اندازهگیری در راستای بهبود کارایی استفاده کنند. علاوه بر آن،CMMI میتواند ساختاری برای افزایش بهرهوری رفتار در کل سازمان ایجاد کند.
مدل CMMI بلوغ سازمانها را در ۵ سطح تعریف میکند. سازمانهایی که این مدل را میپذیرند هدفشان افزایش سطوح بلوغ سازمان است. قابل ذکر است با رسیدن به سطح ۵یعنی “Optimizing”، نباید این مدل را کنار گذاشت. در این مرحله سازمانها باید روی بهبود منظم متمرکز باشند.
۵ سطح بلوغ به شرح زیر است:
به صورت کلی:
Digital Maturity Model (DMM):
سازمان ها برای اینکه نقشۀ راه شان را بچینند نیاز به اطلاعاتی از وضعیت کنونی سطح دیجیتال خود دارند، بنابراین از مدل بلوغ دیجیتال استفاده میکنند تا بفهمند در چه بخش هایی از سیستم دچار نقاط قوت و ضعف دیجیتالی هستند و برای رشد و پیشرفت در حوزه دیجیتال چه کارهایی را باید انجام بدهند یا ندهند و یک سری استراتژی برای خود تعیین کنند و طبق آن جلو بروند، قبل از هر حرکتی برای دیجیتالی شدن، باید با بلوغ سنجی، وضعیت دیجیتال و آمادگی دیجیتالی خود را بسنجیم تا بفهمیم که از کجا و به چه شکلی شروع کنیم. یک مدل بلوغ دیجیتال به عنوان یک ابزار کسب و کار بکار برده میشود تا بهوسیله آن بتوان وضعیت فعلی ظرفیتها و قابلیتهایی که در درون یک سازمان وجود دارد را مشخص کرد و به کمک آنها وضعیت شفاف و روشنی در حوزه دیجیتال از طریق این مدل بدست آورد.
این مدل که به اختصار DMM نامیده میشود، ظرفیتهای دیجیتال سازمانها را در قالب 5 بعد از ابعاد کاملا صریح مطرح در کسب و کار مورد ارزیابی قرار میدهد تا یک دید جامع از بلوغ دیجیتال در سراسر سازمان ایجاد نماید. این ابعاد به ترتیب عباتند از: 1-مشتریان، 2-استراتژی، 3-تکنولوژی، 4-فرآیندهای عملیاتی، 5- سازمان و فرهنگ سازمانی.
به صورت کلی:
Business Process Maturity Model (BPMM):
مدل بلوغ فرایند کسب و کار یک مسیر تکاملی است و باعث میَشود که فرایندهای سازمان هماهنگ شوند و در مسیر بلوغ حرکت کنند چون سازمان ها در حالت اولیه دارای فرآیندهایی متناقض، نابالغ و نامنظم هستند بنابراین، از استراتژی بهبود یا ترمیم در بلوغ فرایند کسب و کار استفاده میشود و پروسه تولید فرآیندهای کسب و کار، یک نقشه راه برای بهبود مستمر فرآیندها فراهم میکند و کمک میکند ضمن شناسایی مشکلات و نواقص فرآیندها، پیشرفتها به صورت منطقی و مرحله به مرحله انجام شوند.
پس BPMM به شناسایی نواقص و کاستیهای فرایند در سازمان کمک میکند و بهبودها را در مراحلی منطقی و تدریجی هدایت میکند. ما برای توافق تیمی و ثبات در انجام کارها، ایجاد یک ساختار مشخص با تعیین اینکه چه کاری، در چه زمانی و توسط چه کسی انجام شود، ایجاد و تقویت نگرش سیستماتیک و تسهیل گفتگوی افراد نیاز به این مدل بلوغ در سازمان داریم.
مدل BPMM، یکی از بهترین و دقیقترین مدلهای بلوغ مدیریت فرآیند است که به وسیله Bill Curtis و John Alden طراحی و اجرا شد. این مدل، نوعی راهنما برای به دست گرفتن کنترل فرآیندهای کسب و کار، در 5 سطح قابل ارزیابی است. سیستم BPMM بر تغییر و بهبود عملکرد، گردش کار، مدیریت و فرآیند متمرکز است و قادر است فرآیند بهبود را به تمامی بخشهای سازمان هدایت کند.
در مدل بلوغ فرایند کسب و کار هر سطح از بلوغ، اهداف و شرایط مورد نیاز برای پیشرفتهای آتی را فراهم میکند و در واقع به صورت مرحله به مرحله جلو میرویم و میتوانیم ویژگی های یک فرایند را ارزیابی کنیم و برای حفظ و بهینه سازی آن تلاش کنیم، اینها از اصول اصلی BPMM است.
بعد از استفاده از مدل بلوغ فرایند کسب و کار، این مدل بلوغ سطح سازمان را نشان میدهد بنابراین طبق وضعیت جاری سازمان پلن های بهبود چیده میشوند و سازمان به سمت و جهت مثبت حرکت میکند که این یکی از مزایای BPMM است. همچنین از دیگر مزایای آن میتوان به امکان ارزیابی ریسکهای موجود، انتخاب تامین کنندگان و نظارت بر عملکردشان، شرح و بیان میزان بهبود فرآیند در مراحل مختلف و امکان مقایسه و توانمندسازی راهکارها، برای بهینه سازی فرآیندها اشاره کرد.
کسب و کارها با استفاده از فرآیندهای کنترلی این ابزار، از مزایای مختلفی مانند: صرفه جویی در هزینهها، افزایش کیفیت پیش بینیها، مشارکت بیشتر کارکنان و افزایش بهره وری برخوردار خواهند شد.
ارزیابی مدل بلوغ فرایند کسبوکار:
چهار نوع ارزیابی برای BPMM با سطوح مختلف اطمینان وجود دارد که شیوههایی را که مدل با آنها، اجرا شده نشان میدهد و مشخص میکند آیا سازمان به اهداف شیوههای اجرایی و اهداف حوزههای فرایندی مرتبط با آنها دست پیدا کرده است یا خیر. این چهار نوع ارزیابی عبارتاند از:
به صورت کلی:
Capability Maturity Model (CMM):
استاندارد نرمافزار تدوين شده توسط دانشكده مهندسي نرمافزار دانشگاه كارنگي ملون آمريكا و مؤسسه SEI (Software Engineering Institute) می باشد که چارچوبي است براي توصيف اجزاي كليدي يك فرآيند كارآمد جهت توليد نرمافزار و همچنین چارچوبی است برای توصيف سير بهبود تكاملي از يك فرآيند ناكامل و نامنظم به يك فرآيند تكامل يافته و منظم.
سطوح مختلف این بلوغ همانند همان بلوغ CMMI است.
به صورت کلی:
Agile Maturity Model (AMM)
«این مطلب، بخشی از تمرینهای درس معماری نرمافزار در دانشگاه شهیدبهشتی است»
منابع: