Knowledge Acquisition in autOmated Specification (KAOS)

KAOS adalah pendekatan goal-oriented requirements engineering dengan serangkaian teknik analisis formal. KAOS adalah singkatan dari Knowledge Acquisition in autOmated Specification , tetapi pada  KAOS adalah singkatan dari Keep All Objects Satisfied. KAOS berasal dari kerja sama antara University of Oregon dan University of Louvain (Belgia) pada tahun 1990. Penelitian, ekstensi dan perbaikan masih dilakukan untuk metodologi ini secara teratur di University of Louvain. KAOS digerakkan oleh tujuan (goal). Setelah mengidentifikasi beberapa tujuan awal untuk calon sistem, kerangka kerja KAOS memfasilitasi identifikasi tujuan lebih lanjut, dan syarat, objek, agen, dan tindakan sistem . Konsep ini digambarkan sebagai kerangka multi-paradigma yang memungkinkan untuk menggabungkan berbagai tingkat ekspresi dan penalaran: semi-formal untuk pemodelan dan penataan tujuan, kualitatif untuk pemilihan di antara alternatif, dan formal, jika diperlukan, untuk penalaran yang lebih akurat. Dengan demikian, bahasa KAOS menggabungkan jaringan semantik  untuk pemodelan konseptual tujuan, asumsi, agen, objek, dan operasi dalam sistem, dan logika waktu linear temporal untuk spesifikasi tujuan dan objek, serta spesifikasi dasar keadaan untuk operasi. Secara umum, setiap konstruk dalam bahasa KAOS memiliki struktur dua tingkat: lapisan semantik grafis luar di mana konsep terkait dengan atribut dan hubungan, dan lapisan formal bagian dalam untuk secara formal mendefinisikan konsep. Secara keseluruhan, KAOS adalah metodologi yang dikembangkan dengan baik untuk analisis kebutuhan berorientasi tujuan yang dilengkapi dengan kerangka kerja formal yang solid. Selama perbaikan tujuan, operasionalisasi tujuan, analisis hambatan dan mitigasi, KAOS sangat bergantung pada pola-pola perbaikan formal yang terbukti sekali dan untuk semua. Oleh karena itu, pada setiap pola aplikasi, pengguna mendapat contoh bukti dari kebenaran penyempurnaan secara gratis.

Metode KAOS

Kerangka kerja KAOS meminta analis untuk mendefinisikan jaringan konsep untuk domain tertentu. Tujuan (goal) dianalisis dan dipahami dengan lebih baik dengan mengidentifikasi tujuan yang memiliki tingkat yang lebih tinggi (higher-level-goals) -tujuan yang akan menjelaskan mengapa tujuan ini diinginkan - dan tujuan tersebut akan lebih jelas didefinisikan dengan membuat sub-tujuan (sub-goals). Dengan mengidentifikasi hubungan antara tujuan dengan tujuan lain, dikembangkan sebuah goal graph. Goal graph adalah jaringan semantik hubungan AND = OR = XOR antar tujuan di mana tujuan dikurangi oleh gabungan sub-goal atau disjungsi (eksklusif). Hubungan konflik (conflict relationship) antar tujuan juga dapat ditelusuri. Daun (leaves) dari goal graph adalah persyaratan - tujuan yang tidak dapat dikurangi lebih lanjut dan dapat ditugaskan sebagai tanggung jawab masing-masing agen. Suatu persyaratan ditugaskan ke agen perangkat lunak dan diambil sebagai kebutuhan, atau ke agen di domain dan diambil sebagai asumsi. Membedakan kebutuhan dari asumsi dapat mengidentifikasi batas antara perangkat lunak dan lingkungan untuk calon sistem. Secara intuitif, kebutuhan adalah pernyataan preskriptif dan asumsi deskriptif. Persyaratan dioperasionalkan oleh tindakan yang dilakukan oleh agen yang bertanggung jawab untuk masing-masing persyaratan sedemikian rupa sehingga sistem komposit memenuhi tujuan. Agen juga dapat memantau dan mengontrol objek tertentu yang diidentifikasi saat menentukan tujuan. Objek-objek ini dapat menjadi input dan output dari tindakan. Tujuan menyangkut objek, dan objek memastikan syarat jika mereka mengambil bagian dalam tindakan yang mengoperasikan persyaratan itu. Tahap akhir adalah mengidentifikasi rintangan yang mungkin terjadi pada suatu tujuan memungkinkan seseorang untuk merumuskan kembali goal graph dan memperkuat spesifikasi kebutuhan dengan memilih jalur pengurangan alternatif atau penugasan agen, atau dengan memperkenalkan tujuan baru untuk mengurangi hambatan.
Metode ini secara garis besar terdiri dari (i) mengidentifikasi dan menyempurnakan tujuan secara progresif sampai kendala yang dapat diberikan kepada masing-masing agen diperoleh, (ii) mengidentifikasi objek dan tindakan secara progresif dari tujuan, (iii) memperoleh persyaratan pada objek dan tindakan untuk memenuhi kendala, dan (iv) menugaskan kendala, objek dan tindakan kepada agen yang menyusun sistem. Pengetahuan meta-level digunakan untuk memandu proses elaborasi; dibutuhkan bentuk taksonomi konseptual, aturan dan taktik yang terbentuk dengan baik untuk memilih di antara alternatif.

Konsep utama KAOS

Ontologi KAOS termasuk objek (object), yang merupakan hal yang menarik dalam sistem komposit yang instansnya dapat berevolusi dari satu keadaan ke keadaan lain. Objek bisa berupa entitas, hubungan, atau events.
Operasi (operation) adalah hubungan input-output atas objek. Aplikasi operasi menentukan transisi keadaan. Operasi dinyatakan dengan tanda tangan di atas objek dan memiliki kondisi sebelum (pre-), sesudah (post-), dan pemicu (trigger). KAOS membuat perbedaan domain antara pra-kondisi / post-kondisi untuk operasi dan pra-kondisi / post-kondisi yang diinginkan untuk itu. Yang pertama bersifat indikatif dan menggambarkan apa arti aplikasi operasi dalam domain (tanpa resep tentang kapan operasi harus atau tidak harus diterapkan) sementara yang kedua adalah optatif dan menangkap penguatan tambahan dari kondisi untuk memastikan bahwa tujuannya tercapai.
Agen (agent) adalah sejenis objek yang bertindak sebagai prosesor untuk operasi. Agen adalah komponen aktif yang dapat berupa manusia, perangkat, perangkat lunak, dll. Agen melakukan operasi yang dialokasikan untuk mereka. KAOS memungkinkan analis menentukan objek mana yang dapat diamati atau dikendalikan oleh agen.
Tujuan (goal) dalam KAOS didefinisikan dalam  sebagai “pernyataan perspektif tentang suatu sistem yang kepuasannya secara umum membutuhkan kerja sama dari beberapa agen yang membentuk sistem itu”. Tujuan dalam KAOS dapat merujuk ke layanan (tujuan fungsional) atau kualitas layanan (tujuan non-fungsional). Di KAOS, tujuan disusun dalam penyempurnaan hierarki abstraksi AND / OR seperti biasa. Penyempurnaan tujuan (goal refinement) berakhir ketika setiap sub goal dapat direalisasikan oleh beberapa agen individu yang ditugaskan untuk itu. Hal itu berarti tujuan harus dapat diungkapkan dalam hal kondisi yang dapat dipantau dan dikendalikan oleh agen. Kebutuhan dan harapan dalam KAOS didefinisikan dengan cara yang biasa — yang pertama adalah tujuan di bawah tanggung jawab agen dalam calon sistem dan yang terakhir menjadi tujuan di bawah tanggung jawab agen di lingkungan. Pola definisi tujuan digunakan untuk spesifikasi tujuan ringan pada lapisan pemodelan. Ini ditentukan dalam logika temporal dan termasuk pola seperti 'mencapai', 'berhenti', 'mempertahankan', 'mengoptimalkan', dan 'menghindari'. KAOS juga telah mendukung jenis tujuan tambahan. Misalnya, tujuan kepuasan (satisfaction goals) adalah tujuan fungsional yang berkaitan dengan pemenuhan permintaan agen; tujuan informasi (information goals) juga merupakan tujuan fungsional dan berkaitan dengan membuat agen tersebut mendapat informasi tentang keadaan objek; tujuan akurasi (accuracy goals), adalah tujuan non-fungsional yang mensyaratkan bahwa keadaan objek perangkat lunak secara akurat mencerminkan keadaan objek yang diamati / dikendalikan di lingkungan.