Agile Unified Process

***Agile Unified Process*** (**AUP**) adalah versi sederhana dari *[[Rational Unified Process]]* (RUP) yang dikembangkan oleh Scott Ambler. AUP menjelaskan pendekatan yang sederhana, mudah dipahami untuk mengembangkan perangkat lunak aplikasi bisnis menggunakan teknik dan konsep *agile* tetapi masih tetap berlaku untuk RUP. Pendekatan ini menerapkan teknik *agile,* termasuk *[[Test-driven Development]]* (TDD), *[[Agile Model Driven Development]]* (AMDD), *agile change management*, dan *refactoring database* untuk meningkatkan produktivitas. *Agile Unified Process* (AUP) mengadopsi filosofi *“serial in the large”* dan *“iterative in the small”*  untuk membangun sistem berbasis komputer. Dengan mengadopsi tahapan kegiatan klasik *[[Unified Process]]* — permulaan *(inception),* elaborasi *(elaboration),* konstruksi *(construction),* dan transisi *(transition)* — AUP menyediakan lapisan serial (mis., Urutan linier kegiatan rekayasa perangkat lunak) yang memungkinkan tim memvisualisasikan alur proses keseluruhan untuk proyek perangkat lunak. Namun, dalam setiap kegiatan, tim melakukan iterasi untuk mencapai *agility* dan untuk memberikan *software increment* yang bermakna kepada pengguna akhir secepat mungkin.

Alih-alih menggunakan pendekatan *"big bang"* di mana pengembang memberikan perangkat lunak sekaligus, pengembang justru melepaskannya menjadi bagian-bagian produksi (mis. Versi 1, lalu versi 2, dan seterusnya). Tim AUP biasanya mengirimkan rilis pengembangan pada akhir setiap iterasi ke tahap area pra-produksi *(pre-production)*. Rilis pengembangan suatu aplikasi adalah sesuatu yang berpotensi dilepaskan ke dalam tahap produksi jika harus melalui jaminan kualitas pra-produksi *(Quality Assurance)*, pengujian *(testing),* dan proses penyebaran *(deployment) .* Rilis produksi pertama sering kali lebih lama untuk disampaikan daripada rilis berikutnya; dalam rilis pertama dari suatu sistem, mungkin perlu mendapatkan banyak *"plumbing"* di tempat dan tim kemungkinan belum *"gelled"* tetapi memungkinkan mereka untuk menjadi efisien dalam kolaborasi. Rilis produksi pertama mungkin membutuhkan dua belas bulan untuk mengirimkan, rilis kedua sembilan bulan, dan kemudian rilis lainnya dikirimkan setiap enam bulan. Fokus awal pada masalah penyebaran tidak hanya memungkinkan untuk menghindari masalah, tetapi juga memungkinkan untuk memanfaatkan pengalaman selama pengembangan. Misalnya, ketika menggunakan perangkat lunak ke area *staging,* tim pengembang harus mencatat apa yang berhasil dan apa yang tidak, catatan yang dapat berfungsi sebagai tulang punggung skrip instalasi tim AUP.

## ''Serial in the large''
Sifat serial *Agile Unified Process* (AUP) ditangkap dalam empat fase:

**Tahap awal ''(Inception)*** tujuannya adalah untuk mengidentifikasi ruang lingkup awal proyek, arsitektur potensial untuk sistem, dan untuk mendapatkan pendanaan awal proyek dan penerimaan [[pemangku kepentingan]].

*'Elaborasi *(Elaborattion)*** tujuannya adalah untuk membuktikan arsitektur sistem.

**Konstruksi *(Construction)*** tujuannya adalah untuk membangun perangkat lunak yang berfungsi secara teratur, ''incremental basis'' yang memenuhi kebutuhan prioritas tertinggi dari para pemangku kepentingan proyek.

**Transisi *(Transition)*** tujuannya adalah untuk memvalidasi dan menyebarkan sistem ke lingkungan produksi.

== ''Iterative in the small'' ==
Setiap iterasi AUP (yang mengadopsi filosofi ''"iterative in the small"'' membahas kegiatan-kegiatan berikut:

**Pemodelan *(Modeling):*** Representasi UML dari bisnis dan domain masalah dibuat. Namun, untuk tetap ''agile'', model-model ini harus ''"just barely good enough"''  untuk memungkinkan tim melanjutkannya.

**Pelaksanaan *(Implementation):*** Model diterjemahkan ke dalam kode ''(source code)**'.*

*'Pengujian *(Testing):*** Seperti XP, tim merancang dan menjalankan serangkaian tes untuk mengungkap kesalahan dan memastikan bahwa kode ''(source code)'' memenuhi kebutuhannya.

**Penyebaran *(Deployment): P***enerapan dalam konteks ini berfokus pada pengiriman ''software increment'' dan perolehan umpan balik dari pengguna akhir.

**Konfigurasi dan manajemen proyek *(Configuration and project management):*** Dalam konteks AUP, manajemen konfigurasi membahas [[manajemen perubahan]], manajemen risiko, dan kontrol produk kerja persisten yang diproduksi oleh tim. [[Manajemen proyek]] melacak dan mengontrol kemajuan tim dan mengoordinasikan kegiatan tim.

**Pengelolaan lingkungan *(Environment management)*''': Manajemen lingkungan mengoordinasikan infrastruktur proses yang mencakup standar, peralatan, dan teknologi pendukung lainnya yang tersedia untuk tim.

## Referensi