Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
Forwarded from Software Philosophy
در یک مصاحبه با Eric Lippert (یکی از اعضای سابق تیم زبان C#) از او پرسیده شده بود «آیا سی‌شارپ یک زبان strongly typed است یا weakly typed». جواب او به این سوال این بوده: «بله!» به نظر جواب غیر واضحی می‌آید. اریک در ادامه توضیح داده که مشکل از خود سوال است و اگر در سوال «یا» را به «و» تبدیل کنید، جواب من هنوز «بله» است!!
در پست زیر از بلاگ اریک، این مفاهیم با جزئیات بیشتری مانند statically typed، memory safe و type safe توضیح داده شده‌است.

https://ericlippert.com/2012/10/15/is-c-a-strongly-typed-or-a-weakly-typed-language

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

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


___
#پست_مجدد این پست تا به حال بیش از ۲۴۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
مفهوم static class در زبان‌های برنامه‌ نویسی شی‌گرا می‌تواند بسیار گمراه کننده باشد. اصولا بهتر است معماری نرم‌افزار طوری انجام شود که کمترین نیاز به این نوع کلاس باشد. یکی از نکات مهم در مورد این مفهوم این است که برنامه‌نویسان باید حواسشان باشد با این مفهوم به عنوان «سطلی برای نگهداری کدهای متفرقه» استفاده نشود. معمولا کدی که به اندازه کافی به محل درست نوشتن آن فکر نشده، اولین مکانی که برای آن مناسب به نظر می‌رسد یک static class است.
لینک زیر مربوط به بخشی از کتاب Framework Design Guidelines (FDG) است که به طور کامل توضیح داده‌است که در چه مواقعی مجاز به استفاده از static class ها هستیم و چه مواقعی نه. این کتاب استانداردی است که تمام برنامه‌نویسان در مایکروسافت باید آن را مطالعه کرده باشند و نکات آن را رعایت کنند.

https://msdn.microsoft.com/en-us/library/ms229038(v=vs.110).aspx

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

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


___
#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
بهترین راه برای تست کارایی یک نمونه‌ی اولیه واسط کاربری، مشاهده دقیق افرادیست که برای اولین بار از آن استفاده می‌کنند. با این کار می‌توان به راحتی متوجه شد که چه قسمت هایی گیج کننده است، چه قسمت هایی نامفهوم است یا کارایی مناسب را ندارد و از آن‌ها در جهت بهبود طراحی استفاده کرد.
برای انجام این کار با توجه به اینکه کاربر نهایی چه کسی است و چه اهدافی دارد، یک سناریو یا داستان نوشته می شود و کارهایی که شخص باید انجام دهد را مشخص می‌کند اما در آن به جای اینکه مشخصا از شخص خواسته شود که "کار X را انجام بده!"، یک سناریو طرح می‌شود که این فضا را به شخص بدهد که کار X را انجام دهد. برای مثال، یک سناریو می‌تواند این باشد: "شما در‌حال برنامه‌ریزی سفر به شهر اصفهان از تاریخ ۳ فروردین تا ۶ فروردین هستید و احتیاج دارید که بلیط هواپیمای خود را بخرید. برای انجام این کار به سایت هواپیمایی ماهان می روید.". و متوجه می‌شویم که کاربر آیکون خرید بلیط را خیلی سخت پیدا کرده است. این آزمایش به طراح نشان می‌دهد باید طراحی تجربه کاربری را تغییر دهد...
در مقاله ی زیر می توانید با این روش کاملتر آشنا شوید.

https://www.nngroup.com/articles/task-scenarios-usability-testing

#زهره_مرادی

لینکدین:
https://ir.linkedin.com/in/zohre-moradi

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

___
#خلاصه_مطالب «فلسفه نرم‌افزار» در هفته گذشته:

۱. بازآفرینی دیزاین‌های روزانه: Backspace (فلسفه دیزاین)

https://t.iss.one/SoftwarePhilosophy/1322

۲. نحوه استفاده از هوش مصنوعی پروژه‌های Cognitive در بات‌ها

https://t.iss.one/SoftwarePhilosophy/1324

۳. توضیحات کاملی در رابطه با مفاهیم مفاهیم class و struct

https://t.iss.one/SoftwarePhilosophy/1326

۴. «آیا سی‌شارپ یک زبان strongly typed است یا weakly typed»؟ https://t.iss.one/SoftwarePhilosophy/1328

۵. چه مواقعی مجاز به استفاده از static class ها هستیم و چه مواقعی نه؟

https://t.iss.one/SoftwarePhilosophy/1330

۶. تست کارایی یک نمونه‌ی اولیه واسط کاربری

https://t.iss.one/SoftwarePhilosophy/1332

ـــــــــــ

@SoftwarePhilosophy
#پست_مجدد این پست تا به حال بیش از ۲۵۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
مطمئنا برای خیلی از ما پیش آمده است که یک صحفه را طراحی کرده‌ایم و در browser مان همه چیز مرتب و به قاعده است، اما بعد از ریلیز روی سایت از دوستان و اطرافیانتان می شنویم که صفحه به هم ریخته و نامرتب بنظر می‌رسد.
نگذارید این اتفاق برای شما هم بیافتد. بعد از انجام کار زمان لازم را برای تست صفحه وب خود روی browserهای مختلف بگذارید.
اگر همه browserها را روی رایانه خود نصب ندارید، ابزارهای آنلاینی وجود دارد که می توانید با استفاده از آنها صفحه وب خود را در browserهای مختلف و ورژنهای مختلف آنها تست کنید. از جمله این سایتها:
• The Browser Sandbox
BrowserShots.org
CrossBrowserTesting.com
مقاله زیر به شرح این مشکل پرداخته و راه کارهایی را پیشنهاد کرده و مختصر توضیحی از سایت های ذکر شده ارائه کرده است.

https://www.digitalfamily.com/tutorials/test-your-website-in-differen-web-browsers/

#مریم_داودی

لینکدین:
https://www.linkedin.com/in/maryam-davoudi-7913565a

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


___
#پست_مجدد این پست تا به حال بیش از ۲۹۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
در زبان SQL، درک منطق اجرای یک کوئری برای خطایابی و نوشتن کد بهینه از اهمیت بالایی برخوردار است. شاید تا‌کنون برای شما هم پیش آمده است که در هنگام نوشتن یک کوئری، از اینکه کوئری بر خلاف انتظارتان عمل می کند دچار سردرگمی شده باشید. مثلا اینکه چرا با وجود اینکه‌alias ‌ها را درSELECT Clause تعریف کرده اید، درWHERE Clause ‌ نمی‌توانید از آنها استفاده کنید.
درSQL ، کوئری به ترتیبی که دستورات آن نوشته می‌شود اجرا نمی‌شود، بلکه به ترتیب زیر است:
۱) FROM clause
۲) WHERE clause
۳) GROUP BY clause
۴) HAVING clause
۵) SELECT clause
۶) ORDER BY clause
۷) TOP
در طراحی زبان SQL، مِلاکِ ترتیب اجرای دستورات کوئری، شبیه بودن به زبان انگلیسی بوده است. فرض کنید که به شما گفته می‌شود :"برو از قفسه سوم کتابخانه، کتاب قمارباز را بیاور!". در این مثال مهم‌ترین بخش محل است، پس شما اول به کتابخانه می‌روید (FROM)، بعد قفسه‌های دیگر را فیلتر می کنید و نگاهتان در قفسه سوم به دنبال کتاب مورد نظر می‌گردد(WHERE) ‌و تازه در این قسمت کتابی که می‌خواهید را بیرون می‌کشید‌‌‌(SELECT) و به شخصی که آن را درخواست کرده می دهید.
در مقاله زیر درباره‌ی Logical Query Processing بیشتر بخوانید.

https://sqlmag.com/sql-server/logical-query-processing-what-it-and-what-it-means-you

#زهره_مرادی

لینکدین:
https://ir.linkedin.com/in/zohre-moradi

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

___
#پست_مجدد این پست تا به حال بیش از ۹۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
مصورسازی داده در واقع نمایش گرافیکی خلاصه‌ی اطلاعات به منظور ایجاد ارتباط و انتقال حسی خاص است. حتما بارها و بارها شنیده‌اید که می گویند:"یک عکس خوب بهتر از صدها جمله است."، اما زمانی بهتراست یک مطلب به صورت گرافیکی نمایش داده شود که خوب طراحی شده باشد.
مقاله زیر 20 ابزار و کتابخانه مناسب برای مصورسازی داده در صفحه وب معرفی و خلاصه ای از آن را ارائه کرده است.

https://www.creativebloq.com/web-design/top-data-visualisation-tools-9122832

#مریم_داودی

لینکدین:
https://www.linkedin.com/in/maryam-davoudi-7913565a

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

___
#پست_مجدد این پست تا به حال بیش از ۲۶۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
برنامه نویس ارشد یا مدیر تیم شدن اتفاقی است که ممکن است برای هر برنامه نویسی پیش بیاید، اتفاقی جذاب و پر استرس. شما یک برنامه نویس خوب هستید، اما این لزوما به معنی توانایی بالا در ارتباط برقرار کردن با دیگران، مدیریت امور و رفع تناقض‌ها نیست. شما از این به بعد مسئولیت کل تیم را به عهده دارید که شامل افراد فنی و افراد غیر فنی است. مقاله زیر پنج نکته مفید در مورد یک مدیر فنی موثر را توضیح داده است.

https://www.thoughtworks.com/insights/blog/5-tips-being-effective-tech-lead

#کاروان_جافی

لینکدین:
https://uk.linkedin.com/in/karvan-jafi-96897027

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

___
#پست_مجدد این پست تا به حال بیش از ۳۰۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
یکی از تکنیک‌هایی که در مدیریت پروژه‌های نرم‌افزاری برای مدیریت کارها استفاده می‌شود استفاده از مفهوم «کانبان» است. این روش که شرکت تویوتا از آن در سیستم تولید just-in-time خود استفاده می‌کند برای پروژه‌های نرم‌افزاری نیز سازگار شده‌است.
یکی از اهداف کانبان، شناسایی گلوگاه‌های کاری است تا بتوان به فرایندی بهینه‌تر برای تولید نرم‌افزار رسید.

لینک زیر پس از توضیح مفهوم کانبان، نحوه استفاده از بورد کانبان را در پروژه‌های نرم‌افزاری شرح داده‌است.

https://kanbanblog.com/explained/

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

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

___
#خلاصه_مطالب «فلسفه نرم‌افزار» در هفته گذشته:

۱. ابزارهای آنلاین برای تست محصولات تحت وب بر روی نسخه‌های مختلف مرورگرها

https://t.iss.one/SoftwarePhilosophy/1335

۲. آشنایی با Logical Query Processing

https://t.iss.one/SoftwarePhilosophy/1337

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

https://t.iss.one/SoftwarePhilosophy/1339

۴. نکاتی برای بهبود عملکرد مدیران فنی

https://t.iss.one/SoftwarePhilosophy/1341

۵. توضیحاتی در رابطه با مفهوم کانبان و نحوه استفاده از بورد کانبان

https://t.iss.one/SoftwarePhilosophy/1343

ـــــــــــ

@SoftwarePhilosophy
رویداد «استارتاپ ویکند» می‌تواند یکی از رویدادهای بسیار تاثیر گذار و مسیر ساز زندگی هر برنامه‌نویس باشد. برنامه‌نویسان معمولا در این رویدادها با بعدهای دیگر یک محصول نرم‌افزاری آشنا می‌شوند. این مفاهیم با الگوریتم و مفاهیمی که ما به عنوان برنامه‌نویس به آنها عادت کرده‌ایم فاصله بسیار زیادی دارد.
رویداد استارتاپ ویکند فرصت خیلی خوبی است که این مفاهیم را به صورت عملی و در ۳ روز به صورت فشرده تجربه کنیم.

همچنین اگر تخصص ux و یا علاقه مرتبط با ux و یا حتی دوستی علاقمند به ux دارید، این رویداد فرصت بسیار مناسبی برای کسب تجربه در این زمینه است.

ما نیز از طرف کانال‌های «فلسفه نرم‌افزار» و «فلسفه دیزاین» در نقش منتور در این رویداد در خدمت شما خواهیم بود.

البته ظاهرا ظرفیت برای ثبت‌نام برنامه‌نویسان پر شده، ولی امکان ثبت‌نام به عنوان ux هنوز وجود دارد.

منتظر شما هستیم.

همچنین برای اعضای کانال «فلسفه نرم‌افزار» یک کد تخفیف در نظر گرفته‌شده است که می‌توانید در هنگام ثبت‌نام از آن استفاده کنید.

😱 کد تخفیف مخصوص «فلسفه نرم‌افزار»: Philosophy

👀 ثبت‌نام استارتاپ ویکند: https://SWTBlockchain.com

⁉️ برای مشاهده و نوشتن نظرات خود در مورد این پست، بر روی لینک زیر کلیک کنید:

https://ow.ly/RWhq30la8Fz

#مهران_داودی (https://mehrandvd.me)


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

___
#پست_مجدد این پست تا به حال بیش از ۲۲۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
فرایند رفع Bug و یکپارچه کردن آن با فرایند توسعه نرم‌افزار معمولا یکی از چالش‌هایی است که تیم‌های برنامه‌نویسی با آن مواجه می‌شوند. معمولا اسپرینت‌ها بر اساس نیازمندی‌ها برنامه‌ریزی می‌شوند) و باگ‌ها استثناهایی هستند که در اجرای معمولی اسپرینت اختلال ایجاد می‌کنند (در متدولوژی‌های مختلف نیازمندی به عنوان استوری یا Backlog یا Requirement شناخته می‌شود). در قبال یکپاچه کردن فرایند رفع باگ‌ها می‌توان از دو رویکرد استفاده کرد.
۱. در یک اسپرینت می‌توان با باگ‌ها همانند یک نیازمندی برخورد کرد.
۲. در اسپرینت می‌توان با باگ‌ها همانند تسک‌هایی برخورد کرد که مربوط به یک نیازمندی خاص هستند و اصولا هر باگ حتما باید به عنوان فرزند یک نیازمندی تعریف شود.

هرکدام از این روش‌ها مزایایی دارد. در لینک زیر این مفاهیم شرح داده‌شده و نمودار فرایند چرخش باگ در فرایند‌های Agile, Scrum و CMMI مقایسه شده است.

https://www.visualstudio.com/docs/work/backlogs/manage-bugs

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

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

___
#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد