مقدمه ای بر نرم افزارهای مبتنی بر وب و ویژگیهای آنها.

 

مقدمه
در روزهای نه چندان دور، وب سایتها چیزی بیش از مجموعه ای از لینكها و فایلهای متنی با گرافیك محدود نبودند.با گذر زمان اچ. تی. ام. ال.(HTML: HyperText Markup Language) با ابزارهای توسعه و زبانهای برنامه سازی دیگری نظیر ایكس. ام. ال. (XML:Extensible Markup Language) و JAVA ادغام شد و باعث شد كه عملیات محاسباتی نیز روی اطلاعات امكان پذیر شود. با ادغام سیستمهای مبتنی بر وب و نرم‌افزارهای كاربردی،نرم افزارهای مبتنی بر وب(WebApplications :WebAPP) متولد شد. امروز "نرم افزارهای مبتنی بر وب" شامل ابزارهای محاسباتی قدرتمندی هستند كه علاوه بر اینكه می توانند به صورت توابع مستقل عمل كنند، قابلیت ادغام با پایگاه داده ها و نرم‌افزارهای كاربردی تجاری را نیز به خوبی دارا می باشند. در حقیقت امروزه "نرم افزارهای مبتنی بر وب" می توانند از یک صفحه وب ساده تا وب سایتهای بسیار پیچیده كه تمامی اطلاعات قابل نمایش خود را توسط واكشی اطلاعات از پایگاه داده های مختلف و اعمال محاسباتی بر روی آنها تهیه می كنند[1] ، تشكیل شده باشند که هر كدام از اطلاعات و پردازش های روی آنها می توانند جایی در اینترنت ،اینترانت و اكسترانت در گوشه ای از دنیا قرار گرفته باشد.

تفاوت نرم افزارهای تحت وب با دیگر نرم افزارها
نرم افزارهای تحت وب خصوصیات خاصی دارند كه آنها را از بقیه نرم افزارها متمایز می كند . به تعدادی از این خصوصیات در ذیل اشاره می كنیم :
Network intensiveness: "نرم افزارهای مبتنی بر وب" بر روی یك ساختار شبكه ای قرار می گیرند و باید به احتیاجات اجتماعات و دسته های مختلفی از مشتریان پاسخگو باشند.یك"نرم افزارهای مبتنی بر وب" ممكن است بر روی اینترنت قرار بگیرد و قابل دسترسی برای سازمان خاصی باشد و یا بر روی اكسترانت قرار گرفته و در اختیار شبكه ای خاص از كاربران قرار گیرد.
Concurrency: ممكن است تعداد زیادی از كاربران در یك زمان به "نرم افزارهای مبتنی بر وب" دستیابی پیدا كنند.در اغلب موارد الگوی استفاده میان كاربران مختلف بسیار متفاوت است.
Unpredictable load: ممكن است تعداد كاربران یك "نرم افزارهای مبتنی بر وب"در روزهای مختلف متفاوت باشد و این مسئله به خوبی قابل پیش بینی نیست.به عنوان نمونه این دوشنبه سیستم 100 كاربر داشته،5 شنبه 10000 كاربر و دوشنبه آینده 2000 كاربر.
Performance: در صورتیكه كاربر "نرم افزار مبتنی بر وب" انتظار زیادی برای دستیابی به پردازشهای سمت سرور و یا قالب بندی و نمایش سمت كلانیت بكشد، ممكن است براحتی از رجوع مجدد خود داری كند و سیستم مشتریان خود را از دست بدهد .
Availability : هیچوقت نمی توان 100 درصد مواقع در دسترس بود . با اینحال باید در نظر گرفت كه در هر زمان از 24 ساعت روز ممكن است كاربرانی از یك نقطه جهان بخواهند از سیستم استفاده كنند. به همین علت یك "نرم افزار مبتنی بر وب" باید 24 ساعت شبانه روز، هفت روز هفته و 365 روز سال در دسترس باشد.
Data driven: عملكرد اصلی بسیاری از "نرم افزارهای مبتنی بر وب"استفاده از هایپرمدیا(Hypermedia) برای نمایش متون، گرافیكها، اصوات و تصاویر می باشد. به عبارت دیگر عمده "نرم افزارهای مبتنی بر وب" از اطلاعاتی كه بر روی پایگاه داده های محلی و غیر محلی وجود دارند به صورت مشترك استفاده می كنند و محتوای خود را توسط این اطلاعات تهیه می كنند.
Content sensitive: یكی از معیارهای مهم كیفیت یك "نرم افزار مبتنی بر وب"،كیفیت و زیبایی محتوای آن می باشد.
Continuous evolution: تكامل در "نرم افزارهای مبتنی بر وب" امری عادی به حساب می آید."نرم افزارهای مبتنی بر وب" همانند یك باغ مدام در حال تغییر و رشد می باشند و اطلاعات و محتوای آنها می توانند دائماً تغییر یابند. به همین علت نگهداری و مراقبت مداوم امری مهم و حیاتی محسوب می شود.
Immediacy: منظور از فوریت، لزوم هر چه سریعتر در دسترس بودن سیستم در بازار می باشد. این خصوصیت مربوط به خیلی از سیستمها می باشد. ولی در مورد بسیاری از "نرم افزارهای مبتنی بر وب" زمان حضور در بازار چند روز و یا چند هفته است و در مقایسه با دیگر نرم افزارها این زمان بسیار كوتاه است. برای همین باید از روشهایی برای ایجاد "نرم افزارهای مبتنی بر وب" استفاده کنیم که این ویژگی را پوشش دهند. البته توسط ابزاهایی که امروزه وجود دارند می توان یك "نرم افزار مبتنی بر وب" ساده را در چند ساعت آماده كرد .
Security: همانگونه كه گفته شد "نرم افزارهای مبتنی بر وب" توسط یك ساختار شبكه ای می توانند در دسترس كاربران مختلف با مقاصد مختلف در هر سوی جهان باشند. بسیار دشوار و حتی غیر ممكن است كه جمعیت كاربرانی را كه به سیستم دسترسی دارند را محدود كرد. به همین علت به منظور محافظت از اطلاعات حساس و ایمن نمودن انتقال داده ها، از ساختارهای امنیتی قدرتمندتری نسبت به دیگر نرم افزارها باید استفاده كنیم.
Aesthetics: یك جزء لاینفنك هر "نرم افزار مبتنی بر وب" زیبایی ظاهری آن می باشد. برای موفقیت یك "نرم افزار مبتنی بر وب" طراحی زیبایی ظاهری نقش بیشتری نسبت به طراحی تكنیكی دارد. همه ویژگیهای بالا به نحوی در "نرم افزارهای مبتنی بر وب" اثر گذارند.

دسته بندی "نرم افزارهای مبتنی بر وب"
"نرم افزارهای مبتنی بر وب" بر اساس عملیاتی كه انجام می دهند به گروههای مختلفی تقسیم می شوند. در ادامه به گروههایی كه بیشتر مورد استفاده قرار می گیرند اشاره می كنیم :
Informational: در این نوع از "نرم افزارهای مبتنی بر وب" فقط امكان مشاهده و خواندن محتوای سایت به همراه امكان ناوبری ساده وجود دارد.
Download: در این نوع از "نرم افزار مبتنی بر وب" امكان دانلود داده ها و اطلاعات از سرورهایی خاص فراهم می شود.
Customizable: این نوع سیستمها امكان شخص سازی محتوا را به منظور برآورد نیازهای خاصی فراهم می كنند.
Interaction: امكان ارتباط میان اجتماعات مختلفی از كاربران توسط ابزارهایی مانند اتاقهای گفتگو (chatroom)،تابلو اعلانات(bulletin) و یا پیام فوری (instant messaging) توسط "نرم افزار مبتنی بر وب" فراهم می شود.
User input: امكان استفاده از ورودیهای فرم مانند برای مقاصد مختلفی همانند دریافت اطلاعات كابران میسر است.
Transaction-oriented: در این "نرم افزار مبتنی بر وب" بر اساس در خواست كاربر، تراكشهایی برای پاسخ به آن توسط سیستم انجام می شود.
Service-oriented: در این سیسمتها سرویس های خاصی برای كاربران مهیا می شود.
Portal: "نرم افزار مبتنی بر وب" در غالب دروازه های به سوی دیگر "نرم افزارهای مبتنی بر وب" و یا سرویسهایی كه جزء حوزه "نرم افزار مبتنی بر وب" نیستند،عمل می كند.
Database access: توسط این سیستمها كاربران كاوش‌هایی(Query) را روی پایگاه داده بزرگی اجرا كرده و اطلاعات مورد نیاز خود را استخراج می كنند.
Data warehousing : توسط این "نرم افزارهای مبتنی بر وب" كاربران می توانند كورِیهایی را بر روی چند پایگاه داده بزرگ اجرا كنند و اطلاعاتی را از آنان استخراج كنند. البته خیلی از "نرم افزارهای مبتنی بر وب" از تركیب چند تایی این گروهها ایجاد می شوند و یك "نرم افزار مبتنی بر وب" می تواند جزء چندین دسته از این گروهها قرار بگیرد.

پیاده سازی نرم افزارهای مبتنی بر وب
پیاده سازی "نرم افزارهای مبتنی بر وب" نیازمند مدل فرآیندی خاص، متدهای مهندسی نرم افزار كه منطبق با ویژگیهای "نرم افزارهای مبتنی بر وب" باشند و تكنولوژیهای خاصی كه امكانات ذكر شده را برای ما فراهم كند می باشد.تمامی موارد فوق در غالب مهندسی وب(Web Engineering) بروز می كند. مدل فرآیندی و متدهای مهندسی نرم افزار مختلفی برای توسعه یك "نرم افزار مبتنی بر وب" معرفی شده اند. از جمله آنان رهیافت Agile می باشد كه توضیح آن از حوصله این مقوله خارج است و علاقه مندان می توانند با مراجعه به منابع فراوان آن با این رهیافت آشنا شوند.
تكنولوژیهای مختلفی نیز برای پیاده سازی "نرم افزارهای مبتنی بر وب"ی گوناگون مطرح شده اند. از جمله ای این تكنولوژیها می توان به HTML،XHTML،XML،اسكریپت های سمت سرور همانند JSP ، ASP.Net ، PHP و اسکریپتهای سمت کلاینت همانند VbScript و JavaScript را نام برد. در مورد هرکدام از این اصطلاحات کتابهای زیادی نوشته شده است.برای ایجاد یک نرم افزار تحت وب باید حداقل با HTML برای قالب بندی محتوای وب سایت ، یک زبان و فناوری اسکریپتی سمت سرور برای انجام پردازشها و محاسبات سمت سرور ، یک زبان اسکریپتی سمت "سرویس گیرنده"، برای پردازش و محاسبات سمت "سرویس گیرنده" و پایگاه داده آشنا بود.
امروزه وجود این تكنولوژیها توانایی ایجاد "نرم افزارهای مبتنی بر وب" بسیار پیچیده را فراهم كرده است كه خدمات بسیاری را برای میلیونها انسان در سراسر جهان فراهم می كنند و هر روزه نیز به تعداد آنان افزوده می شود. با بررسی تحقیقات و فناوریهای ارائه شده در دهه اخیر در می یابیم که حرکت و سمت و سوی علم و کاربرد رایانه و فناوری اطلاعات به سمت نرم افزارهای تحت وب میباشد و نرم افزارهای دیگر کاربردهای خود را به وب میدهند .