براي توسعه نرم افزار
روشها و مدلهاي گوناگوني ارائه شده است. در گذشته مدلهاي توسعه نرم
افزار مبتني بر روشهاي برنامه نويسي ساختار گرا و پيمانه اي (مدولار)
بوده است. يك تحول اساسي در گسترش فن آوري توسعه نرم افزار با معرفي
روش شي ء گرا بوجود آمد. در اين روش با تجزيه مسئله به اشياء مستقل و
مشخص و سپس تعريف دقيق آن اشياء و اختصاص داده و روش (متد) به آن اشياء
نرم افزار شكل ميگيرد. با ظهور مدل شيءگرا در توسعه نرم افزار، راه
براي ايجاد نرم افزارهاي عظيم هموار گرديد. بهينه كردن كار گروهي در
شكل تقسيم يك پروژه بين شركتهاي مختلف امكانپذير شد. به دليل معين بودن
مشخصات دقيق اشيا، افراد و گروههاي مختلف ميتوانستند مستقلا روي بخشهاي
مختلف برنامه كار كنند. هر يك از بخشها به تنهائي مورد آزمايش قرار
ميگرفت و پس از اطمينان از صحت و كارائي در بدنه اصلي برنامه لحاظ
ميشد. اما بايد توجه داشت كه هنوز بخش زيادي از كار، تهيه كدها و برنامه
هاي واسط بود كه بتواند ارتباط ميان اشياء را برقرار سازد. با گسترش
كاربردهاي نرم افزار در تجارت و كسب و كار لزوم ايجاد ارتباط بين
نرم افزارهاي مختلف اهميت بيشتري يافت. نگرش جديد به اجزاء مختلف نرم
افزار بمثابه سرويس ايده جديدي بود كه ميتوانست اين ارتباط را در زمان
كوتاهتر و با هزينه كمتر ميسر سازد.
پارادايم جديدي بنام
ساختار سرويس گرا در عرصه مهندسي نرم افزار ايجاد شده بود. اين
پارادايم براي مديريت برنامه هاي بزرگ و هماهنگي اجزاي مختلف و
سازماندهي داده در بين برنامه هاي كاربردي مختلف روشها و ايدههاي
جديدي به همراه داشت. تقسيم نرم افزار به واحد هاي مشخص و مجزا كه با
دريافت اطلاعات معين سرويس دقيقا تعريف شده اي را در قالب كاملا
استاندارد ارائه ميكند راه را براي ايجاد ارتباط و گسترش آسان نرم
افزار هموار ميكند.
معماري مبتني بر سرويس،
طرحي براي اتصال منابع محاسباتي است. اين منابع محاسباتي شامل داده و
برنامه كاربردي ميباشد. معماري سرويس گرا براي سازماندهي قابليتها و
منابع روي يك شبكه بكار ميرود. منابع و قابليتها روي پلت فرم ها و
دامنه هاي مستقل و جدا از هم قرار دارند. معماري سرويس گرا بر سرويس به
عنوان يك واحد نرم افزاري كلان (ماكرو)، مستقل و كامل تاكيد مي كند در
حاليكه در معماري شيء گرا تاكيد بر اشياء است. شيء يك واحد نرم افزاري
خرد (ميكرو) است كه تا حد زيادي كامل است و پياده سازي آن از رابط آن
مجزا شده است اما ارتباط آن با ديگر اشياء منسجم و قوي است
(tightly coupled) اين ارتباط قوي متضمن ايجاد
قدرت در اجرا است از سوي ديگر باعث پيچيدگي و مانع گسترش آسان برنامه
مي شود. همچنين وابستگي شديد اشياء به هم و وابسته بودن آنها به كدهاي
ارتباطي، توسعه نرم افزار را با دشواري مواجه مي سازد. اين مسائل در
طراحي سرويس گرا لحاظ شده است.
مهمترين مفاهيم و اصول
در نظر گرفته شده در طراحي سرويس گرا به شرح زير مي باشد:
1- كپسوله سازي سرويس
(service encapsulation) تاكيد بر متمركز
كردن عمليات وابسته به داده در يك واحد (كپسول) مشخص و پنهان كردن پياده سازي
و مكانيزم درون واحد نرم افزاري است.
2- اتصال آزاد بين
سرويسها (service loose coupling) تاكيد
بر استقلال سرويسها و كاهش وابستگي سرويسها به يكديگر است
فقط كافي است سرويسها از وجود هم آگاه باشند.
3- قرارداد سرويس دهي
(service contract) ارتباط بين سرويس ها
بر اساس قرارداد تعريف شده اي است كه در اسناد فني بطور مشخص ذكر
ميشود.
4- مجرد ساختن
سرويس (service abstraction) تاكيد بر
جدا كردن پياده سازي از رابط (جهان خارج) و پنهان كردن مكانيزم و نحوه
انجام كار در درون واحد ارائه دهنده سرويس ميباشد.
5- استفاده مجدد و
بازبكارگيري سرويس (service reusability) تاكيد
بر طراحي سرويسها به نحوي است كه بتوان آنها را در سامانه هاي مختلف
بكار برد. با تاكيد بيشتر بر استفاده مجدد.
6- قابليت تركيب سرويس
(service composability) به معني آنست كه
سرويسها به نحوي طراحي شوند كه با برخورداري از قابليت تركيب شدن ايجاد
سرويسهاي مركب (كامپوزيت) امكانپذير باشد.
7- خودگرداني سرويس
(service autonomy) عبارتست از قابليت و قدرت
سرويس در بكارگيري و مديريت منابع خود بطور مستقل و همچنين كنترل كامل
بر منطق پياده سازي خود.
8- بدون حالت بودن سرويس
(service statelessness) به اين معني است
كه سرويس بايد در مورد فعاليت هاي گذشته (فراخواني هاي گذشته) كمترين
اطلاعات را نگه دارد و تاكيد بر طراحي سرويس بنحوي است كه حالتهاي
وابسته به گذشته كمتري داشته باشد.
9- قابليت كشف شدن سرويس
(service discoverability) به اين معني
است كه سرويس بايد در يك محيط شبكه با استفاده از سازوكارهاي مناسب
توسط برنامه هاي ديگر آشكار شود .