Software Philosophy
3.46K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
اگر دوستانی دارید که نه تنها برنامه نویس هستند، بلکه اعتقاد دارید «مهندس نرم‌افزار» هم هستند، آنها را به کانال @SoftwarePhilosophy دعوت کنید.
این پیغام را برای آنها Forward کنید.
یکی از مباحثی که همیشه در تشکیل تیم‌های نرم‌افزاری مطرح است، انتخاب زبان برنامه‌نویسی و یا تکنولوژی‌های مورد استفاده است. مقایسه محصولات موفق و نا موفق نشان می‌دهد هیچکدام از آنها صرفا با یک تکنولوژی و یا یک زبان خاص نوشته نشده‌اند. برای مثال سیستم‌های موفق زیادی وجود دارند که با Java و یا C# نوشته شده‌اند. همچنین سیستم‌های بی کیفیت زیادی نیز وجود دارد که با Java و یا C# نوشته شده‌اند. این حقیقت نشان می‌دهد دلیل موفقیت یا شکست سیستم‌ها نمی‌تواند زبان برنامه‌نویسی باشد. مقاله زیر توضیح می‌دهد که چطور طرز فکر برنامه‌نویس‌ها موفقیت و یا شکست یک سیستم را رقم می‌زند.

https://mehrandvd.me/2015/10/15/software-quality-comes-from-people-not-languages/

#مهران_داودی
https://ir.linkedin.com/in/mehrandvd


کانال تلگرام:
@SoftwarePhilosophy

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

https://uxmag.com/articles/the-price-of-not-using-ux-patterns

#مهران_داودی
https://ir.linkedin.com/in/mehrandvd


کانال تلگرام:
@SoftwarePhilosophy

___
یکی از مهمترین پارامترهای یک کد خوب، نامگذاری صحیح متغییر‌ها، متدها، کلاس‌ها و سایر اجزای برنامه‌نویسی است. در هر زبان برنامه نویسی معمولا Convention هایی وجود دارد که رعایت آنها باعث می‌شود کد شما برای سایر برنامه‌نویسان آن زبان نیز خوانا باشد. اگر شما با زبان‌هایی مانند C# یا VB.NET برنامه می‌نویسید، مستند زیر استاندارد نامگذاری رعایت شده در .NET Framework را نشان می‌دهد. این مستند که به FDG یا Framework Design Guidelines معروف است، مستند استانداردی است که قبل ساخته شدن .Net Framework توسط یک تیم خبره نوشته شد و تمام تیم‌های برنامه نویسی داخل شرکت مایکروسافت موظف به رعایت آن هستند. این مستند هم به صورت کتابی به همین نام منتشر شده و هم همیشه آخرین نسخه آن از طریق لینک زیر قابل مطالعه و دسترسی است.

https://msdn.microsoft.com/en-us/library/ms229002%28v=vs.110%29.aspx

#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd


کانال تلگرام:
@SoftwarePhilosophy


___
Forwarded from SQL Server
با سلام و عرض ادب خدمت دوستان گرامی.
پیرو مبحث Internet Of Things پیشنهاد میکنم حتما فیلم زیر رو مشاهده کنید که در Channel9 توسط مایکروسافت قرارداده شده است.
برای خودم جالب هست که چطور میشه کارهای خودمون رو با این موضوع پیوند بزنیم.به عنوان مثال ارتباط سرورها و دیتابیس ها با DBA ها یا موارد دیگر.خوشحال میشم پیشنهادات شما رو هم بشنوم . شاید بشه بعضی از ایده ها رو پیاده سازی کرد و درآمدهای قابل توجهی رو کسب کرد.


ارادتمند شما
#حمیدرضا_صادقیان
@Hamidreza_Sadeghian

https://channel9.msdn.com/Events/FutureDecoded/Future-Decoded-2015-UK/3
تجربه مدیر توسعه سیستم SimplyDesk پس از ۳ سال کار تیمی روی این محصول. اسد صفری تجربیات خود را در این پروژه در بلاگش نوشته‌است که بسیاری از آنها می‌تواند برای سایر تیم‌های نرم‌افزاری نیز مفید باشد. چالش‌های کار تیمی، ارتباط با مشتری برای فهمیدن نیاز‌های واقعی از جمله مطالب این پست است.

https://blog.scrum.ir/2016/03/report-of-an-agile-project-simplydesk/

#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd


کانال تلگرام:
@SoftwarePhilosophy


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


https://mehrandvd.me/2015/07/16/goalkeepers-vs-leaders-2/

#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd


کانال تلگرام:
@SoftwarePhilosophy


___
در کنفرانس BUILD 2016 امکان اجرای کامندهای Bash و باینری‌های Ubuntu Linux روی ویندوز ۱۰ نمایش داده شد. طبق مطالب گفته شده در کنفرانس که توسط Kevin Gall ارائه شد، این کامندها مستقیما روی سیستم عامل اجرا خواهد شد و ماشین مجازی (VM) در میان نخواهد بود.
کامندهای Bash ابزاری معادل Command یا PowerShell در سیستم عامل لینوکس است که بسیار قدرتمند و محبوب است. لینک توضیحات بیشتری را در مورد این قابلیت می‌دهد.

https://www.hanselman.com/blog/DevelopersCanRunBashShellAndUsermodeUbuntuLinuxBinariesOnWindows10.aspx

#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd


کانال تلگرام:
@SoftwarePhilosophy


___
مایکروسافت کیت برنامه نویسی HoloLens را منتشر کرد. همچنین کد یک برنامه به نام Galaxy Explorer که به کاربران اجازه می‌دهد به وسیله HoloLens در واقعیت مجازی در کهکشان حرکت کنند در اختیار برنامه نویسان قرار داده شده‌است. برنامه‌نویسان می‌توانند هم این کد را تغییر دهند و هم از هر قسمتی از این کد در نرم‌افزارهای خود استفاده کنند. در لینک زیر ویدئویی که برای کهکشان ساخته شده را می‌توانید ببینید.
https://www.theverge.com/2016/3/30/11319882/microsoft-hololens-shipping-build-2016

#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd


کانال تلگرام:
@SoftwarePhilosophy


___
اگر با فریم‌ورکهای سی‌اس‌اس مانند Bootstrap و یا Foundation کار کرده‌اید، این فریم‌ورک هم حتمن برایتان جذاب است. این فریم‌ورک که از Material Design که توسط شرکت گوگل طراحی شده‌است استفاده می‌کند و به نظر پروژه جالبی می‌رسد.

https://materializecss.com/about.html

#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd


کانال تلگرام:
@SoftwarePhilosophy


___
Forwarded from Software Philosophy
اگر دوستانی دارید که نه تنها برنامه نویس هستند، بلکه اعتقاد دارید «مهندس نرم‌افزار» هم هستند، آنها را به کانال @SoftwarePhilosophy دعوت کنید.
این پیغام را برای آنها Forward کنید.
معماری جدید Migration در EF Core 1 اگر با Entity Framework Migrations کار کرده‌اید و با آن پروژه جدی انجام داده‌اید حتما در مواقعی نیاز داشته‌اید که بتوانید Snapshot دیتابیس بین دو Migration را مقایسه کنید. این کار در نسخه ۶ کار بسیار سختی بود زیرا این Snapshot در فایل Resource به ازای هر Migration ذخیره می‌شد. اتفاق خوبی که در نسخه ۷ افتاده این است که معماری آن عوض شده و ذخیره‌سازی به صورت کلاس‌هایی است که حتی از طریق کد هم می‌توانید به آن دسترسی داشته باشید.

لینک زیر این تغییر معماری رو توضیح می‌دهد تا بتوانید از آن در پروژه‌های آتی خود استفاده کنید.

https://mehrandvd.me/2016/02/18/entity-framework-core-migrations/

#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd


کانال تلگرام:
@SoftwarePhilosophy


___
برنامه نویسی کپی-پیست یا Cut&Paste Programming یک نمونه ضد الگوی برنامه نویسی (Anti Pattern) محسوب می‌شود. یکی از علائم آن استفاده از این جملات است:
-من این باگ رو قبلا درست کرده بودم، چرا هنوز هست!؟
-وااو... شما چقدر سریع کار می‌کنید، تو این سه هفته ۴۰۰.۰۰۰ خط حد نوشتید.

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

https://sourcemaking.com/antipatterns/cut-and-paste-programming

#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd


کانال تلگرام:
@SoftwarePhilosophy


___
اگر می‌خواهید بیشتر در این مورد بدانید در لینک زیر توضیحات کاملی در این مورد داده شده.
این مقاله توسط Igor Ostrovsky یکی از مغزهای متفکر برنامه نویسی موازی یا Parallel Programming در .Net نوشته شده است. او در این سری مقالات مفهوم مدل حافظه یا Memory Model را در زبان C# به صورت تئوری و عملی توضیح داده است. از آنجاییکه یکی از مهمترین مشکلات برنامه‌نویسی موازی مشکل Shared Memory‌ است، فهمیدن این مدل کمک بسیاری در نوشتن و دیباگ کردن کدهای Parallel می‌کند.

https://msdn.microsoft.com/en-us/magazine/jj863136.aspx

#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd


کانال تلگرام:
@SoftwarePhilosophy


___
اگر با WPF کار می‌کنید، یکی از قویترین فریم‌ورکهای موجود برای ساخت نرم‌افزارهای بزرگ و با کیفیت Prism است. فریم‌ورک Prism با معماری MVVM طراحی شده‌است و در خیلی از مواقع به عنوان مرجعی برای یک معماری زیبا و کامل یک سیستم MVVM محسوب می‌شود. اگر می‌خواهید برنامه‌ای بنویسید که بر پایه XAML‌ کار می‌کند (مانند WPF، UWP، Xamarin و یا ...) حتما این فریم‌ورک را مطالعه کنید. در مورد این فریم‌ورک کتاب‌های زیادی نیز منتشر شده ‌است.

https://github.com/PrismLibrary/Prism

#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd


کانال تلگرام:
@SoftwarePhilosophy


___
استفاده از Entity Framework Migration در تیم‌های نرم‌افزاری که چند نفر موازی روی مدل کار می‌کنند. این کار معمولا چالش‌هایی دارد که در این لینک این چالش‌ها مطرح شده است. برای مثال حالت‌هایی وجود دارد که دو برنامه‌نویس همزمان یک کلاس را تغییر داده و روی آن Migration درست می‌کنند. همچنین توضیح داده شده‌است که چطور می‌توان آنها را حل کرد.

https://msdn.microsoft.com/en-us/data/dn481501.aspx

#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd


کانال تلگرام:
@SoftwarePhilosophy


___
معرفی CQRS به صورت خلاصه و مختصر توسط Dino Esposito، معمار نرم‌افزار مطرحی که مقالات زیادی در مورد معماری نرم‌افزار نوشته است. مفهوم CQRS یکی از مفاهیم جذاب و لبه تکنولوژی این روزهای دنیای معماری نرم‌افزار است. لینک زیر به طور خلاصه مفهوم جدا شدن پایپ‌لاین Read و Write در معماری‌های جدید نرم‌افزار را نشان می‌دهد. جدا شدن این پایپ‌لاین‌ها باعث می‌شود قدرت مانور و اعمال تغییرات روی عملیات خواندن و نوشتن در نرم‌افزارهای بزرگ بیشتر باشد.

https://msdn.microsoft.com/en-us/magazine/mt147237.aspx

#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd


کانال تلگرام:
@SoftwarePhilosophy


___
آیا تا به حال لازم شده‌است که در یک پروژه همزمان چند DbContext داشته‌باشید؟ و یا اینکه DbContext های مختلف را در پروژه‌های مختلفی پخش کنید؟ در این صورت برای فعال کردن Migration روی این پروژه‌ها نیاز به تنظیمات خاصی دارید که در لینک زیر توضیح داده شده.

https://www.dotnet-tricks.com/Tutorial/entityframework/2VOa140214-Entity-Framework-6-Code-First-Migrations-with-Multiple-Data-Contexts.html

#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd


کانال تلگرام:
@SoftwarePhilosophy


___
با ما در ارتباط باشید!
تا امروز فیدبک‌های خیلی خوبی از شما دوستان گرفتیم. بر اساس فیدبک‌های شما تصمیم گرفتیم که پست‌های این کانال را در سه دسته بندی پست کنیم:
۱) مطالب مهندسی و معماری نرم‌افزار و مدیریت تیم‌های نرم‌افزاری
۲) مطالب مربوط به آخرین تکنولوژی‌ها
۳) مطالب مربوط به تکنولوژی‌های مرسوم که در شرکت‌ها استفاده می‌شود.

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

لطفا اگر نظر، پیشنهاد، انتقاد و یا هرگونه فیدبکی نسبت به این کانال دارید، در توئیتر بنویسید. مطمئن باشید ما آنها را می‌خوانیم. (در توئیتر @mehrandvd را منشن کنید و از هشتگ #SoftwarePhilosophy استفاده کنید)
وجود یک «لکه» یا Blob در کد برنامه شما یک نمونه ضد الگوی برنامه نویسی (Anti Pattern) محسوب می‌شود. یکی از علائمی که نشان می‌دهد برنامه شما لکه دارد، زمانی است که از این جمله استفاده می‌کنید: «این قسمت از کد، قلب سیستم است»
وقتی از این جمله استفاده می‌کنید، یعنی قسمتی از کد شما وجود دارد که در آن حجم زیادی از منطق برنامه شما نوشته شده‌است و شکسته نشده‌است. لکه‌ها تمایل به بزرگ شدن دارند،‌ یعنی خیلی وقت‌ها برای نوشتن یک کد جدید، احساس‌ می‌کنید باید آن را به «قلب سیستم» اضافه کنید. خیلی وقت‌ها علت این مشکل معماری بد و یا حتی «نبود معماری» است.

لینک زیر بیشتر در مورد این Anti Pattern توضیح داده است.

https://sourcemaking.com/antipatterns/the-blob

#مهران_داودی
لینکداین:
https://ir.linkedin.com/in/mehrandvd


کانال تلگرام:
@SoftwarePhilosophy


___