DJANGOLEARN_IR Telegram 637
جنگولرن
سری مهندسی نرم‌افزار: پست 5 از لینکدین Saeed Shahrivari Joghan لینک تو پست‌ قبلی راجع به مفهوم «نرم‌افزار خوب و با کیفیت» صحبت کردم و اشاره کردم که هر نرم‌افزار معمولاً حداقل ۶ محور کیفی داره که در این پست می‌خوام به «قابلیت نگهداشت» یا همون Maintainability…
سری مهندسی نرم‌افزار: پست 6
از لینکدین Saeed Shahrivari Joghan
زوج طلایی طراحی: سادگی + تفکیک دغدغه‌ها

اگه پست ۵ رو خونده باشید به اینجا رسیدیم که برای طراحی و تولید یه نرم‌افزار (باز هم تاکید می‌کنم دامنه نرم‌افزار شامل کد، داده و مستنداته🙂) که قابلیت تغییر، نگهداری و حتی تعمیر ساده‌تری داشته باشه رعایت دو اصل تا حد زیادی کافیه: «سادگی» و «تفکیک دغدغه‌ها». بیاید دقیق‌تر به این دو موضوع بپردازیم:

1️⃣سادگی: سادگی در طراحی نرم‌فزار یعنی درست کردن سیستمی که فهم، استفاده، نگهداری و تغییر اون ساده باشه. به نظرم سادگی چیزیه که برای همه تا حد زیادی ملموسه!
2️⃣تفکیک دغدغه‌ها (SoC): یعنی نرم‌افزار رو به بخش‌های متمایزی تفکیک کنیم به نحوی که هر بخش درگیر یک عملکرد (functionality) یا به عبارتی دغدغه (concern) خاص باشه و تا حد خوبی بخش‌ها ایزوله باشند. آیا این اصل یعنی هر ماژول فقط باید یه کار بکنه؟ جواب منفیه! کار با دغدغه متفاوته.

یه سوال جالب: این دو اصل چه نسبتی با هم دارند؟ میشه گفت معمولاً این دو اصل همراستا هستند ولی در موارد نادری ممکنه هم‌جهت نباشند. اگه مجبور بشیم بینشون اولویت داشته باشیم، از دید من همیشه سادگی به هر چیزی اولویت داره. حالا اگه این دو اصل رو در طراحی نرم‌افزار رعایت کنیم چه مزایایی داره؟
1️⃣فهم ساده‌تر: خوانایی و ساختارمند بودن نرم‌افزار خیلی مهمه. آقا مارتین فاولر میگه: ‌«هر احمقی قادره کدی بنویسه که ماشین بفهمتش، برنامه‌نویس خوب کسیه که کدی می‌نویسه که آدمها هم به راحتی درکش می‌کنند.»
2️⃣نگهداشت ساده‌تر: اگه این دو اصل رو رعایت کرده باشیم توسعه، نگهداری و حتی تعمیر نرم‌افزار به مراتب هزینه کمتری داره.
3️⃣قابلیت استفاده مجدد: وقتی نرم‌افزار از اجزای ساده و تر و تمیز تشکیل شده باشه میشه با تلاش کمی مولفه‌های موجود رو در جاهای دیگه هم استفاده کرد.
4️⃣آزمون‌پذیری بهتر: مولفه‌های ساده و تر و تمیز رو خیلی راحتتر میشه تست کرد.

مزایای خیلی زیادی میشه نوشت ولی من به همین ۴تا بسنده کردم. باز هم تاکید می‌کنم از دید من اصول همین دو اصله و حداقل ۵۰ ساله که در نرم‌افزار مطرح و استفاده می‌شه. دنبال هر فرقه یا اصول جدیدتر مثل SOLID یا DDD یا TDD و غیره هم برید بر پایه همین دو اصل هستند و من همیشه ترجیح دادم دید خودم رو باز نگه دارم و اصول دین رو صرفاً به این دو اصل محدود کنم و از هر رویکردی مثلاً DDD یا TDD در جای مناسب خودشون استفاده کنم چون تنها چیزی که در هر زمینه نرم‌افزاری به درد می‌خورند همین دو اصل هستند. در پست بعدی ایشالا به چابکی و تغییر می‌پردازیم.

پانوشت: مرحوم آقا دایکسترا خیلی در این زمینه زحمت کشیده!
👏52👍1



tgoop.com/djangolearn_ir/637
Create:
Last Update:

سری مهندسی نرم‌افزار: پست 6
از لینکدین Saeed Shahrivari Joghan
زوج طلایی طراحی: سادگی + تفکیک دغدغه‌ها

اگه پست ۵ رو خونده باشید به اینجا رسیدیم که برای طراحی و تولید یه نرم‌افزار (باز هم تاکید می‌کنم دامنه نرم‌افزار شامل کد، داده و مستنداته🙂) که قابلیت تغییر، نگهداری و حتی تعمیر ساده‌تری داشته باشه رعایت دو اصل تا حد زیادی کافیه: «سادگی» و «تفکیک دغدغه‌ها». بیاید دقیق‌تر به این دو موضوع بپردازیم:

1️⃣سادگی: سادگی در طراحی نرم‌فزار یعنی درست کردن سیستمی که فهم، استفاده، نگهداری و تغییر اون ساده باشه. به نظرم سادگی چیزیه که برای همه تا حد زیادی ملموسه!
2️⃣تفکیک دغدغه‌ها (SoC): یعنی نرم‌افزار رو به بخش‌های متمایزی تفکیک کنیم به نحوی که هر بخش درگیر یک عملکرد (functionality) یا به عبارتی دغدغه (concern) خاص باشه و تا حد خوبی بخش‌ها ایزوله باشند. آیا این اصل یعنی هر ماژول فقط باید یه کار بکنه؟ جواب منفیه! کار با دغدغه متفاوته.

یه سوال جالب: این دو اصل چه نسبتی با هم دارند؟ میشه گفت معمولاً این دو اصل همراستا هستند ولی در موارد نادری ممکنه هم‌جهت نباشند. اگه مجبور بشیم بینشون اولویت داشته باشیم، از دید من همیشه سادگی به هر چیزی اولویت داره. حالا اگه این دو اصل رو در طراحی نرم‌افزار رعایت کنیم چه مزایایی داره؟
1️⃣فهم ساده‌تر: خوانایی و ساختارمند بودن نرم‌افزار خیلی مهمه. آقا مارتین فاولر میگه: ‌«هر احمقی قادره کدی بنویسه که ماشین بفهمتش، برنامه‌نویس خوب کسیه که کدی می‌نویسه که آدمها هم به راحتی درکش می‌کنند.»
2️⃣نگهداشت ساده‌تر: اگه این دو اصل رو رعایت کرده باشیم توسعه، نگهداری و حتی تعمیر نرم‌افزار به مراتب هزینه کمتری داره.
3️⃣قابلیت استفاده مجدد: وقتی نرم‌افزار از اجزای ساده و تر و تمیز تشکیل شده باشه میشه با تلاش کمی مولفه‌های موجود رو در جاهای دیگه هم استفاده کرد.
4️⃣آزمون‌پذیری بهتر: مولفه‌های ساده و تر و تمیز رو خیلی راحتتر میشه تست کرد.

مزایای خیلی زیادی میشه نوشت ولی من به همین ۴تا بسنده کردم. باز هم تاکید می‌کنم از دید من اصول همین دو اصله و حداقل ۵۰ ساله که در نرم‌افزار مطرح و استفاده می‌شه. دنبال هر فرقه یا اصول جدیدتر مثل SOLID یا DDD یا TDD و غیره هم برید بر پایه همین دو اصل هستند و من همیشه ترجیح دادم دید خودم رو باز نگه دارم و اصول دین رو صرفاً به این دو اصل محدود کنم و از هر رویکردی مثلاً DDD یا TDD در جای مناسب خودشون استفاده کنم چون تنها چیزی که در هر زمینه نرم‌افزاری به درد می‌خورند همین دو اصل هستند. در پست بعدی ایشالا به چابکی و تغییر می‌پردازیم.

پانوشت: مرحوم آقا دایکسترا خیلی در این زمینه زحمت کشیده!

BY جنگولرن


Share with your friend now:
tgoop.com/djangolearn_ir/637

View MORE
Open in Telegram


Telegram News

Date: |

Telegram Channels requirements & features Activate up to 20 bots How to create a business channel on Telegram? (Tutorial) Telegram desktop app: In the upper left corner, click the Menu icon (the one with three lines). Select “New Channel” from the drop-down menu. In handing down the sentence yesterday, deputy judge Peter Hui Shiu-keung of the district court said that even if Ng did not post the messages, he cannot shirk responsibility as the owner and administrator of such a big group for allowing these messages that incite illegal behaviors to exist.
from us


Telegram جنگولرن
FROM American