<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های نيلوفر وهناني</title>
        <link>https://virgool.io/feed/@nilofarvahnani</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-10 15:26:24</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1203872/avatar/ibcqyV.jpg?height=120&amp;width=120</url>
            <title>نيلوفر وهناني</title>
            <link>https://virgool.io/@nilofarvahnani</link>
        </image>

                    <item>
                <title>داده‌کاوی از شبکه‌های اجتماعی با استفاده از مجموعه دادۀ Goodreads</title>
                <link>https://virgool.io/@nilofarvahnani/%D8%AF%D8%A7%D8%AF%D9%87-%DA%A9%D8%A7%D9%88%DB%8C-%D8%A7%D8%B2-%D8%B4%D8%A8%DA%A9%D9%87-%D9%87%D8%A7%DB%8C-%D8%A7%D8%AC%D8%AA%D9%85%D8%A7%D8%B9%DB%8C-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87-%D8%AF%D8%A7%D8%AF%DB%80-goodreads-yvuz5ibofl7l</link>
                <description>چکیده:این مقاله به بررسی کاربرد تکنیک‌های داده‌کاوی در شبکه‌های اجتماعی با تمرکز ویژه بر Goodreads به عنوان مطالعه موردی می‌پردازد. Goodreads یک شبکه اجتماعی محبوب برای دوستداران کتاب است که مجموعه وسیعی از بررسی‌ها و رتبه‌بندی‌های کتاب تولید شده توسط کاربران را ارائه می‌دهد. در این مطالعه، ما ادبیات مربوطه را در مورد داده‌کاوی در شبکه‌های اجتماعی مرور می‌کنیم و مزایا و چالش‌های بالقوه استخراج داده‌های Goodreads را مورد بحث قرار می‌دهیم. ما در این مقاله به بررسی تکنیک‌های مختلف داده‌کاوی، از جمله تحلیل احساسات و عقیده‌کاوی، تجزیه و تحلیل ساختار شبکه، تجزیه و تحلیل انتشار اطلاعات، تجزیه و تحلیل رفتار گره‌ها در شبکه،تشخیص جامعه، پیش‌بینی پیوند و سیستم‌های توصیه و پیشنهاد می‌پردازیم. تجزیه و تحلیل ما الگوهای جالبی را در رفتار کاربر، ترجیحات کتاب و تعاملات اجتماعی در Goodreads نشان می‌دهد. ما همچنین در مورد ملاحظات اخلاقی و محدودیت‌های داده‌کاوی در شبکه‌های اجتماعی بحث می‌کنیم و اهمیت حریم خصوصی و شفافیت را برجسته می‌کنیم. پس به طور کلی، هدف این مقاله انجام یک مطالعۀ مروری در مورد استفاده از تکنیک‌های داده‌کاوی با مجموعۀ داده گودریدز است و همچنین پتانسیل داده‌کاوی در شبکه‌های اجتماعی را نشان می‌دهد و بینش‌هایی را در مورد جامعه کتاب‌خوانی در Goodreads نیز ارائه می‌دهد.مقدمه:شبکه‌های اجتماعی به منبع مهم داده برای کاربردهای مختلف از جمله بازاریابی، سیاست و تحقیقات اجتماعی تبدیل شده‌اند. با افزایش محبوبیت پلتفرم‌های شبکه‌های اجتماعی، مانند فیس بوک، توییتر، اینستاگرام و لینکدین، علاقه فزاینده‌ای به استفاده از تکنیک‌های داده‌کاوی برای استخراج بینش مفید از داده‌های اجتماعی وجود دارد. داده‌کاوی اجتماعی شامل استفاده از روش‌های آماری و یادگیری ماشینی برای تجزیه و تحلیل و استخراج الگوها از داده‌های اجتماعی، از جمله پروفایل‌های کاربر، تعاملات، نظرات، و محتوا است.در این مقاله، ما بر روی کاربرد تکنیک‌های داده‌کاوی در شبکه‌های اجتماعی با تمرکز ویژه بر Goodreads به عنوان مطالعه موردی بسنده می‌کنیم. Goodreads یک شبکه اجتماعی محبوب برای دوستداران کتاب است که مجموعه وسیعی از بررسی‌ها و رتبه‌بندی‌های کتاب تولید شده توسط کاربران را ارائه می‌دهد. Goodreads بیش از 90 میلیون عضو دارد که بیش از 2.2 میلیارد کتاب را به قفسه‌های خود اضافه کرده‌اند و بیش از 110 میلیون نقد نوشته‌اند. داده‌های Goodreads منبعی غنی از اطلاعات در مورد ترجیحات کاربر، ژانرهای کتاب و تعاملات اجتماعی ارائه می‌دهد که آن را به مجموعه داده‌ای ایده آل برای تحقیقات داده‌کاوی تبدیل می‌کند.هدف این مقاله بررسی ادبیات داده‌کاوی در شبکه‌های اجتماعی و بحث در مورد مزایا و چالش‌های بالقوه استخراج داده‌های گودریدز است. ما تکنیک‌های مختلف داده‌کاوی، از جمله تحلیل احساسات و عقیده‌کاوی، تجزیه و تحلیل ساختار شبکه، تجزیه و تحلیل انتشار اطلاعات، تجزیه و تحلیل رفتار گره‌ها در شبکه،تشخیص جامعه، پیش‌بینی پیوند و سیستم‌های توصیه و پیشنهاد را بررسی می‌کنیم. ما این تکنیک‌ها را برای استخراج اطلاعات از داده‌های Goodreads و بررسی الگوهای جالب در رفتار کاربر، انتخاب کتاب و جامعه در Goodreads به کار می‌بریم.به طور کلی، این مقاله مروری کلی از استفاده از تکنیک‌های داده‌کاوی با مجموعه داده Goodreads ارائه می‌کند و پتانسیل استخراج داده‌های اجتماعی را برای کاربردهای مختلف نشان می‌دهد. بینش به‌دست‌آمده از این مطالعه می‌تواند برای ناشران کتاب، بازاریابان و محققانی که علاقه‌مند به درک رفتار و ترجیحات کاربران در جامعه کتاب‌خوان هستند مفید باشد.ادبیات موضوع:داده‌کاوی و شبکه کاوی چیست؟ داده‌کاوی حوزۀ وسیع‌تری است که شامل استخراج دانش یا بینش از مجموعه داده‌های بزرگ است. درزمینۀ شبکه‌های اجتماعی، تکنیک‌های داده‌کاوی برای تجزیه و تحلیل انواع مختلف داده‌ها، از جمله ساختار شبکه، نمایه‌های کاربر، محتوای متنی و رفتارهای کاربر، با هدف کشف الگوها، روابط یا روندهای پنهان استفاده می‌شوند.همچنین داده‌کاوی شبکه‌های اجتماعی از طیف وسیعی از مفاهیم اساسی از جمله علوم رایانه، یادگیری ماشین و همچنین آمار بهره می‌برد و مبتنی بر تئوری‌ها و روش‌های حاصل از تحلیل شبکه‌های اجتماعی، علوم شبکه، جامعه‌شناسی، بهینه‌سازی و ریاضیات است. اما شبکه کاوی زیرشاخه‌ای از داده‌کاوی است که بر تحلیل ساختار و پویایی شبکه‌های اجتماعی تمرکز دارد.تشخیص جامعه یا انجمن چیست و به چه دردی می‌خورد؟تشخیص جامعه یک موضوع محبوب در شبکه کاوی است و شامل شناسایی گروه‌هایی از گره‌ها در یک شبکه است که به طور متراکم به هم متصل هستند و ویژگی‌های مشابهی دارند. چندین الگوریتم تشخیص جامعه را در ادامه معرفی می‌کنیم که شامل روش‌های مبتنی بر ماژولاریتی، خوشه‌بندی سلسله مراتبی و الگوریتم‌های طیفی هستند. در زمینه Goodreads، تشخیص جامعه می‌تواند برای شناسایی گروه‌هایی از کاربرانی که ترجیحات خواندن مشابه دارند یا متعلق به یک باشگاه کتاب هستند، استفاده شود تا از آن برای مثال برای پیشنهاد کتاب به دیگر اعضای همان کامیونیتی یا انجمن استفاده شود.توزیع اطلاعات در شبکه‌های پیچیده:توزیع اطلاعات در شبکه‌ها یکی دیگر از موضوعات مهم در شبکه کاوی است و شامل تجزیه و تحلیل نحوه انتشار اطلاعات از طریق شبکه‌های اجتماعی است. چندین مدل برای مطالعه انتشار اطلاعات داریم، مانند مدل آبشاری ، مدل خطی و مدل پیوسته. درزمینۀ Goodreads، تجزیه و تحلیل توزیع نقدها و رتبه‌بندی‌های کتاب می‌تواند بینش‌هایی درباره نحوه شکل‌گیری نظرات و ترجیحات و اشتراک‌گذاری بین کاربران ارائه دهد.پیش‌بینی یال در شبکه‌های پیچیده:پیش‌بینی لینک یا یال  یکی دیگر از بررسی‌های مهم در شبکه‌ها است و شامل پیش‌بینی احتمال پیوند بین گره‌ها در یک شبکه است. چندین الگوریتم پیش‌بینی پیوند مانند همسایه‌های مشترک، ضریب جاکارد و پیوست ترجیحی پیشنهاد شده‌اند. در زمینه Goodreads، از پیش‌بینی لینک می‌توان برای توصیه کتاب‌ها به کاربران بر اساس سابقه خواندن و ارتباطات شبکه‌های اجتماعی استفاده کرد.تجزیه و تحلیل احساسات  و عقیده‌کاوی در شبکه‌های پیچیده:تجزیه و تحلیل احساسات و تجزیه و تحلیل نظرات یا عقیده‌ها، دو موضوع مرتبط در داده‌کاوی هستند که شامل تجزیه و تحلیل احساسات و نظرات بیان شده در محتوای تولید شده توسط کاربر، مانند بررسی‌ها و رتبه‌بندی‌ها می‌شوند. چندین تکنیک برای انجام تجزیه و تحلیل احساسات و تحلیل نظرات پیشنهاد شده است، مانند رویکردهای مبتنی بر واژگان، رویکردهای مبتنی بر یادگیری ماشین و رویکردهای مبتنی بر یادگیری عمیق. در زمینه Goodreads، تجزیه و تحلیل احساسات و تجزیه و تحلیل نظرات می‌تواند برای شناسایی نظرات مثبت و منفی، و تجزیه و تحلیل عواملی که بر نظرات و ترجیحات کاربران تأثیر می‌گذارد، استفاده شود.سیستم‌های توصیه  و پیشنهاد در شبکه‌های پیچیده:سیستم‌های توصیه یکی دیگر از کاربردهای مهم داده‌کاوی در شبکه‌های اجتماعی است و شامل توصیه موارد به کاربران بر اساس ترجیحات و رفتار آن‌ها است. چندین الگوریتم پیشنهادی مانند فیلتر مشارکتی، فیلتر مبتنی بر محتوا و رویکردهای ترکیبی پیشنهاد شده‌اند. در زمینه Goodreads، می‌توان از سیستم‌های توصیه برای پیشنهاد کتاب به کاربران بر اساس سابقه مطالعه، اتصالات شبکه‌های اجتماعی، و بررسی‌ها و رتبه‌بندی‌ها استفاده کرد.تجزیه و تحلیل ساختار شبکه‌های پیچیده:تجزیه و تحلیل ساختار شبکه یک موضوع گسترده در شبکه کاوی است و شامل تجزیه و تحلیل ویژگی‌های شبکه‌های اجتماعی مانند توزیع درجه، ضریب خوشه‌بندی و معیارهای مرکزیت است. چندین ابزار تحلیل شبکه برای مطالعه ساختار شبکه مانند Gephi، NetworkX و ... توسعه یافته‌اند. در زمینه Goodreads، تجزیه و تحلیل ساختار شبکه می‌تواند بینش‌هایی را در مورد الگوهای تعاملات اجتماعی بین کاربران و عواملی که بر رفتار و ترجیحات کاربر تأثیر می‌گذارند، ارائه دهد.معرفی مجموعه دادۀ Goodreads:مجموعه داده Goodreadsبه مجموعه‌ای از داده‌های مربوط به پلتفرم Goodreadsاشاره دارد که یک وب‌سایت فهرست‌نویسی اجتماعی است که به افراد امکان می‌دهد کتاب‌ها را جستجو، رتبه‌بندی، بررسی و بحث کنند. مجموعه داده معمولاً شامل اطلاعاتی درباره کتاب‌ها، نویسندگان، رتبه‌بندی کاربران، نظرات و تعاملات کاربر در پلتفرم Goodreadsاست.این مجموعه داده اطلاعات زیادی را ارائه می‌دهد که می‌تواند برای اهداف مختلف تحقیق و تحلیل در حوزه توصیه‌های کتاب، تجزیه و تحلیل رفتار کاربر، تجزیه و تحلیل احساسات و موارد دیگر مورداستفاده قرار گیرد.عناصر داده رایج موجود در مجموعه داده Goodreadsعبارت‌اند از:                                                                       https://sites.google.com/eng.ucsd.edu/ucsdbookgraph/home                       1. اطلاعات کتاب: این اطلاعات شامل جزئیات مربوط به کتاب‌ها، مانند عنوان، نویسنده، سال انتشار، ژانر، ISBNو ناشر است. همچنین ممکن است شامل ابر داده‌های اضافی مانند خلاصه کتاب، تصاویر جلد و میانگین رتبه‌بندی باشد.2. رتبه‌بندی‌ها و نظرات کاربران: مجموعه داده اغلب شامل رتبه‌بندی‌ها و بررسی‌های کاربران برای کتاب‌های مختلف است. این اطلاعات را می‌توان برای تجزیه و تحلیل ترجیحات کاربر، تجزیه و تحلیل احساسات، و به دست آوردن بینش در مورد محبوبیت کتاب استفاده کرد.3. تعاملات کاربر: داده‌های مربوط به تعاملات کاربردر پلتفرم Goodreads نیز در این مجموعه داده وجود دارد، مانند دوستی‌های کاربر، فالوورها، قفسه‌های کتاب (مجموعه‌های دسته‌بندی شده کتاب‌ها)، نظرات دربارۀ نظرات، و مُهرهای زمانی فعالیت کاربر.4. اطلاعات نویسنده: این مجموعه داده همچنین حاوی اطلاعاتی در مورد نویسندگان، مانند نام، بیوگرافی، و سایر جزئیات مرتبط می‌باشد که می‌تواند برای کشف الگوهای مرتبط با نویسنده و روابط با رتبه‌بندی یا محبوبیت کتاب استفاده شود.بنابراین مجموعه دادۀ Goodreads برای محققان و تحلیلگران داده منبع ارزشمندی برای کشف جنبه‌های مختلف داده‌های مرتبط با کتاب، رفتارهای کاربر و تعاملات اجتماعی در پلتفرم Goodreadsارائه می‌دهد.مرور مقالات و کارهای انجام شده:[1] این مقاله ترجیحات خوانندگان برزیلی را از نظر ژانرهای کتاب و نویسندگان در پلتفرم گودریدز بررسی می‌کند.تحلیل ساختار شبکه:این مطالعه داده‌ها را از API Goodreads جمع‌آوری کرده و ترجیحات خواندن کاربران برزیلی Goodreads را در ایالت‌ها و مناطق مختلف  مورد تجزیه و تحلیل قرار داد. یافته‌ها نشان داد که خوانندگان برزیلی طیف متنوعی ترجیحات خواندن دارند که محبوب‌ترین ژانرها عبارت‌اند از عاشقانه، فانتزی و داستان‌های بزرگسالان جوان. این مطالعه همچنین نشان داد که تفاوت‌های قابل توجهی در ترجیحات خواندن در ایالت‌ها و مناطق مختلف وجود دارد، به طوری که برخی از ژانرها و نویسندگان در مناطق خاص محبوب‌تر از سایرین هستند.در این مقاله، از تحلیل شبکه برای شناسایی تأثیرگذارترین نویسندگان و کتاب‌ها در جامعه Goodreadsبرزیل نیز استفاده شد. نتایج نشان داد که نویسندگان برزیلی، مانند پائولو کوئیلو و خورخه آمادو، در کنار نویسندگان بین‌المللی مانند جی کی رولینگ و جورج آر آر مارتین از تاثیرگذارترین نویسندگان برای برزیلی‌ها هستند و کتاب‌هایی با رتبه‌بندی بالا در Goodreads تأثیرگذاری بیشتری در جامعه دارند، که نشان می‌دهد رتبه‌بندی خوانندگان نقش مهمی در شکل‌دهی ترجیحات خواندن دارد.تجزیه و تحلیل رفتار گره‌ها در شبکه:این مقاله همچنین رابطه بین ترجیحات خواندن و عوامل جمعیت شناختی مانند سن و جنسیت را بررسی کرد. یافته‌ها نشان داد که خوانندگان جوان‌تر تمایل بیشتری به خواندن داستان‌های بزرگسالان جوان دارند، در حالی که خوانندگان مسن‌تر داستان‌های غیرداستانی و تاریخی را ترجیح می‌دهند و خوانندگان مرد تمایل بیشتری به خواندن داستان‌های علمی تخیلی و فانتزی دارند، در حالی که خوانندگان زن داستان‌های عاشقانه و تخیلی جوانان را ترجیح می‌دهند.بنابراین این یافته‌ها بینش‌های مفیدی را در مورد ترجیحات خوانندگان برزیلی ارائه می‌دهد و می‌تواند برای ناشران و نویسندگانی که به دنبال هدف قرار دادن مخاطبان خاص در برزیل هستند مفید باشد.[2] این مقاله یک مطالعه بین کشوری در مورد شباهت‌های فرهنگی بر اساس ترجیحات کتاب ارائه می‌کند  و داده‌های پلتفرم گودریدز را تجزیه و تحلیل می‌کند تا میزانی را که ترجیحات کتاب منعکس‌کننده شباهت‌ها و تفاوت‌های فرهنگی بین کشورها است، بررسی کند. این مطالعه داده‌های 10 کشور را جمع‌آوری کرد و بیش از 2 میلیون رتبه‌بندی کتاب را از کاربران Goodreadsدر این کشورها تجزیه و تحلیل کرد.تجزیه و تحلیل رفتار گره‌ها در شبکه:یافته‌ها نشان داد که شباهت‌ها و تفاوت‌های فرهنگی قابل توجهی در ترجیحات کتاب در بین کشورهای موردمطالعه وجود دارد. این مطالعه نشان داد که خوانندگان در کشورهای مختلف ترجیحات متفاوتی برای ژانرها و نویسندگان خاص دارند که نشان‌دهنده تفاوت در ارزش‌های فرهنگی، سنت‌ها و تاریخ است. به عنوان مثال، خوانندگان در ژاپن و کره جنوبی به انیمه و مانگا ترجیح می‌دهند، در حالی که خوانندگان در ایالات متحده و بریتانیا به داستان‌های علمی تخیلی و فانتزی ترجیح می‌دهند. این مقاله همچنین رابطه بین ترجیحات کتاب و عوامل جمعیت شناختی مانند سن و جنسیت را بررسی کرد. یافته‌ها نشان داد که خوانندگان جوان‌تر تمایل بیشتری به خواندن داستان‌های تخیلی و فانتزی بزرگسالان دارند، در حالی که خوانندگان مسن‌تر داستان‌های غیرداستانی و تاریخی را ترجیح می‌دهند.تجزیه و تحلیل ساختار شبکه:این مقاله از تحلیل شبکه برای شناسایی تأثیرگذارترین کتاب‌ها و نویسندگان در هر کشور و همچنین محبوب‌ترین ژانرها استفاده کرد. نتایج نشان داد که کتاب‌ها و نویسندگان خاصی در چندین کشور بسیار تأثیرگذار بوده‌اند، و نشان می‌دهد که &quot;سنگ محک فرهنگی مشترکی&quot; وجود دارد که از مرزهای ملی فراتر می‌رود. این مطالعه همچنین نشان داد که ژانرهای خاصی مانند عاشقانه و رازآلود در چندین کشور محبوب هستند و نشان می‌دهد که این ژانرها &quot;جذابیت جهانی&quot; دارند.این مقاله نتیجه می‌گیرد که ترجیحات کتاب می‌تواند بینش‌های مفیدی در مورد شباهت‌ها و تفاوت‌های فرهنگی بین کشورها ارائه دهد و &quot;اهمیت درک تفاوت‌های فرهنگی را هنگام بازاریابی و تبلیغ کتاب&quot; در کشورهای مختلف نشان می‌دهد و پیشنهاد می‌کند که ترجیحات کتاب می‌تواند ابزار مفیدی برای ناشران و نویسندگانی باشد که به دنبال هدف قرار دادن مخاطبان خاص هستند.[3] این مقاله به بررسی رابطه بین استناد به کتاب دانشگاهی و نظر و رتبه‌بندی خوانندگان Goodreads می‌پردازد و داده‌های جمع‌آوری‌شده از Goodreadsو Google Scholar را برای بررسی رابطه بین تأثیر علمی و جذابیت عمومی در صنعت کتاب تجزیه و تحلیل می‌کند. این مطالعه بر روی نمونه‌ای متشکل از 50 کتاب دانشگاهی از رشته‌های مختلف تمرکز دارد و همبستگی بین تعداد استنادها و رتبه‌بندی‌ها و بررسی‌های Goodreadsرا تحلیل می‌کند.تجزیه و تحلیل ساختار شبکه:یافته‌ها نشان داد که همبستگی ضعیفی بین استناد به کتاب‌های دانشگاهی و رتبه‌بندی‌ها و بررسی‌های گودریدز وجود دارد که نشان‌دهنده گسست بین تأثیر علمی و جذابیت عمومی در صنعت کتاب است. این مطالعه نشان داد که برخی از کتاب‌های دانشگاهی با استناد بالا رتبه‌بندی و بررسی‌های پایینی در Goodreadsداشتند، در حالی که برخی از کتاب‌های با رتبه‌بندی و نقد بالا تعداد استناد پایینی داشتند.این مطالعه همچنین رابطه بین ویژگی‌های کتاب و رتبه‌بندی‌ها و بررسی‌های Goodreads را مورد بررسی قرار داد و دریافت که برخی از ویژگی‌های کتاب، مانند خوانایی و در دسترس بودن، در تعیین جذابیت عمومی مهم‌تر از تأثیر تحصیلی هستند. این مطالعه نشان می‌دهد که کتاب‌هایی که برای مخاطب عام در دسترس‌تر و جذاب‌تر هستند، بدون در نظر گرفتن تعداد استنادشان، احتمال بیشتری برای دریافت رتبه‌بندی و نقدهای مثبت در Goodreadsدارند.این مطالعه از تکنیک‌های متن‌کاوی برای شناسایی رایج‌ترین مضامین و موضوعات در بررسی‌های Goodreadsدرباره کتاب‌های دانشگاهی استفاده کرد و بینش‌هایی را درباره برداشت‌ها و نگرش‌های خوانندگان نسبت به این کتاب‌ها ارائه کرد. نتایج نشان داد که خوانندگان برای کتاب‌هایی که آموزنده، جذاب و مرتبط با علایقشان هستند، ارزش قائل هستند و اهمیت سبک و محتوا را در تعیین جذابیت عمومی برجسته می‌کنند.این مطالعه نتیجه می‌گیرد که تأثیر تحصیلی و جذابیت عمومی اغلب در صنعت کتاب قطع می‌شود و اهمیت درک برداشت‌ها و نگرش‌های خوانندگان نسبت به کتاب در استراتژی‌های بازاریابی و تبلیغاتی را برجسته می‌کند. این مطالعه نشان می‌دهد که دسترسی و مشارکت در تعیین جذابیت عمومی مهم‌تر از تأثیر تحصیلی است و نیاز نویسندگان دانشگاهی را برای انتقال تحقیقات خود به روشی در دسترس و جذاب برای مخاطبان عمومی برجسته می‌کند. این یافته‌ها بینش‌های مفیدی را در مورد ارزش درک ادراکات و نگرش خوانندگان نسبت به کتاب و اهمیت ویژگی‌های کتاب در شکل دادن به ادراکات خوانندگان و تصمیمات خرید ارائه می‌دهد.[4] این مقاله به بررسی رابطه بین جنسیت و ژانر خواننده و نویسنده در Goodreadsمی‌پردازد، داده‌های Goodreadsرا تجزیه و تحلیل می‌کند تا تأثیر جنسیت بر ترجیحات و رفتار خوانندگان و بازنمایی جنسیت در ژانرهای مختلف را بررسی کند. این مطالعه بر روی نمونه‌ای از کتاب‌ها و خوانندگان درباره Goodreadsتمرکز می‌کند و زبان مورد استفاده در بررسی کتاب‌ها و بیوگرافی نویسنده را تجزیه و تحلیل می‌کند تا درک و نگرش خوانندگان نسبت به جنسیت و ژانر را بررسی کند.تجزیه و تحلیل رفتار گره‌ها در شبکه:یافته‌ها نشان داد که جنسیت خواننده و نویسنده عوامل مهمی در شکل‌دهی به ترجیحات و رفتار خوانندگان در Goodreadsهستند و اهمیت تنوع جنسیتی را در ترویج فراگیری و بازنمایی برجسته می‌کنند. این مطالعه نشان داد که رتبه‌بندی‌ها و نقدهای خوانندگان تحت تأثیر جنسیت نویسنده و قهرمان داستان قرار دارد و خوانندگان زن ترجیح می‌دهند کتاب‌هایی با قهرمان‌های زن و نویسنده‌های زن ترجیح دهند. Goodreadsبا ارائه مجموعه‌ای وسیع از بررسی‌های کتاب و بیوگرافی نویسنده، نقش مهمی در این مطالعه ایفا کرد و به مطالعه اجازه داد تا زبان مورد استفاده در این متون را تجزیه و تحلیل کند و رایج‌ترین موضوعات مرتبط با جنسیت و ژانر را شناسایی کند.تحلیل احساسات و عقیده‌کاوی:این مطالعه از تکنیک‌های متن‌کاوی برای شناسایی رایج‌ترین مضامین و موضوعات در بررسی‌های کتاب و زندگینامه نویسنده، مرتبط با جنسیت و ژانر استفاده کرد، نتایج نشان داد که ژانرهای خاص، مانند داستان‌های عاشقانه و نوجوانان، به شدت با خوانندگان و نویسندگان زن مرتبط هستند، در حالی که ژانرهای دیگر، مانند علمی تخیلی و فانتزی، به شدت با خوانندگان و نویسندگان مرد مرتبط هستند.این مطالعه همچنین رابطه بین جنسیت خوانندگان و ترجیحات و رفتار آن‌ها را در Goodreads مورد بررسی قرار داد و دریافت که خوانندگان زن بیشتر احتمال دارد کتاب‌هایی را با قهرمانان زن و نویسندگان زن &quot;رتبه‌بندی&quot; کنند و یا نظر ثبت کنند. این مطالعه نشان می‌دهد که سازمان‌ها و افراد باید این عوامل را هنگام توسعه استراتژی‌های بازاریابی و سیستم‌های توصیه‌ای در نظر بگیرند و اهمیت تنوع جنسیتی را در ترویج فراگیری برجسته کنند.[5] این مقاله تأثیرات شرکت در چالش‌های خواندن را بر عادات خواندن افراد با استفاده از پلتفرم Goodreads بررسی می‌کند.تجزیه و تحلیل رفتار گره‌ها در شبکه و تحلیل ساختار شبکه:در این مقاله، یافته‌ها نشان داد که اکثر شرکت‌کنندگان در چالش‌های خواندن در گودریدز شرکت کرده‌اند که محبوب‌ترین چالش آن چالش سالانه خواندن است. این مطالعه نشان داد که شرکت در چالش‌های خواندن درGoodreads تأثیر مثبتی بر عادت‌های خواندن افراد دارد، به طوری که شرکت‌کنندگان گزارش داده‌اند که انگیزه خواندن بیشتر در آن‌ها ایجاد می‌کند و به آن‌ها کمک می‌کند تا ژانرهای خواندن خود را متنوع کنند. علاوه بر این، این مطالعه نشان داد که جنبه اجتماعی چالش‌های گودریدز، مانند توانایی دیدن آنچه دیگران می‌خوانند و دریافت توصیه‌های کتاب از دیگران، نیز تأثیر مثبتی بر عادت‌های مطالعه افراد دارد.این مطالعه همچنین رابطه بین تعداد کتاب‌های خوانده شده و تعداد چالش‌های تکمیل شده را مورد بررسی قرار داد و دریافت که بین این دو متغیر همبستگی مثبت وجود دارد. با این حال، این مطالعه رابطه معنی‌داری بین تعداد چالش‌های تکمیل‌شده و مقدار زمان صرف شده برای خواندن پیدا نکرد، که نشان می‌دهد افرادی که چالش‌های بیشتری را تکمیل می‌کنند، لزوماً زمان بیشتری را برای خواندن صرف نمی‌کنند.این مطالعه نتیجه‌گیری می‌کند که شرکت در چالش‌های خواندن در Goodreads می‌تواند تأثیر مثبتی بر عادت‌های خواندن افراد داشته باشد و انگیزه‌ای برای خواندن بیشتر و کشف ژانرهای جدید ایجاد کند. جنبه اجتماعی چالش‌های گودریدز نیز نقش مهمی در انگیزه افراد برای مطالعه بیشتر و تعامل با دیگران در جامعه کتاب‌خوان دارد. این مطالعه نشان می‌دهد که چالش‌های خواندن می‌تواند ابزار مفیدی برای ترویج خواندن و تشویق افراد به ایجاد عادت خواندن مداوم باشد.[6] این مقاله در موردمطالعه‌ای گزارش می‌دهد که رابطه بین رفتار اجتماعی کتاب‌خوانی در Goodreads و وضعیت پرفروش‌ترین‌های آمازون را بررسی می‌کند. Goodreads یک پلتفرم رسانه اجتماعی برای خوانندگان کتاب است که در آن کاربران می‌توانند کتاب‌ها را رتبه‌بندی کنند، بررسی کنند و با دیگران درباره آن بحث کنند. از سوی دیگر، آمازون یکی از بزرگ‌ترین خرده‌فروشان آنلاین کتاب و سایر محصولات در جهان است.سیستم‌های توصیه و پیشنهاد:این مطالعه داده‌های بیش از 2000 کتاب منتشر شده در سال 2017 را تجزیه و تحلیل می‌کند که هم در گودریدز و هم در آمازون فهرست شده بودند. محققان به عوامل مختلفی مانند تعداد رتبه‌بندی‌ها، بررسی‌ها و قفسه‌بندی‌ها در Goodreadsپرداختند. آن‌ها سپس این داده‌ها را با وضعیت پرفروش‌ترین کتاب‌های آمازون مقایسه کردند. این مطالعه نشان داد که رفتار اجتماعی کتاب‌خوانی در Goodreads می‌تواند به طور دقیق پیش بینی کند که کدام کتاب به پرفروش ترین کتاب آمازون تبدیل می‌شود. به طور خاص، کتاب‌هایی که تعداد رتبه‌بندی‌ها، بررسی‌ها و قفسه‌بندی‌های بالایی در گودریدز دارند، احتمالاً به پرفروش‌ترین‌های آمازون تبدیل می‌شوند. این مطالعه همچنین نشان داد که کتاب‌هایی با رتبه‌بندی بالاتر و احساسات مثبت بیشتر در آمازون عملکرد بهتری دارند.درنتیجه، این مطالعه بر اهمیت رسانه‌های اجتماعی در صنعت کتاب تأکید می‌کند. با ظهور پلتفرم‌های رسانه‌های اجتماعی مانند Goodreads، خوانندگان اکنون فرصت بیشتری برای به اشتراک گذاشتن نظرات و توصیه‌های خود با دیگران دارند. با تجزیه و تحلیل رفتار اجتماعی کتاب‌خوانی در این پلتفرم‌ها، ناشران و نویسندگان می‌توانند بینشی در مورد ترجیحات خوانندگان به دست آورند و به طور بالقوه پرفروش‌ترین کتاب بعدی را شناسایی کنند.[7] این مقاله با استفاده از تکنیک‌های پردازش زبان طبیعی، احساسات بیان شده در نظرات کاربران کتاب‌ها را بررسی می‌کند. این مطالعه داده‌های 15 رمان کلاسیک آمریکایی را جمع‌آوری کرد و بیش از 5000 نظر کاربر را با استفاده از ابزارهای تحلیل احساسات تحلیل کرد.تجزیه و تحلیل احساسات و عقیده‌کاوییافته‌ها نشان داد که احساسات کاوی می‌تواند بینش‌های مفیدی در مورد برداشت خوانندگان از رمان‌های کلاسیک آمریکایی ارائه دهد. این مطالعه نشان داد که احساسات بیان شده در نظرات کاربران به طور گسترده‌ای متفاوت است، به طوری که برخی از کتاب‌ها عمدتاً نقدهای مثبت دریافت کردند، در حالی که برخی دیگر نظرات متفاوت یا منفی دریافت کردند. این مطالعه همچنین نشان داد که احساسات بیان شده در نظرات کاربران اغلب تحت تأثیر عواملی مانند طرح داستان، شخصیت‌ها و مضامین کتاب است.تجزیه و تحلیل ساختار شبکه:این مقاله از تجزیه و تحلیل شبکه برای شناسایی تأثیرگذارترین کلمات و مضامین در نظرات کاربران رمان‌های کلاسیک آمریکایی استفاده کرد. نتایج نشان داد که کلمات و مضامین خاصی مانند عشق، دوستی و خانواده معمولاً در بررسی‌های مثبت ذکر می‌شوند، در حالی که کلمات و مضامینی مانند خشونت، نژادپرستی و جنسیت‌گرایی اغلب با نقدهای منفی همراه هستند.این مطالعه همچنین رابطه بین احساسات و فروش را مورد بررسی قرار داد و دریافت که رابطه مثبت معناداری بین احساسات بیان شده در نظرات کاربران و فروش رمان‌های کلاسیک آمریکایی وجود دارد. این مطالعه نشان می‌دهد که احساسات مثبت بیان‌شده در نظرات کاربران می‌تواند تأثیر قابل‌توجهی بر محبوبیت و فروش رمان‌های کلاسیک آمریکایی داشته باشد و بر اهمیت نقدهای مثبت و بازخورد خوانندگان در تبلیغ و بازاریابی کتاب‌ها تأکید کند.این مطالعه نتیجه‌گیری می‌کند که احساسات کاوی می‌تواند بینش‌هایی را در مورد درک خوانندگان از رمان‌های کلاسیک آمریکایی و عواملی که بر احساسات آن‌ها تأثیر می‌گذارد، ارائه دهد. این مطالعه بر اهمیت احساسات مثبت در تبلیغ و بازاریابی کتاب‌ها تأکید می‌کند و نشان می‌دهد که ابزار تحلیل احساسات می‌تواند ابزار مفیدی برای ناشران و نویسندگانی باشد که به دنبال درک بازخورد خواننده و بهبود بازاریابی کتاب‌هایشان هستند. بنابراین ارزش بازخورد خواننده و اهمیت احساسات در شکل‌دهی ادراکات خوانندگان و تصمیم‌گیری‌های خرید بسیار مهم است.[8] این مقاله به بررسی استفاده از تکنیک‌هایی برای پیش‌بینی پیوند در شبکه‌های دوبخشی می‌پردازد و داده‌های Goodreads را برای بررسی اثربخشی این تکنیک‌ها در پیش‌بینی رتبه‌بندی کتاب‌های آینده تجزیه و تحلیل می‌کند.پیش‌بینی پیوند و سیستم‌های توصیه و پیشنهاد در شبکه‌های 2بخشی: این مطالعه بر روی نمونه‌ای از کتاب‌ها و خوانندگان در گودریدز متمرکز است و شبکه &quot;دوجانبه&quot; تعاملات کتاب‌ها و خوانندگان را برای پیش‌بینی رتبه‌بندی‌های آینده کتاب‌ها توسط خوانندگان تحلیل می‌کند.یافته‌ها نشان داد که تکنیک‌های پیش‌بینی، پتانسیل بهبود سیستم‌های توصیه و استراتژی‌های بازاریابی شخصی‌سازی شده را دارد. این مطالعه نشان داد که تکنیک‌هایی مانند node2vecو LINE در پیش‌بینی رتبه‌بندی کتاب‌های آینده از روش‌های پیش‌بینی پیوند سنتی، مانند شباهت Jaccardو شباهت کسینوس بهتر عمل می‌کنند.این مطالعه از داده‌های Goodreadsبرای ایجاد یک شبکه &quot;دوبخشی&quot; از تعاملات کتاب‌خوان استفاده کرد، که در آن &quot;کتاب‌ها و خوانندگان&quot; به‌عنوان گره‌ها و تعامل‌ها به‌عنوان یال‌ها نمایش داده می‌شدند. سپس از تکنیک‌هایی برای پیش‌بینی رتبه‌بندی کتاب‌های آینده توسط خوانندگان استفاده شد.تجزیه و تحلیل ساختار شبکۀ 2 بخشی:این مطالعه همچنین تأثیر ویژگی‌های مختلف شبکه، مانند توزیع درجه و ساختار جامعه، بر اثربخشی تکنیک‌های جاسازی شبکه برای پیش‌بینی پیوند در شبکه‌های دوبخشی را بررسی کرد. یافته‌ها نشان داد که تکنیک‌های تعبیه شبکه در شبکه‌هایی با توزیع درجه &quot;پاورلا&quot; و ساختار جامعه قوی مؤثرتر بوده و اهمیت ویژگی‌های شبکه را در شکل‌دهی اثربخشی این تکنیک‌ها برجسته می‌کند.مجموعه داده Goodreads با ارائه مجموعه داده بزرگی از تعاملات کتاب و خواننده، نقش مهمی در این مطالعه ایفا کرد که به مطالعه اجازه ساخت یک شبکه دوبخشی و تجزیه و تحلیل اثربخشی تکنیک‌های جاسازی شبکه برای پیش‌بینی پیوند را داد. Goodreads همچنین بینش‌های خوبی در مورد ترجیحات و رفتار خوانندگان ارائه کرد و پتانسیل این تکنیک‌ها را برای بهبود سیستم‌های توصیه و استراتژی‌های بازاریابی شخصی‌شده برجسته کرد.این مطالعه نتیجه‌گیری می‌کند که تکنیک‌های جاسازی شبکه می‌توانند در پیش‌بینی رتبه‌بندی کتاب‌های آینده در شبکه‌های دوجانبه مؤثر باشند و پتانسیل این تکنیک‌ها را برای بهبود سیستم‌های توصیه و استراتژی‌های بازاریابی شخصی‌شده برجسته می‌کند. این مطالعه نشان می‌دهد که ویژگی‌های شبکه، مانند توزیع درجه و ساختار جامعه، در شکل‌دهی اثربخشی این تکنیک‌ها مهم هستند و سازمان‌ها باید این ویژگی‌ها را هنگام استفاده از تکنیک‌های جاسازی شبکه برای مشکلات دنیای واقعی در نظر بگیرند.[9] این مقاله توصیه‌های کتاب در Goodreads.comرا بررسی می‌کند و اثربخشی سیستم توصیه پلتفرم و عواملی را که بر تعامل کاربر با این توصیه‌ها تأثیر می‌گذارد، تجزیه و تحلیل می‌کند. پیش‌بینی پیوند و سیستم‌های توصیه و پیشنهاد:این مطالعه از داده‌های جمع‌آوری‌شده از API  گودریدز، از جمله تعامل کاربر با کتاب‌های توصیه‌شده، برای تجزیه و تحلیل اثربخشی سیستم توصیه استفاده کرد.یافته‌ها نشان داد که سیستم توصیۀ گودریدز در ایجاد تعامل کاربر با کتاب‌های توصیه‌شده مؤثر است و کاربران نرخ کلیک (CTR) بالایی را برای کتاب‌های پیشنهادی دارند. این مطالعه نشان داد که CTRبرای کتاب‌های توصیه‌شده به‌طور قابل‌توجهی بالاتر از CTRبرای کتاب‌های غیرتوصیه‌شده است، که بر اثربخشی سیستم توصیه در تشویق کاربران به کشف کتاب‌ها و نویسندگان جدید تأکید می‌کند.این مقاله همچنین عواملی را که بر تعامل کاربر با کتاب‌های توصیه‌شده تأثیر می‌گذارد بررسی کرد و دریافت که ارتباط و تنوع کتاب‌های توصیه‌شده عوامل مهمی در تعیین تعامل کاربر هستند. این مطالعه نشان می‌دهد که کاربران احتمالاً با کتاب‌های توصیه‌شده مرتبط با علایقشان و طیف متنوعی از گزینه‌ها درگیر می‌شوند. این مطالعه همچنین نشان می‌دهد که کیفیت الگوریتم توصیه در تعیین تعامل کاربر مهم است، زیرا کاربران به احتمال زیاد با توصیه‌هایی که دقیق و مؤثر هستند درگیر می‌شوند.تجزیه و تحلیل ساختار شبکه:این مطالعه از تجزیه و تحلیل شبکه برای شناسایی تأثیرگذارترین کتاب‌ها و نویسندگان در پلتفرم و همچنین محبوب‌ترین ژانرها استفاده کرد. نتایج نشان داد که کتاب‌ها و نویسندگان خاصی بر روی پلتفرم بسیار تأثیرگذار بوده‌اند و برخی از نویسندگان تأثیر قابل‌توجهی بر تعامل کاربران با کتاب‌های پیشنهادی دارند. این مطالعه همچنین نشان داد که ژانرهای خاصی مانند داستان‌های عاشقانه و داستان‌های بزرگسالان جوان، محبوب‌تر از سایرین هستند که نشان‌دهنده ترجیحات کاربران Goodreadsاست.این مطالعه نتیجه می‌گیرد که سیستم توصیه گودریدز در ایجاد تعامل کاربر با کتاب‌های توصیه‌شده مؤثر است و اهمیت توصیه‌های دقیق و مرتبط را در تشویق کاربران به کشف کتاب‌ها و نویسندگان جدید برجسته می‌کند. این مطالعه نشان می‌دهد که تنوع کتاب‌های توصیه‌شده عامل مهمی در تعیین تعامل کاربر است، زیرا کاربران بیشتر با توصیه‌هایی درگیر می‌شوند که طیف وسیعی از گزینه‌ها را ارائه می‌دهند. این یافته‌ها بینش‌های مفیدی را در مورد ارزش سیستم‌های توصیه در ترویج مطالعه و تشویق کاربران به کشف کتاب‌ها و نویسندگان جدید ارائه می‌دهد.[10] این مقاله به بررسی استفاده از تکنیک‌های تجزیه و تحلیل احساسات و خوشه‌بندی برای تحلیل بررسی‌های آنلاین کتاب و شناسایی الگوهایی در احساسات و نگرش خوانندگان نسبت به کتاب می‌پردازد. بنابراین از تکنیک های داده‌کاوی برای تجزیه و تحلیل مجموعه داده‌ای از بررسی‌های آنلاین کتاب از Amazon.comاستفاده می‌کند که بر نقد کتاب ها در ژانرهای داستانی و غیرداستانی تمرکز دارد. یافته‌ها نشان داد که تکنیک‌های تجزیه و تحلیل احساسات و خوشه‌بندی می‌توانند بینش‌های خوبی را در مورد پاسخ‌های احساسی خوانندگان به کتاب‌ها ارائه دهند و اهمیت درک ارتباط عاطفی خوانندگان با کتاب‌ها را در استراتژی‌های بازاریابی و تبلیغاتی برجسته کنند.تحلیل احساسات و عقیده‌کاوی:این مطالعه نشان داد که واکنش‌های احساسی خوانندگان به کتاب‌ها بسیار متفاوت است، برخی از کتاب‌ها عمدتاً احساسات مثبت را برمی‌انگیزند، در حالی که برخی دیگر، احساسات مختلط یا منفی را برانگیخته می‌کنند. در این مقاله از تکنیک‌های خوشه‌بندی برای شناسایی الگوها در پاسخ‌های عاطفی خوانندگان به کتاب‌ها، گروه‌بندی کتاب‌ها بر اساس مضامین و الگوهای احساسی مشابه استفاده شده است. نتایج نشان داد که موضوعات عاطفی خاص، مانند عشق، از دست دادن و خودیابی، در بین کتاب‌ها و ژانرهای مختلف مشترک هستند، و جهانی بودن برخی تجربیات عاطفی و ارتباط آن‌ها با خوانندگان در زمینه‌ها و فرهنگ‌های مختلف را برجسته می‌کنند.این مطالعه همچنین رابطه بین پاسخ های عاطفی و عوامل جمعیت شناختی مانند سن و جنسیت را مورد بررسی قرار داد. یافته‌ها نشان داد که خوانندگان جوان‌تر تمایل بیشتری به ابراز احساسات مثبت در بررسی‌های خود داشتند، در حالی که خوانندگان مسن‌تر به احتمال زیاد احساسات مختلط یا منفی را ابراز می‌کردند. این مطالعه همچنین نشان داد که خوانندگان زن تمایل بیشتری به بیان پاسخ‌های احساسی در بررسی‌های خود دارند، که بر اهمیت تفاوت‌های جنسیتی در ارتباطات عاطفی خوانندگان با کتاب‌ها تاکید می‌کند.[11] این مقاله به بررسی استفاده و تأثیر رتبه‌بندی Goodreadsبرای خوانندگان کتاب‌های عربی می‌پردازد.یافته‌ها نشان داد که اکثر شرکت کنندگان از Goodreadsبرای پیگیری پیشرفت خواندن خود و یافتن کتاب‌های جدید برای خواندن استفاده می‌کردند. با این حال، این مطالعه نشان داد که استفاده از رتبه‌بندی و بررسی‌های Goodreadsبرای کتاب‌های عربی محدود بود و تنها درصد کمی از شرکت‌کنندگان از این ویژگی‌ها برای انتخاب کتاب استفاده می‌کردند  که این ممکن است به دلیل در دسترس نبودن کتاب‌های عربی در این پلتفرم، و همچنین تعداد محدود بررسی و رتبه‌بندی برای این کتاب‌ها باشد.این مطالعه همچنین تأثیر رتبه‌بندی و بررسی‌های Goodreadsرا بر انتخاب کتاب‌های خوانندگان بررسی کرد و دریافت که اکثر شرکت‌کنندگان هنگام انتخاب کتاب‌ها برای خواندن تحت تأثیر رتبه‌بندی‌ها و بررسی‌ها قرار گرفتند. با این حال، این مطالعه نشان داد که تأثیر رتبه‌بندی و بررسی برای کتاب‌های عربی در مقایسه با کتاب‌های دیگر زبان‌ها ضعیف‌تر بود.این مطالعه نتیجه‌گیری می‌کند که اگرچه Goodreadsابزار مفیدی برای ردیابی پیشرفت خواندن و کشف کتاب‌های جدید برای خواندن است، تأثیر این پلتفرم بر انتخاب کتاب‌های خوانندگان برای کتاب‌های عربی محدود است. در دسترس نبودن کتاب‌های عربی در این پلتفرم، و همچنین تعداد محدود رتبه‌بندی و نقد برای این کتاب‌ها، ممکن است مانع از مفید بودن این پلتفرم برای خوانندگان ادبیات عرب شود.نتیجه گیریدر واقع،  Goodreads یک پلتفرم رسانه اجتماعی است که بر کتاب متمرکز شده است و به کاربران اجازه می‌دهد تجربیات خواندن خود را به اشتراک بگذارند، کتاب ها را مرور کنند و با سایر خوانندگان ارتباط برقرار کنند. این پلتفرم داده‌های زیادی را ارائه می‌دهد که می‌تواند برای به دست آوردن بینشی در مورد ترجیحات و رفتارهای خواندن در فرهنگ ها و مناطق مختلف تجزیه و تحلیل شود. همانطور که در مقالۀ اول و دوم مشاهده شد، Goodreads امکان تجزیه و تحلیل بین کشوری و بین منطقه‌ای ترجیحات خواندن را فراهم می‌کند. همچنین این پلتفرم بینش‌هایی را دربارۀ شباهت‌های فرهنگی بر اساس ترجیحات کتاب را ارائه می‌دهد. در مقاله‌های بعدی نیز رابطه بین استناد به کتاب دانشگاهی و نظر خوانندگان Goodreads، تشخیص الگو در ترجیحات جنسیت و ژانر خواننده و نویسنده، بررسی تاثیر چالش‌های گودریدز در مطالعۀ افراد، رابطۀ رتبه‌بندی‌های کتاب‌ها در گودریدز و فروش آن‌ها در آمازون، پیش‌بینی پیوند در شبکه‌های دوبخشی کتاب‌ها و آدم‌ها و توصیۀ کتاب، تاثیر خوشه‌بندی‌ کتاب‌ها برای توصیه در خواندن کتاب‌ها و ... بررسی شد. بنابراین طبق مطالعات انجام شده این مجموعه از تحلیل‌ها از شبکه‌های پیچیدۀ پویا می‌تواند باعث پیش‌بینی فروش یک کتاب در یک کشور یا منطقه یا در یک جنسیت یا سن خاص، تبلیغات موثرتر با در نظرگرفتن ژانر کتاب برای اشخاص یا تاثیر اینفلوئنسرهای حوزۀ کتاب، پیشنهاد کتاب‌های بهتر برای مطالعۀ هر فرد با توجه به علایق و تاریخچۀ مطالعۀ شخص و چندین و چند بینش و دانستۀ ارزشمند دیگر شود ?منابع:[1] Silva, M. O., Scofield, C., de Melo-Gomes, L., Botelho, J. E., Oliveira, G. P., Seufitelli, D. B., &amp; Moro, M. M. (2022). Brazilian Reading Preferences in Goodreads: Cross-state and Cross-region Analyses. iSys-Brazilian Journal of Information Systems, 15(1), 25-1.[2] Sabri, N., Sadeghian, S., &amp; Bahrak, B. (2020). A cross-country study on cultural similarities based on book preferences. Social Network Analysis and Mining, 10, 1-12.[3] Singson, M. (2021). Examining the relationship between academic book citations and Goodreads reader opinion and rating. Annals of Library and Information Studies (ALIS), 67(4), 215-221.[4] Thelwall, M. (2019). Reader and author gender and genre in Goodreads. Journal of Librarianship and Information Science, 51(2), 403-430.[5] Jafari, Y., Sabri, N., &amp; Bahrak, B. (2020). Investigating the effects of Goodreads challenges on individuals reading habits. arXiv preprint arXiv:2012.03932.[6] Maity, S. K., Panigrahi, A., &amp; Mukherjee, A. (2019). Analyzing social book reading behavior on goodreads and how it predicts amazon best sellers. Influence and Behavior Analysis in Social Networks and Social Media, 211-235.[7] PARKSEPP, L. SENTIMENT MINING IN GOODREADS REVIEWS OF CLASSIC AMERICAN NOVELS BA thesis.[8] Özge, K. A. R. T. (2021). Network Embedding For Link Prediction in Bipartite Networks. Avrupa Bilim ve Teknoloji Dergisi, (27), 311-317.[9] Isaacson, D., &amp; Sebastian, A. Book Recommendations on GoodReads. com.[10] Lin, E., Fang, S., &amp; Wang, J. (2013, March). Mining online book reviews for sentimental clustering. In 2013 27th International Conference on Advanced Information Networking and Applications Workshops (pp. 179-184). IEEE.[11] Alghamdi, A. M., &amp; Ihshaish, H. (2021). The use and impact of Goodreads rating and reviews, for readers of Arabic books. International Journal of Business Information Systems, 37(4), 442-466.</description>
                <category>نيلوفر وهناني</category>
                <author>نيلوفر وهناني</author>
                <pubDate>Sat, 08 Jul 2023 15:01:08 +0330</pubDate>
            </item>
                    <item>
                <title>علم شبکه(شبکه‌های پیچیدۀ (و مرموز!) امروزی)</title>
                <link>https://virgool.io/@nilofarvahnani/%D8%B9%D9%84%D9%85-%D8%B4%D8%A8%DA%A9%D9%87%D8%B4%D8%A8%DA%A9%D9%87-%D9%87%D8%A7%DB%8C-%D9%BE%DB%8C%DA%86%DB%8C%D8%AF%DB%80-%D9%88-%D9%85%D8%B1%D9%85%D9%88%D8%B2-%D8%A7%D9%85%D8%B1%D9%88%D8%B2%DB%8C-gfbcehg1gxw2</link>
                <description>علم شبکه و شبکه‌ پیچیده چیست؟دانش فناوری شبکه یک حوزۀ بین‌رشته‌ای است که در مورد ساختار، رفتار و پویایی شبکه‌های پیچیده تحقیق می‌کند. شبکۀ پیچیده به گروهی از عوامل به‌هم‌پیوسته اطلاق می‌شود که اغلب به‌صورت گره یا رئوس نمایش داده می‌شوند که می‌توانند از طریق لبه‌ها یا پیوندها به هم متصل شوند. این عوامل می‌توانند طیف وسیعی از موجودیت‌ها، ازجمله افراد، سازمان‌ها، صفحات وب، ژن‌ها یا حتی اصول انتزاعی را نشان دهند.شبکه‌های پیچیده با استفاده از نودهای توپولوژیکی غیر پیش‌پاافتادۀ خود مشخص می‌شوند که به‌طور منظم، سبک‌های اتصال و خوشه‌بندی را به نمایش می‌گذارند. هدف دانش فن‌آوری شبکه برای درک و تجزیه‌وتحلیل آن نودها برای استفاده از بینش در مورد دستگاه‌های دنیای واقعی متعدد، متشکل از شبکه‌های اجتماعی، شبکه‌های ارگانیک، شبکه‌های فناوری، شبکه‌های حمل‌ونقل و بسیاری دیگر است.در دانش فنی جامعه، محققان از مفهوم نمودار، تحلیل آماری و استراتژی‌های محاسباتی برای تجزیه‌وتحلیل شکل و پویایی شبکه‌های پیچیده استفاده می‌کنند. مفهوم گراف چارچوب ریاضی را برای نسخه سازی و بررسی شبکه‌ها فراهم می‌کند، حتی اگر تجزیه‌وتحلیل آماری به شناسایی الگوها و نودها در شبکه کمک کند. استراتژی‌های محاسباتی برای شبیه‌سازی و نگاهی به رفتار جامعه به کار گرفته می‌شوند که به محققان اجازه می‌دهد تا نتایج پیکربندی‌ها و پویایی‌های مختلف شبکه را کشف کنند.دانش فن‌آوری شبکه، ویژگی‌ها و پدیده‌های اجتماعی متعددی را بررسی می‌کند که شامل توزیع درجه، ضریب خوشه‌بندی، معیارهای مرکزیت، شکل شبکه و انعطاف‌پذیری است. این نودها می‌توانند بینش‌های حیاتی در مورد عملکرد شبکه، استحکام، موج اطلاعات، روش‌های انتشار و ظهور رفتار جمعی را زیر نظر بگیرند.علاوه بر این، علم جامعه از فرآیندهای مدل‌سازی مختلف برای شبیه‌سازی و درک شبکه‌های بین‌المللی واقعی استفاده می‌کند. برای مثال، مدل‌های نمودار تصادفی، یا همان مدل Erdos-Renyi، به بررسی ویژگی‌های شبکه‌های متصل تصادفی کمک می‌کنند. مدل‌های بدون مقیاس، ازجمله نسخه Barabasi-Albert، حضور هاب‌ها و توزیع قانون قدرت را که به‌طور منظم در شبکه‌های جهانی واقعی کشف می‌شود، به تصویر می‌کشند.کاربردهای علم شبکه و شبکه‌های پیچیده طیف وسیعی از رشته‌ها را دربرمی گیرد. آن‌ها برای تجزیه‌وتحلیل تعاملات اجتماعی، انتشار آمار در اینترنت، گسترش بیماری‌ها، دستگاه‌های حمل‌ونقل، ارتباط ذهنی، شبکه‌های زیست‌محیطی و بسیاری از ساختارهای پیچیده مختلف استفاده می‌شوند. با کشف ساختار و پویایی زیربنایی این شبکه‌ها، فناوری شبکه بینش‌های ارزشمندی را در مورد رفتار آن‌ها ارائه می‌دهد و به تصمیم‌گیری، بهینه‌سازی و توسعه ساختارهای کارآمدتر و انعطاف‌پذیرتر کمک می‌کند.به‌طور خلاصه، دانش فن‌آوری شبکه یک موضوع بین‌رشته‌ای است که به درک ساختار، رفتار و پویایی شبکه‌های پیچیده تبدیل می‌شود. شبکه‌های پیچیده مجموعه‌ای از عناصر به‌هم‌پیوسته هستند و مطالعه آن‌ها کشف الگوها را تسهیل می‌کند که بینش‌های درستی را در مورد طیف گسترده‌ای از ساختارهای دنیای واقعی ارائه می‌دهند. از طریق تئوری گراف، تجزیه‌وتحلیل آماری، و استراتژی‌های محاسباتی، دانشمندان ساختار شبکه‌ها و پویایی‌های شبکه را بررسی می‌کنند و آمار ارزشمندی را نشان می‌دهند.شبکه پیچیده که به عنوان سیستم شبکه پیچیده نیز شناخته می‌شود، شبکه‌ای است که از تعداد زیادی عناصر یا موجودیت‌های به هم پیوسته تشکیل شده است.یکی از مشخصه‌های تعیین کنندۀ شبکه‌های پیچیده، «پیچیدگی» یا بی اهمیت بودن آنهاست. این بدان معناست که ساختار و پویایی شبکه را نمی‌توان به راحتی با الگوهای ساده یا منظم توضیح داد. در عوض، شبکه‌های پیچیده اغلب ویژگی‌های نوظهوری را نشان می‌دهند که از تعاملات و وابستگی‌های متقابل اجزای آنها ناشی می‌شود.کاربردهای علم شبکهعلم شبکه دارای برنامه‌های متعددی در زمینه‌های متعدد است. در اینجا چند نمونۀ متمایز از شبکه‌های پیچیدۀ پویا را معرفی می‌کنیم: 1. شبکه‌های اجتماعی: دانش فناوری شبکه، بینش‌هایی را در مورد سیستم‌های اجتماعی، روابط و پویایی‌ها ارائه می‌دهد. درک نحوۀ انتشار اطلاعات از طریق شبکه‌های اجتماعی، نحوۀ شکل‌گیری روابط و نحوۀ ظهور گروه‌ها را قادر می‌سازد. تجزیه‌وتحلیل شبکه‌های اجتماعی در جامعه‌شناسی، مردم‌شناسی، بازاریابی و دانش فن‌آوری سیاسی برای نگاهی به تعاملات اجتماعی، تأثیرگذاری و همکاری استفاده می‌شود.2. اینترنت و شبکۀ جهانی وب: فناوری شبکه در دانش ساختار و پویایی اینترنت و وب جهانی بسیار مهم است. همچنین بررسی پیوندهای شبکه، جستجوی الگوریتم‌ها، انتشار حقایق و رفتار جوامع آنلاین را تسهیل می‌کند. این تخصص به توسعۀ موتورهای جستجوی بهینه مانند گوگل و یاهو، ساختارهای مشاوره و رفتار اجتماعی آنلاین اطلاعات کمک می‌کند.3. شبکه‌های بیولوژیکی: فناوری شبکه برای بررسی ساختارهای ارگانیک، شامل شبکه‌های تنظیم‌کنندۀ ژن، شبکه‌های تعامل پروتئین و شبکه‌های اتصال مغز انجام می‌شود. این فناوری به کشف سبک‌های تعامل، کشف اجزای کلیدی و درک حرکت با جریان اطلاعات در آن سیستم‌های پیچیده کمک می‌کند. این اطلاعات برای بیماری‌های مغزی، کشف دارو و مطالعات علوم اعصاب بسیار مهم است.4. شبکه‌های حمل‌ونقل: فناوری شبکه برای نسخه‌سازی و بهینه‌سازی ساختارهای حمل‌ونقل، که شامل شبکه‌های خیابانی، مسیرهای خطوط هوایی و سازه‌های حمل‌ونقل عمومی است، استفاده می‌شود. این به درک تنگناها، بهینه‌سازی بازدیدکنندگان با جریان و درک انعطاف‌پذیری کمک می‌کند و کارایی زیرساخت‌های حمل‌ونقل را بهبود می‌بخشد.5. شبکه‌های ارتباطی و اطلاعاتی: علم شبکه نقش مهمی در خواندن و بهبود شبکه‌های ارتباطی و اطلاعاتی دارد. این علم به چیدمان الگوریتم‌های مسیریابی بهینه، بهینه‌سازی پروتکل‌های شبکه و درک استحکام و امنیت دستگاه‌های ارتباطی کمک می‌کند. این درک در عصر مخابرات، شبکه‌های کامپیوتری و آمار کاربرد دارد.6. اپیدمیولوژی و گسترش بیماری: علم شبکه در دانش آشکار شدن بیماری‌ها و طراحی استراتژی‌های مؤثر برای دست‌کاری بیماری به کار می‌رود. با مدل‌سازی شبکه‌های تماس و سبک‌های خواندن تعاملات، محققان می‌توانند از گره‌های بحرانی آگاه شوند، سناریوهای آشکار شدن بیماری را شبیه‌سازی کنند و تکنیک‌های مداخلۀ متمرکز را گسترش دهند.7. شبکه‌های مالی: فناوری شبکه در مطالعۀ دستگاه‌های اقتصادی استفاده می‌شود که شامل بازارهای موجودی، شبکه‌های بانکی و شبکه‌های قیمت و بورس می‌شود. درک خطرات سیستمیک، نگاهی به پیامدهای سرایت و تشخیص به هم‌پیوستگی نهادهای اقتصادی را تسهیل می‌کند. این درک به مدیریت تهدید، بهینه‌سازی پورتفولیو و سیاست‌گذاری کمک می‌کند.8. شبکه‌های برق و شبکه‌های زیرساخت: دانش فن‌آوری شبکه برای تحقیق و بهینه‌سازی شبکه‌های زیرساخت، همراه با شبکه‌های برق، شبکه‌های توزیع آب و شبکه‌های حمل‌ونقل انجام می‌شود. این علم اجازه می‌دهد تا از آسیب‌پذیری‌ها آگاه شوید، تخصیص منابع مفید را بهینه کنید و ساختارهای زیرساختی قوی طراحی کنید.9. شبکه‌های اجتماعی آنلاین و دستگاه‌های توصیه‌گر: دانش فناوری شبکه به‌طور گسترده در مطالعه و مدل‌سازی شبکه‌های اجتماعی آنلاین مانند فیس‌بوک، توییتر و لینکدین استفاده می‌شود. این علم اجازه می‌دهد تا رفتار مصرف‌کننده، انتشار اطلاعات و تأثیر اجتماعی را درک کنیم. علاوه بر این، دانش فناوری شبکه در توسعۀ ساختارهای توصیه‌کننده استفاده می‌شود که محتوای شخصی، کالا یا پیشنهادات را کاملاً بر اساس تعاملات جامعه و انتخاب‌های افراد تأیید می‌کند.این‌ها تنها نمونه‌هایی از طیف وسیعی از کاربردها برای علم شبکه هستند. ابزارهای مناسب برای تحلیل شبکهابزارهای متعددی برای تجزیه‌وتحلیل شبکه وجود دارد که هرکدام نقاط قوت و ویژگی‌های شخصی خود را دارند. در اینجا چند ابزار معمولی مورداستفاده برای تجزیه‌وتحلیل شبکه آورده شده است:1.ابزار  NetworkX: NetworkX یک کتابخانۀ محبوب پایتون برای ارزیابی و مدل‌سازی شبکه است که مجموعۀ گسترده‌ای از تجهیزات و الگوریتم‌ها برای تجزیه‌وتحلیل ساختار و دینامیک شبکه‌ها را فراهم می‌کند. NetworkX به معرفی، دست‌کاری و تجسم شبکه‌های پیچیده، علاوه بر الگوریتم‌ها و معیارهای نمودار متنوع کمک می‌کند. همچنین به دلیل انعطاف‌پذیری و سادگی استفاده از آن به‌طور گسترده در دانشگاه و صنعت استفاده می‌شود.2. ابزار Gephi: Gephi یک ابزار تجسم و کاوش شبکۀ متن باز است. این‌ ابزار یک رابط کاربری خوب برای توسعه، دست‌کاری و تجسم شبکه‌ها را فراهم می‌کند. Gephi از طیف گسترده‌ای از وظایف ارزیابی شبکه، همراه با الگوریتم‌های قالب، فیلتر کردن، خوشه‌بندی و تشخیص شبکه پشتیبانی می‌کند. این ابزار  به‌طور خاص برای کاوش تعاملی و تجسم شبکه‌های بزرگ مفید است.3. ابزار Cytoscape: Cytoscape یک پلتفرم کارا برای تجسم و تجزیه‌وتحلیل شبکه‌های پیچیده است. این ابزار  رابط کاربری خوبی را برای افراد به وجود می‌آورد و از طیف گسترده‌ای از ارزیابی شبکه، مدل کردن شبکه، خوشه‌بندی، ارزیابی شبکه و یکپارچه‌سازی اطلاعات پشتیبانی می‌کند. Cytoscape همچنین ساختار پلاگینی را ارائه می‌دهد که به مشتریان اجازه می‌دهد توانایی‌های آن را با الگوریتم‌های اضافی افزایش دهند.4. ابزار Pajek: Pajek یک بستۀ نرم‌افزاری برای تحلیل و تجسم شبکه است. این ابزار به ارزیابی شبکه در مقیاس گسترده کمک می‌کند و الگوریتم‌های متعددی را برای خوشه‌بندی جامعه، معیارهای مرکزیت و تشخیص شبکه ارائه می‌دهد. Pajek جایگزین‌های تجسم پیشرفته را ارائه می‌دهد و امکان کاوش در خصوصیات شبکه را با جزئیات فراهم می‌کند.5. ابزار Igraph: igraph کتابخانه‌ای است که در چندین زبان برنامه‌نویسی موجود است که عبارت‌اند از Python و  R و C/C++. این ابزار مجموعۀ کاملی از تجهیزات را برای ارزیابی شبکه ارائه می‌دهد که شامل معرفی، دست‌کاری و ارزیابی گراف است. Igraph از الگوریتم‌های گراف متنوع، معیارهای مرکزیت، تشخیص جامعه و تجسم جامعه پشتیبانی می‌کند.6. ابزار GUESS: GUESS (سیستم کاوش نمودار) وسیله‌ای برای تجسم و کاوش شبکه‌ها است. این‌ ابزار یک رابط بصری جذاب ارائه می‌دهد و عملکردهایی را برای مدل کردن شبکه، خوشه‌بندی و فیلتر کردن ارائه می‌دهد. GUESS به‌ویژه برای اکتشاف و تجزیه‌وتحلیل تعاملی شبکه‌های کوچک تا متوسط مفید است.7. بستر تجزیه‌وتحلیل شبکه استنفورد (SNAP): اسنپ کتابخانه‌ای است که با استفاده از دانشگاه استنفورد برای ارزیابی شبکه در مقیاس گسترده ایجادشده است. اجرای کارآمدی از الگوریتم‌های شبکه متنوع را ارائه می‌دهد و از ایجاد، دست‌کاری و ارزیابی گراف پشتیبانی می‌کند. اسنپ عمدتاً برای مطالعه مناسب است.این ابزارها نقطۀ شروعی را برای تجزیه‌وتحلیل شبکه فراهم می‌کنند و انتخاب آن به نیازهای منحصربه‌فرد، انتخاب زبان برنامه‌نویسی و اندازه شبکۀ مورد تجزیه‌وتحلیل بستگی دارد. علاوه بر این، بسیاری از این ابزارها قابلیت همکاری را ارائه می‌کنند و می‌توانند به همراه هر یک از آن‌ها برای استفاده از قدرت و قابلیت‌های کاراکترشان استفاده شوند.کاربردهای نوین علم شبکه1. هوش مصنوعی و یادگیری ماشین: علم شبکه در طی سال‌های اخیر تعداد فزاینده‌ای ادغام شدن با تکنیک‌های هوش مصنوعی (AI) و ماشین لرنینگ (ML) داشته است. این قضیۀ به توسعۀ الگوریتم‌های مبتنی بر نمودار برای دستگاه‌های توصیه، پیش‌بینی لینک، طبقه‌بندی گره و تشخیص ناهنجاری کمک می‌کند. دانش فناوری شبکه همراه با هوش مصنوعی و ML  یک چارچوب قدرتمند برای شناسایی و استفاده از ساختار شبکه برای پی بردن به عملکردهای  آن است.2. مدیریت زنجیره تأمین: علم شبکه برای بهینه‌سازی و تجزیه‌وتحلیل شبکه‌های زنجیره تأمین انجام می‌شود. این به مدل‌سازی و درک شناور محصولات، اطلاعات و منابع در موجودیت‌های به‌هم‌پیوسته در یک زنجیرۀ تحویل کمک می‌کند. فناوری شبکه به شناسایی تنگناها، بهینه‌سازی مسیرهای لجستیکی و بهبود انعطاف‌پذیری و کارایی زنجیره کمک می‌کند.3. دستگاه‌های انرژی: علم شبکه نقش مهمی در مطالعه و بهینه‌سازی دستگاه‌های انرژی ایفا می‌کند. این قضیه به مدل‌سازی و تجزیه‌وتحلیل شبکه‌های انرژی پیچیده، شامل شبکه‌های قدرت، ادغام انرژی تجدید پذیر و شبکه‌های هوشمند کمک می‌کند. علم شبکه به شناسایی آسیب‌پذیری‌ها، بهینه‌سازی توزیع انرژی و طراحی سازه‌های کارآمد کمک می‌کند.4.تحرک شهری و حمل‌ونقل: دانش فناوری شبکه برای بررسی الگوهای تحرک شهری و بهینه‌سازی دستگاه‌های حمل‌ونقل استفاده می‌شود. این قضیه به تجزیه‌وتحلیل حرکت افراد و وسایل نقلیه در شهرها، کشف نقاط ازدحام بازدیدکنندگان سایت و طراحی شبکه‌های حمل‌ونقل عمومی بهینه کمک می‌کند. دانش شبکه همچنین به تأثیر دانش جایگزین‌های جدید جابجایی ازجمله پیشنهادهای اشتراک سفر کمک می‌کند.5. شبکه‌های زیست‌محیطی: علم شبکه برای نگاهی به دستگاه‌های اکولوژیکی، شبکه‌های غذایی و شبکه‌های زیست‌محیطی پیاده‌سازی شده است. تجزیه و تحلیل این شبکه‌ها اجازه می‌دهد تا تعاملات گونه‌ها را شناسایی کنید، گسترش گونه‌های مهاجم را بررسی کنید، و انعطاف‌پذیری اکوسیستم‌ها را در برابر اختلالات مدل کنید. فناوری شبکه علاوه بر این به توسعه تکنیک‌های حفاظت و ارزیابی تأثیر تغییرات محیطی کمک می‌کند.6. مراقبت‌های بهداشتی و پزشکی: فناوری شبکه در مراقبت‌های بهداشتی و درمان دقیق برای بررسی شبکه‌های ارگانیک، همراه با شبکه‌های تنظیم‌کننده ژن و شبکه‌های تعامل پروتئین استفاده می‌شود. درک مکانیسم‌های بیماری، شناسایی اهداف دارویی توانایی و طراحی تکنیک‌های درمانی سفارشی‌شده را امکان‌پذیر می‌سازد. علم شبکه علاوه بر این به خواندن حقایق افراد آسیب‌دیده برای افزایش تشخیص، انتظار نتایج بیماری و بهینه‌سازی شبکه‌های حمل‌ونقل بهداشتی کمک می‌کند.7. ارزیابی ریسک مالی: فناوری شبکه برای ارزیابی و دست‌کاری خطرات پولی به کار می‌رود. امکان تجزیه‌وتحلیل ارتباطات بین مؤسسات اقتصادی، مدل‌سازی ریسک‌های سیستمی و کشف مسیرهای سرایت در برخی از مراحل بحران‌های مالی را فراهم می‌کند. دانش فن‌آوری شبکه علاوه بر این به طراحی استراتژی‌های کاهش خطر و افزایش تعادل مالی کمک می‌کند.8. تأثیر اجتماعی و مدل‌سازی رفتاری: فناوری شبکه برای نگاهی به پویایی عاطفه و احساسات اجتماعی و مدل‌سازی رفتارهای زن یا مرد استفاده می‌شود. این اجازه می‌دهد تا بررسی کنید که چگونه نقدها، رفتارها و سوابق در داخل شبکه‌های اجتماعی منتشر می‌شوند. فناوری شبکه به اطلاعات مکانیسم‌های انتشار یا سرایت اجتماعی، پیش‌بینی تحولات و طراحی مداخلات هدفمند برای تبادل رفتار کمک می‌کند.این‌ها تنها نمونه‌هایی از کاربردهای روزافزون فناوری شبکه هستند. همان‌طور که دانش ما در مورد ساختارهای پیچیده رشد می‌کند، فناوری شبکه برای یافتن بسته‌های جدید و انقلابی در زمینه‌های متعدد، پیشرفت‌ها و بینش‌های مختلف را در رشته‌های مختلف حفظ می‌کند.کاربردهای هوش مصنوعی در علم شبکهتکنیک‌های هوش مصنوعی (AI) به‌طور فزاینده‌ای در دانش فن‌آوری جامعه برای تجزیه و تحلیل، مدل‌سازی و استخراج اطلاعات از شبکه‌های پیچیده استفاده می‌شوند. در اینجا برخی از کاربردهای کلیدی هوش مصنوعی در علوم اجتماعی آورده شده است:1. بازنمایی یا مدل‌سازی شبکه: تکنیک‌های هوش مصنوعی، عمدتاً برای کسب دانش عمیق و مطالعۀ نمایش‌های مهم گره‌ها و لبه‌های شبکه استفاده می‌شوند. از طریق استراتژی‌های متشکل از شبکه‌های عصبی گراف (GNN) و تکنیک‌های هوش مصنوعی می‌توانند آمارهای ساختاری و رابطه‌ای گره‌ها و لبه‌ها را ثبت کنند و امکان تجزیه و تحلیل و پیش‌بینی انجمن بسیار قدرتمند را فراهم کنند.2. پیش‌بینی پیوند: استراتژی‌های هوش مصنوعی برای پیش بینی لینک‌های گمشده یا لینک‌های آینده در یک شبکه اعمال می‌شوند. با استفاده از شکل و الگوهای شبکه، الگوریتم‌های یادگیری سیستم می‌تواند شانس اتصال بین گره‌ها را تخمین بزند. مدل‌های پیش‌بینی پیوند ممکن است در حوزه‌های مختلف، همراه با شبکه‌های اجتماعی، ساختارهای توصیه‌کننده و فیلترهای مشارکتی ارزشمند باشند.3. تشخیص ناهنجاری: الگوریتم‌های هوش مصنوعی می‌توانند گره‌ها یا لبه‌های غیرعادی را در یک جامعه درک کنند و به تشخیص رفتار مشکوک یا غیر معمول کمک کنند. تکنیک‌های یادگیری ماشین ممکن است برای درک سبک‌های رفتار معمولی شبکه و انحرافات که حاکی از تهدیدات، تقلب یا اشتباه هستند، آموزش ببینند.4. تشخیص جامعه: روش‌های هوش مصنوعی برای یافتن جوامع یا خوشه‌ها در شبکه‌ها استفاده می‌شوند. یادگیری ماشین با الگوریتم‌ها می‌تواند توپولوژی جامعه، سبک‌های اتصال و سایر ویژگی‌ها را برای کشف گروه‌های گره‌هایی با نقش‌های مفید مشابه تجزیه‌وتحلیل کند. تشخیص جامعه به شکل‌دهی جامعه اطلاعاتی، شناسایی زیرگروه‌های منسجم و آشکار کردن روابط پنهان کمک می‌کند.5. مدل‌های مولد شبکه: استراتژی‌های هوش مصنوعی، همراه با شبکه‌های مولد متخاصم (GAN) و رمزگذارهای خودکار متغیر (VAE)، می‌توانند شبکه‌های مصنوعی شبیه شبکه‌های دنیای واقعی ایجاد کنند. این مدل‌ها نودهای آماری و ویژگی‌های ساختاری شبکه‌های واقع‌شده را تصاحب می‌کنند و شبکه‌های مصنوعی معقول را برای کاربردهای متنوع، که شامل بررسی الگوریتم‌ها یا شبیه‌سازی احتمالات است، امکان‌پذیر می‌سازند.6. هم ترازی شبکه: الگوریتم‌های هوش مصنوعی برای تراز یا سالم سازی گره‌ها در بیش از یک شبکه استفاده می‌شوند. هدف هم‌ترازی شبکه یافتن گره‌های مربوطه در شبکه‌های منحصربه‌فرد است، حتی زمانی که شبکه‌ها اندازه‌ها یا ساختارهای منحصربه‌فردی دارند. این تکنیک به تجزیه‌وتحلیل جامعه و یکپارچه‌سازی اطلاعات کمک می‌کند.7. بهینه‌سازی شبکه: استراتژی‌های هوش مصنوعی برای بهینه‌سازی وظایف مختلف مرتبط با جامعه، همراه با مسیریابی شبکه، تخصیص منابع و طراحی جامعه به کار گرفته می‌شوند. دانش به دست آورده از الگوریتم‌ها می‌تواند از داده‌های شبکه برای بهینه‌سازی پارامترهای جامعه، بهبود عملکرد و کاهش تأخیر تحقیق کند.8. مدل‌سازی شبکه: تکنیک‌های هوش مصنوعی می‌توانند مدل‌سازی جامعه را با کمک مرتب کردن منظم و ارائه  شبکۀ پیچیده به روشی بصری جذاب و آموزنده تجسم کنند. الگوریتم‌های یادگیری ماشین می‌توانند قرار دادن گره، مسیریابی بخش و نقشه‌برداری رنگ را بهینه‌سازی کنند تا الگوهای مهم شبکه را نشان دهند و کاوش حقایق را تسهیل کنند.9. دستگاه‌های توصیه‌گر مبتنی بر شبکه: الگوریتم‌های هوش مصنوعی از آمار شبکه برای بهبود ساختارهای توصیه‌گر استفاده می‌کنند. با فکر کردن در مورد ارتباطات اجتماعی یا روابط مشترک بین کاربران، مدل‌های یادگیری ماشین می‌توانند نکات سفارشی‌سازی شده‌ای را ارائه دهند که ساختار جامعه و تعاملات مصرف‌کننده را تقویت می‌کند.این کاربردها نشان می‌دهند که چگونه تکنیک‌های هوش مصنوعی علم شبکه را با کمک استفاده از قدرت شناخت ماشین و الگوریتم‌های مطالعه عمیق برای کشف سبک‌های پنهان، انتظار رفتار شبکه، بهینه‌سازی عملکرد شبکه و امکان تحلیل پیچیده‌تر شبکه‌های پیچیده را تقویت می‌کنند.چند کاربرد خاصبرای مثال در شبکه‌های اجتماعی نظیر اینستاگرام، پیشنهاد برای دنبال کردن اشخاص یا حتی پست‌های پیشنهادی در اکسپلور، پیشنهادهای خرید در دیجی کالا و یا اسنپ فود، پیش بینی احداث یک خیابان یا پل یا اتوبان در یک شهر و .... می‌توانند از کاربردهای خاص و قابل لمس تجزیه و تحلیل شبکه‌های پیچیدۀ پویا باشند!</description>
                <category>نيلوفر وهناني</category>
                <author>نيلوفر وهناني</author>
                <pubDate>Sun, 21 May 2023 11:04:11 +0330</pubDate>
            </item>
                    <item>
                <title>ارزیابی معماری نرم‌افزار و مدل‌های بلوغ معماری فنی نرم‌افزار</title>
                <link>https://virgool.io/@nilofarvahnani/%D8%A7%D8%B1%D8%B2%DB%8C%D8%A7%D8%A8%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-%D9%88-%D9%85%D8%AF%D9%84-%D9%87%D8%A7%DB%8C-%D8%A8%D9%84%D9%88%D8%BA-%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C-%D9%81%D9%86%DB%8C-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-t8m0b1dhqyhp</link>
                <description>معماری نرم‌افزار چیست؟معماری نرم افزار یک برنامه، یک ساختار یا ساختارهایی از سیستم است که شامل عناصر نرم افزار و مشخصات خارجی قابل رویت آن عناصر و ارتباط بین آنها می‌باشد. معماری نرم افزار اصطلاحا یک 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 یک اندازه‌گیری کیفی مشخصی از ویژگی‌های معماری تجزیه و تحلیل شده وجود ندارد.SAAMروش ارزیابی SAAM قابلیت تشخیص نقاط ضعف و قوت یك معماری را دارد . تأکید این روش بر روی قابلیت اصلاح پذیری است به گونه‌ای که این روش به راحتی می‌تواند نقاطی از معماری نرم افزار سیستم مورد نظر را که نیازمندی قابلیت اصلاح پذیری را برآورده نساخته، مشخص نماید و یا اگر چند معماری متفاوت از سیستم وجود دارد که عملکرد یکسانی دارند، این روش می تواند از جنبه قابلیت اصلاح پذیری آنها را مقایسه کند و به صورت نسبی آنها را رتبه بندی نماید .البته این روش می تواند ارزیابی سریعی بر روی صفات کیفیتی مختلفی از جمله ، قابلیت اصلاح پذیری، قابلیت حمل و جابجایی، قابلیت گسترش، قابلیت نگهداری،قابلیت تجمیع، قابلیت اطمینان هم داشته باشد، ولی اساس ارزیابی این روش بر پایة قابلیت اصلاح پذیری است .این روش ارزیابی پس از طراحی معماری بدون جزئیات، می تواند وارد عمل شود.به صورت کلی:اولین روش ارزیابی معماری نرم افزار مبتنی برسناریو است.به منظور ارزیابی بعضی از صفات کیفیتی معماری مانند، قابلیت اصلاح پذیری، قابلیت نگهداری، قابلیت اطمینان و .. ایجاد گردیده است.تأکید این روش بر روی قابلیت اصلاح پذیری است.این روش به راحتی می تواند نقاط قوت و ضعف از جانب اصلاح پذیری را مشخص کند.البته از سمت ویژگی‌های کیفی دیگر نیز می‌تواند با کیفیت کمتر نقاط قوت و ضعف را نشان دهد.مناسب ترین زمان برای اعمال SAAM، بعد از طراحی SA سطح بالا و قبل از اجراست. ATAM (Architecture based Tradeoff Analysis Method):این روش مکانیزمی به نام درخت ابزار را برای استخراج ملزومات کیفی به روشنی، پیشنهاد می‌کند. درخت ابزار با &#x27;&#x27;ابزار&#x27;&#x27; به عنوان گره ریشه آغاز می‌شود. ابزار یک بیان کلی &#x27;&#x27;خوب&#x27;&#x27;  از یک سیستم است. به طور معمول، عملکرد، اصلاح، امنیت، قابلیت استفاده و در دسترس بودن فرزندان ابزار هستند، اما شرکت کنندگان برای نام‌گذاری خود آزاد هستند. در سطح بعدی، کیفیت به توضیحات بیشتر مبتنی بر نگرانی‌های ذی نفعان تصحیح می‌شود. پالایش و پخش ادامه می‌یابد تا زمانی که سناریوهای کیفی که برگ‌های درخت ابزار هستند، ظاهر شوند. ATAM نقاط حساسیت، معاوضه، خطر و بدون خطر را با اولویت‌بندی و تجزیه و تحلیل سناریوهای کیفی شناسایی می‌کند سپس تصمیم‌گیری‌های معماری برای حمایت از هر نقطه ساخته می‌شوند.روش ATAM به صورت کاملاً جدا از روش SAAM و روش‌های مبتنی بر آن، توسعه یافت و هدف از آن تحلیل صفات کیفیتی خاص بر اساس معماری بود. ATAM بر روی جنبه های کیفیتی معماری با جزئیات بیشتر بحث می‌کند و در عمل نسخۀ تقویت شده‌ا‌ی از SAAM می باشد.  ATAM به عنوان یك مدل مارپیچی از طراحی در سال1991 مطرح شد و در سال 1999 مدل مارپیچی تحلیل و طراحی که تکامل فعلی و میزان پیشرفت را شرح می داد، مطرح گردید .در واقع ATAM  یك روش مبتنی بر سناریو برای ارزیابی صفات کیفیتی مانند : قابلیت اصلاح پذیری، قابلیت حمل، قابلیت توسعه، و قابلیت تجمیع می باشد. این روش چگونگی ارضاء شدن اهداف کیفیتی ویژه توسط معماری نرم‌افزار را تحلیل می‌کند. این روش، یك فرآیند تکرارپذیر می‌باشد .این روش نیز بر اساس روش SAAM است و بیشتر تمرکز آن بر روي چهار فاکتور کیفی، تغییرپذیری، کارایی، دسترس پذیری و امنیت است. در این روش با توجه به چهار فاکتور کیفی فوق، سناریوهایی ارائه شده است. افرادي که تجربه کمتري دارند تمایل بیشتري به این روش دارند، زیرا سناریوها در این روش از قبل نوشته شده است.یکی از مسائلی که روش ATAM به آن پرداخته تحلیل مدل مصالحۀ سناریوها با یکدیگر است.موضوعات مطروحه در این تحلیل عبارتند از اولویت بندي سناریوها، تشخیص تناقض سناریوها و نمره دادن به هر یک از سناریوها.از روش ATAM می توان در خط تولید نرم افزار (SPL) نیز بهره جست تا بتوان ریسک هاي بالقوه موجود در معماري مربوطه را کشف کرد.به صورت کلی:هدف آن تحلیل صفات کیفیتی خاص بر اساس معماری است.در عمل نسخۀ تقویت شده‌ای(پیشرفته) از SAAM  می باشد و بیشتر از SAAM به جزئیات می‌پردازد.در واقع ATAM  یك روش مبتنی بر سناریو است که همزمان چندین ویژگی کیفی را در نظر می‌گیرد.یک فرآیند تکرارپذیر می باشد.این روش برای حفظ تعادل بین ویژگی‌های کیفی ارائه شده است.یک روش خوب و تثبیت شده است.ALMA (Architecture-Level Modifiability Analysis):خب ALMA  یک روش تجزیه و تحلیل مبتنی بر سناریو برای ارزیابی اصلاح پذیری معماری نرم‌افزار با نگهداری، پیش‌بینی هزینه و ارزیابی ریسک ارائه شده است. ALMA  از تغییر سناریوی ارائه شده توسط ذی نفعان سیستم استفاده می‌کند. تجزیه و تحلیل اصلاح با تعریف مجموعه‌ای از سناریوها که ممکن است در طول تکامل سیستم رخ دهد شروع می‌شود. سناریوها به منظور بررسی اینکه چگونه به خوبی معماری فعلی را پشتیبانی کنند و یا ممکن است تغییرات آینده را در خود جای دهند مورد استفاده قرار می‌گیرند.این روش میزان تغییرپذیري معماري را بررسی می‌کند و در انتها یا معماري نرم افزار بهبود می یابد و یا معماري مجدد انجام می شود. همچنین در این روش یک معماري موجود در ابتداي کار وجود دارد که آن را توسط روش SAAM  ارزیابی می‌کنند. سپس مشکلات معماري مشخص شده و سناریوهاي تغییر (یك سناریوی تغییر برای یك سیستم، یك رویداد ویژه ای را شرح می دهد که به واسطة اتفاق افتادن این رویداد در چرخة حیات آن سیستم، سیستم نیازمند اصلاح شود ) مشخص می شود. سپس ارزیابی تغییرات انجام داده می شود و در انتها نتیجه‌گیري می شود ،آیا معماري قابل اصلاح هست یا خیر و زمان و هزینه براي این اصلاح نرمال است یا خیر.بنابراینALMA  یك روش ارزیابی مبتنی بر سناریو می باشد که برای ارزیابی صفات کیفیتی نرم افزار که روی قابلیت اصلاح پذیری متمرکز است، ایجاد شده است.ALMAبه صورت کلی:این روش ابتدا فقط برای سیستم‌های اطلاعاتی کاری توسعه داده شد.کاهش میزان هزینه، تلاش و وقت لازم برای اعمال تغییرات در سیستم با مشخص کردن سناریوهای تغییر بر روی معماری سیستم. (شناسایی انواع تغییراتی که SA برای آنها انعطاف ناپذیر است)این روش ویژگی‌های تغییرپذیری را با استفاده از شاخص‌هایی مانند ارزیابی ریسک و پیش بینی هزینۀ نگهداری و اعمال تغییرات ارزیابی می‌کند.این روش، چارچوبی برای توصیف نتایج کمی ایجاد می کند.کاربردها: مهندسی مجدد سیستم‌های قدیمی، ارتباطات راه دور، سیستم‌های اطلاعاتی، سیستم‌های تعبیه شده و حوزه‌های پزشکی. SBAR (Scenario-Based Architecture Reengineering) :یك خصوصیت برجسته این روش آن است که برای ارزیابی معماری سیستم موجود، خود سیستم می تواند استفاده شود . فرآیند ارزیابی می تواند به روش کامل یا آماری انجام شود.SBAR  به عنوان روشی برای اندازه گیری سیستم نرم افزاری شناخته شده است.(مهندسی مجدد معماری). در فرآیند ارزیابی کامل، مجموعه ای از سناریوها تعریف و با هم ترکیب می شوند.به صورت کلی:در فرآیند ارزیابی آماری، تعریف کردن مجموعه ای از سناریوها است که یك نمونه ساده بدون همه موارد را می سازد.همچنین SABR طراحی مجدد معماری را برای ویژگی های قابلیت اطمینان و کیفیت عملکرد هدایت می کند.هدف اصلی این روش معرفی یک فرآیند تکراری ارزیابی کیفیت و تحول معماری است.همچنین SBAR از چندین ویژگی کیفیت مانند  ATAM پشتیبانی می کند اما با  ATAM تفاوت دارد که از تکنیک های مختلفی برای ارزیابی استفاده می کند.کاربردها: سیستم اعلام حریق، سیستم اندازه گیری و سیستم دیالیزاستفاده شده است.SBARFAAM (Family-Architecture Assessment Method):خب FAAM  یك روش برای ارزیابی معماری خانواده‌ای از سیستم‌های اطلاعاتی است که روی دو صفت کیفیتی قابلیت توسعه و قابلیت تعامل پذیری متمرکز می شود . هدف این روش برقرار کردن فرآیندی برای ارزیابی خانواده معماری‌های سیستم‌های اطلاعاتی می‌باشد که توسط خطوط راهنما، متریک‌ها، توصیه ها و فرآیندها پشتیبانی می شود.  FAAM  تجربیات SAAM و با اضافه نمودن یك دید خانوادگی و تکنیک‌های پیشرفته، جهت تسهیل ارزیابی ایجاد شده است.  همچنین FAAM  تنها برای ارزیابی تعامل پذیری و قابلیت توسعه سیستم‌های یك خانواده توسعه داده شده است.براي نمونه این روش می‌تواند براي خانواده‌اي از سیستم‌هاي مالی، سیستم‌هاي منابع انسانی، سیستم‌هاي محاسباتی، سیستم‌هاي مدیریت بیمارستانی و .. مورد استفاده قرار گیرد.در این روش تکلیف مسئول ارزیابی مشخص است که باید اقدام به ارزیابی چه سناریوهایی کند. بدین ترتیب در این روش نیازي به جلسات طوفان فکري بین اعضاي تیم ارزیابی نیست، زیرا سناریوهاي مربوطه از قبل تعیین و بر روي آنها تفکر شده است.CBAM (Cost-Benefit Analysis Method):خب CBAM  زمانی شروع به کار می‌کند که روش ATAM کنار گذاشته شده است، یعنی پس از اینکه معماری توسط روش ATAM  ارزیابی شد، این روش شروع می‌شود و از محصولاتی که توسط ATAM به عنوان خروجی تولید شده است، استفاده می نماید.  CBAM  پلی بین دو موضوع تولید و توسعة نرم افزار و اقتصاد سازمان در طول فرآیند معماری را ایجاد می نماید. این روش هزینه‌ها و سودها را به صفات کیفیتی اضافه می‌‌نماید که در بیشتر اوقات نیاز به مصالحه بین این صفات و صفات دیگر وجود دارد.روش‌های قبلی مانند SAAM و ATAM صفات کیفیتی مانند قابلیت اصلاح پذیری، قابلیت استفاده، کارایی و غیره را در نظر می گرفتند و بر اساس آنها تصمیمات معماری مورد نیاز را اتخاذ می کردند اما CBAM مدعی است که عواملی مانند هزینه ها، سودها و ریسک‌ها نیز باید به عنوان صفات کیفیتی در نظر گرفته شوند، چرا که آنها در تصمیمات معماری تاثیر به سزایی می‌گذارند.در این روش هزینه به عنوان یک خصوصیت کیفی درنظر گرفته می‌شود و تصمیمات معماري را در حوزه هاي استقرار و پیاده سازي گرفته می‌شود و اثرات آن هزینه را در نظر می گیرد.هر خصوصیت کیفی که برای ما یک مزیت به وجود بیاورد باید به این سوال پاسخ دهیم که در مقابل این مزیت، چقدر هزینه کرده ایم؟ ابتدا سود حاصل از آن را از نظر ریالی و اجتماعی برآورد می کنیم، سپس محاسبه مطلوبیت را انجام می دهیم و در انتها مشخص می‌شود که تصمیم معماري شما آیا توجیه دارد یا خیر؟به صورت کلی:همچنین CBAM دو حوزه (فرایند معماری و اقتصاد) را در توسعه نرم افزار سازمان به هم متصل می کند.و CBAM هزینه ها را به عنوان عناصر کیفی محاسبه می کند، که هنگام برنامه ریزی یک سیستم نرم افزاری باید مراقب آنها بود.(CBAM ادعا می کند که هزینه ها، سودها و امکانات ویژگی های کیفیت ضروری هستند.)عدم قطعیت مربوط به تخمین ها را صراحتا بیان می کند.رویکرد آن آنالیز مزایای مربوط به استراتژی های مختلف معماری، ارزیابی کیفیت، و محاسبه مطلوبیت با توجه به هزینه و عامل زمان است.بررسی کلی و مقایسۀ مختصر روش‌های مبتنی بر سناریو:در روش SAAM مهم‌ترین پارامتری که مورد ارزیابی قرار می‌گیرد قابلیت اصلاح پذیری بوده و از مزایای این روش قابل استفاده بودن برای هر نوع معماری است و از معایب این روش نیز نداشتن تکنیک‌هایی برای انجام مراحل و متریک‌های مشخص است.در روش ATAM مهم‌ترین پارامتری که مورد ارزیابی قرار می‌گیرد قابلیت اصلاح پذیری و قابلیت حمل و قابلیت تجمیع پذیری بوده و از مزایای این روش قابل استفاده برای صفات پویا و ثابت، تولید سناریوها بر اساس نیازمندی‌ها، ایجاد درخت سودمندی است و از معایب این روش نیز نیاز به داشتن تکنیک‌های مفصلی از دانش و همچنین وابستگی به فرهنگ و تجربه ذی نفعان است. در روش CBAM مهم‌ترین پارامتری که مورد ارزیابی قرار می‌گیرد، هزینه ها، سودها، و زمانبندی بوده و از مزایای این روش تعیین میزان برگشت سرمایه در ایجاد تغییرات است و از معایب این روش نیزاین است که بطور مستقل بکار نمی رود و وابسته به روش دیگر است. در روش ALMAمهم‌ترین پارامتری که مورد ارزیابی قرار می‌گیرد قابلیت اصلاح پذیری بوده و از مزایای این روش مشخص نمودن شرایط توقف تولد سناریو و مشخص کردن تکنیکهای تکرار مراحل است و از معایب این روش نیز کامل نبودن ارزیابی ریسك و نبود تصمیم گیری در مورد درستی نتایج و تمرکز روی صفات ایستا است. در روش FAAM مهم‌ترین پارامتری که مورد ارزیابی قرار می‌گیرد تعامل پذیری و قابلیت گسترش بوده و از مزایای این روش داشتن تکنیک‌هایی برای تقویت تیم ارزیابی است و از معایب این روش نیز تمرکز روی صفات ایستا و به کار رفتن در محیط‌های خاص است. همچنین در روش SBAR پارامترهای متنوعی مورد ارزیابی قرار می‌گیرد و از مزایای این روش همکاری در طراحی معماری و ارزیابی بر مبنای سناریو است و از معایب این روش نیز نیاز به دانش و تخصص است.مقایسه روش‌هامدل‌های بلوغ نرم افزارامروزه استفاده از ایده بلوغ در حال افزایش است و در راستای ترسیم مسیریمنطقی جهت خدمات ی سازمان، به کار گرفته می‌شود. همانطور که می‌دانیم پیچیدگی زیادی در حیطۀ نرم افزار و در بخش اجرا و تکمیل موفقیت آمیز پروژه‌ها وجود دارد.هدف از مدل‌های بلوغ ارائه شده این است که چارچوبی را فراهم نمایند، تا به سازمان‌ها کمک کنند درجۀ فعلی تکامل خود را ارزیابی کنند و در کنار آن با طی مسیر مشخص شده در این مدل‌ها به تعالی بیشتر دست یابند و بتوانند پروژه‌های خود را بهتر و موثرتر مدیریت کرده و به نتیجه برسانند.به صورت کلی:مدل بلوغ ابزاری است که کسب‌وکارها و تیم‌های توسعه نرم‌افزار از آن برای سنجش میزان پیشرفت کسب‌وکار یا پروژه‌شان و میزان توانایی آنها برای بهبود مستمر استفاده می‌کنند.مدل بلوغ معماری، نشان‌دهنده بلوغ سازمان در حوزۀ مربوطه و شیوه‌هایی است که سازمان باید روی آنها تمرکز کند تا بیشترین پیشرفت و بالاترین بازگشت سرمایه را مشاهده کند.مدل های بلوغ می توانند داده های کیفی را برای تعیین مسیر و عملکرد بلندمدت شرکت ارزیابی کنند.مدل‌های بلوغ سطوح مختلف اثربخشی را تعریف می‌کنند و می‌توانند موقعیت فعلی یک فرد، تیم، پروژه یا شرکت را در مدل مشخص کنند.مدل‌ها خود ناکارآمدی‌ها را برطرف نمی‌کنند، می‌توانند حوزه‌هایی را که سازمان‌ها در آن‌ها استاندارد عمل نمی‌کنند شناسایی کنند و به آن‌ها اجازه دهند تا استراتژی‌هایی را تعیین کنند که می‌تواند عملیات و فرآیندهای آنها را بهبود بخشد.این مدل بلوغ می‌تواند توسط خود سازمان طراحی شود یا می‌توان از مدل‌های بلوغ معروف و آماده برای سازمان استفاده کرد.انواع مختلفی از مدل‌های بلوغ وجود دارد. موردی که برای استفاده انتخاب می کنید ممکن است به صنعت شما یا آنچه که شما نیاز دارید ارزیابی کنید، بستگی داشته باشد، در ادامه انواع آن را بررسی می‌کنیم: Capability Maturity Model Integration(CMMI) :یکپارچه‌سازی مدل بلوغ توانایی (Capability Maturity Model Integration) مدل فرآیندی است برای تعریف و ترویج رفتارهای سازمانی که منجر به بهبود کارایی می‌گردد. CMMI یک شیوۀ بهبود فرایندی است که با عناصر اصلی فرایندهای موثر سازمان یافته است. در مدل CMMI سازمان‌ها این قابلیت را دارند که زمان سیکل های روند توسعه را کاهش داده و امکان پیش‌گویی میزان کارایی حاصل از هر عملیات و همچنین امکان سازگاری محصولات با نظر کاربران نهایی را برآورده سازند.مدل بلوغ قابلیت CMMI، با بکارگیری دانش و تجارب در مدیریت فرایندها و با تکبه بر این اصل که &quot;کیفیت سیستم یا محصول شدیدا متاثر از فرایندی است که در توسعه و نگهداشت آن به کار رفته است&quot;، ایجاد شده است. مدل CMMI علاوه بر بهبود، برای ارزیابی و مقایسۀ سازمان‌ها نیز به کار می‌رود.مدل CMMI در دانشکده مهندسی نرم‌افزار دانشگاه Carnegie Mellon با پشتوانه دولت، سازمان‌های نظامی، صنایع و مراکز علمی ایجاد شد. در حال حاضر توسط انیستیتو CMMI که بخشی از دانشگاه Carnegie Mellon است، اداره می‌شود.همچنین CMMI   تلاش می‌کند عملکرد سازمان‌ها را با بیان آنچه برای ارائه محصولات و خدمات بهتر لازم است، بهبود بخشد. باید دقت داشت که CMMI فراتر از یک مدل فرآیندی است و علاوه بر آن یک مدل رفتاری نیز هست. کسب و کارها می‌توانند از این مدل برای تدوین معیارهای ارزیابی قابل اندازه‌گیری در راستای بهبود کارایی استفاده کنند. علاوه بر آن،CMMI می‌تواند ساختاری برای افزایش بهره‌وری رفتار در کل سازمان ایجاد کند.مدل CMMI بلوغ سازمان‌ها را در ۵ سطح تعریف می‌کند. سازمان‌هایی که این مدل را می‌پذیرند هدف‌شان افزایش سطوح بلوغ سازمان است. قابل ذکر است با رسیدن به سطح ۵یعنی “Optimizing”، نباید این مدل را کنار گذاشت. در این مرحله سازمان‌ها باید روی بهبود منظم متمرکز باشند.۵ سطح بلوغ به شرح زیر است:سطح ابتدایی یا شروع(Initial): در این سطح برنامه‌ریزی و کارایی فرایندها، دچار هرج و مرج است، خواسته‌ها اشتباه فهمیده می‌شود و هزینه و زمان را نمی‌توانند درست پیش بینی کنند. همچنین در این سطح فرآیندها به صورت واکنشی هستند. معمولا کارها دیرتر از زمان مقرر و با هزینه‌ی بیشتر از بودجه مقرر انجام می‌شوند. در سطح  Initial، فضای سازمان غیرقابل پیش‌بینی است و ریسک‌ها و ناکارآمدی افزایش می‌یابد.سطح مدیریت(Managed): در این سطح اقدامات اولیه مدیریت پروژه صورت می‌گیرد. پروژه‌ها برنامه‌ریزی، اجرا، ارزیابی و کنترل می‌شوند اما همچنان مشکلات زیادی وجود دارد.همچنین در این سطح خواسته‌ها      پیگیری شده و از حالت اشتباه بودن درآمدند، برنامه‌ریزی را توانستند کنترل کنند، هر کسی روش خودش را دارد و روشی که همه استفاده کنند وجود ندارد و به صورت رسمی نیست.سطح تعریف شده(Defined): در این سطح، تمام فرایندهای مدیریتی و مهندسی، در سطح سازمان تعریف شده و به صورت یکنواخت، بکار گرفته می‌شوند، خواسته‌ها ثبت و پیگیری می‌َشود و تا جایی می‌رود که پیاده سازی شود، هزینه و زمان هم قابل قبول است. در این سطح سازمان‌ها به جای رفتار واکنشی بیشتر به سمت پیش‌بینی و برنامه‌ریزی حرکت می‌کنند. مجموعه‌ای از &quot;استانداردهای سازمانی&quot; برای راهنمایی در اجرای پروژه‌ها و برنامه‌ها وجود دارد. در سطحDefined کسب و کارها نواقص خود، روش برطرف کردن آن و اهداف در راستای بهبود را می‌شناسند.سطح مدیریت شده کمی(Quantitatively managed)  : در این سطح کیفیت کنترل شده و کمیت      مطرح می‌شود، کنترل آماری قابل قبول است و روی کیفیت محصول عدد و رقم قرار می‌دهیم،  اندازه‌ها در یک پایگاه اطلاعات سازمانی نگهداری می‌شوند. همچنین در این سطح کنترل و ارزیابی بیشتری وجود دارد. سازمان با استفاده از داده‌های کمی، فرآیندهای مورد نیاز ذینفعان را پیش‌بینی می‌کند. کسب و کار، جلوتر از ریسک‌ها در حرکت است.سطح بهینه سازی(Optimizing): در این سطح تمرکر بر روی بهبود مستمر فرایند، تحلیل فرایندها، رفع نقاط ضعف و تقویت آنها، تقویت خطاها و رفع علت بروز خطا و بهبود مستمر فرایند از طریق نوآوری های تکنولوژی است. در این سطح  فرآیندهای سازمان منعطف و پایدار هستند. در سطح پایانی، سازمان در وضعیت بهبود منظم و استفاده از فرصت‌ها خواهد بود. در سطح  Optimizing سازمان پایدارتر و پیش‌بینی‌پذیرتر است که این امر فضا را برای چابکی و خلاقیت باز می‌کند.CMMIبه صورت کلی:مدل CMMI  بهبود فرآیند را تحت تأثیر قرار می‌دهد و کمک می‌کند خطرات را در توسعه خدمات، محصول و نرم‌افزار کاهش دهیم.امروزه CMMI برای توسعه سخت افزار، نرم افزار و خدماتی در تمامی صنایع استفاده می‌شود و فقط محدود به نرم‌افزار نیست.هدف اعلام شدۀ CMMI این است که سازمان‌ها را قادر می‌سازد تا عملکرد را در طیف گسترده‌ای از قابلیت‌های حیاتی کسب‌وکار، از جمله توسعه محصول، بهبود خدمات، مدیریت نیروی کار، مدیریت تامین‌کننده و امنیت سایبری، ارتقا دهند و محک بزنند. Digital Maturity Model (DMM):سازمان ها برای اینکه نقشۀ راه شان را بچینند نیاز به اطلاعاتی از وضعیت کنونی سطح دیجیتال خود دارند، بنابراین از مدل بلوغ دیجیتال استفاده می‌کنند تا بفهمند در چه بخش هایی از سیستم دچار نقاط قوت و ضعف دیجیتالی هستند و برای رشد و پیشرفت در حوزه دیجیتال چه کارهایی را باید انجام بدهند یا ندهند و یک سری استراتژی برای خود تعیین کنند و طبق آن جلو بروند، قبل از هر حرکتی برای دیجیتالی شدن، باید با بلوغ سنجی، وضعیت دیجیتال و آمادگی دیجیتالی خود را بسنجیم تا بفهمیم که از کجا و به چه شکلی شروع کنیم. یک مدل بلوغ دیجیتال به عنوان یک ابزار کسب و کار بکار برده می‌شود تا به‌وسیله آن بتوان وضعیت فعلی ظرفیت‌ها و قابلیت‌هایی که در درون یک سازمان وجود دارد را مشخص کرد و به کمک آنها وضعیت شفاف و روشنی در حوزه دیجیتال از طریق این مدل بدست آورد.این مدل که به اختصار DMM نامیده می‌شود، ظرفیت‌های دیجیتال سازمان‌ها را در قالب 5 بعد از ابعاد کاملا صریح مطرح در کسب و کار مورد ارزیابی قرار می‌دهد تا یک دید جامع از بلوغ دیجیتال در سراسر سازمان ایجاد نماید. این ابعاد به ترتیب عباتند از: 1-مشتریان، 2-استراتژی، 3-تکنولوژی، 4-فرآیندهای عملیاتی، 5- سازمان و فرهنگ سازمانی.DMMبه صورت کلی:همچنین DMM یک مدل ارزیابی است که سطح کنونی بلوغ دیجیتالی سازمان را در ابعاد اصلی کسب و کار به تصویر می‌کشد تا سازمان را با درک روشنی از وضعیت بلوغ فعلی‌اش آشنا کند و آنها را قادر می‌سازد تا حوزه‌های تمرکز را تعریف کنند.چارچوبی(framework) است که برای ارزیابی و درک سطح فعلی بلوغ دیجیتالی یک شرکت استفاده می‌شود.یک نقشه راه برای رسیدن به اهداف بلوغ دیجیتال، برنامه ریزی برای رشد و سنجش موفقیت ارائه می دهد.و DMM شش بعد اصلی، یعنی مشتری، استراتژی، فناوری، عملیات، سازمان و فرهنگ و داده را پوشش می دهد.(این ابعاد بیشتر به چندین زیربعد تقسیم می شوند که جنبه های مختلف بلوغ دیجیتال را منعکس می کنند.) Business Process Maturity Model (BPMM):مدل بلوغ فرایند کسب و کار یک مسیر تکاملی است و باعث می‌َشود که فرایندهای سازمان هماهنگ شوند و در مسیر بلوغ حرکت کنند چون سازمان ها در حالت اولیه دارای فرآیندهایی متناقض، نابالغ و نامنظم هستند بنابراین،  از استراتژی بهبود یا ترمیم در بلوغ  فرایند کسب و کار استفاده می‌شود و پروسه  تولید فرآیندهای کسب و کار، یک نقشه راه برای بهبود مستمر فرآیندها فراهم می‌کند و کمک می‌کند ضمن شناسایی مشکلات و نواقص فرآیندها، پیشرفت‌ها به صورت منطقی و مرحله به مرحله انجام شوند. پس BPMM به شناسایی نواقص و کاستی‌های فرایند در سازمان کمک می‌کند و  بهبودها را در مراحلی منطقی و تدریجی هدایت می‌کند. ما برای توافق تیمی و ثبات در انجام کارها، ایجاد یک ساختار مشخص با تعیین اینکه چه کاری، در چه زمانی و توسط چه کسی انجام شود، ایجاد و تقویت نگرش سیستماتیک و تسهیل گفتگوی افراد نیاز به این مدل بلوغ در سازمان داریم.مدل BPMM، یکی از بهترین و دقیق‌ترین مدل‌های بلوغ مدیریت فرآیند است که به وسیله Bill  Curtis و John  Alden طراحی و اجرا شد. این مدل، نوعی راهنما برای به دست گرفتن کنترل فرآیندهای کسب و کار، در 5 سطح قابل ارزیابی است. سیستم BPMM بر تغییر و بهبود عملکرد، گردش کار، مدیریت و فرآیند متمرکز است و قادر است فرآیند بهبود را به تمامی بخش‌های سازمان هدایت کند.در مدل بلوغ فرایند کسب و کار هر سطح از بلوغ، اهداف و شرایط مورد نیاز برای پیشرفت‌های آتی را فراهم می‌کند و در واقع به صورت مرحله به مرحله جلو می‌رویم و می‌توانیم ویژگی های یک فرایند را ارزیابی کنیم و برای حفظ و بهینه سازی آن تلاش کنیم، اینها از اصول اصلی BPMM است.بعد از استفاده از مدل بلوغ فرایند کسب و کار، این مدل بلوغ سطح سازمان  را نشان می‌دهد بنابراین طبق وضعیت جاری سازمان پلن های بهبود چیده می‌شوند و سازمان به سمت و جهت مثبت حرکت می‌کند که این یکی از مزایای BPMM است. همچنین از دیگر مزایای آن می‌توان به امکان ارزیابی ریسک‌های موجود، انتخاب تامین کنندگان و نظارت بر عملکردشان، شرح و بیان میزان بهبود فرآیند در مراحل مختلف و امکان مقایسه و توانمندسازی راهکارها، برای بهینه سازی فرآیندها اشاره کرد.کسب و کارها با استفاده از فرآیندهای کنترلی این ابزار، از مزایای مختلفی مانند: صرفه جویی در هزینه‌ها، افزایش کیفیت پیش بینی‌ها، مشارکت بیشتر کارکنان و افزایش بهره وری برخوردار خواهند شد.ارزیابی مدل بلوغ فرایند کسب‌وکار:چهار نوع ارزیابی برای BPMM  با سطوح مختلف اطمینان وجود دارد که شیوه‌هایی را که مدل با آن‌ها، اجرا شده‌ نشان می‌دهد و مشخص می‌کند آیا سازمان به اهداف شیوه‌های اجرایی و اهداف حوزه‌های فرایندی مرتبط با آن‌ها دست پیدا کرده است یا خیر. این چهار نوع ارزیابی عبارت‌اند از:ارزیابی اولیه:  یک  ارزیابی نه چندان با اهمیت اما ارزان که چند روز طول می‌کشد تا به یک نمای کلی از انطباق با BPMM  دست  یابد. شواهد به‌طور عمیق بررسی نمی‌شوند و مصاحبه‌های محدودی انجام می‌شود و  داده‌های کمّی جمع‌آوری می‌شود.ارزیابی پیشرفت:  بررسی  تمام حوزه‌ها و شیوه‌های فرایندی در حوزۀ سطح بلوغ یک ارزیابی برای ایجاد      پیشرفت در جهت دستیابی به سطح بلوغ یا پیش‌بینی نتایج ارزیابی تأییدی. این ارزیابی زمان‌بر است، اما شامل همان سطح دقت و کامل بودن ارزیابی تأییدی نیست. داده‌های کمّی جمع‌آوری ‌شده و با نتایج به‌دست‌آمده از مصاحبه و بررسی مصنوعات مقایسه می‌شود.ارزیابی تأمین‌کننده:  ارزیابی، معمولاً در حین انتخاب منبع انجام می‌شود که مشابه ارزیابی پیشرفت است با این تفاوت که تیم ارزیابی شامل هیچ عضوی از سازمان ارزیابی شده نیست. داده‌های کمّی جمع‌آوری شده است. یافته‌ها ممکن است برای توسعۀ تعهدات قراردادی برای بهبودهایی که می‌توانند در طول دوره اجرای قرارداد با انجام ارزیابی پیشرفت، تأمین‌کننده یا تأییدی، تأیید شوند، استفاده شوند. داده‌های کمّی برای تأیید ادعاهای مطرح‌شده در طرح‌های پیشنهادی و ایجاد سطوح قراردادی عملکرد یا بهبود جمع‌آوری می‌شود.ارزیابی تأییدی:  بررسی کامل همۀ حوزه‌ها و شیوه‌های فرایندی در حوزۀ سطح بلوغ ارزیابی، است. این نوع      ارزیابی شامل بررسی هر هفت نوع شواهدی است که در بالا توضیح داده شد. شواهد به‌طور گسترده در سراسر سازمان نمونه‌برداری می‌شود تا اطمینان حاصل شود که تیم ارزیابی قادر به ارزیابی وسعت انطباق است. سازمان‌ها فقط در صورتی می‌توانند  ادعای دستیابی به سطح بلوغ را داشته باشند که یک ارزیابی تأییدی ایجاد و  نهادینه شود.به صورت کلی:همچنین BPMM با شناسایی فعالیت‌های تجاری نابالغ و ناسازگار و توسعه فرآیندهای بالغ و منظم، مسیر بهبود تکاملی را توصیف می‌کند.این مدل بلوغ فرآیند راه‌های معرفی شیوه‌های کیفیت در توسعه نرم‌افزار را بررسی می‌کند.و BPMM موفقیت سیستم های سازمانی را با ارائه روش های اثبات شده برای اعتبار مورد نیاز سیستم تضمین می کند: دقت موارد استفاده و اثربخشی برنامه ها؛ ساده سازی الزامات برای برنامه های کاربردی سازمانی؛ و ارائه یک استاندارد قابل اعتماد برای ارزیابی بلوغ گردش کار فرآیندهای کسب و کار. Capability Maturity Model (CMM):استاندارد نرم‌افزار تدوين شده توسط دانشكده مهندسي نرم‌افزار دانشگاه كارنگي ملون آمريكا و مؤسسه SEI (Software Engineering Institute) می باشد که چارچوبي است براي توصيف اجزاي كليدي يك فرآيند كارآمد جهت توليد نرم‌افزار و همچنین چارچوبی است برای توصيف سير بهبود تكاملي از يك فرآيند ناكامل و نامنظم به يك فرآيند تكامل يافته و منظم.سطوح مختلف این بلوغ همانند همان بلوغ CMMI است.به صورت کلی:مدل بلوغ قابلیت (CMM) روشی است که برای توسعه و اصلاح فرآیند توسعه نرم افزار یک سازمان استفاده می شود.این مدل یک مسیر تکاملی پنج سطحی از فرآیندهای به طور فزاینده سازمان یافته و به طور منظم بالغ تر را توصیف می کند.و CMM مدل قدیمی تر CMMI است.(در واقع CMMI اصول Agile را به CMM اضافه می کند تا به بهبود فرآیندهای توسعه، مدیریت پیکربندی نرم افزار و مدیریت کیفیت نرم افزار کمک کند.)یکی از انتقادات CMM این است که بیش از حد فرآیند محور است و به اندازه کافی هدف گرا نیست. سازمان ها به سختی می توانند CMM را با اهداف و نیازهای خاص تطبیق دهند. Agile Maturity Model (AMM)مدل بلوغ چابک ابزاری داخلی است که در سازمان‌ها استفاده می‌شود تا به سازمان‌ها کمک کند تا شیوه‌های فعلی خود را درک کنند و در جهت بهبود آن‌ها با هدف افزایش توانایی پاسخگویی به شرایط متغیر کسب‌وکار و استفاده بهتر از نوآوری‌ها تلاش کنند.مدل بلوغ چابک (AMM) برای محیط های توسعه نرم افزار چابک متمرکز شده است، ارزیابی سازگاری و ارزیابی تناسب را برای ارزیابی و بهبود بهترین شیوه‌های چابک معرفی می‌کند.برای راهنمایی و هدایت سازمان ها از رویکردهای سنتی به رویکردهای چابک استفاده می‌شود.«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»منابع:A Patidar,      U Suman,      &quot; A survey      on software architecture evaluation methods&quot;, 2nd      International Conference on Computing for Sustainable Global Development ,      2015MA Babar,  I Gorton, &quot; Comparison of scenario-based software architecture evaluation methods ,11th Asia-Pacific Software Engineering Conference,2004CJ Torrecilla-Salinas, J Sedeño, MJ Escalona, &quot; Agile, Web Engineering and Capability Maturity Model Integration: A systematic literature review&quot;, 2016G Remane, A Hanelt, F Wiesboeck, LM Kolbe,&quot; DIGITAL MATURITY IN TRADITIONAL INDUSTRIES –      AN EXPLORATORY ANALYSIS&quot;, 2017C Williams,D Schallmo, K Lang,&quot; Digital Maturity Models for Small and Medium-sized      Enterprises: A Systematic Literature Review&quot;, ISPIM Conference …, 2019https://flevy.com/blog/business-process-maturity-model-bpmm-explained/https://www.geeksforgeeks.org/capability-maturity-model-integration-cmmi/https://www2.deloitte.com/content/dam/Deloitte/global/Documents/Technology-Media-Telecommunications/deloitte-digital-maturity-model.pdfhttps://www.techtarget.com/searchsoftwarequality/definition/Capability-Maturity-Modelhttps://link.springer.com/chapter/10.1007/978-3-642-38833-0_12</description>
                <category>نيلوفر وهناني</category>
                <author>نيلوفر وهناني</author>
                <pubDate>Wed, 01 Feb 2023 15:52:03 +0330</pubDate>
            </item>
                    <item>
                <title>مفاهیم Docker و  Containerization به زبان ساده</title>
                <link>https://virgool.io/@nilofarvahnani/%D9%85%D9%81%D8%A7%D9%87%DB%8C%D9%85-docker-%D9%88-containerization-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-e5ofoajsifa9</link>
                <description>مقدمهامروزه اکثر شرکت‌های نرم‌افزاری به نحوی از container ها استفاده می‌کنند. تعداد نرم‌افزارهایی که برای اجرا نیاز به تکنولوژی‌های کانتینر دارند روز به روز بیشتر می‌شود و کمتر برنامه‌نویسی هست که اسم docker به گوشش نخورده باشه. این جا به معرفی containerization و docker می‌پردازیم و برخی از ابزارهای معروف این حوزه را بررسی می‌کنیم.معرفی Container و مزایای آن:فناوری کانتینر در سال 1979 با یونیکس 7 و chroot system پدید آمد. سیستم chroot می‌توانست محیطی ایزوله برای یک پردازش و زیرپردازش‌های مرتبط با آن بر روی سیستم فراهم کند.کانتینر در معنای عمومی به جعبه هایی گفته میشه که کالاهارو برای جابجایی هوایی یا دریایی یا ... در داخل اون قرار میدن تا به صورت یکپارچه دربیان و حمل و نقل شون راحت تر باشه و راحت روی همدیگه قرار بگیرن و چیدمان مناسبی داشته باشن. اما در دنیای کامپیوتر چطور معنا میشه؟ در دنیای کامپیوتر به مجموعه ای مستقل و ایزوله از فایل های اجرایی برنامه، کتابخانه های مورد نیازش و هر چیزی که برای اجرا نیاز داره و قابل جابجایی و اجراست و مثل یک جعبه سربسته هست کانتینر میگن. در واقع یک نوع مجازی سازی در سطح سیستم عامل هست. یک محیط ایزوله از سیستم عامل به نام کانتینر در اختیار برنامه قرار میگیره که در ادامه قراره در مورد مزیت هاش صحبت کنیم. گفتیم که در دنیای واقعی از کانتینر برای جابجایی راحت استفاده میشه پس در دنیای کامپیوتر هم مهم ترین ویژگیش قابل انتقال بودن وسادگی اون هست برای مثال اگه یکی از سرورها خراب شه یا به مشکل بخوره ما باید بتونیم به راحتی و با سرعت برنامه رو در سرور دیگه ای اجرا کنیم، اگه لازم باشه تنظیمات زیادی انجام بشه یا نیازمندی های زیادی برطرف بشه خیلی زمانبر خواهد بود پس خوبه که نرم افزارو با تمام متعلقاتش به صورت سازگار داشته باشیم. از مزیت های دیگۀ کانتینر میشه به کاهش احتمال رخ دادن خطا اشاره کرد، مثلا سیستم تمام دولوپرها ممکنه از نظر سیستم عامل و کتابخانه های نصب شده یا حتی نسخۀ ابزارهای مورد نیاز با سرور محیط عملیاتی سازگار نباشه و موقع اجرا به مشکل و خطا بخوریم ولی با وجود کانتینر و ایزوله شدنش این اتفاق نمی افته(شباهت محیط اجرا و محیط توسعه نرم افزار). مزیت بعدی در مورد امنیت هست اینکه اگر بخشی دچار بحث امنیتی شد آیا باید روی بقیه هم تاثیر بزاره؟ اگرتا حد امکان کوچک و ایزوله باشن این مشکل به وجود نمیاد.برخلاف VM که مجازی‌سازی سخت‌افزار را فراهم می‌کند، یک کانتینر مجازی‌سازی در سطح سیستم عامل را با انتزاع فضای کاربر فراهم می‌کند.برای همه مقاصد، کانتینرها شبیه ماشین مجازی هستند. به عنوان مثال، آنها فضای خصوصی برای پردازش دارند، می توانند دستورات را به صورت root اجرا کنند، دارای یک رابط شبکه خصوصی و آدرس IP هستند، مسیرهای سفارشی و قوانین iptables را مجاز می کنند، می توانند سیستم های فایل را نصب کنند و غیره. یک تفاوت بزرگ بین کانتینرها و ماشین های مجازی این است که کانتینرها هسته سیستم میزبان را با سایر کانتینرها به اشتراک می گذارند.به طور خلاصه:کار کانتینرها  عبارت است از جداسازی یک برنامه کاربردی و وابستگی های آن در یک واحد مستقل که می تواند در هر جایی اجرا شود.علاوه بر این، کانتینرها نیاز به سخت‌افزار فیزیکی را از بین می‌برند و امکان استفاده کارآمدتر از منابع محاسباتی را، هم از نظر مصرف انرژی و هم از نظر اثربخشی هزینه، فراهم می‌کنند.داکر:با اینکه فناوری کانتینر و ابزارهای ایزوله‌سازی در دهه اول قرن 21 پیشرفت‌های چشمگیری داشته ولی این داکر بود که ورق را برگردوند. در سال 2010 سالامون هایکس و سباستین پال، بنیانگذاران شرکت Dot Cloud، کار ساخت داکر را شروع کردند و در سال 2011 داکر رسماً در پروژه‌های این شرکت استفاده شد.اگر یک برنامه نویس یا متخصص هستید، به احتمال زیاد حداقل نام Docker را شنیدید. ابزاری مفید برای بسته بندی، جابجایی و اجرای برنامه ها در &quot;کانتینرها&quot;.داکر یکی از معروف‌ترین ابزارهای تولید و اجرای کانتینر است. قبل از داکر تکنولوژی‌های مختلفی برای Containerazion وجود داشت اما داکر اولین ابزاری بود که امکان جابجایی کانتینرها بر روی سیستم‌های مختلف را به راحتی فراهم کرد. همچنین داکر فرایند ساخت کانتینر را بسیار ساده‌تر کرد و همه‌ی این‌ها باعث موفقیت چشم‌گیر داکر شد. تا حدی که خیلیا کانتینرها رو با داکر میشناسن.تکنولوژی زیرساخت داکر:داکر با زبان برنامه‌نویسی Go طراحی شده و از مزایای کرنل لینوکس برای فعالیت استفاده میکنه. همچنین داکر از یک تکنولوژي تحت عنوان namespaces برای ایجاد فضاهای کاری ایزوله شده تحت عنوان کانتینر استفاده میکنه. زمانی که یک کانتینر اجرا کنید، داکر مجموعه‌ای از Namespaceهای مختلف را برای آن کانتینر ایجاد میکنه.  این Namespaceها لایه‌ای از ایزولاسیون را در اختیار شما قرار  میدن.مزیت داکر نسبت به ماشین مجازی:تصویر زیر را در نظر بگیرید. یک سیستم با 16 گیگ رم در دسترس است و باید 3 ماشین مجازی روی آن اجرا بشه. برای اجرای موازی ماشین‌های مجازی، باید RAM بین ماشین‌های مجازی تقسیم بشه. فرض کنید تخصیص به شکل زیر باشه:6 گیگابایت رم به اولین ماشین مجازی ،4 گیگابایت رم به ماشین مجازی دوم و6  گیگابایت به ماشین مجازی سوم.در این صورت، دیگر فضای RAMباقی نمیماند، اگر استفاده از آن به صورت زیر باشه:اولین ماشین مجازی فقط از 4 گیگابایت رم استفاده کند ==&gt;  2 گیگابایت استفاده نشده و مسدود شدهماشین مجازی دوم فقط از 3 گیگابایت رم استفاده کند ==&gt;  1 گیگابایت استفاده نشده و مسدود شدهماشین مجازی سوم فقط از 2 گیگابایت رم استفاده کند ==&gt;    4 گیگابایت استفاده نشده و مسدود شدهبنابراین  در کل 7 گیگابایت (2 گیگابایت + 1 گیگابایت + 4 گیگابایت) رم هدر خواهد رفت و نمیشه یک ماشین مجازی جدید راه اندازی کرد و این یک مشکل اساسی است .چگونه می توانم از این مشکل جلوگیری کرد؟اگر از Docker استفاده بشه، CPU دقیقاً مقدار حافظه مورد نیاز Container را اختصاص می ده.ظرف اول فقط از 4 گیگابایت رم استفاده می کند ==&gt;  0 گیگابایت استفاده نشده و مسدود شدهظرف دوم فقط از 3 گیگابایت رم استفاده می کند==&gt;  0 گیگابایت استفاده نشده و مسدود شدهظرف سوم فقط از 2 گیگابایت رم استفاده می کند ==&gt; 0 گیگابایت استفاده نشده و مسدود شدهاز آنجایی که هیچ حافظه اختصاصی (RAM) استفاده نشده ای وجود ندارد، با استفاده از Docker Container، 7 گیگابایت (4 – 3 – 2) رم ذخیره خواهد شد.دلایل افزایش استفاده از داکر(مزیت ها):1. صرفه‌جویی در هزینهبا استفاده از کانتینرهای داکر میشه کدهای بیشتری را روی یک سرور اجرا کرد که باعث صرفه جویی در هزینه‌ها میشه2.سرعت:داکرها بسیار سریع هستند. از آنجایی که کانتینرها فقط محیط سندباکس(محیط سندباکس یک فضای مجازی است که در آن کدهای کامپیوتری به صورت مجزا و بدون تأثیر بر شبکه اطراف یا برنامه های کاربردی آن اجرا می شود) هستند که روی هسته اجرا می شوند، منابع کمتری را اشغال می کنند. شما می توانید ظرف چند ثانیه داکر را ایجاد و اجرا کنید در حالی که ماشین های مجازی ممکنه بیشتر طول بکشه چون هر بار باید یک سیستم عامل مجازی کامل را راه اندازی بشه.3.لایبرری‌های مشترک:کاربر میتونه به رجیستری‌های متن باز که شامل هزاران کانتینر از قبل طراحی شده هستش دسترسی داشته باشه.4. ماژولار بودن و مقیاس پذیری:داکر به راحتی میتونه عملکرد برنامه شما را در کانتینرهای جداگانه تقسیم کنه. برای مثال، ممکنه که پایگاه داده Postgres شما در یک کانتینر و سرور Redis شما در کانتینر دیگه اجرا بشه  و همچنین برنامه Node.js شما در کانتینر دیگه ای باشه. با Docker، ربط دادن این کانتینرها به یکدیگر برای ایجاد برنامه‌تان آسان‌تر میشه و در آینده به‌روزرسانی مستقل اجزا را آسان‌تر میکنه.معایب داکر:1. مشکلات مربوط به مستنداتداکر به‌سرعت در حال رشد و پیشرفت است و دائما به‌روزرسانی می‌شود. همین مسئله باعث شده تا شکافی بین مستندات آن و تغییرات و به‌روزرسانی‌های آن پیش بیاد. با اینکه همین حالا هم مستندات فنی خوبی از docker وجود داره ولی به نظر میرسه هنوز در بعضی از جاها مثل کار با داکر بر روی مک یا ویندوز مشکلاتی از نظر مستندات فنی وجود داشته باشه.2.مشکلات عملکردی در محیط‌های غیربومیبا اینکه مک بر پایه لایه یونیکسی بومی قرار داره، docker  برای اینکه عملیات‌هایش را انجام بده همچنان به کرنل لینوکسی واقعی نیاز داره. برای کار با داکر بر روی مک کاری که میشه انجام داد اینه که ماشین مجازی حاوی کرنل درست کرد. در این حالت به‌جای اینکه با این کرنل تعامل مستقیم وجود داشته باشه با کانتیرهای درون VM تعامل اتفاق میفته.3.مسائل مربوط به یادگیری کار با داکریادگیری کار با داکر می‌تواند زمان بر باشه. مفاهیم بسیار زیادی در این حوزه وجود داره که فرد باید با آن آشنایی داشته باشه. حتی تفکیک بعصی از مفاهیم با مفاهیم ماشین مجازی ممکنه که سخت باشه.اجزایی که برای ایجاد برنامه‌های حاوی Docker استفاده‌ میشه:1. Docker file:به طور کلی داکر فایل یک فایل متنیه که با الگوی خاصی نوشته میشه تا با استفاده از آن بتونیم ایمیج‌های داکر خودمون رو بسازیم و توی داکر‌های خودمون به صورت اتوماتیک استفاده کنیم تا درخواست ما از یک داکر برآورده بشه.هر کانتینر داکر با یک Docker file شروع‌ میشه Docker file یک فایل متنیه که به صورت ساده و قابل فهم نوشته شده و شامل دستورالعمل‌های ساختDocker Image میشه.در واقع Docker file نوع سیستم عامل را مشخص‌ میکنه و نشون میده که توی سیستم عامل چه زبان‌ها، متغیرهای محیطی‌، مکان فایل‌ها، پورت‌های شبکه و… استفاده بشه. جدا از این‌ها، داکرفایل تعیین میکنه که پس از اینکه کانتینر اجرا شد، چه کارهایی را باید انجام بده.2. Docker imageهنگامی کهDocker file را نوشتید، قابلیتی به نام Docker Build را فراخوانی می‌کنید. این قابلیت وظیفه داره که یک Image بر اساس محتویاتDocker file شما بسازه. داکرفایل حاوی یک سری دستورالعمل برای ساختن یکImage است، در حالی که Docker Image یک فایل قابل حمله که یک سری دستورالعمل داره و مشخص میکنه که کانتینر، کدام کامپوننت‌های نرم افزاری را اجرا کنه و این اجرا چطور باشه.3. Docker runاین کامپوننت در واقع یک ابزار دستوریه که یک کانتینر را راه‌‎اندازی‌ میکنه. هر کانتینر، نمونه‌‎ای از یک تصویره و  کانتینرها به‌صورت گذرا و موقتی طراحی شدن اما‌ میشه ‌آن‌ها رو متوقف و دوباره راه‎‌اندازی کرد‌. همچنین، چندین نمونه کانتینر از یک تصویر به طور همزمان میشه اجرا کرد (به شرطی که هر کانتینر یک نام خاص داشته باشه).4. Docker Hubساخت کانتینرها کار بسیار راحتیه Docker Hub یک مخزن SaaS برای به اشتراک‎‌گذاری و مدیریت کانتینرها در اختیار شما قرار میده. در این قسمت میتونید ایمیج‌های رسمی داکر که در اغلب اوقات به صورتOpen source هستند را پیدا کنید. همچنین می‌توانید ایمیج‎‌های کانتینر حاوی کدهای مفید را دانلود کنید یا آن‌ها را به صورت آزادانه به اشتراک بگذارید.5. Docker Engineموتور داکر هم مثل موتور ماشین، مهم‌ترین بخش داکره. در واقع Docker Engine هسته اصلی داکر و مغز داکره.یک فناوری کلاینت – سرور که کانتینرها را ایجاد و اجرا‌ میکنه. به طور کلی‌، وقتی کسی درباره داکر حرف میزنه، در مورد شرکت یا پروژه کلی صحبت‌ نمیکنه، منظورش همین Docker Engine است. دو نسخه مختلف ازDocker Engine در دسترسه Docker Engine Enterprise و Docker Engine Communityشرکت‌های ایرانی که سرویس داکر ارائه می‌کنند: چابکان، میزبان پایتخت و زیرساخت ابری هایو، از جمله شرکت های ابری هستند که خدمات داکر و کانتینر ارائه می‌دهند.منابع:https://hamravesh.com/blog/what-is-docker/https://www.ibm.com/topics/containerizationhttps://docker.ir/articles/what-is-docker/https://www.edureka.co/blog/what-is-docker-containerhttps://www.freecodecamp.org/news/a-beginner-friendly-introduction-to-containers-vms-and-docker-79a9e3e119b/https://www.analyticsvidhya.com/blog/2022/06/writing-dockerfile-is-simple/https://parspack.com/blog/hosting/docker-tutorial/kubernetes-vs-docker«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»</description>
                <category>نيلوفر وهناني</category>
                <author>نيلوفر وهناني</author>
                <pubDate>Fri, 30 Dec 2022 21:48:50 +0330</pubDate>
            </item>
                    <item>
                <title>توضیح کوتاه برای 20 موضوع در مهندسی نرم افزار</title>
                <link>https://virgool.io/@nilofarvahnani/%D8%AA%D9%88%D8%B6%DB%8C%D8%AD-%DA%A9%D9%88%D8%AA%D8%A7%D9%87-%D8%A8%D8%B1%D8%A7%DB%8C-20-%D9%85%D9%88%D8%B6%D9%88%D8%B9-%D8%AF%D8%B1-%D9%85%D9%87%D9%86%D8%AF%D8%B3%DB%8C-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-axxwi19ivryp</link>
                <description>  Domain Driven Design(DDD) طراحی دامنه محور یه رویکرد توسعۀ نرم افزار هست، یا میشه گفت یک نوع تفکره که برای توسعه و تولید نرم افزارهای بزرگ و پیچیده استفاده میشه و به ما کمک می کنه به نیازهای پیچیده ای که داریم متمرکز شیم و تلاشمون رو برای هیچ چیز غیرضروری و بی فایده ای هدر ندهیم. همچنین این رویکرد، پیاده سازی سیستم رو به یک مدل که به طور مداوم در حال تکامل و توسعه هست، تبدیل می کنه و جزئیات نامرتبط مثل زیرساخت ها، زبان‌های برنامه نویسی و فناوری های غیره رو در نظر نمی گیره، در واقع به سیستم دید کلی داره. دلیل اینکه فقط تو پروژه های بزرگ و پیچیده مناسبه اینه که استفاده از اون تو پروژه‌های کوچک و ساده یا پروژه‌هایی که صرفا نیاز به ذخیره و خواندن اطلاعات دارن، ممکنه فقط زمان و هزینه پروژه رو افزایش بده و مزیت خاصی هم به همراه نداشته باشه. کار اصلی ddd اینه که مثل مغز انسان همه چیز را بشکنه و به بخش های کوچکتر تقسیم کنه، تا برخورد با اون ها ساده‌تر باشد و راحت تر بشه برای آنها راه حل را پیدا کرد.  مثل شکستن دامنه به چندین زیردامنه یاSubDomain یا ارائه راهکارهایی برای تقسیم نرم‌افزار به بخش‌های جدا و مستقل از هم و بیان ارتباط این بخش‌ها با همدیگه.این کار باعث توسعه نرم افزار به صورت موازی بین چند تیم و استفاده از معماری ها و تکنولوژی های مختلف تو هر تیم یا بخش میشه. زیر دامنه یا SubDomainها شامل 2 دسته هستند: دامنه اصلی: کلید موفقیت پروژه است و بیشترین هزینه و زمان و نیرو برای این بخش استفاده میشه. دامنه عمومی یا پشتیبان: اصل کسب و کار نیست اما وجودشون برای انجام کار اصلی دامنه ضروری هست. یکی از قدرت‌های DDD استفاده از زبان مشترک در مورد مفاهیم Domain هست.  Hexagonal architecture معماری Hexagonal یا ساختار ports and adapters یه الگوی معماریه که مبتنی بر یوزکیس هست. تاکید این معماری بر روی تست پذیری سیستم بدون وابستگی به اکتورها و همچنین تغییرپذیری بیشتر آن هست. اگر ماژول های نرم افزار شما قادر باشن به راحتی به دیگر ماژول ها متصل بشن، در واقع وابستگی خاصی نداشته باشن، در این صورت می گیم که ماژول مورد نظر Loose Coupling با ماژول های دیگه داره و سیستم بسیار منعطف هست، یکی از اهداف این معماری هم طراحی سیستم به صورت Loosely coupled هست. به این معماری، معماری پورت ها و آداپتورها هم میگن، چون این معماری یک حالت انتزاعی داره که هستۀ اصلی برنامه را از فناوری ها و ابزارهای بیرونی جدا می کنه و در واقع مرزهای سیستم رو هم مشخص می کنه. تو این معماری دامین آبجکت ها و یوزکیس ها و پورت های ورودی و خروجی، هستۀ اصلی نرم افزار رو توصیف می‌کنن. Domain داخلی هیچ وابستگی‌ای به خارج نداره و تغییرات لایه های دیگر هیچ تاثیری روی آن نمیگذارن، قوانین و سیاست های بیزینس در اینجا قرار دارن. همون طور که مشخص هست این معماری به DDD مرتبط هست و میتونه یک روش خوب برای پیاده سازی و بکارگیری اون باشه.Hexagonal معماریCQRS  مخفف Command and Query Responsibility Segregation  هست که یعنی جدا کردن وظیفه  Commandها و Queryها از همدیگه! اینکه دلیل اینکار چیه و چرا باید استفاده شه را در ادامه با یک مثال توضیح میدم. فرض کنید تو سایت سازمان سنجش و تو آخرین زمان های ثبت نام آزمون ها که لود سیستم بالاست و ممکنه افراد زیادی وارد سایت شن و اقدام به ثبت نام کنن، همزمان از سمت دیگه مدیران سیستم میخوان درصد مشارکت در آزمونها یا تحلیل رده سنی شرکت در آزمون رو بررسی کنند، مشکلی که در اینجا وجود داره اینه که ممکنه چون چندین کار همزمان قراره توی پایگاه داده و برای مثال تو یک جدول مشخص انجام شه، کندی زیادی وجود داشته باشه و کار ما را مختل کنه! برای این مشکل شاید راه حل‌های زیادی وجود داشته باشه و اینکه سیستم‌ها با توجه به حجم اطلاعات، اهمیت کاری که انجام میدن و تعداد کاربران یا تراکنش‌های هم زمانی که دارن، با همدیگه کاملا متفاوت هستن اما یکی از این راه حل ها یا الگوها، CQRS هست. به این صورت که ثبت نام ها رو در یک جدول انجام بدیم و از جدول دیگه ای اطلاعات را تحلیل کنیم، پس کلاس‌هایی که مسئولیت یا وظیفۀ read و write دارن، از هم جدا می شن.(مرتبط با قضیۀ event sourcing)  در واقع   CQRS بیان میکنه، خواندن و نوشتن 2 مسئولیت جدا و متفاوت هستن و نباید باعث ایجاد کندی و تاخیر در همدیگه باشن.CQRS Design PatternMVVMمخفف Model-View-Viewmodel هست. میدونیم که الگوهای مختلفی وجود دارن که هر کدوم در جاهای مختلف کاربرد دارن و میخوان فرایند توسعه و نگهداری نرم افزار رو راحت تر و کم هزینه تر کنند. همونطور که از اسمش مشخص هست این الگو شامل 3 بخش هست که از همدیگه جدا هستند و میتونن به صورت موازی توسعه داده بشن. هر بخش رو به طور جداگانه توضیح میدم: مدل(Model): مدل اطلاعات برنامه مارو نگه میداره و فقط هم شامل همین اطلاعات و داده هاست و وظیفه دیگری نداره. برای مثال اطلاعات کاربری که میخواد در سایت ثبت نام کنه مثل ایمیل و نام و رمزعبور.ویو (view): اون چیزی که کاربرد یا یوزرنهایی میبینه رو بهش میگن ویو! در واقع اون پوسته ای که کاربر باهاش در ارتباط و تعامل هست. این اطلاعاتی که در مدل هست چطوری و به چه شکلی نشان داده بشه و در چه فرمی قرار بگیره یا چه رنگی داشته باشه در این قسمت تعیین میشه برای مثال فرم ثبت نام کاربری که میخواد در سایت ثبت نام کنه.ویومدل(view model) : ویومدل در واقع نقش واسط بین ویو و مدل رو ایفا میکنه. ویومدل اطلاعات مدل رو طبق چیزی که ویو میخواد اماده میکنه و تحویلش میده و همچنین برعکس یعنی اطلاعات رو از ویو میگیره و طبق چیزی که مدل میخواد اماده میکنه برای مثال ممکنه تاریخ رو از کاربر به صورت روز و ماه و سال بگیره (ویو) و بعد اینها رو بهم بچسبونه و به عنوان یک داده string به مدل بده! پس واسط هست و تقریبا مثل controller در mvc عمل میکنه.MVVMEvent Sourcing همونطور که از اسمش مشخص هست منبع رویدادهای سیستم هست، یعنی ما فقط اخرین وضعیت سیستم رو نگه نداریم بلکه از ابتدا هر رویدادی که در سیستم اتفاق میفته رو ثبت و ضبط کنیم! در واقع رفتار و عملکرد سیستم رو در طول زمان میتونیم بدست بیاریم و اگر رفتار اشتباهی رو سیستم انجام بده، به راحتی میشه فهمید اون مشکل از کجا شروع شده و چه اتفاقی افتاده یعنی دیباگ کردن و fault localization راحتتری خواهیم داشت.در بعضی از سیستم ها این مورد ضروری هست مثل سیستم های مالی و بانکی و محاسباتی. جایی که کل این رویدادها ثبت میشن رو event store میگن که مثل یک منبع یا مخزن عمل میکنه، برای استفاده از این مخزن ما باید از CQRS استفاده کنیم که ممکنه سیستممون رو پیچیده تر کنه!Event Sourcing patternMicro Frontendsمیدونیم که برای اینکه توسعه نرم افزار به درستی و راحت تر انجام بشه باید نرم افزار به بخش های مختلف شکسته بشه! حالا این شکسته شدن میتونه به صورت افقی باشه به این شکل که یک تیم backend، یک تیم frontend، یک تیم DB و ... داشته باشیم و هر بخش کار مربوط به خودش رو انجام بده. ممکنه فکرکنید اینطور شکستن ایده آل هست و افراد که تجربه و تخصص مشترک دارند میتونن با هم کار و تعامل کنند و مشکلات رو برطرف کنند و به نتیجه مطلوب برسند، اما اینطور نیست چون تیم ها از عملکرد تیم های دیگر به طور کامل آگاه نیستند برای مثال تیم فرانت اند از عملکرد درست تیم بکند مطمئن نیست و آگاهی کامل نداره پس توسعه نرم افزار رو به صورت عمودی میشکنیم، بدین شکل که هر یک از بخش های پروژه رو به یک تیم میسپاریم که خود اون تیم شامل بخش های مختلف هست و خود اون تیم کاملا خودمختاره یعنی روند توسعه هر تیم کاملا مجزا از تیم های دیگه هست و از پایگاه داده تا یوزراینترفیس جداگانه ای دارند پس هیچ اجباری برای انتخاب ابزارها و یا فریمورک های مشترک نیست و هر تیم بر حسب علاقه یا سلیقه یا متناسب با آن بخش که مسئولش هست، برای مثال فریمورک خودشو انتخاب میکنه! و در نهایت همه این بخش باید با هم ترکیب بشن و ساختار نهایی صفحات و نرم‌افزار را ایجاد کنند. تصویر زیر درک بهتری از این بخش رو بهتون میده.Micro FrontendsLow code platformsتوسعۀ کم کد به این معنی هست که بتونیم اپلیکیشن یا نرم افزارهایی بسازیم بدون اینکه احتیاج به کدنویسی زیاد، تجربه و مهارت زیاد و یا دانش زیاد داشته باشیم! امروزه با روی کار اومدن رایانه های قدرتمند و پشتیبانی زیاد و همچنین رابط های گرافیکی قوی، امکان استفاده از توسعه کم کد بوجود اومده ما میتونیم با سرعت خیلی بیشتری نرم افزارهایی که میخوایم رو تولید کنیم و امکان طراحی وب سایت های مختلف، اپلیکیشن و ... رو داشته باشیم حتی با دانش کم از مهندسی کامپیوتر!از دیدگاه کامپیوتر، همه چیز یک یا صفر هست پس براش فرقی نمیکنه که فایل‌های باینری کامپایل شده، طراحی‌های  UX، پایگاه داده یا هر چیز دیگه ای  از سمت پلتفرم توسعه کم کد و یا کدنویسی دستی به اون داده بشه.مزیت هایی که پلتفرم توسعه کم کد داره سرعت بالا، پیچیدگی کم، کاهش زیاد هزینه ها(نیاز به نیرو متخصص کم میشه) و ... هست اما معایب یا مشکلاتی رو هم داره، این محیط چارچوب مشخصی نداره و نمیتونه خیلی از قوانین رو پشتیبانی کنه و اینکه وقتی برنامه نویس حرفه ای که درک عمیقی از سیستم داره پشت سیستم نباشه اونوقت تجربه لازم برای گرفتن تصمیم های مناسب هم وجود نداره پس همیشه این ریسک وجود داره که مشکلاتی مثل مشکلات امنیتی بعد از انجام پروژه وجود داشته باشه و غیرقابل اجتناب هست.ESBمخفف Enterprise Service Bus  هست یعنی گذرگاه سرویس سازمانی. به زبان ساده وقتی چندین برنامه مختلف داریم، و این برنامه ها میخوان با هم ارتباط برقرار کنن، این ارتباط میتونه 2 به 2 باشه اما مشکلی که وجود داره اینه که ممکنه همین پیچیدگی سیستم رو بالا ببره و مشکلاتی رو برامون بوجود بیاره و سیستم به شدت شلوغ بشه، پس بهتره از یک واسط یا گذرگاه استفاده کنیم که تمام برنامه هایی که میخوان با هم ارتباط برقرار کنن، درخواستشونو به این گذرگاه بفرستن و با این گذرگاه اصطلاحا صحبت کنند، حالا دیگه هر برنامه میتونه پروتکل خاص خودشو داشته باشه، پس الان سیستم ها در واقع از هم جدا هستند و بدون آگاهی از همدیگه میتونن از هم استفاده کنند و یکپارچه سازی این وسط شکل گرفته و ارتباطات اینها بسیار راحتتر شد. حالا به سازمان یا شرکتی فکر کنید که چندین وب سرویس مختلف رو ارائه میده یا میفروشه، با استفاده از ESB، سرویس گیرنده ها میتونن فارغ از اینکه چه پروتکلی تو این وب سرویس ها استفاده شده، از اونها استفاده کنن و خدمت بگیرن، پس ESB برای چنین سازمان هایی خیلی مناسبه و باعث امنیت بیشتر هم میشه. اما یکی از مهم ترین معایب ESB این هست که اگه خطایی داخل ESB رخ بده میتونه کل این سرویس ها رو مختل کنه و هیچ کاری انجام نشه.ESBAPI Gatewayبرای توضیح API Gateway اول باید خود API رو بشناسیم. API برای تبادل داده بین client و server به کار میره و همچنین برای ارتباط نرم افزار های مختلف هم ازش استفاده میشه. حالا ما به 2 روش یا معماری میتونیم اینکارو انجام بدیم، اولی استفاده از معماری Monolithic هست به این شکل که فرض کنید برای مثال وقتی وارد یک صفحه در یک سایت فروش کتاب میشین، کل اطلاعات اون صفحه، به طور یکجا و همزمان از سرور به وسیلۀ API و برای مثال ID کتاب موردنظری که روش کلیک کردین، دریافت میشه و به شما نمایش داده میشه، این روش یا معماری خیلی راحت هست ولی ممکنه وقتی تعداد کاربرای سایت بیشتر شه و تعداد درخواست همزمان بالاتر بره دیگه خوب کار نکنه و کند بشه، پس از معماری Microservice استفاده می کنیم به این شکل که برای مثال هریک از بخش های این صفحه که قراره اطلاعات یک کتاب رو نشون بده، به صورت یک Microserviceجداگانه باشه و یک وظیفۀ مخصوص داشته باشه مثلا بخش نظرات راجع به این کتاب، بخش کتاب های مشابه و ... هرکدوم جدا باشن و درخواست جداگانه ای به سرور بفرستن. خب حالا این معماری یا روش دوم هم مشکلاتی داره که باید رفع بشه، اولین مشکل بزرگش تعداد درخواست های زیاد اونم فقط برای یک صفحه هست حالا در نظر بگیرین کلی کاربر وجود داره و این سایت کلی صفحه دیگه هم میتونه داشته باشه، و یا اینکه اگر هرکدوم از این بخش های صفحات، درخواست بفرستن ممکنه Rest APIای که دارن، امنیتش به خطر بیفته و دیگران هم بتونن اونو ببینن! و ... پس از API Gateway استفاده می کنیم. حالا دیگه کلاینت ها درخواستشون رو فقط به API Gateway میفرستن و اون هم به عنوان یک واسط تشخیص میده برای جواب دادن به اون کلاینت به کدوم سرویس ها درخواست بده و جواب رو چطوری برگردونه، پس امنیت حفظ میشه و هر کلاینت در یک زمان متناسب میتونه جوابش رو بگیره. داخل API Gateway همچنین میتونیم دسترسی هارو کنترل کنیم و یک سری تحلیل و حتی نمودار از درخواست ها و پاسخ ها بدست بیاریم و یا حتی محدودیت هایی رو اعمال کنیم بدون اینکه پروتکل هایی که کلاینت و سرور ازش استفاده می کنند مهم باشه!API GatewayBusiness Process Management Systems (BPMS)به معنای نرم‌افزار مدیریت فرآیند کسب‌وکار هست و همونطور که از اسمش مشخص هست یک ابزار مدیریتی هست که میتونه جریان های کاری دستی و زمانگیر رو تو برنامه های تجاری به جریان های کاری ساده تبدیل کنه. BPMS در واقع تمام بخش های سازمان رو زمانبندی و مدیریت میکنه مثلا میتونه برای یادآوری رویدادها یا کارها، برای پرداخت ها و نامه های اداری از طریق ایمیل هشدار بده، برای مدیریت منابع انسانی و درخواست هاشون، استاندارد کردن فرایندهای کسب و کار و زمانبندی برای انجام تکالیف و وظایفی که هر تیم داره، تعامل با مشتری رو هم بهبود میده چون روی جنبه های اصلی که برای مشتری مهم هست تمرکز میکنه و میتونه برای هر مشتری شخصی سازی بشه پس رضایت بیشتر مشتری رو به ارمغان میاره، امکان اینکه سریع تر ببینیم و بفهمیم چه کاری با مقررات و قانون های سازمان انطباق داره و چه کاری نداره و همچنین خودکارسازی کارهارو افزایش میده. در تصویر زیر هم ویژگی های BPMS نشون داده شده:BPMSBusiness Rules Management Systems (BRMS)در واقع همون قوانین تجاری کسب و کار هست که شامل سیاست ها و شروط و الزاماتی هست که برای تعیین اقداماتی که در برنامه ها و سیستم ها انجام میشه، استفاده می شه. میدونیم که هر سازمان یک سری خط مشی داره که برای رسیدن به هدف سازمان باید دنبال بشن، این قوانین تعیین میکنن که چه کاری توسط چه کسی و در چه زمانی و به چه شکلی باید انجام بشه، حالا برای اینکه کار ما راحتتر باشه دوست داریم به صورت خودکار این عمل انجام بشه یعنی به صورت خودکار این قوانین مدام چک بشه و درگیر مدیریت قوانین تجاری نباشیم و منابع کمتری هم مصرف بشه. BRMS یک پلتفرم برای این خودکارسازی(نوشتن قوانین روی کاغذ یا ارسال ایمیل به کارمندا دیگه روش خوبی نیست!) و مدیریت قوانین کسب و کار هست و خارج از منطق کدنویسی هست. پس هر سازمانی که دارای یک سری قانون برای خودش هست لازمه که از BRMS استفاده کنه. مزایای دیگۀ BRMS: تعیین استراتژی ها و استانداردها به صورت دقیق و بدون ابهام، عدم نیاز به نیروی متخصص کاربران تجاری برای ایجاد تغییرات در قوانین(با ایجاد دسترسی برای اونها)، امنیت قوانین سازمان رعایت میشه و میدونیم که تغییر نخواهند کرد، کیفیت سیستم بالاتر میره و ...BRMSMessage Queue (such as Kafka and RabbitMQ)میدونیم که اپلیکیشن ها با فرستادن پیام با همدیگه ارتباط برقرار میکنند اما اگر در اون لحظه که پیام قراره رد و بدل بشه، برنامه مقصد مشغول انجام کاری باشه یا اصلا فعال نباشه، ما نیاز به یک صف پیام داریم که برای ذخیره کردن و نگهداری پیام ها به صورت موقت بکار میره در واقع به صورت غیرهمزمان میتونیم پیام بفرستیم.برای مثال فرض کنید یک وب سرویس داریم که در هر لحظه چندین درخواست میگیره و هر درخواست نیاز به پردازش داره، پس تمام این درخواست هارو وارد یک صف می کنیم تا از بین نرن و به نوبت به درخواست ها جواب داده بشه.خب RabbitMQ و Kafka 2 ابزار برای Message Queue هستند، RabbitMQ یک ابزار رایگان و قابل توسعه ست، یکی از مزایای دیگه اون داشتن UI تحت وب هست که اقدامات زیادی براش تعریف شده و میشه پیام هارو راحتتر نظارت و مدیریت کرد، یا اینکه آمار درستی از پیام هارو بدست آورد و دسته بندی و تحلیل کرد و همچنین اینکه برای انواع سیستم عامل ها هم قابل دسترس هست. Kafkaهم متن باز و رایگانه، یکی از مزیت های اصلیش توانایی کنترل حجم زیاد پیام هاست(بیگ دیتا)، تو پلتفرم های stream  برای کنترل realtime بودنشون استفاده میشه و میتونه پاسخ رو سریع تولید بکنه و گذردهی بالایی داشته باشه حتی با وجود تعداد محدودی منابع! البته شروع کار و یادگیری Kafkaسخت تر هست.Message QueueDocker and Containerizationکانتینر در معنای عمومی به جعبه هایی گفته میشه که کالاهارو برای جابجایی هوایی یا دریایی یا ... در داخل اون قرار میدن تا به صورت یکپارچه دربیان و حمل و نقل شون راحت تر باشه و راحت روی همدیگه قرار بگیرن و چیدمان مناسبی داشته باشن. اما در دنیای کامپیوتر چطور معنا میشه؟ در دنیای کامپیوتر به مجموعه ای مستقل و ایزوله از فایل های اجرایی برنامه، کتابخانه های مورد نیازش و هر چیزی که برای اجرا نیاز داره و قابل جابجایی و اجراست و مثل یک جعبه سربسته هست کانتینر میگن. در واقع یک نوع مجازی سازی در سطح سیستم عامل هست. یک محیط ایزوله از سیستم عامل به نام کانتینر در اختیار برنامه قرار میگیره که در ادامه قراره در مورد مزیت هاش صحبت کنیم. گفتیم که در دنیای واقعی از کانتینر برای جابجایی راحت استفاده میشه پس در دنیای کامپیوتر هم مهم ترین ویژگیش قابل انتقال بودن وسادگی اون هست برای مثال اگه یکی از سرورها خراب شه یا به مشکل بخوره ما باید بتونیم به راحتی و با سرعت برنامه رو در سرور دیگه ای اجرا کنیم، اگه لازم باشه تنظیمات زیادی انجام بشه یا نیازمندی های زیادی برطرف بشه خیلی زمانبر خواهد بود پس خوبه که نرم افزارو با تمام متعلقاتش به صورت سازگار داشته باشیم. از مزیت های دیگۀ کانتینر میشه به کاهش احتمال رخ دادن خطا اشاره کرد، مثلا سیستم تمام دولوپرها ممکنه از نظر سیستم عامل و کتابخانه های نصب شده یا حتی نسخۀ ابزارهای مورد نیاز با سرور محیط عملیاتی سازگار نباشه و موقع اجرا به مشکل و خطا بخوریم ولی با وجود کانتینر و ایزوله شدنش این اتفاق نمی افته(شباهت محیط اجرا و محیط توسعه نرم افزار). مزیت بعدی در مورد امنیت هست اینکه اگر بخشی دچار بحث امنیتی شد آیا باید روی بقیه هم تاثیر بزاره؟ اگرتا حد امکان کوچک و ایزوله باشن این مشکل به وجود نمیاد. یکی از معروف ترین ابزارهای تولید و اجرای کانتینرها داکر هست، که امکان جابجایی کانتینرها روی سیستم های مختلف رو هم فراهم میکنه.Container orchestration (such as Kubernetes)در بحث قبلی در مورد کانتینرها و داکر صحبت کردیم. ارکستراسیون کانتینر در واقع به سازماندهی کردن و استقرار و مدیریت کردن کانتینرها میگن. ارکستراسیون برای خودکار کردن مقیاس بندی، پیکربندی و برنامه ریزی، تخصیص منابع، تعادل بار،ایمن کردن ارتباطات، مسیریابی ترافیک و ... کانتینر استفاده میشه. وقتی تعداد مولفه های قابل اجرا زیاد میشه تعداد دفعاتی که باید استقرار انجام بدیم هم زیاد میشه و به صورت دستی سخت میشه یا مثلا میخوایم وقتی سرورمون دچار مشکل شد به طور خودکار نرم افزارهای اون سرور روی سرور دیگه ای اجرا بشن و باز هم به صورت دستی این عمل سخت و وقت گیره پس از ارکستراسیون کانتینر برای مدیریت و نگهداری نرم افزار هم استفاده میشه. بدین شکل دیگه خیلی درگیر زیرساخت ها نیستیم و تمرکزمون رو روی مسائل دیگه میگذاریم. یکی از معروف ترین ابزارهای ارکستراسیون کوبرنتیز هست، در کوبرنتیز اول وضعیت موردنظرمون رو مشخص می کنیم و کوبرنتیز سعی میکنه وضعیت رو به همون شکل نگه داره و خطاها رو مدیریت کنه.Container orchestration Log Management Tools (such as ELK) در دنیای کامپیوتر، لاگ به فایلی گفته میشه که رویدادهای خاصی که در سیستم رخ میده رو نگه میداره که معمولا شامل اتفاقاتی ست که در پشت صحنه ی کامپیوتر مثلا در سرور، شبکه، سیستم عامل و ... رخ میدن. همچنین میتونن رویدادهایی باشن که در تراکنش ها اتفاق میفتند یا درخواست های کاربران، خطاهای رخ داده و ..این چه کمکی به ما میکنه؟ کمک میکنه یک توالی از اتفاقات رخ داده در سیستم رو داشته باشیم اینطوری اگر مشکلی رخ بده میتونیم علت اصلی مشکل رو بدست بیاریم و همچنین در حالت عادی سیستم هم میتونیم گزارش ها، اطلاعات مفید و آمارهایی از این رویدادها بدست بیاریم که بتونه به ما کمک کنه برای مثال برای شناسایی تهدیدهای امنیتی یا عیب یابی سیستم نرم افزاری با سرعت بیشتر و یا مانیتورینگ بهتر.حالا چطوری مدیریت لاگ رو انجام بدیم؟ چون فایل های لاگ بسیار بزرگ و حجیم هستند و همچنین قالب های متفاوتی دارند چون در جاهای مختلف ممکنه تولید بشن، باید این هارو جمع آوری، متمرکز، استاندارد و سازماندهی کنیم تا بتونیم ازشون استفاده کنیم و اطلاعات ارزشمندی رو بیرون بکشیم، پس نیاز به ابزار داریم. مدیریت لاگ شامل مراحل جمع آوری لاگ، متمرکز کردن لاگ ها، ذخیره سازی و نگهداری طولانی مدت لاگ، تجزیه و تحلیل لاگ و جستجو در لاگ و استخراج اطلاعاتیکی از ابزارهای مدیریت لاگ ابزار ELK یا Elastic stack هست که یکی از پرکاربردترین ابزارهاست که خودش شامل Elastic search(یک موتور جستجوی متن باز)، Kibana(ابزار تجسم و تصویرسازی داده ها)، Beats(ذخیرۀ مستمر لاگ ها در یک مخزن داده)، Logstash(مخزن داده که عملیات روی فایلهای لاگ انجام میشه)ELKMonitoring tools (such as Prometheus)اولین چیزی که توضیح میدم این هست که مانیتورینگ چیه؟ مانیتورینگ به این معنا هست که تمام ترافیک های ورودی و خروجی یک برنامه، تمام فعالیت های کاربران و برنامه رو لاگ کنیم یعنی هم فعالیت های معمولی و هم غیر معمولی رو ثبت کنیم و همواره با قوانین سیستم یا حالت عادی سیستم بررسی کنیم، تا به محض اینکه متوجه مشکلی شدیم مثلا ادمین سیستم رو مطلع کنیم. حالا این مانیتورینگ میتونه به شکل یک نرم افزار کامل باشه، یا یک کاربر یا حتی فایروال های نرم افزاری یا سخت افزاری. سیستم های مانیتورینگ برای پیگیری منابع سیستم(مقدار استفادۀ Ram، Cpu و ...)، اطلاعات شبکه(نرخ بار روی سیستم، خنک سازی سیستم و ...)، اتوماسیون سیستم ها و... استفاده میشه، در واقع امروزه مانیتورینگ یک بخش مهم و اصلی تو همۀ سازمان ها هست، به خصوص سازمان های بزرگ مثل خودروسازی، پتروشیمی و ...مانتیورینگ باعث میشه که نظارت مداوم به سیستم داشته باشیم که این باعث میشه کیفیت کار ما به شدت بره بالا و اگر مشکلی بوجود اومد سریع حل بشه (با تهیه گزارش، ارسال نوتیفیکیشن و هشدار) و درنهایت تجربه کاربر نهایی از سیستم بسیار خوب و رضایت بخش باشه. یکی از ابزارهای مانیتورینگ Prometheusهست که متن بازه که حالات مختلف نمودارها رو پشتیبانی میکنه و بسیار انعطاف پذیره و یک مدل دادۀ چند بعدی هست، داده های سری زمانی داره که با جفت های کلید و مقدار مشخص شدند. همچنین نکته مثبت این ابزار قابلیت اطمینان بالای اون هست که امکان تشخیص سریع مشکلات رو میده.Static Code Analysis (such as SonarQube)تحلیل استاتیک کد یا تحلیل سورس کد یعنی اینکه ما کدهای برنامه رو بازبینی کنیم، یعنی بدون اینکه کد رو اجرا کنیم سعی کنیم ساختار کد رو درک کنیم و خطاهایی که ممکنه برنامه نویس کرده باشه رو پیدا کنیم، به این تحلیل، تحلیل جعبه سفید هم میگن چون مستقیما به کدها نگاه میکنیم و دنبال ایراد در کد هستیم. پس به این شکل هست که خط به خط کدهارو نگاه می کنیم تا خطاهای احتمالی رو پیدا کنیم یا اینکه آیا طبق استاندارد نوشته شده یا نه رو چک کنیم. حالا این تحلیل استاتیک به 2 شکل میتونه انجام بشه، یک حالت به صورت دستی(Mannual Review) هست یعنی اول خود برنامه نویس شروع کنه کدهاش رو از اول بررسی کنه تا ببینه خطایی وجود داره که سهوا انجام شده باشه یا نه، بعدش میتونه این کدهارو برای اینکه همکارانش چک کنند به اونها بده اگر این گام انجام شه خیلی بهتره چون از نگاه شخص دیگه ممکنه مشکلاتی دیده بشه که خود برنامه نویس متوجه نشده. نکته مهم این هست که این فاز قبل از تست نرم افزاره و در مراحل اولیه ست یا میشه گفت در مراحل پیاده سازی نرم افزار. اما مهم ترین مشکلی که تحلیل به صورت دستی داره زمانبر بودن اون هست پس ما باید از روش های اتوماتیک استفاده کنیم، روش های اتوماتیک سریعتر هستند و میتونن برنامه هارو به دفعات بیشتری بررسی کنن، نکات خوب و دقیقی رو از باگ های پیچیده تر پیدا کنن، بیشتر به دنبال الگوهای ثابتی از قوانین تو کدها هستن، میتونن نقص های امنیتی و backdoorها رو با احتمال درستی زیادی کشف کنن، پیشنهادهایی برای فرمت کد بدن و همچنین محاسبه متریکی برای کیفیت کد مورد نظر به ما بدن. یکی از این ابزارها که برای زبان های مختلف قابل بررسی هست SonarQube نام داره، که برای بیشتر از 20 زبان برنامه نویسی قابل استفاده ست و اگر مشکلی تو کیفیت یا امنیت کد باشه به صورت خودکار میتونه هشدار بده و همچنین اینکه رایگانه و باعث دهای تمیزتر و ایمن تر میشه.البته نکته مهمی که وجود داره اینه که خروجی ابزارهای تحلیل ایستا هنوز نیاز به ارزیابی انسانی دارن، بنابراین هیچ راهی برای اجتناب از مطالعه خروجی و قضاوت در مورد اینکه کدام مسائل باید برطرف شوند و کدام یک سطح قابل قبولی از برنامه نویسی رو نشان میدن وجود نداره.Continuous Deliveryتحویل مستمر یا  Continuous Delivery یا CD، بخشی از فرایند CI/CD هست که برای خودکارکردن مراحل توسعۀ نرم افزار برای ارائۀ پیوستۀ نرم افزار هست. CI به معنای ادغام پیوسته و CD همانطور که گفته شد به معنای تحویل پیوسته. CI به این معنی هست که ما باید به صورت مداوم یکپارچه سازی رو انجام بدیم، تغییرات کد رو اعمال کنیم و آزمایش کنیم و در یک جای مشخص این تغییرات کدها رو ادغام کنیم برای مثال اگر چند تیم به طور مستقل توسعه نرم افزار رو انجام میده در نهایت این branchهایی که هرکدوم تولید می کنند با همدیگه دچار مشکل یا تضاد نباشن. اما CD به این معنی هست که تیم توسعه باید همیشه آماده باشه که جدیدترین نسخه نرم افزار خودش رو منتشر کنه(یعنی تمامی ادغام ها از قبل صورت گرفتن و مشکلی وجود نداره!)، حتی اگر تیم های زیادی داریم و نرم افزار ما توزیع شده هست، این فرایند تحویل یا ارائۀ نرم افزار باید ساده و راحت انجام بشه و ما برای هر تغییراتی در نرم افزار آماده باشیم. از مزایای تحویل مستمر میشه به زمان سریعتر برای بازاریابی، هزینه های پایین تر برای ایجاد تغییرات، تیم های توسعه شادتر(برای اینکه نتیجۀ کارشون رو زود به زود میتونن مشاهده کنن)، محصول باکیفیت تر، کم ریسک بودن انتشار نرم افزار، قابلیت اندازه گیری پیشرفت و گرفتن بازخورد کاربران به صورت سریع تر اشاره کرد. این فرایند یا به صورت کلی فرایند CI/CD با DevOps در ارتباط هست(مفهومشون نزدیک بهم هست اما کاملا مشابه نیستند) چون دواپس هم به دنبال خودکار سازی فرایند تحویل نرم افزار و ارائه خدمات به صورت سریع و با کیفیت هست وازاین نظر مشابه هستند. نتیجه اصلی اجرای DevOps یک خط لوله CI/CD هست که توسط تیم های توسعه و عملیاتی که با همدیگه با استفاده از یک روش چابک کار می کنن پشتیبانی میشه.CI/CDشباهت DevOps و CI/CDSingle Sign on (SSO) and Identity Managementهمونطور که از اسمش مشخصه یک روش احراز هویت هست، که به کاربران این اجازه رو میده که تنها با یک بار لاگین کردن بتونن به سرویس های مختلف اون سازمان دسترسی داشته باشن و دیگه احتیاجی به احراز هویت نباشه! برای مثال شرکت گوگل رو در نظر بگیرید، کاربر با وارد شدن به حساب گوگل، می‌تواند به سرویس‌های متعددی از این شرکت دسترسی پیدا کنه. در واقع با استفاده از SSO به جای چندین رمز عبور فقط به یک رمز عبور نیاز خواهید داشت. SSO به دوران به خاطر سپردن و وارد کردن چندین رمز عبور پایان میده و مشکلاتreset کردن پسوردهای فراموش شده را از بین میبره . پس کاربران می‌توانند به تعداد زیادی اپلیکیشن و پلتفرم دسترسی داشته باشند بدون این که لازم باشد هر بارlog in کنند. درواقع وقتی که یک کاربر توسط یک سیستم مورد اعتماد قرار می گیره، به طور خودکار به سایر سیستم‌هایی که رابطه قابل اعتماد با آن برقرار کردن دسترسی پیدا می کنه. وقتی کاربر وارد میشه یه توکن احراز هویت براش ایجاد میشه و تو مرورگر کاربر یا داخل سرورهای SSO ذخیره میشه و بعدا برای تایید هویتش بررسی میشه، این روش کارکرد SSO هست. SSO  و Identity Management اغلب با هم استفاده میشن. SSO تو یک دامنه واحد دسترسی رو ممکن میکنه اما Identity Management ورود یکباره به برنامه های کاربردی رو در چندین دامنه یا سازمان ممکن میکنه.SSOService Meshمش سرویس یک لایه زیرساخت اختصاصی هست که ارتباطات سرویس به سرویس رو روی یک شبکه کنترل می کنه. مش سرویس ها میتونن ارتباط سرویس به سرویس را سریع، قابل اعتماد و ایمن کنن. این روش میتونه باعث بشه بخش های مختلف یک برنامه با همدیگه ارتیاط برقرار کنن و معمولا تو برنامه هایی که از کانتینر و میکروسرویس استفاده میکنن، ظاهر میشن.مش سرویس برای تعادل بار، بازیابی مشکلات و خرابی ها، قابل اطمینان کردن ارتباطات کانتینری و میکروسرویسی، رمزگذاری ارتباطات و تعیین خط مشی های امنیتی به صورت خودکار(روش هایی مثل احراز هویت) میتونه استفاده بشه.اما از معایب مش سرویس میشه به افزایش زمان اجرا و پیچیدگی پیکربندی و ادغام اون اشاره کرد. برخی از ابزارهای مش سرویس: Istio، Linkerd، Tetrate، Kuma و ...«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»</description>
                <category>نيلوفر وهناني</category>
                <author>نيلوفر وهناني</author>
                <pubDate>Tue, 22 Nov 2022 22:07:58 +0330</pubDate>
            </item>
            </channel>
</rss>