Natural Language merupakan sebuah kemampuan yang harus dimiliki oleh seorang analis di dalam teknik rekayasa kebutuhan sehingga apa yang disampaikan dapat diterima dengan mudah oleh berbagai pihak dan terselesaikan, jelas atau benar-benar sesuai kebutuhan dari user, serta konsisten yaitu tidak terjadi perubahan di tengah-tengah development karena perbedaan persepsi antara analis dan user. Sehingga perlu adanya sebuah cara agar apa yang disampaikan oleh analis ke user sesuai dengan gambaran yang diberikan. Natural language di dalam requirement engineering bukanlan sebuah kata-kata yang panjang lebar ketika berbicara kepada seorang user, bukan sebuah kata-kata yang panjang dengan paragraf yang panjang dalam sebuah dokumentasi. Tapi lebih kepada model-model yang bisa diterapkan oleh seorang analis agar mudah tersampaikan detail sistem kepada user, karena jika menggunakan kata-kata biasanya akan muncul sebuah persepsi yang beda antara user dan analis. Model yang bisa digunakan bisa menggunakan work flow, grafik, gambar atau yang lain. Natural language sendiri memiliki beberapa fungsi diantaranya yaitu :1. Menghindari terjadinya kegagalan dari sebuah proyek karena adanya perbedaan persepsi antara user dan developer.
2. Banyak software yang mengalami penundaan, biaya yang semakin tinggi dan permasalahan kualitas karena ketidaksesuaian development dalam proyek sehingga membutuhkan resource yang lebih banyak
3. Dengan adanya natural language yang rapi maka akan membuat aktifitas harian makin tinggi karena kejelasan sistem bisa terlihat lebih jelas tanpa harus sering bertanya kepada user yang menghabiskan waktu.
Di dalam natural language dalam requirement engineering sebagai contoh mereka dapat membuat beberapa hal seperti :
1. Rancangan jadwal kegiatan proyek
2. Rancangan biaya proyek
3. Rancangan fungsional dan non fungsional fitur
semua itu kita butuhkan untuk mendapatkan persetujuan kontrak dari user untuk proses implementasi sistem aplikasi.
Dengan adanya natural language harapannya di dalam proyek seorang analis setidaknya bisa menangkap basis utama dari kebutuhan user, mengelola harapan dari user terkait sebuah sistem, bisa memprioritaskan kinerja serta dapat mengelola resource tim development dengan benar sesuai dengan kebutuhan, bisa memverifikasi dan memvalidasi hasil requirement sesuai dengan permintaan user, memiliki scope kinerja sehingga tidak meluas ke scope yang lain. Karena kebutuhan user adalah mutlak, sebuah fitur mungkin bagus bagi developer tapi tidak dibutuhkan oleh user, sehingga itulah perlunya melakukan langkah awal yang jelas di dalam requirement engineering dan paham mengenai natural language.
Bisa dilihat pada gambar disamping secara tampilan hal ini bisa dilakukan dan di desain oleh seorang developer, tapi tidak dibutuhkan oleh user karena tidak sesuai harapan mereka. Karena dengan desain seperti ini kelihatan jika daya jelajah kuda makin menurun dan kecepatan kudan pun menurun. Dan terasa janggal bagi user yang menggunakan.
Natural language dibutuhkan dalam proses pengembangan karena sebagai user mereka tidak memahami jika natural language itu dikonsepkan dengan bahasa yang formal dan customer tidak akan menandatangani kontrak jika requirement yang disampaikan tidak jelas dan sesuai dengan harapan mereka. Untuk menghindari kesalah pahaman dalam proses natural language di dalam sebuah proyek alangkah baik tiap analis memiliki kemampuan dalam :
1. Pemodelan dan analis dalam sebuah sistem. Pemodelan bisa dilakukan seperti membuat flowchart, diagram message sequence, use case, context diagram, data flow diagram, ERD diagram dan lain-lain
2. Constraint dalam tiap diagram harus jelas. Sebelum mengimplementasikan ke dalam diagram seorang analis harus tau tentang batasan pembuatan diagram mulai dari aktor yang terlibat, data penyimpanan, proses yang dilibatkan dan bahkan spesifikasi hardware, network dalam sebuah proyek.
Seperti halnya percakapan disamping ketika kalian menyampaikan sesuatu yang ambigu atau tidak dikenal oleh user sebaiknya jangan digunakan ketika melakukan percakapan lebih baik gunakan saja dokumentasi untuk menjelaskan apa arti dari sebuah informasi yang akan disampaikan. Sehingga bisa langsung ditangkap oleh user. Jika disamping kalian mengatakan sebuah use case, tunjukkan hasil use case diagram untuk disampaikan secara langsung. Dengan menjelaskan secara langsung melalui diagram use case, semua permasalahan yang ada sedikit demi sedikit akan berkurang karena user akan melakukan evaluasi terkait diagram sistem yang kalian buat. Namun terkadang dengan menggunakan natural language masih tetap muncul sebuah ambiguitas permintaan fitur dari user, tapi hal ini dapat dikurangi dengan adanya sebuah pemodelan.
kebutuhan terkait natural language disesuiakan dengan kebutuhan misalkan di atas adalah gambar use case. Denga menggunakan use case kita bisa tahu siapa pemangku kepentingan yang terlibat dalam sebauh sistem dan fitur apa saja yang tidak ada. Tapi di dalam use case kita tidak tahu kebutuhan seperti deskripsi dari fitur yang bisa menggunakan use case description, performance (kebutuhan terkait hardware), kehandalan sistem bisa menggunakan data flow diagram, interface dll. Hal inilah yang dibutuhkan dalam natural language agar tidak hanya 1 model yang digunakan dalam sebauh dokumentasi sistem.