تکنیک های Requirements gathering در مهندسی نرم افزار

شاید جمع آوری requirement ها به نظر کار سختی باشه، مگر اینکه ابزار مناسبی در دست داشته باشی. در این پست چندین تکنیک جمع آوری requirement ها را که می توانید در طول برنامه ریزی و توسعه نرم افزار استفاده کنید، میگم.جمع آوری requirements چیست؟جمع آوری الزامات یک قسمت مهم در هر پروژه، بزرگ یا کوچیک هست. برای درک و برآوری نیازهای مشتریان لازمه.روند جمع آوری requirement ها شامل شناسایی و مستند سازی نیازهای لازم مشتریان، کاربران و ذینفعان مربوط به پروژه است. این دانش برای توسعه سولوشن هایی به شکل محصولات، خدمات، نرم افزار و غیره استفاده خواهد شد.روش های معمول برای جمع آوری requirement ها: مصاحبهطوفان فکریگروه های تمرکزپرسشنامهتکنیک های جمع آوری requirement ها برای توسعه نرم افزاریه مشته ابزار برای ساده سازی جمع آوری requirement ها (همونایی که در بالا ذکر شده) وجود داره:User Story Mappingتکنیکی برای شناسایی و درک نیاز کاربران نهایی. این تکنیک به دولوپر کمک می کنه تا کار خود را بر اساس آنچه که به ایجاد یک UX عالی کمک می کنه، اولویت بندی کنه. با استفاده از User Story Mapping، می توانید نحوه تعامل کاربر با نرم افزار (محصول، خدمات، وب سایت و ...) یا کار هایی که کاربر قرار هست توی محصول انجام بده رو مشخص کنید.با این کار تشخیص میدی که کدوم مرحله بیشتر به نفع کاربره و ساخت کدوم ویژگی ارزش بیشتری به UX میده و بعدش همونو تو اولویت قرار میدی.مراحل ایجاد User Story Mappingمرحله ۱: جمع کردن تیم درگیر در تولید محصولمرحله ۲: شناسایی کاربران، اهدافشون، نیازهاشون و ... . تجزیه و تحلیل داده های جمع آوری شده مشکلات کاربر را نمایش می دهد. حالا ببین محصول شما چگونه می تواند این مشکلا رو حل کنه.مرحله ۳: مشخص کردن فعالیت هایی که برای کاربر، هنگام استفاده از محصول مهم هست. جای اینا بالای user story map هست. حالا این فعالیت ها باید به user story های کوچکتر خورد بشه. این story ها را به صورت عمودی روی map قرار میگیرن و مهمترین آنها را در بالای همه میاد.مرحله ۴: مشخص کردن چگونگی جریان یافتن کاربر توی محصول از چپ به راست روی user story map. اگر چندین کاربر وجود دارد ، سناریوهای مختلفی برای هر یک ایجاد کنید.مرحله ۵: story های مهم برای ایجاد UX خوب رو برجسته کن. حالا dependency ها، الزامات تکنیکال، گلوگاه هایی که ممکنه روی کاری که باید انجام بدی تأثیر بزاره رو مشخص کن. قبل از برنامه ریزی، مطمئن شو که برای غلبه بر این مسائل راه حلی دارید.سمت چپ اولویت بندی فعالیت ها اومده (مرحله ۳). مرحله ۴ هم به خوبی تو تصویر نشون داده شده.البته میشه از یه دیدگاه دیگه هم بهش نگاه کرد. اونم اینه که توسعه محصول رو داری به سبک iterative ای که release base هست پیش میبری.همونطوری که توی تصویر بالا و تصویر بعد مشاهده میشه ممکنه task ای برای یه activity (فعالیت) توی release های بعدی نداشته باشیم.مثلا توی تصویر زیر شما میتونی فرآیند خرید رو ببینیUse Case Diagramsگرافیکی نمایش دادن تعامل کاربر با سیستم/action های کاربر و پاسخ های سیستم. کمک این دیاگرام به ما اینه که روی requirement های کاربر در حین توسعه نرم افزار تمرکز کنیم.Sequence Diagramنمایش دهنده اینه که چجوری بخش های مختلف یک سیستم با هم کار می کنن تا یک قابلیت رو پیاده بکنن. ترتیب رو هم توی use case های مختلف مشخص می کنن. وبسایتی برای رسم sequence diagramمثلا توی مثال زیر اومدیم سیستم سفارش مک دونالد رو رسم کردیم.Wireframes & UI Mockupsیه طرح اولیه از رابط کاربری وب سایت یا برنامه هست که به شما کمک می کند نحوه کار برنامه یا وب سایت را بفهمید و هرگونه خطا در طراحی شناسایی میشه. با استفاده از wireframe نحوه کار سیستم خود را درک می کنید.UI Mockupیه ورژن گرافیکی تر و پرطرفدار از وایرفریم، UI Mockup هست. کمک می کنه تا در مورد نحوه کارکرد برنامه ایده بگیرید و ظاهرش رو هم ببینید.Process Maps and Flowchartsساده سازی یک فرآیند/فرآیندهای کسب و کار، flow های کاربر یا حتی روند جمع آوری requirements های سیستم. مثلا این نمودار پایین فرآیند خرید رو براتون نمایش میده.Mind Mapsهنگام جمع آوری requirement ها، جلسات brainstorming فردی و گروهی به طور مکرر انجام می شود. از نقشه های ذهنی برای به یاد سپردن ایده ها، سازماندهی، دسته بندی و توسعه بیشتر آن ها استفاده کنید.System Context Diagramsنمایی از بالای سیستم و اینکه چطور با موجودیت های خارجی مثل کاربر و ... تعامل میکنه.Functional Decomposition Diagramsشکستن سیستم به قطعات کوچکتر و ساده تر. نگاهی از نزدیک به نحوه عملکرد سیستم. با شکستن سیستم یا فرآیند، requirement ها رو راحت تر می شناسید.رفرنس