اصول طراحی و کدنویسی نرم افزار (وب سایت)

* این چیزی که من میخوام بنویسم راجع به ظاهر وبسایت نیست. چیزی که منظور منه یه چیز کلی تری به اسم نگهداری از نرم افزاره. من یه زمانی خودم develop کردم و الانم دارم ارزیابی میکنم. بنابراین این چیزی که میخوام بنویسم حاصل تجربه کاریم در مورد تغییر و نگهداری از یک نرم افزاره. ببینید ما وقتی یه نرم افزار رو مینویسیم، باید چند تا چیز رو پیش بینی کنیم که مهمترینش نگهداری و پشتیبانی از اونه. قرار نیست نرم افزار ما فقط یکسال کار کنه که. بنابراین باید طوری بنویسیمش که موقع تغییر دادن یا اضافه کردن امکان جدید، کمترین هزینه زمانی و نیروی انسانی رو بدیم. من اصولی که توی ذهنم هست رو توی ۶ دسته میارمش. راستش اگه بخوام مفصل بگم، باید درس مهندسی نرم افزار رو اینجا پیست کنم!:)

* نیازسنجی: اولین کار اینه که دقیقا با مشتری حرف بزنید ببینید چی میخواد؟ نیازمندیهای نرم افزارش چیه؟ چه چیزهایی رو باید در نظر بگیرید؟ به چه مولفه هایی احتیاج دارین و در نرم افزار باید چه امکاناتی رو بگنجونید؟ اینجا مشتری معمولا نمیدونه چی میخواد! یا بعدا ممکنه نظرش عوض بشه، بنابراین باید مراحل بعدی بیشتر دقت کنید.

* تحلیل نیازها: تو این مرحله باید نیازمندیهای مشتری رو تحلیل و تفسیر کنید. یعنی به زبانی در بیارین که هم برای کدنویس قابل فهم باشه و هم برای مشتری. برای اینکار میشه از ابزار و متدهای زیادی استفاده کرد که متد رایج فعلی RUP هست که از UML استفاده میکنه. میتونین هر نیازمندی رو به صورت یک یا چند usecase در بیارید. مثلا ورود به سیستم، اضافه کردن کاربر و نظایر اون. هرچقدر Usecaseهاتون رو ریزتر در بیارین، در مراحل بعدی موفقتر خواهید بود. اینجا چند نمونه از نمودارهای Usecase آورده شده.

* معماری سه لایه: از همون ابتدا به ساکن معماری سه لایه نرم افزار (واسط کاربری، منطق، داده) رو مد نظر داشته باشید. حواستون باشه که کلیه داده های و کدهای مربوط به پایگاه داده رو در لایه داده ذخیره کنید. لایه منطق هم معمولا به محاسباتی مربوطه که به لاجیک نرم افزار بستگی داره. مثلا محاسبه حقوق کارمندان در نرم افزار حقوق و دستمزد، در این لایه انجام میشه. و سرانجام لایه واسط کاربری که کدهای مربوط به UI یا GUI در اینجا قرار داده میشه. نیاین کدهای پایگاه داده رو به صورت ادغام شده بین کدهای داینامیک در لایه واسط کاربری قرار بدید. اگه بعدا به هر دلیلی بخواین تغییری تو نرم افزار ایجاد کنید، و فرض کنید نرم افزارتون ۱۰ هزار خط باشه، اونوقت باید کلی کد سرچ کنید و کد جدید جایگزین کنید. در حالیکه اگه تو لایه داده باشه، میدونین که باید کجا رو فقط تغییر بدید بدون اینکه بقیه جاها بهم بریزه.

* برنامه نویسی شیءگرا: به هر چیزی به صورت یک شیء (object) نگاه کنید. مهمترین مزیت این روش برنامه نویسی، حداقل تغییر در صورت بروز مشکل یا اضافه کردن امکان هست. راستش اگه بخوام در این باره بنویسم باید سه واحد درس OOP مهندسی نرم افزار رو کپی کنم! ولی خب به طور کلی مفاهیم مربوط به این شیوه برنامه نویسی رو میتونید تو سایت سان بخونید. البته اینجا بیشتر مثالها  مورد جاوا هست. ولی در بقیه زبانها کمابیش همینه.

* استفاده مجدد: یکی از مهمترین مزایای کدنویسی ای که درش Reusebility رو مد نظر قرار میدید اینه که همیشه برای خودتون یکسری کامپوننت آماده دارید. اگر از برنامه نویسی شیءگرا تبعیت کنید، ناخودآگاه این رو در خودش داره. اما سعی کنید برای یک امکانات مشخصی برای خودتون کلاسها و کامپوننتهای آماده بسازید. مثلا فرض کنید اگه یک کامپوننت اتصال به پایگاه داده داشته باشید، دیگه لازم نیست در نرم افزار بعدی بیاین برای این مجدد کد بنویسید. کافیه مشخصات سرور جدید رو بهش بدید. به همین صورت کامپوننتهایی که میتونین ازشون به اصطلاح dll بسازید. اینها امکاناتی هستند که کدنویسی رو برای خودتون آسونتر می کنن و اینکه نیازی به حفظ کردن ندارید.

* عدم اتکا به امن سازی سمت کلاینت: این آخری بیشتر برای کسانی هست که امنیت نرم افزاری که مینویسن مهمه. هیچوقت و هیچوقت به هیچ متد امنیتی ای که سمت کاربر اجرا میشه اعتماد نکنید. تمامی این متدها به سادگی قابل دور زدن هستن. برای اطمینان حتما و حتما کلیه داده هایی که توسط کاربر ارسال می شن رو سمت سرور اعتبارسنجی کنید. من قبلا نوشته بودم که در مورد اعتبارسنجی خواهم نوشت. هنوزم ننوشتم!:)

* و در پایان اینکه من توی این پست توصیه هایی به دانشجویان کامپیوتر و IT یادم رفت که اینم اضافه کنم: اگه به کدنویسی یا برنامه نویسی علاقه دارید و میخواین در آینده به اصطلاح developer بشید، حتما به ترتیبی که ارائه میشن این درسها رو جدی بگیرید:
۱- پایگاه داده ها. ۲- تجزیه و تحلیل سیستمها (در برخی دانشگاهها با عنوان مهندسی نرم افزار یک ارائه میشه). ۳- مهندسی نرم افزار (۲). ۴- برنامه نویسی شیءگرا.
به هرحال شما کدنویسی رو در موسساتی غیر از دانشگاه هم میتونید یاد بگیرید. مهم اینه که کدی که یک فارغ التحصیل مهندسی کامپیوتر مینویسه، باید بسیار بهینه تر از کدی باشه که بیرون هم میتونه نوشته بشه. چون هر نرم افزاری در نهایت مجموعه ای از کدهاست. پس مهمه چطور کد بنویسیم.

* لینکهای مرتبط:
۱-  آیا زنان بهتر از مردان کد می نویسند؟
۲- لیستی از ۲۵ اشتباه خطرناک برنامه‌نویسی
۳- اولین برنامه نویسان زن بودند!:)

۱۱ نظر

  1. Alex ۱۳۸۸-۰۸-۱۲، ۸:۳۸ ق.ظ

    ممنون استاد.

    جواب به این نظر

  2. مسعود ۱۳۸۸-۰۸-۱۲، ۱۰:۱۲ ق.ظ

    سلام
    ممنون از مطلب آموزندتون. :)

    جواب به این نظر

    lind Reply:

    وبلاگ باحالی داری.ممنون می شم اگه یه سری هم به وبلاگ من بزنی

    جواب به این نظر

  3. soha ۱۳۸۸-۰۸-۱۲، ۱۱:۳۱ ق.ظ

    ۱۵۹
    سلام زهرا جان .من سوالاتم را براتون میل کردم ولی شما پاسخ من را ندادید .
    با سپاس فراوان
    سحی

    جواب به این نظر

    زهرا Reply:

    سلام من ایمیلی از شما نداشتم
    به کجا ایمیل زدین سحی جان؟

    جواب به این نظر

    soha Reply:

    ۱۵۹
    سلام زهرا جان
    من به ادرس
    zahrahb@gmail.com
    و
    zahra_H_B@yahoo.com
    میل زدم که خودتون این ادرس ها رو توی پست های قبل برام گذاشته بودین.
    با سپاس فراوان
    سحی

    جواب به این نظر

  4. لیلی ۱۳۸۸-۰۸-۱۲، ۱۲:۰۴ ب.ظ

    سلام.خیلی تخصصی شد.ازنقاشیهای من دیدن کنید

    جواب به این نظر

  5. پیام ۱۳۸۸-۰۸-۱۲، ۱۲:۳۶ ب.ظ

    سلام
    به نکات خیلی خوبی اشاره کردید
    ممنون

    جواب به این نظر

  6. مهندس زرگوش ۱۳۸۸-۱۰-۶، ۱۱:۱۱ ب.ظ

    سلام زهرا جان
    وبلاگ واقعاً عالیه اگه لطف کنی یه سری به ما هم بزن ممنون
    مهندس زرگوش

    جواب به این نظر

  7. دانشجو ۱۳۸۸-۱۰-۲۲، ۲:۴۸ ب.ظ

    سلام من دانشجوی کامپیوترم.اسمم هم زهرا ست .علاقه زیادی به برنامه نویسی دارم ولی تو این مورد ضعیفم دلیلش هم اینه که از کاردانی آمار به نرم افزار اومدم.شما چه پیشنهادی به من میکنید.؟یه سوال دیگه دارم برای تبدیل کد ++c به c#چه نرم افزاری هست.برای یکی از پروژه های این ترمم میخوام.یعنی چند روزه دیگه.اگه ممکنه راهنمایی کنید

    جواب به این نظر

  8. صابر ۱۳۸۸-۱۱-۱۷، ۱۱:۰۱ ق.ظ

    من هنوز نخوندم و لی اگر خوندم حتما جوابت رو میدم عزیز
    با تشکر مدیر گروه رایانه ای تک سما

    جواب به این نظر

نظر شما