سعید صفایی| Saeed Safaee
سعید صفایی| Saeed Safaee
خواندن ۲ دقیقه·۴ سال پیش

طراحی خوب و ویژگی طراحان خوب در نرم افزار

چرا می گوییم طراح خوب!!!!!

نیروی تغییر در نرم افزار ها امری اجتناب ناپذیر است و همیشه طراحان نرم افزار با آن مواجه هستند

همیشه تغییر در نرم افزار ها پیامد هایی به دنبال دارد از جمله:
1- هزینه
1-1 هزینه های مالی
1-2 هزینه های روانی
2- ترس
3- استرس

طراح خوب کسی است که این پیامد ها را به حداقل برساند


ویژگی طراحان خوب

1- نداشتن تعصب به طرح و مانع نبودن برای تغییر آن
2- تجربه کافی در حوزه نرم افزار
3- شناخت دامنه کار و اصول طراحی
4- نگاه انتقادی به طرح خودش
5- خودش را باهوش جلوه ندهد

بررسی سه اصل بنیادی طراحی

اصل بنیادی YAGNI(You Aren't Gonna Need it)

در این اصل مواردی یاد شده که حتما یه طراح خوب به آن مسلط است

1- حتما باید نیاز اصلی نرم افزار طراحی شود و احتمالا آینده در وحله اول در طراحی نیست(مطمئن باشید که فیچر مربوطه را لازم دارید)
2- حتما دیتای کافی در رابطه با موضوع داشته باشد، اگر فردا دیتای بهتری دارد باید فردا طراحی کند
3- داشتن Feedback loop


چرا باید احتمالات در وحله اول در نظر گرفته نشود؟
در نظر داشته باشید که اگر احتمالی را پیاده سازی کردیم و آن احتمال درست نبود و خلاف تصور ما پیش رفت آن وقت:

1- هزینه طراحی فیچیر های احتمالی را باید بپردازیم
2- هزینه طراحی های عقب افتاده در فیچر اصلی
3- هزینه تولید فیچر های احتمالی که اشتباه تولید کردیم و باید عوض کنیم


اصل سادگی

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

روب گلد برگ
روب گلد برگ

این پیچیدگی مناسب طراحی نرم افزار نیست


طراحی ساده کاملا با مخاطب حرف میزند و تمرکز کاربر را حفظ میکند

کم کردن وابستگی ها در اصل سادگی موضوع مهمی به شمار میرود(ارتباط شفاف میان بخش ها یا سایر اجزا یک محصول)

طراحی ساده دارای انسجام کافی و مفاهیم مرتبط را کنار هم نشان میدهد


اصل DRY

Don’t Repeat Yourself

"خودت را تکرار نکن" یک اصل از توسعه نرم افزار است که با هدف کاهش تکرار اطلاعاتی که احتمال تغییر آنها وجود دارد.

جایگزینی آن با انتزاعی هایی است که احتمال تغییر کمتری دارند، یا استفاده از نرمال سازی داده ها که از افزونگی جلوگیری می کند.

مهندسی نرم افزارطراحی نرم افزاربرنامه نویسینرم افزار
Senior back-end developer | ProjectManager
شاید از این پست‌ها خوشتان بیاید