Pada tahapan pengembangan software, analisis kebutuhan merupakan tahapan pertama yang dilakukan. Pengumpulan data kebutuhan dapat dilakukan dengan berbagai cara, seperti wawancara dengan narasumber/expert, kuesioner, menganalisa permasalahan pada sistem yang berjalan, atau membandingkan beberapa aplikasi sejenis. Setelah kebutuhan sistem dikumpulkan dan dianalisis, maka kebutuhan sistem tersebut harus dideskripsikan. User story merupakan salah satu dokumentasi dari kebutuhan sistem yang digunakan dalam metodologi agile. Berbeda dengan model lainnya (contoh: UML diagram) yang bersifat statis, user story mudah untuk diadaptasi sesuai dengan perubahan kebutuhan sistem. Hal ini sesuai dengan kondisi pasar saat ini yang mengalami perubahan sangat cepat, seperti pembaharuan sistem operasi ataupun pembaharuan perangkat mobile.

User story merupakan deskripsi mengenai kebutuhan sistem dalam bentuk bahasa natural yang dapat dengan mudah dipahami oleh end user yang tidak memiliki background TI. User story merupakan semi-structure language, karena sintaks yang harus diikuti dalam membuat user story. Berikut adalah template sederhana dalam membuat user story:

  • As a, diikuti oleh role dari user yang akan menggunakan feature dari user story tersebut.
  • I want, merupakan penjelasan mengenai fungsi/feature yang akan dikembangkan
  • So that, merupakan hasil yang didapatkan setelah fungsi yang diminta dijalankan. Pada beberapa teori, disebutkan bahwa “so that” adalah opsional.

Contoh beberapa user story:

  • As a user, I want to upload photos so that I can share photos with others.
  • As an administrator, I want to approve photos before they are posted so that I can make sure they are appropriate.
  • As a Flickr member I want to be able to assign different privacy levels to my photos so I can control who I share which photos with.
  • Sebagai seorang mahasiswa, saya ingin mengakses nilai ujian pada semester berjalan dan histori nilai saya pada semester-semester sebelumya, sehingga saya dapat memastikan hasil belajar saya.
  • Sebagai seorang dosen, saya ingin mengirimkan nilai ujian mahasiswa dalam bentuk file excel, sehingga nilai mahasiswa dapat dibaca langsung per kelas.

User story ini dapat diadaptasi menggunakan bahasa dari masing-masing negara yang menggunakan. Namun sebagian besar tim pengembang lebih memilih menggunakan Bahasa Inggris karena sifatnya yang global (dapat dipahami oleh semua orang) dan lebih mudah diasosiasikan dengan feature-feature yang kembangkan yang biasanya menggunakan Bahasa Inggris.

Selain kemudahan pemahaman feature-feature dari sistem yang akan dikembangkan dari sebuah user story, terdapat beberapa kendala yang dihadapi dengan penggunaan user story. Penggunaan bahasa natural sulit untuk dipahami dan diproses secara langsung oleh komputer, sehingga untuk beberapa proses yang seharusnya bisa diotomasikan harus dilakukan secara manual (contoh: pembuatan test case). Selain itu, proses validasi dan verifikasi user story yang telah dibuat sering kali menimbulkan konflik antara user dan developer. Hal ini disebabkan oleh ambiguity yang ditimbulkan oleh penggunaan user story dan ruang lingkup yang dijelaskan dalam user story kurang jelas. Untuk mengatasi hal inil, user story yang telah dibuat dapat diperdetail dengan menggunakan acceptance criteria.

Acceptance criteria menjelaskan ruang lingkup dari sebuah user story yang berupa daftar kriteria yang mengindikasikan sebuah story sudah diselesaikan. Acceptance kriteria nantinya akan menjadi panduan bagi end user dalam melakukan User Acceptance Test. Berikut ini adalah contoh acceptance criteria yang dibuat dari sebuah user story:

User story:

  • As a participant, I want to be able to register online, so I can register quickly and cut down on paperwork.

Acceptance Criteria:

  • All mandatory fields need to be filled before submitting a registration form.
  • One user cannot enroll more than one time.
  • Payment can be completed by bank transfer or credit card.
  • Payment from bank transfer need to be verify by committee first.
  • All registration data will be stored into database.
  • An acknowledgement email will be sent to user that success the registration.