در توسعه نرمافزار و مدیریت تولید به توصیف غیررسمی و با استفاده از زبان طبیعی یک یا چند ویژگی یک سامانه نرمافزاری داستان کاربر میگویند. داستان کاربر معمولاً از دید کاربران سامانه نوشته میشود و عموماً روی برگههای کوچک یا به شکل دیجیتالی در سامانههای مدیریت پروژه ثبت میشوند.[۱] بسته به نوع پروژه، داستان کاربر میتواند توسط سهامداران سامانه از جمله مدیران و تیم توسعه نیز نوشته شود. هدف اصلی داستان کاربر، کمک به درک سامانه و اجزای مرتبط به آن توسط تیمهای نرمافزاری است.[۲]
داستانهای کاربر باعث راحت شدن ارتباط میشوند و به تیم توسعه نرمافزار کمک میکنند تا درک خود از سامانه و ویژگیهای آن را نظم بدهند.[۲]
داستانهای کاربر توسط کاربران و مشتریان سامانه نوشته میشوند و ویژگیهای سامانه در حال توسعه را مشخص میکنند. در برخی تیمها، مدیر محصول (یا صاحب محصول در چارچوب اسکرام)، مسئول یکپارچه کردن داستانهای کاربر و مرتب کردن آنها در انبار محصول است. در برخی دیگر از تیمها، همه اعضای تیم میتوانند در یکپارچه کردن داستانهای کاربر نقش داشته باشند. فرایند تولید داستان کاربر میتواند در قالب بحث با سهامداران صورت بگیرد.
متداولترین قالب نگارش داستان کاربر، قالب کانکسترا (Connextra) است.[۳][۴][۵] به پیشنهاد مایک کان عبارت «به طوری که» اختیاری است اگرچه نوشتن آن سودمند است.[۶]
به عنوان «مسئولیت» من میتوانم «قابلیتها»، به طوری که «منفعت»
کریس متس (Chris Matts) پیشنهاد داد که ارزش و منفعت باید به عنوان قدم اول تحویل سامانه نرمافزاری مورد توجه قرار گیرد در نتیجه قالب زیر را برای نوشتن داستان کاربر ارائه کرد:[۷]
برای دستیابی به «منفعت» به عنوان «مسئولیت»، من میتوانم «هدف»
به عنوان مدیر منابع انسانی من میخواهم یک تست غربالگری درست کنم به طوری که بتوانم تشخیص دهم آیا یک نیروی تازهوارد به مدیر عملیاتی فرستاده شود یا خیر.[۹]
به عنوان مدیر میخواهم بین تستهای موجود بگردم به طوری که بتوانم در صورت نیاز برای موقعیتهای شغلی جدید از تستهای قبلی استفاده کنم یا آنها را به روز کنم.[۹]
مشکل توسعه مقیاس: داستانهای کاربر روی برگههای کوچک کاغذ نوشته میشوند در نتیجه توسعه آنها به پروژههای بزرگ مشکل است.
گنگ و ناکامل بودن: داستانهای کاربر به علت بیان شدن به زبان طبیعی، احتمال سوء برداشت دارند و همچنین به علت کوتاهی، نمیتوانند بیانکننده جزییات پیادهسازی ویژگیها باشند. به همین دلایل نمیتوان از داستانهای کاربر در قراردادهای رسمی استفاده کرد.[۱۰]
بیان نشدن نیازمندیهای غیروظیفهای: به ندرت در داستانهای کاربر شاخصهای عملکردی یا نیازمندیهای غیروظیفهای ثبت میشوند. در نتیجه ممکن است در انجام آزمونهای عملکردی کوتاهی شود.
مشخص نبودن نحوه پیادهسازی: از آنجایی که داستانهای کاربر معمولاً از دید تجاری و سود و منفعت نوشته میشوند، زمانی که تیم توسعه درگیر پیادهسازی این ویژگیها میشود ممکن است به محدودیتهای تکنیکی برخورد کند که حل آنها ورای یک داستان کاربر تکی باشد. البته در بعضی موارد شکاندن این داستانهای کاربر به داستانهای کوچکتر میتواند مشکل را حل کند. از طرفی داستانهای کاربری که از دید تکنیکی نوشته شدهاند ممکن است از دید سهامداران تجاری بیارزش قلمداد شده و دچار مشکل شوند.
نقشه داستان،[۱۱] داستانهای کاربر را بر اساس نقشه راه محصول که تصویر بزرگ محصول است نظم میدهد. این تکنیک توسط جف پاتون (Jeff Patton) توسعه داده شد که هدف از آن عنوان کردن خطر پروژههای با داستانهای کاربر بسیار زیاد بود که توجه را از هدف اصلی محصول دور میکند.[۱۲] تصویرسازی داستانهای کاربر به شکل نقشه داستان در قالب کارگاههایی با حضور کاربران سامانه اتفاق میافتد که در آن ابتدا فعالیتهای اصلی و اهداف سامانه مشخص میشوند.
مزیت استفاده از نقشه داستان این است که میتوان به شکل گرافیکی، نمایی دو بعدی از از انبار محصول را مشاهده کرد که در بالای آن تیترها قرار دارند که داستانهای کاربر ذیل آن گروهبندی میشوند. در جهت افقی نیز ترتیب توصیف رفتار سامانه است.
به یک توصیف سطح بالا از ارتباطات بین سامانه و یک یا چند کاربر که این کاربر میتواند خود یک سامانه یا انسان باشد، مورد استفاده میگویند.[۱۳] با وجود شباهت مورد استفاده با داستان کاربر تفاوتهایی نیز میان آنها وجود دارد.
داستان کاربر
مورد استفاده
شباهتها
عموماً به زبان مورد استفاده کاربران نوشته میشوند تا امکان درک ویژگیهای سامانه را به خواننده بدهد.
به زبان تجاری مورد استفاده کاربر نوشته میشود تا ارتباط بین سهامداران بهتر صورت بگیرد.
تفاوتها
یک توصیف ساده و کوچک و با جزییات کم از ویژگیهای سامانه ارائه میدهد.
مدیریت نیازمندیها را راحتتر میکند و بیشتر روی اهداف سامانه و نحوه ارتباط اجزای سامانه برای رسیدن به آن هدف تمرکز میکند.
جریان مورد استفاده، ترتیب ارتباطات را مشخص میکند و به تنهایی شامل جزییات کافی برای استفاده است.
قالب
به عنوان «نقش کاربر»، من میخواهم «هدف» به طوری که «علت»
↑Dimitrijević, Sonja; Jovanović, Jelena; Devedžić, Vladan (2015). "A comparative study of software tools for user story management". Information and Software Technology (به انگلیسی). 57: 352–368. doi:10.1016/j.infsof.2014.05.012. a great number of software tools that provide, inter alia, support for practices based on user stories have emerged in recent years.
↑Lucassen, Garm; Dalpiaz, Fabiano; Werf, Jan Martijn E. M. van der; Brinkkemper, Sjaak (2016), Daneva, Maya; Pastor, Oscar (eds.), "The Use and Effectiveness of User Stories in Practice", Requirements Engineering: Foundation for Software Quality, Springer International Publishing, vol. 9619, pp. 205–222, doi:10.1007/978-3-319-30282-9_14, ISBN978-3-319-30281-2, The most prevalent user story template is the ‘original’ one proposed by Connextra
↑"Glossary: User Story Template". agilealliance.org. Agile Alliance. 17 دسامبر 2015. Retrieved 3 February 2020. Another name is the "Connextra format", in recognition of its origins
↑"User Story". t2informatik GmbH. Retrieved 3 February 2020. "As (who) (when) (where), I (want) because (why)." – this phrase is based on typical W questions: who, when, where, what and why.