<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های معصومه کوهستانی</title>
        <link>https://virgool.io/feed/@angelmoonstar77</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-17 03:30:47</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>معصومه کوهستانی</title>
            <link>https://virgool.io/@angelmoonstar77</link>
        </image>

                    <item>
                <title>Process Mining as a Service</title>
                <link>https://virgool.io/@angelmoonstar77/process-mining-as-a-service-kc4trrijvq9w</link>
                <description>مقدمهفرآیندکاوی: حلقه‌ی گمشدهاز فرآیندکاوی به عنوان حلقه‌ی گمشده‌ی علم فرآیند و علم داده یاد می‌کنند. علم داده مبتنی بر داده و مستقل از قالب داده به تحلیل آن‌ها می‌پردازد. از طرفی علم فرآیند مبتنی بر مدل است و روی فرآیندها تمرکز کرده است. در فرآیندکاوی از هر دو استفاده می‌کنیم. در فرآیندکاوی از داده‌هایی با قالب خاصی تحت عنوان نگاره‌ی رویداد (Event Log) استفاده می‌شود. نگاره‌های رویداد سه ویژگی اصلی و اجباری caseId، activityId‌ و timestamp را دارند. ویژگی‌های اختیاری دیگری مانند cost، source و غیره را هم می‌توانند داشته باشند.نمونه‌ی نگاره‌ی رویداددر فرآیندکاوی سه تکنیک‌ وجود دارد: کشف و بهبود فرآیند، انطباق فرآیند و مدل. در تکنیک کشف فرآیند به کشف فرآیند با استفاده از نگاره‌ی رویداد (که مجموعه دادگان خاص حوزه‌ی فرآیندکاوی می‌باشد) پرداخته می‌شود. در تکنیک انطباق فرآیند و مدل به بررسی تطبیق فرآیندهای موجود و مدلی که دارند، پرداخته می‌شود. در تکنیک بهبود فرآیند به بهبود فرآیندها از لحاظ مالی، سرعت و غیره پرداخته می‌شود. می‌توان این تکنیک‌ها را در قالب یک سرویس تحت وب یا یک برنامه، به یک سازمان یا سازمان‌های مختلف در صورت امکان، ارائه داد. این سرویس ارائه شده، یک معماری خواهد داشت که در این نوشتار با استفاده از اصولی که برای طراحی معماری در درس معماری نرم‌افزار آموختیم، به بررسی معماری آن خواهیم پرداخت. به این حوزه Process Mining as a Service یا به اختصار کمتر دیده شده PROMaaS می‌گویند.مطالبی که در قسمت‌های بعدی خواهید خواند، حاصل این چندین گام هستند:مطالعه در مورد فرآیندکاوی و فرآیندکاوی به عنوان سرویسجست‌وجو در میان مقاله‌ها، محتوای سایت‌ها، ویدیوها و صنعتمطالعه‌ی مقاله‌ها، محتوای سایت‌ها و ویدیوها، بررسی صنعتجمع‌بندی مطالب مطالعه‌شدهفرآیندکاوی به عنوان سرویسطبق [4] ۶۱٪ از کسب‌وکارها اعلام کرده‌اند که فرآیندکاوی بسیار سودمند است. از این جهت که استفاده از فرآیندکاوی به کشف گلوگاه و بهینه‌سازی فرآیندهایشان کمک می‌کند. از طرفی هم به علت وجود عواملی مانند محدودیت در ابزارهای موجود، کمبود نیروی متخصص و نیاز به پیش‌زمینه‌ی پیچیده‌ی IT چالش برانگیز است.این حوزه جدید است و تعریف دقیقی از آن ارائه نشده است. بنابراین از تعریف ارائه شده در [4] استفاده می‌کنیم. [4] فرآیندکاوی به عنوان سرویس را &quot;برون‌سپاری فرآیندکاوی با به کارگیری مهیا کنندگان سرویس برای کشف و پایش فرآیندهای کسب‌وکارهایشان&quot; تعریف می‌کند. فرآیندکاوی به عنوان سرویس امکان استفاده از فرآیندکاوی بدون نیاز به هزینه‌ی اضافی برای به کارگیری نیروی متخصص را فراهم می‌کند. عبارت فرآیندکاوی به عنوان سرویس جدید است و غالبا توسط شرکت‌های مشاور مانند PwC و Coberg و برخی سرمایه‌گذاران فرآیندکاوی مانند IBM استفاده می‌شود.[4] که در ادامه به معرفی PwC و Coberg‌ و فعالیت‌هایشان در این زمینه در قسمت صنعت خواهیم پرداخت.مزایا [4]کاهش هزینه‌هابا پیاده‌سازی فرآیندکاوی به عنوان سرویس بر روی ابر، هزینه‌ای برای زیرساخت صرف نمی‌شود.هزینه‌ای برای گرفتن لایسنس هم صرف نمی‌شود.هزینه‌ای برای به کارگیری نیروی متخصص هم صرف نخواهد شد.دیپلوی سریعاز آنجایی که نیاز به به کارگیری نیروی متخصص و نصب ابزارها نیست در نتیجه سرعت دیپلوی بیشتر خواهد بود.چالش‌ها [4]محرمیت داده: از آنجایی که قرار است فرآیندکاوی در قالب سرویس ارائه شود، لازم است شرکت‌هایی که از این سرویس استفاده می‌کنند، اطلاعات خود را در اختیار طرف ارائه‌ دهنده‌ی سرویس قرار دهند که این محرمیت داده‌ها را خطر می‌اندازد. با اینکه شرکت‌ها این مشکل را با تنظیم یک سری مجوزها حل کرده‌اند ولی باز هم ریسک لو رفتن اطلاعات وجود دارد.مهاجرت ابری:‌ شرکت‌ها برای استفاده از این سرویس لازم است اطلاعات و تنظیمات خود را بر روی ابر انتقال دهند که نیاز به تخصص دارد و می‌تواند هزینه‌بر و پیچیده شود. البته این چالش هم با ارائه‌ی پکیج‌هایی جهت مهاجرت به ابر در حال رفع شدن است.تفاوت فرآیندکاوی معمولی و فرآیندکاوی به عنوان سرویس [4]فرآیندکاوی به عنوان سرویس در صنعتیکی از نکات جالب این حوزه، حضور آن در هر دو حوزه‌ی آکادمی و صنعت است. چندین شرکت وجود دارند که فرآیندکاوی را به عنوان سرویس ارائه می‌دهند. در ادامه هر یک را به صورت مختصر بررسی خواهیم کرد.شرکت PwC: این شرکت نرم‌افزارها و سرویس‌های بسیاری برای ارائه‌ی خدمات به شرکت‌ها و سازمان‌ها تولید کرده است. یکی از این سرویس‌ها، فرآیندکاوی به عنوان سرویس می‌باشد. این سرویس تمام تحلیل‌های فرآیندکاوی را بدون نیاز به لایسنس و به صورت مداوم اما با دریافت هزینه، به مشتریانش ارائه می‌دهد. فواید این سرویس را پایش پیوسته‌ی فرآیندها، انطباق، میزان استفاده از سیستم و اثربخشی می‌دانند. برای مشاهده‌ی دمو و دریافت اطلاعات بیشتر باید با شرکت تماس گرفته شود.[1] شرکت Coberg: شرکت کوبرگ هم خدمات و مشاوره به خصوص در حوزه‌ی فرآیندکاوی به شرکت‌ها و سازمان‌ها ارائه می‌دهد. یکی از محصولاتش فرآیندکاوی به عنوان سرویس است. مزایای این سرویس را اثربخشی، انطباق و اعتبارسنجی می‌دانند. این سرویس همان‌طور که قبلا در مورد مزایایش صحبت کردیم باعث کاهش هزینه‌ها و عدم نیاز به افراد متخصص می‌شود. در مورد دمو و اطلاعات بیشتر و هزینه این شرکت هم مانند PwC است. [2]شرکت Software AG: این شرکت هم به ارائه‌ی خدمات به شرکت‌ها و سازمان‌ها می‌پردازد. یکی از این خدمات ارائه‌ی فرآیندکاوی به عنوان سرویس بر پایه‌ی ابری است. شامل سه قسمت ARIS Process Mining Basic، ARIS Process Mining Advanced و ARIS Process Mining Enterprise می‌باشد. این سرویس هم به ارائه‌ی تحلیل‌ها و تکنیک‌های فرآیندکاوی بدون نیاز به نیروی متخصص می‌پردازد. [3]پلتفرمِ Microsoft Power: این پلتفرم خدمات تحلیل داده‌ها، ایجاد برنامه‌های کاستوم، اتوماسیون ورک‌فلو‌ها و ایجاد بات‌های هوشمند بدون کد را ارائه می‌دهد. یکی از سرویس‌های این پلتفرم ارائه‌ی فرآیندکاوی به عنوان سرویس است. (البته فعلا فیچری است که رسما برای استفاده‌ی تجاری ریلیز نشده است و این یک پیش ریلیز است) این سرویس‌ تحلیل‌ها و تکنیک‌های فرآیندکاوی را در اختیار مشتریانش قرار می‌دهد. [16]نقطه‌ی مشترک تمام این سرویس‌ها، ارائه‌ی خدمات فرآیندکاوی مانند تشخیص گلوگاه، بررسی انطباق و موارد دیگر به منظور کشف و بهبود مشکلات موجود به صورت سرویس به صورت همیشه در دسترس، بدون نیاز به نیروی متخصص است.فرآیندکاوی به عنوان سرویس در آکادمیاز جست‌وجو در میان مقاله‌ها، ۸ مقاله‌ی مرتبط در این حوزه یافت شد که دو مورد از آن‌ها کاملا مرتبط (ردیف‌های سبز رنگ) به فرآیندکاوی به عنوان سرویس هستند. با توجه به جست‌وجوهای انجام شده می‌توان یکی از این دو نتیجه‌گیری را انجام داد که یا این حوزه بسیار جدید است و نیاز دارد تا کارهای دیگری در این زمینه انجام شود یا اینکه کار زیادی نمی‌توان در این زمینه انجام داد. با بررسی بیشتر مقاله‌ها در نهایت می‌توان یکی از این نتیجه‌گیری‌ها را انتخاب کرد.مقاله‌ها را می‌توان به سه دسته تقسیم کرد:دسته‌ی اول: مقاله‌هایی که مستقیما با فرآیندکاوی به عنوان سرویس مرتبط هستند.دسته‌ی دوم: مقاله‌هایی که بخش کوچکی از محتوای خود را به فرآیندکاوی به عنوان سرویس اختصاص داده‌اند. به عبارتی می‌توانند بخش یا زیربخشی از فرآیندکاوی به عنوان سرویس باشند.دسته‌ی سوم: مقاله‌هایی که می‌توانند ایده‌هایی برای ارائه‌ی فرآیندکاوی به عنوان سرویس فراهم کنند.دسته‌ی اولبا مقاله‌ی [11]‌ شروع می‌کنیم. در این مقاله یک وب اپلیکیشن به نام Nirdizati ساخته شده است. این وب اپلیکیشن فرآیندکاوی را به عنوان سرویس ارائه می‌دهد. البته که تمام تکنیک‌های فرآیندکاوی را ارائه نمی‌دهد و فقط بخشی از آن و بخش پیش‌بینی را ارائه می‌دهد. این پیش‌بینی می‌تواند پیش‌بینی زمان باقی‌مانده، فعالیت بعدی و موارد قابل پیش‌بینی دیگر باشد.در قسمت فرانت که در تصویر زیر مشاهده می‌کنید از کاربر نگاره‌های رویداد، نوع پیش‌بینی و روش آن دریافت می‌شود.قسمت بک‌اند به دو قسمت تقسیم می‌شود:‌ ۱. Nirdizati Training و ۲. Nirdizati Runtime. در قسمت Training نگاره‌‌ی رویداد دریافت شده و مدل(های) پیش‌بینی ایجاد می‌شوند. سپس این مدل(ها) به قسمت دوم Runtime داده می‌شوند تا استریمی از نگاره‌های رویداد را دریافت کرده و پیش‌بینی را انجام دهد. در نهایت نتایج را در یک داشبورد به صورت جدول نمایش دهد.نماهای منطقی (سطح بالای) دو قسمت بک‌اند را می‌توان در تصاویر زیر مشاهده کرد.نمای منطقی قسمت Trainingنمای منطقی قسمت Runtimeکه شرح اجزای این نماها در این نوشتار نمی‌گنجد.مورد بعدی [7] است که یک پایان‌نامه است. در این پایان‌نامه به ترتیب به شرح فرآیندکاوی، چالش‌های بازار و نیاز آن به فرآیندکاوی و راه‌حل‌‌های رفع این چالش‌ها و در نهایت ایده‌ی اصلی پایان‌نامه، روش‌ بهبود این راه‌حل ها برای تبدیل شدن به یک سرویس پرداخته می‌شود. یکی از راه‌حل‌های رفع چالش‌های بازار به کمک فرآیندکاوی ابزارهای فرآیندکاوی مانند دیسکو می‌باشد. که نویسنده در این پایان‌نامه دیسکو را انتخاب کرده است و بهبودهایی برای ارائه‌ی دیسکو به عنوان سرویس ارائه می‌دهد. به بررسی مواردی مانند میزان راحتی دیسکو برای استفاده‌ی افرادی که زیاد با تکنولوژی کار نکرده‌اند و موارد دیگر می‌پردازد.دسته‌ی دومدر این دسته با [5]‌ شروع می‌کنیم. با استفاده از فرآیندکاوی می‌توان به تحلیل رفتار کاربران یک نرم‌افزار پرداخت. کافیست رفتار کاربران را به صورت نگاره‌های رویداد جمع‌آوری کنیم و به یک ابزار تحلیل فرآیندکاوی بدهیم. این موضوع مقاله‌ی [5] است. که در نهایت در یک بخش کوچک به این مورد اشاره می‌کند که چون نرم‌افزارهای مختلف، تعداد داده‌های مختلف و سرعت‌های موردنیاز متفاوت وجود دارد در نتیجه می‌توان این تحلیل‌های فرآیندکاوی را به صورت یک سرویس ابری ارائه داد.در [8] در مورد Big Data‌ و قابلیت ترکیب آن با فرآیندکاوی صحبت می‌شود. Map-Reduce‌ از مفاهیمی است که در حوزه‌ی Big Data استفاده می‌شود. می‌توان با استفاده از عملیات key-value-mapping در Map-Reduce نگاره‌های رویداد را هم به صورت key  و value به یکدیگر مپ کرد. البته در این زمینه چالش‌هایی مانند افزایش پیچیدگی برای داده‌های پیچیده، عدم وجود راه‌حل بدیهی و مشخص برای Anonymization‌ و موارد دیگر وجود دارد. نویسنده معتقد است لازم است در این زمینه تحقیقات بیشتری انجام شود. در نهایت هم به استفاده از فرآیندکاوی به صورت سرویس ابری اشاره می‌کند. از این جهت که داده را با استفاده از Big Data و تحلیل‌هایش را با فرآیندکاوی داریم.در [13]‌ هم به ارائه‌ی سرویسی که کتابخانه‌ی PM4PY را قابل فراخوانی می‌کند، می‌پردازد. در آخرین مقاله‌ی این بخش [14] هم که می‌توان زیربخشی از این حوزه دانست، به ارائه‌ی سرویسی جهت حفظ محرمیت نگاره‌های رویداد می‌پردازد که به آن Event Log Privacy as a Service‌ یا به اختصار ELPaaS می‌گویند.دسته‌ی سومدر این بخش هم با استفاده از [6] و [10] می‌توان به ترتیب ایده‌هایی مانند عیب‌یابی فرآیندها و تحلیل‌ رفتار کاربران و روش‌هایی برای بهبود فرآیند‌ها در این راستا، برای ارائه‌ی فرآیندکاوی به عنوان سرویس ارائه داد. جمع‌بندیما در این نوشتار به بررسی مفهوم فرآیندکاوی به عنوان سرویس و جایگاه‌ آن در صنعت و آکادمی پرداختیم. دیدیم که این حوزه هم در صنعت و هم در آکادمی نقش‌های زیادی دارد. در صنعت این سرویس توسط چندین شرکت ارائه شده است و به نظر می‌رسد آینده‌ی خوبی در انتظار این حوزه در صنعت است. اما در آکادمی به نظر کار زیادی در این حوزه انجام نشده است و باید تحقیقات بیشتری از ترکیب این حوزه با سایر موضوعات مانند Big Data که قبلا در مورد آن صحبت کردیم، صورت گیرد.این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است.منابع[1] https://store.pwc.de/en/products/process-mining-as-a-service[2] https://coberg.net/promaas/[3]https://newscenter.softwareag.com/en/news-stories/press-releases/2020/0807_launch_process_mining_as_a_service.html[4] https://research.aimultiple.com/process-mining-as-a-service/[5] https://dl.acm.org/doi/abs/10.1145/2652524.2652583[6] https://ieeexplore.ieee.org/abstract/document/4782560[7] https://dspace.vutbr.cz/bitstream/handle/11012/67038/final-thesis.pdf?sequence=8[8] https://ieeexplore.ieee.org/abstract/document/7302592[9] https://dspace.library.uu.nl/handle/1874/351710[10] http://essay.utwente.nl/81027/[11] https://eprints.qut.edu.au/109686/[12] https://www.sciendo.com/article/10.2478/fman-2020-0010[13] http://ceur-ws.org/Vol-2420/papeDT12.pdf[14] http://ceur-ws.org/Vol-2420/paperDT9.pdf[15]https://pdfs.semanticscholar.org/6cf2/7e3fa051ef192421e6d2e77294f69a2c37e0.pdf?_ga=2.160958845.1742477562.1640942856-1176142062.1640460519[16] https://docs.microsoft.com/en-us/power-automate/process-mining-overview</description>
                <category>معصومه کوهستانی</category>
                <author>معصومه کوهستانی</author>
                <pubDate>Thu, 10 Feb 2022 17:56:00 +0330</pubDate>
            </item>
                    <item>
                <title>Static Code Analysis</title>
                <link>https://virgool.io/@angelmoonstar77/static-code-analysis-p4vp1noylwdp</link>
                <description>تحلیل استاتیک کدمقدمهتحلیل استاتیک کد (Static Code Analysis) یا تحلیل سورس کد (Source Code Analysis)، کشف خطاها و مشکلات سورس کد برنامه و تحلیل یک نرم افزار بدون اجرای آن در مرحله‌‌ی پیاده‌سازی کد است، برخلاف تحلیل پویای کد که به تحلیل نرم افزار با اجرای آن می‌پردازد. تحلیل استاتیک کد به صورت خودکار و با یک سری ابزار بر روی یک ورژن از سورس کد به منظور کشف آسیب‌پذیری‌های احتمالی کد استاتیک (کدی که در حال اجرا شدن نیست) با استفاده از یک سری تکنیک‌ها انجام می‌شود. در حالیکه به تحلیل کد توسط انسان، بازبینی کد (تست جعبه سفید یا white-box testing) گفته می‌شود. تحلیل استاتیک کد بخشی از بازبینی کد است. این تحلیل به عبارتی همان بازبینی کد اتوماتیک است.یکی از علل پیدایش تحلیل استاتیک کد دقت کم بازبینی کد توسط افراد است. بازبینی کد نیاز به خواندن کد، پیدا کردن فرد مناسب برای بررسی کد، بازبینی مجدد پس از اعمال تغییرات و غیره دارد. اگر نیاز داشته باشیم که کد به صورت مداوم با هر تغییر بررسی شود چه؟ این کار برای افراد هزینه بر و زمان بر است. اینجاست که می‌توانیم از تحلیل استاتیک کد استفاده کنیم. البته این تحلیل نمی‌تواند جایگزین بازبینی کد شود و ما هم‌چنان به بررسی‌های دستی نیاز داریم.این نوع تحلیل نسبت بررسی خط به خط کد حرف بیشتری برای گفتن دارد. تحلیل استاتیک کد می‌تواند منجر به کشف خطاهای احتمالی کد یا بررسی انطباق رفتار برنامه با استانداردهای تعیین شده، شود. در سیستم‌های حساس و حیاتی و سیستم‌های نهفته‌ی بیدرنگ هم از این نوع تحلیل برای کشف کدهای آسیب‌پذیر احتمالی به دلیل حساسیت نتایج ارائه شده، استفاده می‌شود. از جمله‌ی این سیستم‌ها می‌توان نرم‌افزارهای پزشکی، نرم‌افزارهای هسته‌ای، نیروهای هوایی و ماشین‌های اتوماسیون را نام برد که برای مثال وزارت غذا و داروی ایالات متحده‌ی آمریکا (FDA) در نرم‌افزارهای پزشکی و دفتر مقررات هسته‌ای بریتانیا (ONR) در نرم‌افزارهای هسته‌ای تحلیل استاتیک کد را مورد استفاده قرار می‌دهد. طبق آمار ارائه شده در سال‌های ۲۰۱۰ و ۲۰۱۲، حرکت برنامه نویسان به سمت استفاده از تحلیل استاتیک کد دیده می‌شود. [1]ابزارهای تحلیل استاتیک کد به صورت خودکار نقص‌های امنیتی را با احتمال بالای درستی کشف می‌کند. این ابزارها به تحلیلگران کمک می‌کند تا نقص‌های کد را پیدا کرده و تعداد نقص‌های پیدا نشده را به صفر نزدیک کنند. برخی ابزارها وارد IDE شده اند تا در هنگام کدنویسی نقص‌های احتمالی را پیدا کنند که باعث فیدبک سریع به برنامه‌نویس در حین کدنویسی و نه بعد از نوشتن کد می‌شود. این فیدبک سریع بسیار بهتر از این است که برخی نقص‌ها مدت‌ها بعد از اتمام توسعه‌ی کد پیدا شوند.[3]این ابزارهای به دنبال نقص‌های کدنویسی، درهای پشتی برنامه و دیگر کدهای مخرب که به هکرها دسترسی به داده‌های مهم شرکت‌ها یا اطلاعات مشتریان می‌دهد، هستند. این ابزارها در واقع امنیت و عملکرد کد در زمانی که در حال اجرا نیست را در زمان پیاده‌سازی (قبل از تست واحد) بررسی می‌کنند که باعث کشف باگ‌های احتمالی قبل از ورود به مرحله‌ی production می‌شود. این کار باعث افزایش سرعت در پیاده‌سازی به دلیل راحتتر و کم هزینه‌تر کردن رفع باگ‌ها برای برنامه‌نویسان در زمان کدنویسی، می‌شود. [5]کارهایی که یک تحلیلگر استاتیک کد انجام می‌دهد [4]کشف خطاها در برنامهپیشنهادهایی برای فرمت کد. برخی تحلیل‌گرهای استاتیک کد بررسی می‌کنند که کد شما با فرمت استاندارد ارايه شده توسط شرکت شما هم‌خوانی دارند یا خیر.محاسبه‌ی متریک. معیارهای عددی مبنی بر کیفیت کد شما ارائه داده می‌شود.سطوح تحلیل برنامهگروه مدیریت اشیا (Object Management Group or OMG) یک مطالعه در مورد انواع تحلیل‌های نرم‌افزار ضروری برای اندازه‌گیری کیفیت نرم‌افزار منتشر کرده است. این مستند سه سطح تحلیل نرم‌افزار را اینگونه توضیح می‌دهد [1] :سطح واحد (Unit Level): تحلیلی که درون یک برنامه‌ی خاص یا یک متد خاص اتفاق می‌افتد و با دیگر قسمت‌های برنامه کاری ندارد.سطح تکنولوژی (Technology Level): تحلیلی که ارتباط بین واحد ها را با هدف کشف مشکلات و دوری از جواب‌های کاذب در نظر می‌گیرد. سطح سیستم (System Level): تحلیلی که ارتباط بین واحدها را مستقل از تکنولوژی و زبان در نظر میگیرد.سطح دیگری از تحلیل نرم افزار هم وجود دارد:سطح کسب‌وکار/ماموریت (Mission/Business Level): تحلیلی که سیاست‌ها، قوانین و فرآیندهای کسب‌وکار را که در برنامه پیاده‌سازی شده‌اند را هم در نظر می‌گیرد. این موارد بدون در نظر گفتن تکنولوژی و زبان پیاده‌سازی شده‌اند.روش‌های رسمی (Formal methods)روش‌های رسمی که از روش‌های ریاضی استفاده می‌کنند بر تحلیل‌های نرم‌افزار اعمال می‌شود. با توجه به مساله‌ی توقف‌ (Halting Problem) می‌توان اثبات کرد که کشف تمامی خطاهای در زمان اجرای هر برنامه‌ای غیرقطعی است. هیچ روشی برای این کار وجود ندارد. ولی با این وجود می‌توان از راه‌حل‌های تقریبی استفاده کرد. [1] این تکنیک‌ها اغلب از تکنیک‌های کامپایلرها ایده گرفته‌اند. برخی از تکنیک‌های پیاده‌سازی تحلیل استاتیک رسمی شامل موارد زیر هستند:تفسیر انتزاعی (Abstraction Interpretation)تحلیل جریان داده (Data-flow Analysis): بررسی جریان داده‌ها در گراف طراحی شده از برنامه. به عبارتی در این نوع تحلیل به جمع‌آوری اطلاعات زمان اجرا درباره‌ی داده‌ها می‌پردازیم در حالیکه برنامه در حالت استاتیک (یعنی هنوز اجرا نشده است) قرار دارد. سه اصطلاح پرکاربرد در این روش: ۱. basic block یا همان کد ۲. تحلیل کنترل جریان یا همان جریان داده ۳. مسیر کنترل جریان یا همان مسیر‌هایی که داده‌ها در آن‌ها جریان دارند.مثال یک Basic Blockبا استفاده از این بلاک‌ها یک گراف به نام Control Flow Graph ساخته می‌شود که گره‌ها‌ی آن همین بلاک‌ها هستند. یال‌ها هم مسیر‌های بین بلاک‌ها هستند.CFGمنطق هور (Hoare Logic)بررسی مدل (Model Checking): بررسی سیستم‌های دارای حالت‌های محدوداجرای نمادین (Symbolic Execution): بررسی برنامه با نمادهای معادلِ عبارت‌های موجود در کدتحلیل تینت (Taint Analysis): بررسی داده‌هایی که توسط کاربر تغییر کرده‌اند ولی چک نشده‌اند. اگر این داده‌ها بدون بررسی به پایان برسند به عنوان یک نقطه‌ی آسیب‌پذیر شناخته می‌شوند.تحلیل لغوی (Lexical Analysis): این تحلیل سینتکس سورس کد را به توکن‌ تبدیل می‌کند تا سورس کد را انتزاعی کرده و تغییر آن را راحتتر نماید. برای مثال:نقاط قوت [3] [4] [5]مقیاس‌پذیری (قابلیت اجرا بر روی ‌برنامه‌های زیاد و به صورت مکرر)احتمال قوی درست بودن نقص‌های کشف شده مانند سرریز بافر، SQL Injection و غیره.سرعت بیشتر نسبت به تحلیل دستی توسط انسان‌ها، در نتیجه راحتی و هزینه‌ی کمدقت بالا نسبت به تحلیل دستی توسط انسان‌هاپوشش کامل کدمستقل از کامپایلر. این ویژگی باعث کشف خطاها پس از تغییر کامپایلر می‌شود.تشخیص سریع خطاهای مربوط به پرینت کردن خروجی و نتایج کپی/پیست کردن در کدنقاط ضعف [3] [4]کشف بسیاری از مشکلات امنیتی بسیار دشوار می‌باشد مانند مشکلات اعتبارسنجی، استفاده‌ی ناامن از کریپتوگرافی و غیره. هر چند این ابزارها در حال بهتر شدن در این زمینه هستند.تعداد زیاد جواب‌های کاذب درستعدم توانایی کشف مشکلات مربوط به تنظیمات چون در کد وجود ندارند.دشواری اثبات آسیب‌پذیر بودن مشکل امنیتی کشف شدهدشواری کشف مشکل در کدهایی که قابل کامپایل شدن نیستند. تحلیلگران نمی‌توانند کد را کامپایل کنند چون کتابخانه‌های درست یا همه‌ی کد را ندارند.عدم توانایی تشخیص نشت حافظه و خطاهای مربوط به همزمانی که این مشکل با تحلیل پویای کد قابل حل است.محدودیت‌هاFalse Positiveگاهی این ابزار مشکلاتی را گزارش می‌کنند که در واقع مشکل نیستند. دلیل این تشخیص اشتباه این است که ابزار در مورد یکپارچگی و امنیت داده‌ی در جریان شک دارد. این اتفاق اکثرا در کدهای متن بسته رخ می‌دهد چون بدون کد امکان بررسی جریان داده وجود ندارد. [3]False Negativeگاهی این ابزار مشکلاتی را که در واقع مشکل هستند را گزارش نمی‌کنند. این اتفاق زمانی می‌افتد که اگر مشکل کشف شده از یک کامپوننت خارجی باشد یا ابزار دانشی راجع به محیط اجرا نداشته باشد یا به صورت امن تنظیم شده باشد. [3]محدودیت‌های دیگری مانند تنظیمات نادرست، کتابخانه‌های نادرست و غیره نیز وجود دارد. [5]معرفی ابزارها و فناوریهای متن‌باز [6]ابزار‌های تحلیل‌گر کد متن‌باز و متن‌بسته‌ی زیادی وجود دارند و زبان‌های بسیاری را پشتیبانی می‌کنند.SonarQubeاین ابزار بیش از ۲۰ زبان برنامه نویسی را پشتیبانی می‌کند. گزارش‌هایی در مورد کدهای تکراری، استاندارد کد نویسی، پوشش کد، پیچیدگی کد، کامنت‌ها، باگ‌ها و مشکلات امنیتی ارائه می‌دهد. این ابزار می‌تواند گراف رسم کند و تاریخچه نگهدارد. قابلیت پشتیبانی از تکنولوژی‌هایی مانند maven، Ant، Gradle و غیره را نیز دارد. [7]SonarQubeStyleCopیک ابزار تحلیل‌گر کد متن‌باز است که توسط مایکروسافت ارائه شده است. این ابزار زبان‌ C#‌ را پشتیبانی می‌کند. یک سری قوانین تعریف شده مانند نامگذاری، ترتیب، خوانایی و غیره را بررسی می‌کند. به صورتی گرافیکی و یا کامند لاین ارائه شده است. [8]StyleCopطبق آمار ارائه شده در کتاب Code Complete از McConnell، رفع یک خطا در زمان تست ۱۰ برابر هزینه‌ی بیشتری از رفع آن در زمان نوشتن کد دارد [4]:یکی از کاربردهای این ابزار آموزش به افراد تازه واردی که هنوز با قوانین کدنویسی شرکت آشنا نیستند، است.بهترین راه برای تحلیل کد استفاده‌ی ترکیبی از تحلیل استاتیک و پویای کد است. تحلیل استاتیک با حذف بسیاری از مشکلات قبل از اجرا باعث تقویت کلی کد و افزایش کیفیت برنامه می‌شود. درحالیکه تحلیل پویا خطاهای زمان اجرا را که توسط روش‌های استاتیک قابل کشف را پیدا می‌کند. [5]این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است.مراجع[1] https://en.wikipedia.org/wiki/Static_program_analysis[2] https://fa.wikipedia.org/wiki/%D8%AA%D8%AD%D9%84%DB%8C%D9%84_%D8%A7%DB%8C%D8%B3%D8%AA%D8%A7%DB%8C_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87[3] https://owasp.org/www-community/controls/Static_Code_Analysis[4] https://pvs-studio.com/en/blog/terms/0046/[5] https://www.whitehatsec.com/glossary/content/static-analysis[6] https://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis[7] https://en.wikipedia.org/wiki/SonarQube[8] https://en.wikipedia.org/wiki/StyleCop</description>
                <category>معصومه کوهستانی</category>
                <author>معصومه کوهستانی</author>
                <pubDate>Fri, 24 Dec 2021 15:59:27 +0330</pubDate>
            </item>
                    <item>
                <title>Message Queue</title>
                <link>https://virgool.io/@angelmoonstar77/message-queue-trr3ig1wi4p0</link>
                <description>صف پیام یا Message Queuing یک ارتباط سرویس به سرویس غیرهمزمان است که در معماری‌های میکروسرویسی و بدون سرور استفاده می‌شود. به برنامه‌ها اجازه می‌دهد تا به جای اتصال مستقیم، با فرستادن پیام به یکدیگر به صورت غیرهمزمان، با هر سرعتی، در هر مکانی و مستقل از یکدیگر در ارتباط باشند. وقتی برنامه‌ی مقصد آفلاین باشد یا در حال حاضر مشغول باشد، Message Queue یک صف موقتی ذخیره‌ی پیام ایجاد می‌کند. Message Queue می‌تواند به شدت باعث برنامه‌نویسی ساده‌تر برنامه‌های decouple‌ شده در کنار افزایش کارآیی، اطمینان و مقیاس‌پذیری شود. می‌توان Message Queue بین برنامه‌ها را معادل ایمیل در بین انسان‌ها در نظر گرفت.صفصف لیستی از آیتم‌های داده، فرمان یا یک کار است که هر که زودتر وارد این لیست شود، زودتر هم خارج می‌شود. یک صف پیام شامل پیام‌هایی است که به یک برنامه ارسال شده‌اند. این پیام‌ها می‌توانند کارهایی باشند که در انتظار پردازش هستند.پیامپیام، داده‌ایست که بین برنامه‌های ارسال‌کننده و دریافت‌کننده منتقل می‌شود. یک آرایه‌ای از بایت‌هاست که چندین header هم دارد. این پیام معمولا کوچک است و می‌تواند در مورد یک کار که باید پردازش شود، کاری تمام شده، درخواست، پاسخ، پیام یک خطا و یا فقط یک پیام متنی باشد.معماری Message Queueمعماری Message Queue ساده است. یک برنامه‌ی کلاینت تحت عنوان تولیدکننده داریم که پیام‌ها را ایجاد می‌کند و به Message Queue تحویل می‌دهد. برنامه‌ی دیگری تحت عنوان مصرف‌کننده داریم که به صف وصل شده و پیام‌ها را برای پردازش کردنشان دریافت می‌کند. پیام‌ها تا زمانی‌که توسط یک مصرف‌کننده دریافت شوند ذخیره می‌شوند. چندین تولیدکننده و مصرف‌کننده می‌توانیم داشته باشیم ولی هر پیام یکبار و توسط یک مصرف‌کننده مصرف می‌شود. به همین دلیلی این الگوی پیام‌رسانی، ارتباط one-to-one یا point-to-point نامیده می‌شود. اگر لازم باشد یک پیام توسط بیش از یک مصرف‌کننده مصرف شود به آن پیام‌رسانی Pub/Sub می‌گویند. که در ادامه این دو نوع الگوی پیام‌رسانی را بیشتر شرح خواهیم داد.Message Queueدر فناوری، سیستمی که پیام‌ را در Message Queue قرار می‌دهد منتظر جواب آن نیست تا بتواند کار خود را ادامه دهد. در واقع Message Queuing یک پروتکل ارتباطی ناهمگام/غیرهمزمان ایجاد می‌کند. یک مثال خوب برای فهم بهتر ایمیل است. پس از ارسال ایمیل بلافاصله منتظر جواب آن نیستیم تا کار خود را ادامه دهیم. این باعث ایجاد جداسازی (decoupling) تولیدکننده از مصرف‌کننده می‌شود.می‌توان بیش از یک صف داشته باشیم. این صف‌ها توسط مدیر صف مدیریت می‌شوند. ماهیت فیزیکی یک صف به سیستم‌عاملی که مدیر صف توسط آن اجرا می‌شود بستگی دارد.جداسازی و مقیاس‌پذیریجداسازی یا decoupling یعنی دو سیستم از هم خبر نداشته و بهم وابسته نباشند. هر سیستمی بتواند بدون اتصال به سیستم دیگر به کار خود ادامه دهد. این سیستم، سیستم خوبی است و نگهداری از آن ساده‌تر است.اگر سیستمی نتواند پیام را دریافت کند پیام به صف اضافه می‌شود و تا زمانی‌که پیام را دریافت و مصرف کند دوباره ارسال می‌شود و زمانی‌که سیستم احیا شد می‌تواند آن را مصرف کند و پیام پس از پردازش حذف می‌شود. می‌توان پیام‌ها را طوری فرستاد که در زمان مشخصی توسط مصرف‌کننده مصرف شوند. پیام‌ها فقط توسط یک مصرف‌کننده می‌توانند مصرف شوند.به جای اینکه برنامه‌ی بزرگی توسعه دهید، بخش‌های مختلف برنامه را Message Queue بهم متصل کنید. در این‌صورت هر قسمت از برنامه جداگانه و به راحتی رشد می‌کند و می‌تواند به زبان‌های مختلف باشد و توسط تیم‌های متفاوتی نگهداری شوند. در معماری میکروسرویس عملکردهای مختلفی در سرویس‌های مختلف وجود دارد که عملکردهای متفاوتی را ارائه می‌دهند. این سرویس‌ها بهم وابسته هستند تا یک برنامه‌ی کامل را بسازند. بدین ترتیب سرویس‌ها بدون کمک هم نمی‌توانند کار کنند. به همین دلیل نیاز داریم تا سرویس‌ها بدون در انتظار هم بودن بهم متصل شوند. Message Queue این امکان را با فراهم ساختن یک صف پیام ایجاد می‌کند. برای این‌کار نیاز به یک message broker داریم (معادل پستچی!) که پیام‌ها را از فرستنده به مقصد درست منتقل می‌کند. با استفاده از این فناوری می‌توان روابط بین فرآیندها را هم کنترل کرد. فرآیندها یکدیگر را invoke نمی‌کنند و با قرار دادن پیام در صف باهم ارتباط برقرار می‌کنند. این روش کنترل پیام باعث نگهداری راحت از سیستم و مقیاس‌پذیری آن می‌شود.فناوری Message Queue‌ می‌تواند برای جداسازی پردازش‌های سنگین و بافر یا دسته‌ای کردن کارها استفاده شود.مثالفرض کنید که یک سیستم وب دارید که باید دسترس‌پذیری بالایی داشته باشد و به هر درخواست جدید پاسخ دهد. با داشتن یک صف سرویس پردازش و سرویس وب می‌توان این سیستم را به بهترین نحو پیاده‌سازی کرد. در این‌صورت این دو سرویس از هم خبر ندارند و سرویس وب پیام یا همان درخواست را در صف گذاشته و سرویس پردازش آن را برداشته و پردازش می‌کند. در این صورت اگر مقیاس کار گسترش پیدا کند کافیست گنجایش صف را افزایش دهیم.الگوهای پیام‌رسانی در Message Queueone-to-one / point-to-pointیک پیامدر صف قرار داده می‌شود و یک برنامه آن را دریافت کرده و مصرف می‌کند. برای این‌کار فرستنده باید تمام اطلاعات مقصد را داشته باشد.Publish/Subscribeیک کپی از پیام توسط برنامه‌ی منتشرکننده به همه‌ی برنامه‌های مرتبط ارسال می‌شود. در این صورت نیازی نیست که فرستنده اطلاعات مقصد را داشته باشد.مزایاارتباط بین برنامه‌ها بدون نیاز به کدهای اتصالبرنامه‌های دارای بخش‌های کوچک که با Message Queue بهم متصلندامکان باز استفاده از بخش‌های کوچک این برنامه‌هاامکان انتخاب ترتیب پردازش پیام‌هاایجاد تعادل بار روی یک سیستم با تنظیم کردن بیش از یک برنامه برای سرویس‌دهی به یک صف وقتی تعداد پیام‌ها بیشتر از مقدار ماکسیمم استافزایش در دسترس‌پذیری برنامه‌ها با تنظیم‌کردم سیستم جایگزین برای پاسخ‌دهی به پیام‌های صف به جای برنامه‌ی اصلی که در دسترس نیستعدم نیاز به پروتکل برای ارتباط برنامه‌ها/بخش‌های مختلفعدم نیاز به در حال اجرا بودن برنامه در هنگام ارسال پیام. به محض اجرا شدن برنامه مقصد می‌تواند پیام را دریافت کند و پیام تا آن زمان ذخیره می‌شودکاهش هزینه‌ها، زمان و مهارت لازم و افزایش سرعت توسعه به دلیل کوچکتر شدن برنامه‌هامعرفی ابزارها و فناوریهای متن‌بازRabbitMQیک message broker است. این فناوری متن‌باز  Advanced Message Queuing Protocol (AMQP) را پیاده‌سازی می‌کند که فیچرهایی مانند صف‌بندی، مسیریابی، امنیت و غیره دارد. شامل تولیدکننده، مصرف‌کننده، صف و exchange (امکان مسیریابی برای فرستادن پیام‌ها به مقصد درست) است.RabbitMQApache KafkaApache Kafkaاین مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است.مراجع[1] https://www.cloudamqp.com/blog/what-is-message-queuing.html[2] https://aws.amazon.com/message-queue/[3] https://medium.com/@mosesbasseyekwere/message-queue-what-it-is-how-it-works-and-when-to-use-it-2b7fb5dcef48[4] https://medium.com/must-know-computer-science/system-design-message-queues-245612428a22[5] https://www.ibm.com/docs/en/ibm-mq/8.0?topic=overview-introduction-message-queuing</description>
                <category>معصومه کوهستانی</category>
                <author>معصومه کوهستانی</author>
                <pubDate>Fri, 24 Dec 2021 15:58:50 +0330</pubDate>
            </item>
                    <item>
                <title>Business Process Management Systems (BPMS)</title>
                <link>https://virgool.io/@angelmoonstar77/business-process-management-systems-bpms-jcjzq4khwktr</link>
                <description>مقدمههمه‌ی سازمان‌ها یک سری فعالیت‌ها و کارهایی را برای رسیدن به اهداف خود انجام می‌دهند. برخی از این فعالیت‌ها تکرارشونده هستند مانند گرفتن وام از یک بانک و برخی دیگر فقط برای یک بار انجام می‌شوند مانند پروژه‌های عمرانی یا کامپیوتری. در این نوشتار ما در مورد مدیریت و خودکارسازی این فعالیت‌های تکرارشونده در سازمان‌ها که به آن‌ها فرآیندهای کسب‌وکار می‌گویند، صحبت خواهیم کرد. برای این‌کار ابتدا باید با یک سری مفاهیم آشنا شویم.فرآیندکاوی (Process Mining)فرآیندکاویفرآیندکاوی حلقه‌ی گمشده‌ی علم فرآیند (Process Science) و علم داده (Data Science) می‌باشد. در علم فرآیند به بررسی فرآیندها به صورت مدل محور پرداخته می‌شود. در علم داده به بررسی هر نوع داده‌ای به صورت داده‌محور پرداخته می‌شود. فرآیندکاوی ترکیبی از این دو است. به بررسی فرآیندها به صورت داده‌محور و مدل‌محور می‌پردازد.در فرآیندکاوی از داده‌هایی با ویژگی‌های خاصی تحت عنوان نگاره‌ی رویداد (event log) استفاده می‌شود. این داده‌ها باید سه ویژگی مورد (case)، فعالیت (activity) و زمان (timestamp) را داشته باشند. ویژگی‌های اختیاری دیگر مانند فرد یا سیستمی که آن فعالیت را انجام می‌دهد (resource) ، هزینه (cost) و غیره را هم می‌توانند داشته باشند.هر نگاره‌ی رویداد می‌تواند شامل یک یا چندین فرآیند باشد. هر فرآیند شامل چندین مورد است. هر مورد یک فعالیت و زمان دارد. به هر ردیف از این نگاره‌ی رویداد هم یک رخداد (event) می‌گویند.برای مثال فرآیند بررسی ضد‌آب کردن یک تلفن همراه هوشمند را در نظر بگیرید.مراحل ضدآب کردن یک تلفن همراه هوشمندابتدا تلفن همراه هوشمند را دریافت می‌کنند. بررسی می‌کنند. به صورت ضدآب نشده در انبار قرار می‌دهند. برای ضدآب کردن انتخابش می‌کنند. پروسه‌ی ضدآب کردن را انجام می‌دهند. تست می‌کنند. به صورت ضدآب شده در انبار قرار می‌دهند. برای ارسال انتخابش می‌کنند. ارسال می‌کنند.تمام این کارها در کنار یکدیگر یک فرآیند است. که چندین بار برای چندصد تلفن‌همراه انجام خواهد شد پس تکرارشونده است. یک نمونه‌ی نگاره‌ی رویداد از این فرآیند را می‌توانید در تصویر زیر مشاهده کنید.نمونه‌ی نگاره‌ی رویداد برای فرآیند ضدآب کردن تلفن همراه هوشمنددر فرآیندکاوی سه تکنیک مهم وجود دارد:کشف فرآیند و مدل از روی نگاره‌ی رویدادبررسی انطباق مدل و نگاره‌ی رویدادبهبود فرآیندهاکه فقط به نام بردن آن‌ها بسنده می‌کنیم و بیشتر از این توضیح نخواهیم داد.مدیریت فرآیندهای کسب‌وکار (Business Process Management یا BPM)مدیریت فرآیندهای کسب‌وکارروشی برای بررسی، مدیریت و کنترل فرآیندهایی که در یک سازمان اجرا می‌شوند به منظور تحلیل، طراحی، بهبود و اطمینان از درستی فرآیندها می‌باشد. هدف از این کار افزایش بهره‌وری، پیشرفت و سروسامان دادن به کارها در سازمان است.برخی اشتباها BPM را یک محصول نرم‌افزاری، مدیریت تسک و پروژه می‌دانند که اینطور نیست و BPM‌به اجرای خودکار فعالیت‌ها و مدیریت فعالیت‌های تکرارشونده می‌پردازد.مدل و نشانه‌گذاری فرآیندهای کسب‌وکار (Business Process Model and Notation یا BPMN)مدل و نشانه‌گذاری فرآیندهای کسب‌وکارمدل و نشانه‌گذاری فرآیندهای کسب‌وکار یا BPMN، زبان BPM است.در قالب نمادها، فرآیندهای BPM را برای درک بهتر این فرآیندها، مدل می‌کند. با شناخت این مفاهیم حال می‌توانیم به مفهوم سیستم‌های مدیریت فرآیندهای کسب‌وکار (Business Process Management Systems یا BPMS) بپردازیم.سیستم‌های مدیریت فرآیندهای کسب‌وکار (Business Process Management Systems یا BPMS)سیستم‌های مدیریت فرآیندهای کسب‌وکارنرم‌افزار/سیستم مدیریت فرآیندهای کسب‌وکار ابزار اتوماسیون فرآیندهاست به بیان ساده‌تر یعنی فرآیندهای یک سازمان را با استفاده از یک نرم‌افزار انجام دهیم. در هر سازمانی شاخص مهمی به نام ضریب نفوذ مکانیزسیون فعالیت‌های سازمان وجود دارد که از تقسیم تعداد فعالیت‌های اتوماتیک بر تعداد کل فرآیندها به دست می‌آید. هر چه این شاخص بیشتر باشد یعنی اتوماسیون زیادی در انجام فعالیت‌ها در این سازمان در حال انجام است.کم بودن این شاخص باعث افزایش خطای انسانی، کاهش سرعت و افزایش هزینه‌ی انجام فرآیندها، کاهش سرعت اعمال تغییرات و بهبود در فرآیندها، غیرممکن شدن استخراج زمان و هزینه‌ی انجام فرآیندها، غیرممکن شدن امکان کنترل عملکرد افراد و عدم امکان تهیه‌ی گزارش در لحظه می‌شود.راه‌حل تمام این مشکلات و افزایش این شاخص اتوماسیون انجام فرآیندها است. برای این‌کار به دو تیم نیاز داریم. افرادی که به تحلیل و طراحی سیستم می‌پردازند و برنامه‌نویسان. برنامه‌نویسی براساس مستندی که تیم تحلیل تهیه می‌کند ممکن است ولی اعمال تغییرات آینده در فرآیندها، کار را دشوار، پیچیده و زمان‌بر خواهد کرد. اینجاست که BPMS به نجات ما می‌آید. با استفاده از BPMS زمان خودکارسازی انجام فرآیندها بسیار کوتاه‌تر از زمان انجام این کار با برنامه‌نویسی خواهد بود و با ویژگی‌ها خاص این نرم‌افزار امکان اعمال تغییرات آینده هم ساده‌تر خواهد بود.این نرم‌افزار کمک می‌کند تا هر روز فرآیندها را بررسی کنیم، گلوگاه‌ها را شناسایی و رفع کنیم، فرآیندها را به شکل بهینه‌ای تغییر دهیم و بر عملکرد افراد نظارت داشته باشیم. با استفاده از این نرم‌افزار می‌توان کارهای تیم‌ها و بخش‌های مختلف را هم بهم مرتبط و متصل کرد. گفتیم فرآیندها یک سری کارهای تکرارشونده هستند، بدون وجود نرم‌افزار BPMS تمام این فرآیندهای تکرارشونده باید به صورت فیزیکی روی کاغذ توسط افراد انجام شود که این کار چند مشکل اساسی دارد: امکان خطای انسانی و تلنبار شدن حجم عظیمی از کاغذها، تغییر و جست‌وجوی بسیار دشوار و زمان‌بر در بین این کاغذها، ساعت کاری و نیروی انسانی با مهارت سازمانی زیاد.در این نرم‌افزار با استفاده از فناوری پایش فرآیندهای کسب‌وکار (Business Activity Monitoring یا BAM) مدتی پس از آغاز فرآیندها شروع به تحلیل فرآیندها و تهیه‌ی گزارش از نتایج این تحلیل‌ها می‌کند. این قابلیت به مدیریت هر چه بهتر و بهبود فرآیندها کمک خواهد کرد. در این فناوری زمان انجام هر فعالیت هم مشخص می‌شود در نتیجه اگر زمان انجام بیشتر از زمان تخمین زده شده باشد، مشخص می‌شود و می‌توان به رفع مسبب این امر پرداخت و بر عملکرد کارکنان نظارت کرد.ابزار BPMS به دلیل داشتن ویژگی نسخه‌زنی در برابر اعمال تغییرات منعطف است و باعث مشکل نمی‌شود. به این صورت که در صورت تغییر فرآیندها، نسخه زده می‌شود و هر دو نسخه می‌توانند به کار خود ادامه دهند.انواع سیستم‌‌های مدیریت فرآیندهای کسب‌وکارمدیریت فرآیندهای کسب‌وکار سیستم‌محور: در این نوع سیستم، سیستم‌ها با هم در تعاما هستند و فرآیندها را اجرا می‌کنند. مانند بانکداری الکترونیکیمدیریت فرآیندهای کسب‌وکار انسان‌محور: بیشتر کارها و فرآیندها توسط انسان انجام می‌شدند و اتوماسیون آن‌ها کار ساده‌ای نیست. مانند رسیدگی به شکایاتگام‌هاگاه‌های BPMSطراحی: تحلیلگران با استفاده از قوانین موجود و صحبت با ذی‌نفعان فرآیندها را طراحی می‌کنند.مدل‌سازی: به مدل‌سازی فرآیندهای طراحی شده پرداخته می‌شود.اجرا: ابتدا فرآیندها تست می‌شوند سپس در اختیار عام قرار می‌گیرند.نظارت: نظارت و کنترل فرآیندهای در حال انجام با استفاده از گزارش‌ها و نمودارهای خروجی نرم‌افزاربهینه‌سازی:‌ با استفاده از گزارش‌گیری می‌توان به رفع مشکلات موجود و بهینه‌سازی فرآیندها پرداخت.مزایاسرعت بیشتر در انجام فرآیندها: به دلیل داشتن گزارش از تحلیل‌های انجام شده بر روی روند انجام فرآیندها می‌توان با بررسی این گزارش‌ها به بهبود فرآیندها در نتیجه افزایش سرعت آن‌ها کمک کرد.کاهش هزینه‌ها و افزایش درآمد: استفاده از این ابزار باعث پیدا شدن گلوگاه‌ها و کاهش زمان انجام فرآیندها و خدمت‌دهی سریع‌تر به مشتری و کاهش زمان و هزینه و در نتیجه افزایش سرعت و درآمد می‌شود.کارآیی بیشتر: با وجود تحلیل‌های این ابزار می‌توان به عیب‌یابی سیستم و روند انجام فرآیندها پرداخت تا کارآیی را افزایش داد.تطبیق، ایمنی و امنیت: به دلیل وجود امکان اعمال تغییرات فرآیندهای به روز انجام می‌شوند در نتیجه می‌توانند با استانداردهای مشخص شده هم‌خوانی داشته باشند. با وجود نظارت بر عملکرد کارکنان می‌توانند ایمنی و امنیت را هم تامین کرد.رهایی از فرآیندهای روی کاغذ و فیزیکیعدم صرف زمان زیاد برای جست‌وجو در بین کاغذهاعدم صرف هزینه‌ و زمان زیاد برای مدیریت فایل‌های کاغذیکاهش امکان نفوذ در اطلاعاتتوانایی گزارش در لحظهایجاد نظم و انظباطمعرفی ابزارها و فناوریهای متن‌بازمعرفی ابزارها و فناوریهای متن‌بازمعرفی شرکت‌های ایرانی ارائه دهنده‌ی BPMSنرم‌افزار BPMS کتیبهطبق نوشته‌های این گروه:امروزه با اندکی جستجو در فضای اینترنت نرم افزارهای bpms زیادی قابل مشاهده خواهد بود. وجود این همه شرکت فروشنده و یا تولید کننده bpms، کار انتخاب نرم افزار bpms را سخت میکند. نکته ای که نرم افزار bpms کتیبه را متمایز میکند ساخت این نرم افزار توسط واحد تولید شرکت ورجاوند می باشد. تجربه سالها مطالعه و تحلیل سیستمهای مختلف در حوزه‌های گوناگون از جمله مالی، صنعتی، مهندسی و … ما را به توانی رساند که قادر به ساختن نرم افزار bpms ایرانی و بومی شدیم. نکته قوت دیگر bpms کتیبه، درک خوب شرکت ورجاوند از مشتری و حمایت در روال تحلیل و مستندسازی کار است که عملا سرعت بهره برداری از bpms را بالا می‌برد. و اما نکته آخر اینکه ما با شرکتهایی که تنها اپراتور و کاربر نرم‌افزارهای bpms خارجی هستند تفاوت داریم چرا که ما خودمان تجربه و لذت طراحی موتور bpms را داریم و بسیار چابک میتوانیم فرایندهای شما را نرم افزاری کنیم.اجزای اصلی نرم افزار BPMS کتیبه :ابزار فرم ساز : ابزار طراحی فرمهای سیستم به عنوان مثال بتوان فرم مرخصی و یا مجموعه فرمهای فرایند خرید را تعریف كرد. برای اطلاعات بیشتر ابزار فرم ساز ورجاوند را مشاهده فرمایید.سیستم مدیریت گردش کار (Workflow Designer) : با سیستم مدیریت گردش کار فلوچارت حركتی فرمها قابل تعریف خواهد بود.ابزار تعریف پردازش (Process Engine) این پردازش ها ممكن است به صورت داخلی (داخل خود سیستم) و یا به صورت خارجی (از سایر سیستم های موجود در سازمان) باشد. استفاده از  web service در اين بخش امكان پذير است. ارسال پردازشهایی نظیر ارسال پست الکترونیکی ، ارسال پیامک (SMS) و … در این بخش وجود دارد.ابزار گزارش‌ساز که به کمک آن گزارشهای مورد نیاز مدیریت در قالبهای نمایشی و چاپی به صورت نامحدود قابل استفاده خواهد بود. برای اطلاعات بیشتر ابزار گزارش ساز ورجاوند را مشاهده فرمایید.ابزار داشبورد ساز که با دستیابی به شاخصها یا (KPI) مورد نیاز مدیران و پردازش اطلاعات و گزارشها در قالبهای گرافیکی و نمودارهای متنوع قابل نمایش است. برای اطلاعات بیشتر ابزار داشبورد ساز ورجاوند را مشاهده نمایید.نرم‌افزار BPMS پیام‌گسترنرم‌افزار BPMS پیام‌گستر هم یک BPMS داخلی است. به دلیل اینکه از نوع Licensed BPM می‌باشد، خیال استفاده کنند‌گان از خصوصی بودن حریم‌ کدهای خود راحت خواهد بود. انواع عملیات و اقدامات در موتور BPMS پیام گستر به صورت زیر می‌باشد:این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است.مراجع[1] https://www.irandnn.ir/mag/what-is-bpms/[2] https://bpmtraining.net/1398/01/19/bpms-%DA%86%DB%8C%D8%B3%D8%AA%D8%9F/[3] https://arian.co.ir/fa-ir/details/what-is-bpms[4] https://www.payamgostar.com/blog/bpms/[5] http://www.varjavandco.com/%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-bpms/</description>
                <category>معصومه کوهستانی</category>
                <author>معصومه کوهستانی</author>
                <pubDate>Fri, 24 Dec 2021 15:58:11 +0330</pubDate>
            </item>
                    <item>
                <title>API Gateway</title>
                <link>https://virgool.io/@angelmoonstar77/api-gateway-vn3yuoooj1au</link>
                <description>معماری API Gatewayمقدمهابتدا می‌خواهیم API Gateway را به زبان ساده شرح دهیم. API Gateway یکی از ابزارهای API Management است که بین کلاینت و مجموعه‌ای از سرویس‌ها‌ی back-end می‌نشیند. API Gateway جلوی API می‌نشیند و تنها راه ورودی APIهای back-end و میکروسرویس‌ها می‌باشد. API Gateway با نشستن در جلوی API مانند یک محافظ تامین‌کننده‌ی امنیت، مقیاس‌پذیری و در دسترس‌پذیری عمل می‌کند. به عبارتی API Gateway مانند یک پروکسی معکوس عمل می‌کند، به این‌صورت که تمام سرویس‌های لازم برای API های فراخوانی شده را تجمیع کرده و در قالب یک نتیجه‌ی مناسب به کاربر بر می‌گرداند. نقش یک API Gateway در API Managementیک API Gateway جزئی از API Management است. API Gateway تمام درخواست‌ها را یکی کرده و به سیستم API Management‌ می‌دهد. این‌که API Gateway چه کار می‌کند به پیاده‌سازی آن بستگی دارد. به طور کلی کارهایی مانند اعتبارسنجی (Authentication)، پایش (Monitoring)، تحلیل و کارهای دیگر انجام می‌دهد. [1]تعریف API Gateway در قالب یک مثالاگر هنوز متوجه نشده‌اید که API Gateway دقیقا چه کار می‌کند، این مثال را دنبال کنید. فرض کنید می‌خواهیم یک فروشگاه اینترنتی مانند آمازون راه‌اندازی کنیم و در حال طراحی صفحه‌ی مشاهده‌ی جزئیات یک محصول می‌باشیم. اول از همه باید دو نسخه از رابط کاربری این صفحه داشته باشیم. یکی برای کاربران web-application و دیگری برای کاربران اندروید و آیفون. علاوه بر این مورد، در این صفحه اطلاعات زیادی را می‌توانیم به نمایش بگذاریم. برای مثال فرض کنید این محصول یک کتاب است. اطلاعاتی که می‌توانیم در صفحه‌ی مشاهده‌ی اطلاعات یک کتاب مشاهده کنیم، مواردی مانند اطلاعات پایه‌ای کتاب مانند عنوان، نویسنده، قیمت و غیره، در دسترس بودن یا نبودنش، گزینه‌های خرید، کتاب‌های مشابه، کتاب‌هایی که خریداران این کتاب خریده‌اند، نظرات و دیدگاه‌ها و موارد دیگر.صفحه‌ی مشاهده‌ی یک کتاب در آمازون اگر فرض کنیم این فروشگاه از الگوی معماری میکروسرویس استفاده می‌کند، آن‌گاه این اطلاعات در سرویس‌های مختلفی پخش شده‌اند. برای مثال سرویس Product Info که اطلاعات پایه‌ای کتاب مانند عنوان، نویسنده، قیمت و غیره را ارائه می‌دهد.در حال حاضر می‌دانیم که کاربران با یک فراخوانی REST برای مثال GET api.company.com/productdetails/productId به این صفحه و تمام اطلاعات آن دسترسی دارند.مسالهچگونه کاربران به این سرویس‌ها دسترسی داشته باشند؟نکاتی که باید مورد توجه قرار گیرندهمان‌طور که در مثال شرح داده شد، کلاینت برای مشاهده‌ی اطلاعات یک محصول نیاز به فراخوانی چندین سرویس دارد. به همین دلیل ریزدانگی API‌ و نیاز کلاینت هم‌خوانی ندارد. کلاینت نباید مجبور شود که برای یک نیاز خود چندین سرویس را خود فراخوانی کند.کلاینت‌های مختلف اطلاعات مختلفی می‌خواهند. کاربرانی که از یک مرورگر اطلاعات را مشاهده می‌کنند با کاربرانی که از یک تلفن همراه وصل شده‌اند، متفاوتند.عملکرد شبکه برای کاربران مختلف با انواع مختلف شبکه متفاوت است. ممکن است سرویس‌ها در طول زمان تغییر کنند و این باید از دید کلاینت‌ها مخفی بماند.ممکن است سرویس‌ها از پروتکل‌های مختلفی استفاده کنند که همگی سازگاری لازم را نداشته باشند. [4]دو راه‌حل برای این مساله ارائه می‌دهیم و به بررسی هر دو می‌پردازیم.راه‌حل اول: فراخوانی تمام سرویس‌ها توسط کاربرفرض کنیم در راه‌حل اول کاربر می‌تواند هر کدام از سرویس‌های میکروسرویس‌ها را مستقیما فراخوانی کند. کاربر برای مشاهده‌ی صفحه‌ی اطلاعات یک کتاب همه‌ی سرویس‌ها را از میکروسرویس مربوطه با url‌ مربوطه فراخوانی می‌کند. هر url هم به load balancer میکروسرویس نگاشت می‌شوند که این بالانسر درخواست‌ها را بین نمونه‌های در دسترس توزیع می‌کند.متاسفانه این راه‌حل چالش‌ها و محدودیت‌های زیادی دارد. نکته‌ی اول که در قسمت قبلی ذکر شد و باید مورد توجه قرار گیرد نقض شده است. یعنی کاربر برای مشاهده‌ی یک محصول لازم است تا چندین سرویس را خود فراخوانی کند. در این مثال خاص کاربر باید ۷ سرویس را فراخوانی کند. در برنامه‌های پیچیده‌تر لازم است تا سرویس‌های بسیار بیشتری را فراخوانی کند. نکته‌ی سوم از قسمت قبلی هم نقض می‌شود. شاید این راه‌حل با در نظر نگرفتن مشکل قبلی برای کابرانی که از طریق LAN به اینترنت متصل شده‌اند مناسب باشد ولی برای کاربرانی که از طریق اینترنت همراه متصل شده‌اند عملا غیرقابل پیاده‌سازی خواهد بود. از طرفی این رویکرد کد سمت کاربر را بسیار پیچیده‌تر خواهد کرد.مساله‌ی بعدی مشکل‌تر شدن ریفکتور کردن سرویس‌ها می‌باشد. اگر بعد از مدتی تصمیم به تغییر سرویس‌ها گرفتیم به دلیل درگیری مستقیم کاربر با سرویس‌ها این کار بسیار دشوار خواهد بود. این مشکل ناقض نکته‌ی چهارم در قسمت قبلی است.به دلیل این مشکلات و محدودیت‌ها، این راه‌حل به نظر منطقی نیست.[4]راه‌حل دوم: API Gatewayراه‌حل دوم: API Gatewayراه‌حل دوم پیاده‌سازی یک API Gateway است که یک نقطه‌ی ورود برای همه‌ی کلاینت‌ها می‌باشد. این راه‌حل معماری داخلی را از دید کاربر مخفی می‌کند. همان‌طور که قبلا گفتیم، API Gateway تمام درخواست‌های کلاینت را تجمیع کرده و یک نتیجه برای مثال یک صفحه‌ی مشاهده‌ی اطلاعات یک محصول را برمی‌گرداند. API Gateway‌ علاوه‌بر هدایت درخواست‌ها، ترجمه‌ی پروتکل‌ها می‌تواند مسئولیت‌های دیگری مانند اعتبارسنجی، پایش، load balancing، ذخیره در حافظه‌ی نهان و غیره داشته باشد. به جای این‌که یک API مناسب برای همه‌ی کاربران بنویسیم، API Gateway می‌تواند APIهای موردنیاز، متناسب و خاص هر کاربر را ارائه دهد. تمام درخواست‌ها ابتدا از API Gateway‌ عبور می‌کنند. سپس API Gateway‌ آن‌ها را به میکروسرویس مربوطه هدایت می‌کند. گاهی API Gateway‌ یک درخواست را به چندین میکروسرویس می‌فرستد و نتایج را تجمیع کرده و برمی‌گرداند.یک مثال بسیار خوب برای API Gateway‌ ، API Gateway‌ نتفلیکس می‌باشد. سرویس استریم نتفلیکس بر روی دستگاه‌های متنوعی مانند تلویزیون‌ها، تلفن‌همراه‌های هوشمند، سیستم‌های بازی، تبلت‌ها و غیره در دسترس است. در ابتدا نتفلیکس سعی داشت از one-size-fits-all API استفاده کند ولی بعدها متوجه شدند که به دلیل تعداد زیاد دستگاه‌ها و نیازهای یکتای هریک این روش مناسب نیست. نتفلیکس امروزه از API Gateway استفاده می‌کند که API خاص هر دستگاه را فراهم می‌کند. API Gateway‌نتفلیکس روزانه چندین میلیارد درخواست را پاسخ می‌دهد. [4]مزایا و معایب API Gatewayهمان‌طور که می‌دانید استفاده از API GateWay هم مزایا و معایب خود را دارد.مزایامخفی کردن ساختار درونی برنامه از دید کاربرفراهم ساختن API‌ بهینه و متناسب برای هر کاربرکاهش تعداد رفت و برگشت‌ها برای هر درخواست کاربرکاهش پیچیدگی کد سمت کاربرسهولت استفاده از برنامه برای کلاینت با فراخوانی چندین سرویس با استفاده از API Gatewayافزایش امنیت. هر بار که سرویس‌ها از طریق API Gateway‌ فراخوانی می‌شوند از طریق IPهای خصوصی فراخوانی می‌شوند که این باعث جلوگیری از حملات می‌شود.معایبافزایش پیچیدگی. به هر حال API Gateway‌ باید پیاده‌سازی و اجرا شود.افزایش ریسک گلوگاه شدن API Gateway هنگام آپدیت کردن سرویس‌هاافزایش زمان پاسخ سرویس‌ها به دلیل عبور از API Gateway البته این زمان برای بسیاری از برنامه‌ها مهم نیست.چالش‌هاچگونگی پیاده‌سازی یک API Gatewayبا وجود معایب و چالش‌های API Gateway، این ابزار برای رفع مشکل موجود منطقی به نظر می‌آید.معرفی ابزارها و فناوریهای متن‌بازمورد اول: Kong Gatewayاین API Gateway محبوب‌ترین API Gateway متن‌باز و بر پایه‌ی ابر می‌باشد. با زبان Lua و با استفاده از Nginx‌ نوشته شده است. شرکت‌هایی مانند Cisco، Samsung و غیره از Kong Gateway استفاده می‌کنند. برخی از فیچرهایی که Kong Gateway پیشنهاد می‌کند عبارتند از اعتبارسنجی، کنترل ترافیک، تحلیل، ثبت لاگ و بدون سرور بودن. [5]مورد دوم: Apache APISIXاین API Gateway در آزمایشگاه ZhiLui‌ چین متولد شد و سپس وارد دنیای Apache‌ شد و متن‌باز شد. به گفته‌ی معاون پروژه، Ming Wen، این API Gateway بسیاری از چالش‌های cloud-native و میکروسرویس‌ها را حل می‌کند. Apache APISIX بر پایه‌ی Nginx و etcd می‌باشد. [5]نمونه‌های API Gateway‌ زیادی وجود دارد که ما فقط به ذکر دو مورد از آن‌ها بسنده کردیم.معرفی شرکت‌های ایرانی ارائه دهنده‌ی API Gatewayیکی از شرکت‌های ایرانی که API Gateway همراه اول را ارائه داده است، شرکت تجارت ایران گستر رایکا می‌باشد.این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است.مراجع[1] https://www.redhat.com/en/topics/api/what-does-an-api-gateway-do[2] https://www.axway.com/en/products/api-management/gateway[3] https://microservices.io/patterns/apigateway.html[4] https://www.nginx.com/blog/building-microservices-using-an-api-gateway/[5] https://geekflare.com/api-gateway/</description>
                <category>معصومه کوهستانی</category>
                <author>معصومه کوهستانی</author>
                <pubDate>Fri, 24 Dec 2021 15:57:38 +0330</pubDate>
            </item>
                    <item>
                <title>ESB (Enterprise Service Bus)</title>
                <link>https://virgool.io/@angelmoonstar77/esb-enterprise-service-bus-yutiztplhrls</link>
                <description>ESBمقدمهگذرگاه سرویس سازمانی (Enterprise Service Bus or ESB) معماری ارتباطات بین برنامه‌های نرم‌افزاری (که با هم در تعاملند) در یک معماری مبتنی بر سرویس (Service-Oriented Architecture) را نمایش می‌دهد.‌ به عبارتی برنامه‌های سازمانی را مستقل از ارائه‌دهنده، یکپارچه‌ می‌کند. ESB‌ یک معماری نرم‌افزار برای محاسبات توزیع‌شده و یک نمونه‌ی خاص از مدل کلی client-server است که هر برنامه‌ای به عنوان سرور یا کلاینت رفتار می‌کند.  ESB باعث تقویت چابکی و انعطاف‌پذیری می‌شود. در واقع مجموعه‌ای از قوانین و اصول برای یکپارچه‌سازی برنامه‌های متعدد بر پایه‌ي یک زیربنای شبه-گذرگاه می‌باشد.تاریخچهدر گذرگاه سرویس سازمان، گذرگاه به تقلید از گذرگاه موجود در سخت‌افزار انتخاب شده است. سرویس نماینده‌ی برنامه‌ی غیرپیمایشی و اجرای خودکار است که با دیگر سرویس‌ها از طریق تبادل پیام در ارتباط است. استفاده از سازمان هم با هدف کاهش پیچیدگی یکپارچگی برنامه‌های سازمانی در یک سازمان بود ولی دیگر این محدودیت وجود ندارد ولی نام همچنان باقی مانده است. این ابزار به علت نیاز به مهاجرت از یکپارچگی نقطه به نقطه که با گذر زمان باعث دشواری مدیریت می‌شد و یک روش مرکزی برای مدیریت و رفع مشکل وجود نداشت، ایجاد شده است. گذرگاه سرویس سازمانی به عنوان یک نرم‌افزار برنامه‌های سازمانی را به متصل می‌کند و ارتباط بین ‌‌آن‌ها را ممکن می‌سازد. ESB‌ باید بتواند ارتباط مستقیم بین سرویس‌ها را جایگذاری کند تا تمام ارتباطات از طریق گذرگاه صورت پذیرد. این کار را با مخفی کردن کارکرد برنامه به روش معناداری انجام می‌دهد. این کار را با استفاده از مدل پیام سازمانی انجام می‌دهد. این مدل مجموعه‌ای از پیام‌هایی که ESB دریافت و ارسال می‌کند را توصیف می‌کند. زمانی که ESB‌ یک پیام را دریافت می‌کند آن را به برنامه‌ی درست ارسال می‌کند ولی آن برنامه این نوع پیام را نمی‌تواند پارس کند بنابراین باید به یک پیام قابل فهم برای آن برنامه تبدیل شود. این کار توسط آداپتور نرم‌افزاری انجام می‌شود. ESB ساختن مدل پیام سازمانی و تبدیل پیام‌ها را به دقت انجام می‌دهد. چون اگر این کار به درستی انجام نشود عملکرد مورد نظر سرویس درخواست دهنده اجرا نمی‌شود و سرویس درخواست‌دهنده خود به صورت مستقیم اقدام به فراخوانی سرویس مدنظرش می‌نماید که این برخلاف اصول و مزایای این معماری می‌باشد. [1] در تبدیل پیام‌ها هم ممکن است مشکلاتی پیش بیاید و برخی موارد به اشتباه تبدیل شوند در این میان نیاز به تست‌هایی برای بعد از تبدیل پیام‌ها ضروری است.ویژگی‌ها و کارکرد هر یک [2]استعلام:‌ پشتیبانی از پروتکل‌های انتقال همزمان و ناهمزمان، نگاشت سرویس‌ها (پیدا کردن و متصل کردن)مسیریابی: قابلیت آدرس‌دهی، مسیریابی ثابت / قطعی، مسیریابی مبتنی بر محتوا، مسیریابی مبتنی بر قوانین، مسیریابی مبتنی بر سیاستپادرمیانی:‌ آداپتورها، تبدیل پروتکل‌ها، نگاشت سرویس‌هاپیام رسانی:‌ پردازش پیام، تبدیل پیام و توسعه پیامطراحی هماهنگی فرآیندها: اجرای فرایندهای پیچیده تجارتارکستراسیون سرویس: هماهنگی سرویس‌های پیاده‌سازی متعدد که به عنوان یک سرویس واحد و تجمیع شده در معرض دید قرار دارند.پردازش رویداد پیچیده: تفسیر رویداد، همبستگی، تطبیق الگوکیفیت خدمات دیگر:‌ امنیت (رمزگذاری و امضا)، تحویل قابل اعتماد، مدیریت تراکنشمدیریت:‌ نظارت، ممیزی، لاگ برداری، اندازه‌گیری، کنسول مدیریت، مدیریت فعالیت‌های تجاری BAM (BAM یک توانایی مدیریت نیست به عبارت دیگر ESB به یک آستانه خاص واکنش نشان نمی‌دهد. این یک قابلیت خدمات تجاری است که برای کاربران نهایی ظاهر می‌شود).مقید نبودن: مقید نبودن عمومی به سیستم‌عامل‌ها و زبان‌های برنامه‌نویسی. به عنوان مثال، باید قابلیت همکاری بین جاوا و برنامه‌های دات نت را فراهم آورد.تبدیل پروتکل: پشتیبانی جامع از استانداردهای سرویس مربوط به پروتکل‌های ارتباطی موضوعیالگوهای تبادل پیام:‌ پشتیبانی از چندین MEP (الگوهای تبادل پیام). به عنوان مثال: درخواست/پاسخ همزمان، درخواست/پاسخ ناهمزمان، ارسال و فراموش کردن، انتشار/اشتراک.آداپتورها:‌ آداپتورهای پشتیبانی از یکپارچگی با سیستم‌های قدیمی، احتمالاً براساس استانداردهایی مانند JCAامنیت:‌ یک مدل امنیتی استاندارد برای اجازه دادن، احراز هویت و حساب‌رسی استفاده از ESBدگرگونی: تسهیل دگرگونی قالب‌ها و مقادیر داده‌ها به یکدیگر، از جمله سرویس‌های دگرگونی (اغلب از طریق XSLT یا XQuery) بین قالب‌های برنامه ارسال کننده و برنامه دریافت کنندهاعتبارسنجی: اعتبارسنجی در برابر اسکیماهای ارسال و دریافت پیامحکم‌روایی: توانایی اعمال قوانین تجاری به‌طور یکنواختغنی‌سازی: غنی‌سازی پیام از منابع دیگرتقسیم و ادغام: تقسیم و ترکیب چندین پیام و مدیریت استثناهاانتزاع - مفهوم - برداشت: ارائه یک انتزاع واحد در چندین لایهمسیریابی و تحول: مسیریابی یا تبدیل پیام‌ها به‌طور مشروط، براساس سیاست غیر متمرکز (بدون نیاز به موتور اصلی قوانین)خدمات کالا: بسته‌بندی سرویس‌های پرتقاضا به عنوان سرویس‌های اشتراکی بسته به زمینهویژگی‌های نام‌برده بسیار جزئی هستند ولی برنامه‌نویس‌ها به دنبال این همه جزئیات نیستند و از ESBهای سبک‌تر استفاده می‌کنند. معماری و پیاده‌سازیهدف از این معماری کشف یک مفهوم استاندارد، ساخت‌یافته و عام‌منظوره برای توصیف پیاده‌سازی کامپوننت‌های نر‌م‌افزاری که با درجه‌ی کمی بهم وابسته‌ هستند (سرویس‌ها) که انتظار می‌رود به صورت مستقل، ناهمگن و جدا از هم در یک شبکه دیپلوی و اجرا شوند. ESB یک الگوی پیاده‌سازی رایج برای معماری‌های مبتنی بر سرویس نیز می‌باشد. [1] یکی از ویژگی‌های مهم ESB رفع وابستگی بین برنامه‌ها می‌باشد. گذرگاه باعث جدایی برنامه‌ها از یکدیگر می‌شود که این کار را همانطور که پیشتر گفتیم از طریق پیام‌رسانی انجام می‌دهد. پیامی که در کل ESB میچرخد یک فرمت ساده و ثابت (XMLی است) دارد. یک آداپتور برای تبدیل پیام‌ها به پیام‌های قابل فهم برای برنامه‌ها وجود دارد. [2]هیچ استاندارد جهانی برای مفهوم یا پیاده‌سازی ESB وجود ندارد. اکثر ارائه‌دهندگان میان‌افزارهای مبتنی بر پیام، ESB را به عنوان استاندارد معماری مبتنی بر سرویس پذیرفته‌اند.  پیاده‌سازی ESB مبتنی بر رخداد و مبتنی بر استانداردهای میان‌افزار‌های مبتنی بر پیام در ترکیب با صف‌های پیام می‌باشد. [1] سطوح گذرگاه‌ه سرویس سازمانی [2] Integration Framework:ابزارهای Integration Framework فقط برای پیاده‌سازی الگوهای یکپارچه‌سازی‌ استاندارد برنامه‌های سازمانی (مانند Splitter و Content Base Routers) به کار برده می‌شوند. این الگوها دستورهای API دارند که باعث شفافیت و قابل فهم شدن یکپارچگی برنامه‌ها می‌شوند. استفاده از این ابزار باعث خلاصه‌سازی فعالیت‌های تیمی و افزایش احتمال موفقیت پروژه می‌شوند.ESB:ابزارهای ESB کمی فراتر از Integration Framework ها هستند و قدرت و توان بیشتری دارند. Integration Framework پایه‌های ESB هستند. علاوه بر یکپارچه‌سازی کارهای دیپلویمنت، مدیریت و پایش در زمان اجرا را هم انجام می‌دهند. به علت داشتن UX راحت، باعث کاهش هزینه و رفع پیچیدگی می‌شوند.Integration Suite:ابزارهای Integration Suite ترکیبی از ESB و BPMS هستند. یکپارچه‌سازی کامل برنامه‌ها را با فرآیندها را فراهم می‌کند.کارکرد انتقال پیام‌ها بین سرویس‌هاپایش و کنترل مسیریابی تبادل پیام‌ها بین سرویس‌هاحل اختلاف بین کامپوننت‌های سرویس‌های در ارتباطکنترل دیپلویمنت و نسخه‌بندی سرویس‌هاکنترل استفاده از سرویس‌های تکراریتامین سرویس‌هایی مانند مدیریت رخداد‌ها، تبدیل و نگاشت داده‌ها، صف‌بندی پیام‌ها و رخدادها، مدیریت امنیت و اکسپشن‌ها، تبدیل پروتکل و تحمیل کیفیت مناسب ارتباط سرویس‌هایکی از دلایل استفاده از این ابزار نیاز سازمان‌های به چابکی و کاهش زمان ارائه محصول است. ESB این امکان را با فراهم کردن یک سیستم ساده، قابل نصب، مقیاس‌پذیر و well-defined فراهم کرده است.مزایا سادگی ارتباط، پیام‌رسانی و یکپارچگی بین سرویس‌های سازمانیمقیاس‌پذیریافزایش تنظیم کردن به نسبت کد زدنتمرکز بر تقویت برنامه‌ها به جای تمرکز بر کد زدن برای یکپارچه‌سازی برنامه‌هاامکان باز استفاده از این ابزار یکپارچه‌سازی برخلاف یکپارچه‌سازی از طریق کدنویسیاز بین بردن وابستگی بین برنامه‌هاموتور قوانین و بروکر مرکزی نداردراحتی نصب و حذفمناسب برای میکروسرویس‌هامعایبسرعت ارتباطات کاهش می‌یابدsingle point of failureنیازمند تنظیمات زیاد و پیچیدگی نگهداریتاثیر بر ارتباطات سرویس‌های دیگر در نتیجه نیاز به تستافزایش پیچیدگی با افزایش تعداد سرویس‌هاانواع پلتفرم‌های ESBسبک:‌ حجم کم، هزینه‌ی کم اعمال تغییرات، زمان و سرعت زیادنه فقط میانجی‌گرییادگیری آسانمقیاس‌پذیریپیام آگنوستیک:‌ امکان تغییر نوع پیام‌ها (برای مثال فقط XML نباشد)مبتنی بر ابرمعرفی ابزارها و فناوریهای متن‌بازApache Camelامکان ارسال پیام به فرمت‌های XML و JSON، مناسب معماری میکروسرویس‌های توزیع‌شده، تنظیمات جاوایی و XMLی، ابزارهای لازم برای تست [6]Beatsپیچیدگی کم در استفاده و تنظیمات برای انتقال از ویندوز یا لینوکس، مستقل از پلتفرم، آپشن‌های متنوع برای جمع‌آوری لاگ‌ها [7]این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است.مراجع[1] https://en.wikipedia.org/wiki/Enterprise_service_bus[2] https://fa.wikipedia.org/wiki/%DA%AF%D8%B0%D8%B1%DA%AF%D8%A7%D9%87_%D8%B3%D8%B1%D9%88%DB%8C%D8%B3_%D8%B3%D8%A7%D8%B2%D9%85%D8%A7%D9%86%DB%8C[3] https://www.faragostar.net/what-is-esb/[4] https://www.mulesoft.com/resources/esb/what-esb[5] https://www.ibm.com/cloud/learn/esb[6] https://www.g2.com/products/apache-camel/reviews#reviews[7] https://www.g2.com/products/beats/reviews#reviews</description>
                <category>معصومه کوهستانی</category>
                <author>معصومه کوهستانی</author>
                <pubDate>Fri, 24 Dec 2021 15:56:52 +0330</pubDate>
            </item>
                    <item>
                <title>مدل C4: نمایش و مدل‌سازی معماری نرم‌افزار</title>
                <link>https://virgool.io/@angelmoonstar77/%D9%85%D8%AF%D9%84-c4-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D9%88-%D9%85%D8%AF%D9%84-%D8%B3%D8%A7%D8%B2%DB%8C-%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-tkiuuiuwmnzz</link>
                <description>مقدمهمدل C4 نوتیشنی برای نمایش و مدل‌سازی معماری یک نرم‌افزار است. افراد تا قبل از معرفی این مدل، از UML که پیچیده است یا اشکالی که روی بورد یا کاغذ رسم می‌شدند (که فقط برای افرادی که آن را رسم می‌کردند و (با کمی اغراق) فقط در همان روز قابل فهم بود) استفاده می‌کردند. برای درک بهتر این مدل ابتدا چند مثال می‌زنیم.مدل‌های معماری که روی بورد یا کاغذ رسم می‌شدنداگر از یک مهندس عمران بخواهید که در مورد ساختمانی که ساخته یا طراحی شده است توضیح دهد، بسته به شخصی که این سوال را مطرح می‌کند، نقشه‌های متفاوت با سطح جزئیات متفاوتی نمایش خواهد داد. مثلا برای افراد عادی که دانشی راجع به ساختمان ندارند، یک نقشه‌ی بسیار ساده‌ی یک طبقه، شامل اتاق‌ها، آشپزخانه و غیره را نمایش خواهد داد که قابل فهم و درک باشد. اگر برای مهندسی مانند خودش شرح دهد، احتمالا نقشه‌ای که جزئیات بیشتری از جمله اندازه‌ها را هم دارد، نمایش خواهد داد. به همین ترتیب برای افراد مختلف نقشه‌های مختلف از جمله نقشه‌ی لوله‌کشی، سیم‌کشی، نمای خارجی و غیره که سطح جزئیات هر یک متفاوت است را نمایش خواهد داد.اجازه دهید مثال دیگری را شرح بدهم. اگر من به شما بگویم که که شهری به اسم Vintijan وجود دارد و شما نام این شهر را در برنامه‌ی Maps جست‌وجو کنید، با این صحنه مواجه خواهید شد:هنوز نمیدانیم این شهر کجاست. پس لازم است کمی zoom out کنیم.خیلی بیشتر . . .تا اینکه میبینیم که Vintijan‌شهری در کشور کرواسی در اروپا است. پس توانستیم با zoom out کردن، لایه‌های مدل C4مختلفی را مشاهده کنیم. تا لایه‌ای zoom out‌ کردیم که بتوانیم متوجه شویم این شهر کجاست.با این توضیحات اگر از یک معمار نرم افزار بخواهیم که معماری نرم‌افزاری که طراحی کرده است را شرح دهد بسته به فردی که این سوال را از وی می‌پرسد، می‌تواند با استفاده از مدل C4‌ لایه‌های مختلفی را نمایش دهد. این مدل با استفاده از چهار لایه به شرح معماری نرم‌افزار می‌پردازد و توسط Simon Brown ساخته شده است. همانطور که از اسم این مدل پیدا است چهار لایه داریم که با C‌ شروع می‌شوند:مدل C4همراه با مثالی که در سایت C4 توضیح داده شده است، این چهار لایه را شرح می‌دهیم. این مثال در مورد سیستم بانکی اینترنتی است.لایه‌ی اولدر لایه‌ی اول یعنی System Context به نمایش ارتباط بین سیستم ما و سیستم‌های دیگر و کاربران مختلف پرداخته می‌شود. همانطور که مشاهده می‌کنید، باکسی که یک سر دایره‌ای دارد، کاربر است. باکس‌های خاکستری، سیستم‌های بانکی هستند که از قبل وجود دارند. باکس آبی رنگ هم سیستم مدنظر ما می‌باشد.یکی از نکات مهم این مدل توضیح دادن در باکس‌های نمایش داده شده می‌باشد. یکی از ایرادات وارد شده به UML عدم توانایی توضیح در المنت‌های استفاده شده است.System Context Diagramلایه‌ی دومدر لایه‌ی دوم یعنی Container، سیستم‌مدنظرمان که در لایه‌ی قبلی نمایش دادیم را باز می‌کنیم و ارتباط بین Containerها به همراه سیستم‌ها و کاربرانی که در لایه‌ی قبلی اطرافش بودند، نمایش می‌دهیم. Containerها واحدهای قابل اجرا (برنامه‌ها) مانند برنامه‌های وب و یا منابع ذخیره‌ی داده مانند دیتابیس‌ها هستند. به این نکته توجه کنید که اینجا منظور از Container داکر نیست!Container Diagramلایه‌ی سومدر لایه‌ی سوم یعنی Component، یکی از Containerها را بازتر می‌کنیم و ارتباط اجزای آن به همراه Containerها و سیستم‌ها و کاربران اطرافش که در لایه‌های قبل حضور داشتند را نمایش می‌دهیم. در مثال زیر اجزای برنامه‌ی API را می‌بینیم که شامل مواردی مانند sign in controller که از یک component امنیتی استفاده می‌کند، است.Component Diagramلایه‌ی چهارملایه‌ی چهارم و آخر Code است که خود سازنده‌ی این مدل استفاده از آن را توصیه نمی‌کند مگر برای کد‌های بسیار خاص. در این لایه کد یکی از componentها را نمایش می‌دهیم.Code Diagramدر نهایت می‌بینیم که مدل C4 یک ساختار لایه‌ای دارد و بسته به نیاز می‌توانیم یکی از لایه‌های آن را انتخاب کرده و نمایش دهیم. در لایه‌ی اول دیدیم که ارتباط بین سیستم مدنظر ما و سیستم‌ها و کاربران دیگر را نمایش می‌دهیم. در لایه‌ی بعدی روی سیستم مدنظرمان zoom in‌ می‌کنیم و Containerهای موجود در آن را نمایش می‌دهیم. در لایه‌ی بعدی روی یکی از Containerها zoom in می‌کنیم و اجزای‌ ‌آن را نمایش می‌دهیم و در لایه‌ی آخر کد یکی از componentها را نمایش می‌دهیم.همه‌ی لایه‌های مدل C4 در یک نگاهبرای قابل فهم بودن چنین مدلی به یک کلید/راهنما هم برای اشکال به کار برده شده داریم. لازم به ذکر است که این مدل را می‌توان با هر شکل و رنگی طراحی کرد ولی دو قاعده را باید رعایت کرد. اولین مورد همراه داشتن کلید/راهنما و دومین مورد این است که طراحی به گونه‌ای باشد که با حذف رنگ‌ها نمودار هم‌چنان قابل فهم باشد.کلید/راهنماممکن است این سوال پیش بیاید که برای رسم این مدل از چه ابزاری می‌توان استفاده کرد. به گفته‌ی سازنده‌ی این مدل از هر ابزاری برای رسم این مدل می‌توان استفاده کرد ولی استفاده نکنید! چون این ابزارها عام منظوره هستند و کارآیی که شما به دنبال آن هستید را ندارند. به همین منظور ابزاری به نام Structrizr‌ را پایه‌گذاری کرده است.نوتیشنی که در رسم این مدل در هر لایه به کار می‌رود هم به صورت زیر می‌باشد:نوتیشن اشکال در مدل C4این مطلب، بخشی از تمرین‌های درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است.مراجعhttps://c4model.com/https://en.wikipedia.org/wiki/C4_modelhttps://www.infoq.com/articles/C4-architecture-model/https://www.youtube.com/watch?v=x2-rSnhpw0ghttps://www.youtube.com/watch?v=Ym9nhVZs89o</description>
                <category>معصومه کوهستانی</category>
                <author>معصومه کوهستانی</author>
                <pubDate>Sat, 20 Nov 2021 19:24:24 +0330</pubDate>
            </item>
            </channel>
</rss>