نکات مهم قرارداد طراحی سایت، جزئیات با اهمیتی هستند که هر کارفرما پیش از انعقاد قرارداد طراحی سایت با یکی از اشخاص حقیقی یا حقوقی باید از آن آگاه باشد تا از بروز خسارت در نتیجه تصمیم ناآگاهانه جلوگیری کند.

بازار طراحی سایت بسیار داغ است و این روزها طیف وسیعی از اشخاص حقیقی و حقوقی به آن ورود کرده‌اند. به منظور جلوگیری از بروز رخدادهای ناخواسته یا تحمل هزینه‌های اضافی بهتر است با نکات مهم قرارداد طراحی سایت به خوبی آشنا شوید. در صورتی که قصد ورود به پیچیدگی‌های فنی و عمیق این حوزه را ندارید بهتر است با مشاوری آگاه و کارآزموده مشورت کنید و در قبال پرداخت مبلغی به عنوان حق مشاوره، از بروز خسارتهای ریالی گسترده و خسارت‌های زمانی طولانی جلوگیری کنید.

نکات قرارداد به ۳ دسته کلی تقسیم می‌شوند.

یک پیمانکار مناسب یک موهبت است که نصیب هر کسی نمی‌شود. حداقل نصیب افرادی که عادت به بررسی و تحقیق کافی ندارند نمی‌شود. پیمانکار طراحی وبسایت را می‌توانید از میان اشخاص حقیقی و حقوقی انتخاب کنید. انتخاب هر یک از این دو مزایا و معایب خود را دارد که در مقاله دیگری با عنوان انعقاد قرارداد با پیمانکار حقیقی یا حقوقی به جزئیات مهم آن پرداخته شده است که توصیه می‌کنم حتما مطالعه کنید. بهرحال چه با یک شخص حقیقی و یا چه با یک شرکت و شخص حقوقی قرارداد طراحی سایت خود را امضا می‌کنید، باید مجموعه‌ای از نکات مهم قرارداد طراحی سایت مرتبط با پیمانکار را مد نظر قرار دهید.

استفاده از زبان برنامه نویسی مناسب

دنیای مهندسی نرم افزار و برنامه نویسی بسیار گسترده و پویاست و در این دنیا، ماه و سالی نیست که زبانی جدید با ویژگی‌ها و پیچیدگی‌ها و سیل طرفداران و منتقدان خود از راه نرسد. زبان‌های برنامه نویسی متعددند و برای کاربردها مختلفی ایجاد شده اند. اگر می‌شد از هر زبان برای هر کار و هر زمینه‌ای استفاده کرد این تعدد و گوناگونی ایجاد نمی‌شد. یک وبسایت اینترنتی هم مثل هر نرم افزار دیگری با استفاده از یک (یا احتمالا ترکیب چند) زبان برنامه نویسی ایجاد می‌شود (توسعه می‌یابد). یکی از نکات مهم قرارداد طراحی سایت استفاده از زبان برنامه نویسی مناسب است. معیارهای انتخاب زبان برنامه نویسی مناسب عبارتند از:

  • سهم بازار Market Share
  • محدودیت‌های محرمانگی و نگهداری و بارگذاری کد منبع
  • پایگاه داده انتخابی
  • محدودیت‌های زمانی و ددلاین پروژه
  • بودجه تخصیص یافته به پروژه Budget
  • ابزارها یا نرم افزارهای جانبی و شخص ثالث Third Party Tools
  • نیاز به اتصال به سایر سیستم‌ها
  • ملاحضات امنیتی
  • حجم ترافیک درخواست روی سایت

خیلی مهم است که با کمک یک مشاور آگاه مطمئن شوید زبان برنامه نویسی مناسبی را انتخاب کرده‌اید.

زبان‌های شناخته شده‌ای که کمابیش در زمینه طراحی سایت استفاده می‌شوند عبارتند از:

  • جاوااسکریپت JavaScript
  • جاوا Java
  • پی اچ پی PHP
  • ای اس پی دات نت ASP. NET
  • پایتون Python
  • روبی Ruby
  • اسکالا Scala
  • ارلنگ Erlang
  • پرل Perl

از آنجا که هر پیمانکار به لحاظ تخصصی بودن حوزه و محدودیت منابع و زمان، در زبان‌های برنامه نویسی معدودی دارای تسلط است (درست مثل پزشکان که هر یک در زمینه‌ای متخصص هستند و پزشکی با همه تخصص‌ها نداریم) شایسته است از زبان برنامه نویسی تخصصی شخص پیمانکار به درستی آگاه و از انطباق آن با زبان برنامه نویسی انتخابی برای طراحی سایت خود مطمئن شوید.

استفاده از سکو و چارچوب توسعه مناسب

سکو Platform و چارچوب Framework توسعه هم مانند زبان برنامه نویسی Programming Language به یکی از مهارت‌های تخصصی هر پیمانکار بدل شده است. انتخاب سکو و چارچوب صحیح از نکات مهم قرارداد طراحی سایت است. پیچیدگی‌های موجود در دنیای مهندسی نرم افزار اجازه کسب تسلط و تخصص در حجم وسیعی از سکوها و چارچوب‌های توسعه را از پیمانکاران پروژه‌های نرم افزاری سلب کرده است. لذا هر پیمانکار در یک یا چند سکو و چارچوب توسعه معدود دارای سابقه کار اجرایی و تسلط بالاست و لذا اغلب آن را به عنوان سکو و چارچوب مناسب تبلیغ و ترویج می‌کند. معیارهای انتخاب یک چارچوب مناسب، علاوه بر موارد مذکور برای زبان برنامه نویسی، عبارتند از:

  • سهم بازار Market Share سکو و چارچوب
  • محدودیت‌های حق تکثیر (کپی رایت) و موقعیت سرور
  • محدودیت‌های پشتیبانی و نگهداری
  • محدودیت‌های سخت افزاری و نرم افزاری محیط پیاده سازی
  • الگوی استقرار نرم افزار Software Deployment Pattern
  • مدل فرآیند توسعه نرم افزار Software Development Process Model
  • الگوی معماری نرم افزار Software Architectural Pattern

شایسته است ضمن انتخاب یک سکو و چارچوب مناسب از تسلط پیمانکار انتخابی بر حوزه تخصصی سکو و چارچوب انتخابی اطمینان حاصل کنید.

نکته
سکو و چارچوب و زبان برنامه نویسی عمیقا به هم وابسته اند و باید انتخاب همخوانی از هر سه داشته باشید.

استفاده از الگوی معماری مناسب

الگوی معماری نرم افزار Software Architectural Pattern به زبان ساده به شیوه قرارگیری و نحوه ارتباط اجزای عملکردی مختلف نرم افزار در کنار یکدیگر گفته می‌شود. انتخاب الگوی معماری صحیح هم یکی از نکات مهم قرارداد طراحی سایت و هر قرارداد نرم افزاری دیگر است. همانطور که در معماری ساختمان نحوه قرارگیری اتاق‌ها و اماکن در فضای داخلی و نحوه ارتباط و همچنین آرایش بیرونی ساختمان مد نظر قرار می‌گیرد، در معماری نرم افزار هم نحوه چیدمان و ارتباطات بین قسمت‌ها و اجزای عملکردی مورد نظر است. نحوه انتقال پیام بین این اجزا و همچنین خط و مرز بین اجزا، مسئولیت هر جزء و دسترسی آن به اشیا و کلاس‌های مختلف در حوزه طراحی معماری است. پس از انتخاب الگوی معماری مناسب با کمک یک مشاور آگاه در حوزه نرم افزار، از تسلط پیمانکار منتخب بر الگوی معماری انتخابی اطمینان حاصل کنید. در غیر اینصورت انتخاب الگوی معماری را ناآگانه به پیمانکار واگذار کرده اید.

به عبارت ساده، الگوی معماری نرم افزار، یک راه حل قابل تکرار عمومی برای مسائل شناخته شده پر تکرار است.

الگوهای معماری متعددی برای انتخاب و درج در کنار دیگر نکات قرارداد شناخته شده‌اند که عبارتند از:

  • معماری سه سطحی Three-Tier
  • معماری دامنه محور Domain Driven
  • معماری میکروکرنل Microkernel
  • معماری تخته سیاه Blackboard
  • معماری کلاینت – سرور Client-Server
  • معماری ارائه – انتزاع – کنترل Presentation-Abstraction-Control
  • معماری مدل – نما – کنترل‌گر Model-View-Controller
  • معماری مدل – نما – نمامدل Model-View-ViewModel
  • معماری مدل – نما – ارائه‌گر Model-View-Prensenter
  • و…

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

نکات مهم طراحی سایت مرتبط با کیفیت

در این بخش به آن دسته از نکات مهم قرارداد طراحی سایت اشاره می‌کنم که در صورت رعایت، بر روی کیفیت کد و خروجی کار تأثیر بسزایی خواهد گذاشت. بدیهی است عدم توجه کافی به این نکات سبب کاهش کیفیت نرم افزار تحت وب و کاهش رضایتمندی شما خواهد شد. برای آشنایی بیشتر با کیفیت نرم افزار تحت وب، پیشنهاد می‌کنم مقاله دیگری که در زمینه کیفیت نرم افزار تحت وب و معیارها و شاخص‌های کیفیت نرم افزار نوشته‌ام را حتما مطالعه کنید.

در یک نگاه ساده کیفیت نرم افزار را می‌توان با معیارهای زیر سنجید:

  • قابلیت عملکرد Functionality
  • قابلیت استفاده Usability
  • قابلیت اطمینان Reliability
  • قابلیت پشتیبانی Supportability
  • کارایی Performance

در این مقاله نمیخواهم به جزئیات این معیارها بپردازم. نکته مهم این است که نرم افزاری که در رعایت حداکثری این معیارها نکوشد، نرم افزار با کیفیتی نیست. برای افزایش و بهبود این معیارها در یک نرم افزار، یک سری نکات مهم قرارداد باید لحاظ شود که عبارتند از:

استفاده از سطوح کافی انتزاع

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

استفاده از آزمون نرم افزار

استفاده از آزمون در فرآیند توسعه نرم افزار حدود ۴۰ درصد از زمان مورد نیاز برای توسعه نرم افزار را در بر میگیرد و بنابراین سبب افزایش چشمگیر هزینه تولید نرم افزار سفارشی می‌شود. از طرفی به دلیل کیفیت بالای محصول نرم افزاری هزینه نگهداری آن را تا حد زیادی کاهش داده و سبب افزایش قابلیت استفاده، قابلیت اطمینان و قابلیت پشتیبانی می‌شود. بنابراین یکی از نکات مهم قرارداد طراحی سایت که باید هر کارفرمایی در قرارداد خود لحاظ کند شرط استفاده از آزمون‌های تعریف شده برای اطمینان از صحت عملکرد نرم افزار است.

استفاده از استانداردهای کدنویسی

یکی از نکات مهم قراردادهای طراحی سایت استفاده از استانداردهای کدنویسی است. استانداردهای کدنویسی متعددی در زبان‌های مختلف ایجاد شده و توسعه یافته اند. این استانداردها اغلب با هدف تسهیل اشتراک گذاری کد و محصولات نرم افزاری متن باز توسعه یافته اند. هدف این است که کد شما با الگویی خوانا و منطبق با دیگر برنامه نویسان نوشته شده باشد. در صورت رعایت و استفاده گسترده از این استانداردها، وابستگی به یک برنامه نویس یا پیمانکار نرم افزاری کاهش یافته و انعطاف بیشتری در تغییر پیمانکار در آینده خواهید داشت. برای مثال در حوزه زبان پی اچ پی PHP یک کارگروه مشترک با نام PHP Framework Interoperability Group یا به اختصار PHP FIG اقدام به توسعه استانداردهایی با نام PHP Standard Recommendations یا به اختصار PSR کرده که با شماره‌های عددی با شروع از صفر ۰ مشخص می‌شوند. برای مثال PSR-0 به Autoloading Standard پرداخته است یا PSR-6 مربوط به استاندارد کش Caching Standard است. توصیه می‌کنم مقاله استانداردهای PSR در PHP را مطالعه کنید.

استفاده از استانداردهای کدنویسی سبب افزایش قابلیت پشتیبانی در نرم افزار می‌شود.

استفاده از مستندات سطح کد

در سطح کد، استفاده از مستندات می‌تواند سبب کاهش قابل توجه وابستگی شما به یک پیمانکار شود. مستندات سطح کد به برنامه نویس ایده‌های خوبی در خصوص ورودی و خروجی‌های متدهای کلاس می‌دهد. این مستندات همچنین کمک می‌کنند تا برنامه نویس بک اند و برنامه نویس فرانت اند بداند چه قسمت‌هایی نانوشته و ناقص باقی مانده‌اند یا چه متدهایی نیاز به بهبود دارند. نوع ورودی‌ها چیست و با چه توابع و عملکردی به خروجی‌ها تبدیل می‌شوند. همچنین تا حد زیادی میزان انطباق با اینترفیس‌ها را بررسی کرده و با تولید خطاهای معنی دار به برنامه نویس در توسعه صحیح کد منبع کمک می‌کنند. با این توضیح، استفاده از مستندات سطح کد یکی از نکات مهم قرارداد طراحی سایت است که باید در هر قرارداد گنجانده شود. استفاده از این نکته می‌تواند منجر به بهبود کیفیت نرم افزار خروجی شما شود.

استفاده از تحلیل و طراحی شی گرا

استفاده صحیح از تحلیل و طراحی شی گرا یکی دیگر از نکات مهم قرارداد طراحی سایت است. رعایت و استفاده صحیح از این نوع توسعه نرم افزار مستلزم دانش و تجربه کافی است و بسیارند پیمانکارانی که از تحلیل و طراحی شی گرا یا استفاده نمی‌کنند یا حتی در صورت استفاده آن را به درستی اجرا نمی‌کنند. استفاده از تحلیل و طراحی شی گرا به شکل صحیح و اصولی منجر به تولید نرم افزاری با کیفیت، قابل نگهداری، قابل اطمینان و با دوام می‌شود. واسپاری چنین نرم افزاری برای ادامه توسعه به پیمانکاران دیگر بسیار ساده و کم هزینه است. اعمال تغییرات آتی در چنین نرم افزاری چندان سخت نیست و نرم افزاری که با استفاده از تحلیل و طراحی شی گرا توسعه یافته از قابلیت پشتیبانی بالایی برخوردار است.

استفاده از الگوهای طراحی شی گرا

الگوهای طراحی شی گرا به ۲۳ الگوی نرم افزاری در مهندسی نرم افزار شی گرا اطلاق می‌شود که توسط چهار نفر موسوم به گروه ۴ نفره Gang of Four به نام‌های اریک گاما Erich Gamma و ریچارد هلم Richard Helm و رالف جانسون Ralph Johnson و جان ویلیسایدز John Vlissides در سال ۱۹۹۴ در کتابی با عنوان «الگوهای طراحی: اجزای نرم افزار شی گرای با قابلیت استفاده مجدد» منتشر شد. این الگوها عبارتند از:

  • الگوهای ایجادی
    • Abstract factory
    • Builder
    • Factory method
    • Prototype
    • Singleton
  • الگوهای ساختاری
    • Adapter
    • Bridge
    • Composite
    • Decorator
    • Facade
    • Flyweight
    • Proxy
  • الگوهای رفتاری
    • Chain of responsibility
    • Command
    • Interpreter
    • Iterator
    • Mediator
    • Memento
    • Observer
    • State
    • Strategy
    • Template method
    • Visitor

استفاده از این الگوها در نرم افزار که یکی از نکات مهم قرارداد طراحی سایت است، به انعطاف پذیری در برابر تغییرات آتی و کمک به آزمون و کاهش اتصال بین مولفه‌های نرم افزاری و همچنین افزایش انسجام کمک می‌کند. طیف وسیعی از پیمانکاران نرم افزاری از استفاده حداکثری از این الگوها به دلیل سربار زیاد و عدم به کارگیری نیروهای متخصص به دلیل کاهش هزینه‌های نیروی انسانی سر باز می‌زنند.

برای الزام پیمانکار به استفاده حداکثری از الگوهای طراحی شی گرا و درج موارد مذکور در نمونه قرارداد طراحی سایت یا هر قرارداد نرم افزاری دیگر، بهتر است از مشاوری آگاه بهره بگیرید.