PDA

View Full Version : چگونه میتوان نرم افزار خوب ساخت؟



JaVaD_1900
یک شنبه 02 فروردین 1388, 14:18 عصر
چگونه میتوان نرم افزار خوب ساخت؟


صورت مسئله چیست؟

همه دوست دارند نرم‌افزاری که میسازند «خوب» باشد، اما نرم‌افزار خوب چیست؟ و مهمترایکنه چگونه میتوان «پیوسته نرم افزار خوب ساخت؟». پاسخ پرشس نخست در یک سری ویژگیهایی است که یک نرم‌افزار خو ب باید داشته باشد و فرایندی که عمل کردن به آن ما را به ساخت چنین نرم‌افزاری میرساند، پاسخ پرشس دوم.

نرم‌افزار خوب چیست؟

نرم‌افزار خوب آن آن نرم‌افزاری است که مشتری را شاد کند و برای برنامه‌نویس هم قابل قبول باشد. مشتری آن گاه شاد است که نرم‌افزا، آن کاری را که او می‌خواهد بدرستی انجام دهد. برنامه نویس زمانی شاد است که نرم‌افزار به‌ خوبی طراحی شده باشد. همین جا یک نتیجه بسیار مهم بدست میاید و آن اینکه نرم‌افزاری که کارش را انجام ندهد ارزشی ندارد. نرم‌افزار زمانی ارزش پیدا میکند که نیاز مشتری برآورده شود. اگر نرم افزاری با پیروی از آخرین اصول طراحی و کد نویسی ساخته شود و ساختار آن به گونه‌ای باشد که هر برنامه نویسی را به آفرین گفتن وا دارد اما نیاز مشتری را بدرستی برآورده نکند، آن نرم‌افزار ارزش چندانی ندارد. این نکته‌ ایست که بسیاری از برنامه نویسان دانسته یا نادانسته آن را در زیر سایه پیچیدگیهای فنی پنهان میکنند.
نخستین کاری که نرم‌افزار باید انجام دهد آن است که نیاز مشتری را بخوبی برآورده کند. نکات مثبت دیگر همه «درون سازمانی» هستند و هرچند هر کدام برای نرم‌افزار امتیازی بشمار میروند اما زمانی تبدیل به «ارزش» میشوند که به راضی کردن مشتری کمک کنند. نکته دیگر اینکه نرم‌افزار خوب به جز مشتری یک سر دیگ هم دارد و آن برنامه‌نویسی است که نرم‌افزار را میسازد. برنامه‌نویس هم باید از نرم‌افزاری که ساخته خرسند باشد و آن زمانی بدست میاد که نرم‌افزار به‌خوبی طراحی شده باشد. توجه کنید که طرف سخن ما برنامه‌نویسان حقیقی هستند و نه هر کسی که در بازار IT به مسموم کردن فضا مشغول است.
تفاوت میان این دو مانند تفاوت میان «حاج منصور بنا» با «مهندس مرجان معمار» است. این ویژگی دوم به ما یاد آوری می‌کند که تنها برآورده کردن نیاز مشتری به هر ریخت و شکلی که شده برنامه‌نویسی نیست و نرم‌افزار باید بدرستی و بخوبی طراحی و ساخته شده باشد. چنین نرم‌افزاری انعطاف پذیر، قابل نگهداری، قابل استفاده مجدد و قابل گسترش خواهد بود. هیچ یک از این ویژگیها به گونه ای مستقیم و بی ‌واسطه برای مشتری(یا برنامه‌نویسان قلابی) قابل درک نیست اما همگی آنها در پایان در خدمت همان ویژگی نخست (راضی نگه داشتن مشتری) در‌میایند. نرم افزاری که (در ظاهر) کارش را انجام دهد اما طراحی خوبی نداشته باشد محکوم به شکست است.چنین نرم‌افزاری ممکن است در مراحل نخستین مشتری را خرسند کند اما به محض اینکه نیازهای مشتری تغییر کرد (که می‌کند) و مسئله گسترش و اصلاح نرم‌افزار پیش‌ آمد آنگاه طراحی بد عواقب خود را نشان میدهد. نرم‌افزاری که نمیتواند بسادگی گسترش‌ یابد، اعمال تغییرات در آن بسیار هزینه بر است، زمان انجام تغییرات در آن قابل قبول نیست، کاری را که تا به حا بدرستی انجام میداد دیگر انجام نمیدهد و… در پایان باعث ناخرسندی مشتری شده و نرم‌فزار را از ارزش میاندازد. در حقیقت نرم‌افزار هایی که این‌گونه ساخته میشوند (طراحی بد) از همان آغاز هم بی‌ارزش هستند و ارزش دروغین و کوتاه مدت آنها از این روست که به هر دردسری که شده نیاز اولیه مشتری را برآورده می‌کنند. اما همینکه مشتری نیازش را تغییر داد، بی‌ارزشی ذاتی آنها آشکار میشود.
هرگز خود را با تحویل دادن نرم‌افزاری که بد طراحی شده اما «کارش را میکند» فریب ندهید. بسیاری از مدیران و شبه برنامه‌نویسان (دانسته یا نادانسته) با این استدلال که نرم‌افزار باید کارش را انجام دهد وچیز دیگری مهم نیست خود را فریب می‌دهند اما حقیقت این است که کار نرم‌افزار پایانی ندارد و نرم‌افزار خوب آنی است که در همه حال مشتری را خرسند کند و نه تنها در نخستین نسخه.