tgoop.com/djangolearn_ir/609
Last Update:
سری مهندسی نرم افزار: پست 4
از لینکدین Saeed Shahrivari Joghan
لینک
تو پستهای قبلی راجع به محورهای سه گانه این سری صحبت کردم یعنی: نرمافزار، مهندسی نرمافزار و مهندس نرمافزار. تو این پست میخوام راجع به مفهوم «نرمافزار خوب» صحبت کنم.
اول دو تا نکته ریز بگم خدمتتون:
۱- معمولاً اگه در کتابها یا وب بگردید به دو مفهوم بر میخورید یکی «نرمافزار خوب» (Good Software) و یکی هم «نرمافزار باکیفیت» (High Quality Software) که به نظر من تقریباً یه مفهوم دارند.
۲- کیفیت از دو دید قابل بحثه یکی کیفیت داخلی مثلاً معماری خوب و یکی هم کیفیت خارجی مثلا واسط کاربری خوب. معمولاً کاربر بیشتر کیفیت خارجی رو درک میکنه و مهندس نرمافزار هم ناخودآگاه بیشتر به کیفیت داخلی توجه میکنه. حالا کدوم باید اولویت داشته باشه؟ به نظر من هیچکدوم برتری نداره که الآن نمیخوام راجع بهش بحث کنیم.
حالا ویژگیهای یه نرمافزار خوب چیه؟ معیارها خیلی متنوعه و پراکنده ولی اجازه بدید در این مورد اقتدا بکنیم به آقای سامرویل! از دید سامرویل ویژگیهای یه نرمافزار خوب موارد زیره:
- کاربردی (Functional): یعنی عملکرد لازم رو به کاربر بده یا به عبارتی درست کار کنه و به درد بخور باشه.
- کارا (High Performance): یعنی کارایی لازم رو هم ارائه بده مثلاً کند نباشه.
- قابل استفاده (Usable): یعنی سهولت استفاده داشته باشه یا به عبارتی کاربرپسند باشه.
- قابل اعتماد (Reliable): یعنی بدون خطا و خرابی کار کنه به عبارتی باگ نداشته باشه و بشه روش حساب کرد.
- قابل نگهداشت (Maintainable): یعنی به راحتی بشه تغییر، ارتقا و بهبودش داد.
- امن (Secure): یعنی امنیت لازم رو برای کاربر فراهم کنه.
البته ویژگیهای بیشتری هم هست مثل: Scalability یا Testablity یا Compatibility و ... ولی به نظرم ۶ موردی که بالا مرور کردیم تقریباً تو هر نرمافزاری دیده میشه ولی موارد دیگه ممکنه تو بعضی نرمافزارها خیلی دغدغه نباشه مثلاً مقیاسپذیری. لطفاً این ۶ مورد و تعاریفش رو همیشه به خاطر داشته باشیم.
چند تا نکته کنکوری و پایانی:
۱- اینا ویژگیهای نرمافزار خوبه یعنی: کد، داده و مستندات. پس صرفاً شامل کد نمیشه.
۲- نرمافزار شامل استهلاک نمیشه یعنی با گذشت زمان خرابی توش بوجود نمیاد برای مثال مقایسه بکنید با ماشین که به مرور زمان استهلاک پیدا میکنه و بیشتر خراب میشه.
۳- یه مهندس نرمافزار صرفاً نباید توجهش معطوف به ویژگیهای کیفی داخلی باشه و باید به ویژگیهای کیفی خارجی هم توجه کنه مثل قابل استفاده بودن.
۴- این ویژگیها معمولاً مثل یه تار عنکبوت به هم تنیده شدند. یعنی اگه بخوایم یکی رو افزایش بدیم ممکنه به احتمال زیاد ویژگیهای دیگه که در تعارض هستند کاهش پیدا کنند. برای مثال معمولاً تلاش برای افزایش کارایی سیستم باعث کاهش اتکاپذیری میشه. احتمالاً در آینده راجع این موضوع بیشتر صحبت میکنم اما فعلاً پیشنهاد میکنم برای این بحث مقاله بسیار عالی «The web of system performance» رو مطالعه بکنید:
https://lnkd.in/d9s998jA
حالا چه کنیم که نرمافزار خوب تولید کنیم؟ ایشالا به شرط حیات در پستهای بعدی بهش میپردازیم😉
BY جنگولرن
Share with your friend now:
tgoop.com/djangolearn_ir/609