🔰 #معماری_نرم_افزار
🟠 معماری نرمافزار فرایند تعریف یا راه حل نرمافزاری ساختار منداست یه شکلی که بتواند کلیه نیازمندیهای فنی و عملیاتی مورد انتظار را، پوشش دهد.
🟡 این فرایند باید به شکلی انجام شود که معیارهای کیفی مانند بهره دهی ، امنیت و قابلیت اطمینان و مدیریتپذیری ، بهینه شده باشند.
🟣 فیلیپ کرچن و گریدی بوش معماری نرمافزار را به صورت زیر تعریف می نمایند:
🖇 "معماری نرمافزار شامل تصمیمات کلیدی راجع به ساختار یک سیستم نرمافزاری است که شامل انتخاب اجزای سازنده نرمافزار و رابطههای آنها است . همچنین رفتار این اجزا را به عنوان تعاملی که باهم برای ساختن یک زیر سیستم بزرگتر ، انجام میدهند ، مشخص می سازد. معماری نرمافزار همچنین ، کارکردها ، قابلیت استفاده ،انعطاف پذیری، عملکرد ، استفاده مجدد، قابل درک بودن، محدودیتهای اقتصادی و فناوری، نحوه تبادل اطلاعات و جنبههای زیبایی سیستم نرمافزاری را شامل میشود."
🖥 @FunProGraming
🟠 معماری نرمافزار فرایند تعریف یا راه حل نرمافزاری ساختار منداست یه شکلی که بتواند کلیه نیازمندیهای فنی و عملیاتی مورد انتظار را، پوشش دهد.
🟡 این فرایند باید به شکلی انجام شود که معیارهای کیفی مانند بهره دهی ، امنیت و قابلیت اطمینان و مدیریتپذیری ، بهینه شده باشند.
🟣 فیلیپ کرچن و گریدی بوش معماری نرمافزار را به صورت زیر تعریف می نمایند:
🖇 "معماری نرمافزار شامل تصمیمات کلیدی راجع به ساختار یک سیستم نرمافزاری است که شامل انتخاب اجزای سازنده نرمافزار و رابطههای آنها است . همچنین رفتار این اجزا را به عنوان تعاملی که باهم برای ساختن یک زیر سیستم بزرگتر ، انجام میدهند ، مشخص می سازد. معماری نرمافزار همچنین ، کارکردها ، قابلیت استفاده ،انعطاف پذیری، عملکرد ، استفاده مجدد، قابل درک بودن، محدودیتهای اقتصادی و فناوری، نحوه تبادل اطلاعات و جنبههای زیبایی سیستم نرمافزاری را شامل میشود."
🖥 @FunProGraming
Forwarded from Deleted Account
🔵 مدیر عامل شرکت طرفه نگار (نرم افزار هلو )
⁉️ سوالات خود را از مرد اول تولید و فروش نرم افزار ایران بصورت زنده بپرسید
🔴 فقط فالوور های پیج میتوانند لایو را ببینند
🔔 ضمنا لایو ذخیره نخواهد شد
👇👇👇👇👇👇
👉 https://www.instagram.com/mohsenmodhejofficial
⁉️ سوالات خود را از مرد اول تولید و فروش نرم افزار ایران بصورت زنده بپرسید
🔴 فقط فالوور های پیج میتوانند لایو را ببینند
🔔 ضمنا لایو ذخیره نخواهد شد
👇👇👇👇👇👇
👉 https://www.instagram.com/mohsenmodhejofficial
کاری که یک برنامه نویس در یک ماه انجام میده ، دو برنامه نویس در دو ماه انجام میدن :/
-فرد بروکز
🖥 @FunProGraming
-فرد بروکز
🖥 @FunProGraming
🔰 دسته بندی #معماری_نرم_افزار
🔸معماری را میتوان از جنبههای مختلف مورد بررسی قرار داد. یک طراح پایگاه داده، همیشه از معماری داده صحبت میکند، طراح نرمافزار، از معماری نرمافزار و مدیر ارشد IT سازمان، از معماری اطلاعات سخن میگویند. برای معماری، دستهبندی خاصی در مراجع وجود ندارد ولی در برخی منابع ، برخی معماری های موجود را تشریح کرده است. در ادامه به معرفی عمده معماری های موجود میپردازیم که به صورت زیر میباشد :
1) معماری سیستم (System Architecture)
2) معماری نرمافزار (Software Architecture)
3) معماری سازمان (Enterprise Architecture)
4) معماری کسب و کار (Business Architecture)
5) معماری اطلاعات (Information Architecture)
6) معماری کاربرد (Application Architecture)
7) معماری داده (Data Architecture)
8) معماری تکنولوژی (Technology/Infrastructure Architecture)
9) معماری مرجع (Reference Architecture)
10) معماری خط تولید (Product-Line Architecture)
🖥 @FunProGraming
🔸معماری را میتوان از جنبههای مختلف مورد بررسی قرار داد. یک طراح پایگاه داده، همیشه از معماری داده صحبت میکند، طراح نرمافزار، از معماری نرمافزار و مدیر ارشد IT سازمان، از معماری اطلاعات سخن میگویند. برای معماری، دستهبندی خاصی در مراجع وجود ندارد ولی در برخی منابع ، برخی معماری های موجود را تشریح کرده است. در ادامه به معرفی عمده معماری های موجود میپردازیم که به صورت زیر میباشد :
1) معماری سیستم (System Architecture)
2) معماری نرمافزار (Software Architecture)
3) معماری سازمان (Enterprise Architecture)
4) معماری کسب و کار (Business Architecture)
5) معماری اطلاعات (Information Architecture)
6) معماری کاربرد (Application Architecture)
7) معماری داده (Data Architecture)
8) معماری تکنولوژی (Technology/Infrastructure Architecture)
9) معماری مرجع (Reference Architecture)
10) معماری خط تولید (Product-Line Architecture)
🖥 @FunProGraming
⚜ #معماری_نرم_افزار (معماری سیستم)
🔅بالاترین مفهوم در دستهبندیهای معماری، معماری سیستم میباشد. مفهوم معماری نرم افزار و معماری سیستم تقریباً یکسان است. به این دلیل که در بیان تعربف معماری نرم افزار در اصل معماری یک سیستم را تعریف میکنیم که این سیستم میتواند هر چیزی باشد. تعریف معماری سیستم را [IEEE 1471-00] ارائه میکنیم.
🔅معماری سیستم، مجموعهای است از موجودیت های یک سیستم، خصوصیات هر یک از آنها و رابطه بین آنها که یک ساختار برای سیستم تعریف میکنند.
🔅 اگر بخواهیم یک تعریف برای معماری نرمافزار (معماری سیستمهای نرمافزاری) یا معماری سیستمهای دیگر (مثل معماری سیستمهای تولیدی) ارائه کنیم، کافی است در تعریف معماری سیستم، بجای “موجودیتها”، موجودیتهای سیستم مورد نظر را قرار دهیم. ولی آنچه از مفهوم معماری برمیآید اینست که معماری، ساختارهای سطح بالای یک سیستم را شامل میشود. درنتیجه اگر بخواهیم تعریف معماری سیستم را برای سیستم های دیگری مثل سیستم های نرمافزاری بیان کنیم، باید موجودیتهای سطح بالای آن را بیان کنیم و در قسمت خصوصیات، چون به صورت Black Box به اجزاء نگاه میکند، فقط خصوصیات بیرونی آنها را در نظر میگیریم. موجودیتهای سطح بالای سیستمهای نرمافزاری، موئلفه های نرمافزاری و زیرسیستم های آن میباشند. درنتیجه تعریف معماری نرمافزار، بر اساس معماری سیستم، بدین صورت باید باشد:
معماری نرمافزار، مجموعه زیرسیستم ها و موئلفهها، خصوصیات بیرونی هر یک از آنها و ارتباطات بین آنها است که یک ساختار برای نرمافزار تعریف میکند.
🖥 @FunProGraming
🔅بالاترین مفهوم در دستهبندیهای معماری، معماری سیستم میباشد. مفهوم معماری نرم افزار و معماری سیستم تقریباً یکسان است. به این دلیل که در بیان تعربف معماری نرم افزار در اصل معماری یک سیستم را تعریف میکنیم که این سیستم میتواند هر چیزی باشد. تعریف معماری سیستم را [IEEE 1471-00] ارائه میکنیم.
🔅معماری سیستم، مجموعهای است از موجودیت های یک سیستم، خصوصیات هر یک از آنها و رابطه بین آنها که یک ساختار برای سیستم تعریف میکنند.
🔅 اگر بخواهیم یک تعریف برای معماری نرمافزار (معماری سیستمهای نرمافزاری) یا معماری سیستمهای دیگر (مثل معماری سیستمهای تولیدی) ارائه کنیم، کافی است در تعریف معماری سیستم، بجای “موجودیتها”، موجودیتهای سیستم مورد نظر را قرار دهیم. ولی آنچه از مفهوم معماری برمیآید اینست که معماری، ساختارهای سطح بالای یک سیستم را شامل میشود. درنتیجه اگر بخواهیم تعریف معماری سیستم را برای سیستم های دیگری مثل سیستم های نرمافزاری بیان کنیم، باید موجودیتهای سطح بالای آن را بیان کنیم و در قسمت خصوصیات، چون به صورت Black Box به اجزاء نگاه میکند، فقط خصوصیات بیرونی آنها را در نظر میگیریم. موجودیتهای سطح بالای سیستمهای نرمافزاری، موئلفه های نرمافزاری و زیرسیستم های آن میباشند. درنتیجه تعریف معماری نرمافزار، بر اساس معماری سیستم، بدین صورت باید باشد:
معماری نرمافزار، مجموعه زیرسیستم ها و موئلفهها، خصوصیات بیرونی هر یک از آنها و ارتباطات بین آنها است که یک ساختار برای نرمافزار تعریف میکند.
🖥 @FunProGraming
🌐 #معماری_نرم_افزار
💠 یکی از زیر شاخههای مهم و اصلی در مهندسی نرمافزار به شمار میرود.
💠 معماری باعث تقسیم بندی یک کل به بخش ها، و ارتباط بین بخش ها میشود که باعث بوجود آمدن گروه هایی از افراد، به صورت سازمانی، جغرافیایی یا در حدود و اندازههای مختلف میشود که به صورت مشترک برای حل یک مسئله بزرگ، تلاش میکنند.
💠 معماری یک راه حل تقسیم غلبه برای حل مسائل میباشد، به طوری که یک کل را به بخش ها شکسته و بعد از حل هر یک از بخشها، با استفاده از ارتباط بین بخش ها، باعث حل مسئله اصلی میشود.
💠 مفهوم معماری نرمافزار، طراحی سطح بالا میباشد. یعنی فاز طراحی را به دو سطح، طراحی سطح بالا و طراحی با جزئیات تقسیم میکنیم. در حقیقت هدف مشخص کردن دقیقتر حد فاصل این دو سطح میباشد به طوریکه بتوان هر عامل در فاز طراحی را در یکی از این دو سطح قرار داد.
🖥 @FunProGraming
💠 یکی از زیر شاخههای مهم و اصلی در مهندسی نرمافزار به شمار میرود.
💠 معماری باعث تقسیم بندی یک کل به بخش ها، و ارتباط بین بخش ها میشود که باعث بوجود آمدن گروه هایی از افراد، به صورت سازمانی، جغرافیایی یا در حدود و اندازههای مختلف میشود که به صورت مشترک برای حل یک مسئله بزرگ، تلاش میکنند.
💠 معماری یک راه حل تقسیم غلبه برای حل مسائل میباشد، به طوری که یک کل را به بخش ها شکسته و بعد از حل هر یک از بخشها، با استفاده از ارتباط بین بخش ها، باعث حل مسئله اصلی میشود.
💠 مفهوم معماری نرمافزار، طراحی سطح بالا میباشد. یعنی فاز طراحی را به دو سطح، طراحی سطح بالا و طراحی با جزئیات تقسیم میکنیم. در حقیقت هدف مشخص کردن دقیقتر حد فاصل این دو سطح میباشد به طوریکه بتوان هر عامل در فاز طراحی را در یکی از این دو سطح قرار داد.
🖥 @FunProGraming
🔶 مفهوم کیفیت #نرم_افزار و مشخصه های کیفی
🔹 سیستم های کامپیوتری در بسیاری از برنامههای کاربردهای بحرانی مورد استفاده قرار میگیرد. در این برنامهها یک نقص میتواندعواقب زیادی را به دنبال داشته باشد. توسعه دهندگان این سیستم ها، مسئول تشخیص و تعیین نیازمندی های این برنامههای کاربردی و ایجاد سیستم برای محقق سازی این نیازمندی ها هستند.
🔹 توسعه دهندگان سیستم های بحرانی، ابتدا نیازمندیهای برنامه مورد نظر را شناسایی میکنند، نرمافزار مورد نظر را طوری توسعه میدهند که نیازمندیهای مورد نظر را با منابع مقتضی پوشش داده شوند.
🔹 سیستم های بحرانی در حالت کلی نیازمند برخی مشخصههای دیگر نیز هستند که میتوان به کارایی، وابستگی، امنیت، سلامتی و برخی نیازهای مشابه اشاره کرد.
🔹 نیازمندیها در حالت کلی به دو دسته نیازمندیهای عملیاتی و نیازمندی های غیرعملیاتی تقسیم میشوند. نیازمندی های عملیاتی، عبارتست از توانایی سیستم در انجام کاری که برای آن ایجاد شده است. نیازمندیهای غیرعملیاتی که تحت عنوان مشخصههای کیفی از آنها یاد میشود، هر آنچه که غیر از نیازمندی های عملیاتی سیستم باشد، در این دسته قرار میگیرند. مانند کارایی، امنیت، هزینه ساخت و… .
🔹 کیفیت نرمافزار به صورت مستقیم با توانایی یک سیستم در قبال نحوه انجام نیازمندیهای عملیاتی و غیرعملیاتی آن در ارتباط میباشد. یک سیستم میتواند شامل مشخصههای زیادی همچون کارایی، قابلیت نگهداری، امنیت و… باشد. کیفیت هر یک از مشخصههای موجود، بر کیفیت کل سیستم تاثیر دارد. یعنی کیفیت کل سیستم تابعی از کیفیت تکتک این مشخصهها میباشد.
🔹 لازم به ذکر است که همیشه کیفیت این مشخصهها قابل اندازهگیری نیست.
🖥 @FunProGraming
🔹 سیستم های کامپیوتری در بسیاری از برنامههای کاربردهای بحرانی مورد استفاده قرار میگیرد. در این برنامهها یک نقص میتواندعواقب زیادی را به دنبال داشته باشد. توسعه دهندگان این سیستم ها، مسئول تشخیص و تعیین نیازمندی های این برنامههای کاربردی و ایجاد سیستم برای محقق سازی این نیازمندی ها هستند.
🔹 توسعه دهندگان سیستم های بحرانی، ابتدا نیازمندیهای برنامه مورد نظر را شناسایی میکنند، نرمافزار مورد نظر را طوری توسعه میدهند که نیازمندیهای مورد نظر را با منابع مقتضی پوشش داده شوند.
🔹 سیستم های بحرانی در حالت کلی نیازمند برخی مشخصههای دیگر نیز هستند که میتوان به کارایی، وابستگی، امنیت، سلامتی و برخی نیازهای مشابه اشاره کرد.
🔹 نیازمندیها در حالت کلی به دو دسته نیازمندیهای عملیاتی و نیازمندی های غیرعملیاتی تقسیم میشوند. نیازمندی های عملیاتی، عبارتست از توانایی سیستم در انجام کاری که برای آن ایجاد شده است. نیازمندیهای غیرعملیاتی که تحت عنوان مشخصههای کیفی از آنها یاد میشود، هر آنچه که غیر از نیازمندی های عملیاتی سیستم باشد، در این دسته قرار میگیرند. مانند کارایی، امنیت، هزینه ساخت و… .
🔹 کیفیت نرمافزار به صورت مستقیم با توانایی یک سیستم در قبال نحوه انجام نیازمندیهای عملیاتی و غیرعملیاتی آن در ارتباط میباشد. یک سیستم میتواند شامل مشخصههای زیادی همچون کارایی، قابلیت نگهداری، امنیت و… باشد. کیفیت هر یک از مشخصههای موجود، بر کیفیت کل سیستم تاثیر دارد. یعنی کیفیت کل سیستم تابعی از کیفیت تکتک این مشخصهها میباشد.
🔹 لازم به ذکر است که همیشه کیفیت این مشخصهها قابل اندازهگیری نیست.
🖥 @FunProGraming
🔳 سبک ها و الگوهای #معماری_نرم_افزار و نحوه ارزیابی و انتخاب آن ها
◽️ هر سیستم، از مولفههای مختلفی تشکیل شده است. هر سیستم را میتوان به روش های مختلف به مولفهها و روابط بین آنها شکست. در حقیقت سیستم ها را میتوان به مجموعههای مختلفی از موئلفهها و روابط بین آنها، افراز کرد.
◾️ برای سیستم های نرمافزاری، روشهای مختلفی برای شکستن سیستم به اجزاء و روابط، وجود دارد که هر کدام از این روش ها در سطوح بالا، یک معماری برای سیستم مورد نظر خواهند بود.
◽️ برخی از این روش ها یا معماریها، توسط معماران نرمافزار بارها برای سیستم های خاص ارائه شدهاند و به کرات مورد استفاده قرار گرفتهاند و کاربرد ها و توانایی های آنها تائید شده است و مجموعهای از معماریها و الگوهای معماری تشکیل شده است که معماران را در ارائه معماریها، یاری میکنند.
◾️ یعنی معماران، برای ارائه یک سبک معماری، میتوانند از این مجموعه از معماریها، استفاده کنند. هر یک از معماریهای این مجموعه را یک سبک معماری میگویند.
🖥 @FunProGraming
◽️ هر سیستم، از مولفههای مختلفی تشکیل شده است. هر سیستم را میتوان به روش های مختلف به مولفهها و روابط بین آنها شکست. در حقیقت سیستم ها را میتوان به مجموعههای مختلفی از موئلفهها و روابط بین آنها، افراز کرد.
◾️ برای سیستم های نرمافزاری، روشهای مختلفی برای شکستن سیستم به اجزاء و روابط، وجود دارد که هر کدام از این روش ها در سطوح بالا، یک معماری برای سیستم مورد نظر خواهند بود.
◽️ برخی از این روش ها یا معماریها، توسط معماران نرمافزار بارها برای سیستم های خاص ارائه شدهاند و به کرات مورد استفاده قرار گرفتهاند و کاربرد ها و توانایی های آنها تائید شده است و مجموعهای از معماریها و الگوهای معماری تشکیل شده است که معماران را در ارائه معماریها، یاری میکنند.
◾️ یعنی معماران، برای ارائه یک سبک معماری، میتوانند از این مجموعه از معماریها، استفاده کنند. هر یک از معماریهای این مجموعه را یک سبک معماری میگویند.
🖥 @FunProGraming
🔻معرفی برخی از سبک های متداول در #معماری_نرم_افزار
• سبک های متمرکز روی داده
• سبک های جریان داده ای
• سبک های ماشین مجازی
• سبک های فراخوانی و بازگشت
• سبک های سیستم شی گرا
🖥 @FunProGraming
• سبک های متمرکز روی داده
• سبک های جریان داده ای
• سبک های ماشین مجازی
• سبک های فراخوانی و بازگشت
• سبک های سیستم شی گرا
🖥 @FunProGraming
🔰مجموعه اجزا و #معماری_نرم_افزار و ارتباط بین آن ها
🔸 معماری نرمافزار، مجموعهای از اجزاء معماری و خصوصیات و رفتارهای بیرونی آنها و ارتباط بیرونی بین آنها است.
🔸 نکته بعدی که در شناخت و تحلیل معماری نرمافزار وجود دارد اینست که این اجزاء باید سطح مند باشند. یعنی تشکیل یک ساختار سطح مند از اجزاء و روابط، میدهند. ولی ممکن است چندین نوع ساختار ارائه دهیم.
🔸 به عنوان مثال در پروژههای مقیاس بزرگ، اجزاء مختلف بین تیمه ای مختلف تقسیم میشود.
🔸 فرض کنید برای چنین کاری یکبار سیستم را به صورت عملیاتی (تابعی) بین تیم تقسیم کنیم و بار دیگر به صورت دادهای بین تیمهای دیگر تقسیم کنیم.
🔸 در نتیجه ساختارهای متفاوتی برای توصیف یک سیستم مورد نظر خواهیم داشت. در نهایت معماری ساختارهایی از سیستم مورد نظر میباشد که این ساختارها اجزاء معماری و فقط خصوصیات و رفتارهای بیرونی هر جزء و ارتباط بیرونی بین آنها خواهد بود.
🖥 @FunProGraming
🔸 معماری نرمافزار، مجموعهای از اجزاء معماری و خصوصیات و رفتارهای بیرونی آنها و ارتباط بیرونی بین آنها است.
🔸 نکته بعدی که در شناخت و تحلیل معماری نرمافزار وجود دارد اینست که این اجزاء باید سطح مند باشند. یعنی تشکیل یک ساختار سطح مند از اجزاء و روابط، میدهند. ولی ممکن است چندین نوع ساختار ارائه دهیم.
🔸 به عنوان مثال در پروژههای مقیاس بزرگ، اجزاء مختلف بین تیمه ای مختلف تقسیم میشود.
🔸 فرض کنید برای چنین کاری یکبار سیستم را به صورت عملیاتی (تابعی) بین تیم تقسیم کنیم و بار دیگر به صورت دادهای بین تیمهای دیگر تقسیم کنیم.
🔸 در نتیجه ساختارهای متفاوتی برای توصیف یک سیستم مورد نظر خواهیم داشت. در نهایت معماری ساختارهایی از سیستم مورد نظر میباشد که این ساختارها اجزاء معماری و فقط خصوصیات و رفتارهای بیرونی هر جزء و ارتباط بیرونی بین آنها خواهد بود.
🖥 @FunProGraming