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