Langsung ke konten utama

Pengembangan Perangkat Lunak dengan Agile


Pada awal pengembangannya, suatu perangkat lunak sering kali dibuat tanpa ada perencanaan yang spesifik. Namun, semakin besar dan kompleks sebuah sistem maka metodologi pengembangan dan penentuan proses pengembangan pun menjadi sebuah keharusan pula. Metodologi pengembangan perangkat lunak merupakan sebuah metodologi yang digunakan untuk membuat struktur, rencana, dan kontrol pengerjaan suatu proyek. Proses pengembangan perangkat lunak adalah model-model dan metodologi yang digunakan untuk mengembangkan suatu perangkat lunak.
Dalam pengembangan perangkat lunak, requirement yang sudah ada bisa saja berubah atau bertambah ketika proses pengembangan sudah berjalan. Oleh karena itu, dibutuhkan suatu metode pengembangan perangkat lunak yang dapat mendukung hal tersebut, yaitu metode yang cepat dalam melakukan adaptasi terhadap perubahan requirement. Metode tersebut tidak lain adalah Agile Software Development.
Agile
Agile Software Development adalah sekelompok metodologi pengembangan perangkat lunak yang didasarkan pada prinsip-prinsip yang sama atau pengembangan sistem jangka pendek yang memerlukan adaptasi cepat dari pengembang terhadap perubahan dalam bentuk apapun. Dalam penerapannya, agile membantu tim developer untuk menghasilkan produk secara lebih cepat. Hal ini dikarenaan penyampaian produk kepada klien tidak dilakukan dalam satu tahap sekaligus, melainkan dilakukan secara kecil dan bertahap (iteratif). Karena penyampaiannya yang iteratif, metode ini dapat beradaptasi dengan baik terhadap perubahan requirement.
Agile manifesto:
Individu dan interaksi lebih diutamakan dari proses dan sarana perangkat lunak.
Perangkat lunak yang bekerja lebih diutamakan dari dokumentasi yang menyeluruh.
Kolaborasi dengan klien lebih diutamakan dari negosiasi kontrak.
Tanggap terhadap perubahan lebih diutamakan dari mengikuti rencana.
Dalam pelaksanaan Scrum pada tim, kami telah menerapkan agile manifesto. Salah satu bentuk penerapannya adalah dengan melakukan sharing setiap hari pukul 9 malam. Sharing ini dapat berupa progress update dari pengerjaan proyek dan kendala-kendala yang dihadapi. Terkadang kami juga melakukan sharing yang tidak berhubungan dengan pekerjaan proyek, untuk membangun interaksi yang harmonis antar anggota tim (1).
Selain itu, kelompok kami juga terbilang aktif untuk berkomunikasi dengan Product Owner terkait pengembangan aplikasi. Komunikasi ini kami lakukan melalui group chat Telegram. Product Owner dan kami sering kali melakukan diskusi terkait hal-hal teknis dalam pengembangan aplikasi (3). Diskusi ini tidak jarang juga membawa perubahan atau penambahan pada requirement yang telah ada sebelumnya (4).
Agile principles:
Kepuasan klien adalah prioritas utama dengan menghasilkan produk lebih awal dan terus menerus.
Menerima perubahan kebutuhan, sekalipun diakhir pengembangan.
Penyerahan hasil/software dalam hitungan waktu dua minggu sampai dua bulan.
Bagian bisnis dan pembangun kerja sama tiap hari selama proyek berlangsung.
Membangun proyek di lingkungan orang-orang yang bermotivasi tinggi yang bekerja dalam lingkungan yang mendukung dan yang dipercaya untuk dapat menyelesaikan proyek.
Komunikasi dengan berhadapan langsung adalah komunikasi yang efektif dan efisien.
Perangkat lunak yang berfungsi adalah alat ukur utama dari kemajuan proyek.
Dukungan yang stabil dari sponsor, pembangun, dan pengguna diperlukan untuk menjaga perkembangan yang berkesinambungan.
Perhatian kepada kehebatan teknis dan desain yang bagus meningkatkan sifat agile.
Kesederhanaan sangat penting.
Arsitek. Kebutuhan dan desain yang bagus muncul dari tim yang mengatur dirinya sendiri.
Secara periodik tim melakukan evaluasi diri dan mencari cara untuk lebih efektif dan segera melakukannya.
Dalam pelaksanaan Scrum pada tim, kami telah menerapkan agile principles. Hal ini dapat dilihat dari pelaksaan sprint review sekitar 2 minggu sekali (3). Pada sprint review, product owner memutuskan apakah hasil pekerjaan tim kami diterima atau tidak. Dari 2 sprint review yang telah kami jalani, product owner menerima pekerjaan kami dengan beberapa tambahan (2). Tambahan tersebut kami presentasikan kembali pada sprint selanjutnya (1). Selain itu, kami juga senantiasa melakukan evaluasi diri melalui sprint retrospective. Setelah melakukan evaluasi pada kelompok, kami menyusun eksperimen perbaikan untuk meningkatkan kinerja pada sprint selanjutnya (12).
Scrum
Scrum merupakan sebuah metode iteratif yang termasuk dalam metode Agile tentang bagaimana cara mengelola dan menjalankan sebuah proyek. Scrum adalah sebuah kerangka kerja di mana orang-orang dapat menyelesaikan permasalahan kompleks yang senantiasa berubah, di mana pada saat bersamaan menghasilkan produk dengan nilai setinggi mungkin secara kreatif dan produktif. Kerangka kerja scrum terdiri dari scrum roles, scrum artifacts, dan scrum rituals.



Penerapan Scrum dalam tim


Scrum roles
Product Owner: Orang yang bertanggung jawab terhadap bisnis dari suatu produk, bertugas dalam menyusun product backlog. Product Owner pada PPL 2019 ini adalah pengusul topik proyek.
Scrum Master: Orang yang bertugas memimpin tim, memastikan tim berjalan baik dan tidak memiliki gangguan. Scrum Master pada PPL 2019 ini adalah asisten dosen.
Development Team: Anggota tim yang bertugas untuk mengembangkan produk. Development tim pada PPL 2019 ini adalah mahasiswa yang mengambil mata kuliah PPL.
Scrum artifacts
Product Backlog: Daftar seluruh hal-hal yang akan dikerjakan dalam proyek.
Sprint Backlog: Daftar hal-hal yang akan dikerjakan dalam satu sprint.
Increment: Item dari Product Backlog yang diselesaikan selama satu sprint. Increment dipresentasikan kepada Product Owner pada setiap sprint review.
Scrum rituals
Fase inisiasi: Dalam kegiatan ini, dilakukan pertemuan dengan Product Owner. Selain itu kami juga membuat mock up serta melakukan set up environment.
Sprint planning: Kegiatan ini bertujuan untuk menentukan apa yang akan dikerjakan selama satu sprint. Pada kegiatan ini dilakukan pemilihan PBI menjadi Sprint Backlog. Sprint Backlog kemudian dipecah menjadi beberapa task. Task ini akan ditugaskan kepada salah satu anggota tim.
Sprint: Kegiatan ini merupakan tahapan pengembangan produk. Masing-masing anggota tim membuat kode implementasi dari task yang telah dipilih pada sprint planning.
Daily stand up: Pada PPL ini, kami melakukan daily stand up sebanyak 2 kali seminggu. Kegiatan ini dilakukan selama 15–30 menit. Setiap anggota tim melaporkan hal-hal apa saja yang sudah dikerjakan dan yang akan dikerjakan, serta kendala yang dihadapi.
Sprint review: Kegiatan ini berupa penilaian implementasi PBI yang telah dilakukan oleh tim. Development team mempresentasikan hasil sprint kepada Product Owner, kemudian Product Owner akan memutuskan apakah hasil sprint tersebut diterima atau ditolak.
Sprint retrospective: Kegiatan ini bertujuan untuk mengetahui hal-hal baik dan buruk selama satu sprint. Hal ini kami lakukan dengan menuliskan atau mengemukaan pendapat masing-masing anggota tim. Kemudian, kami bersama-sama menyusun eksperimen perbaikan untuk meningkatkan kinerja pada sprint selanjutnya.

Referensi:

What is Agile?. The Agile Coach. Web. 20 Maret 2019. https://www.atlassian.com/agile
Manifesto Pengembangan Perangkat Lunak Agile. Agile Manifesto. Web. 20 Maret 2019. https://agilemanifesto.org/iso/id/manifesto.html
The Scrum Guides. Scrum Guides. Web. 20 Maret 2019. https://www.scrumguides.org/scrum-guide.html

Komentar

Postingan populer dari blog ini

Thomas Matulessy (Kapitan Pattimura)

Saya akan berbagi artikel tentang seorang pahlawan yang menginspirasi saya untuk selalu berani dan pantang menyerah dalam menyikapi setiap masalah yang datang ke hidup saya.  Orang itu bernama Thomas Matulessy atau yang lebih kita kenal dengan nama Kapitan Pattimura. Beliau lahir di Hualoy, Seram Selatan, Maluku, 8 Juni 1783 dan meninggal di Ambon, Maluku, 16 Desember 1817 pada umur 34 tahun.  Pattimura adalah sosok yang senantiasa berjuang untuk memerdekakan indonesia,ia juga sangat percaya diri saat akan melawan pasukan penjajah belanda. Bagi saya Kapitan Pattimura adalah sosok yang pemberani dan memiliki semangat juang yang tinggi dan memiliki sifat tanggung jawab yang besar dan juga rela berkorban demi orang lain. karena pada waktu pecah perang melawan penjajah Belanda tahun 1817, Raja-raja Patih, Para Kapitan, Tua-tua Adat dan rakyat mengangkatnya sebagai pemimpin dan panglima perang karena berpengalaman dan memiliki sifat-sfat kesatria (kabaressi)....

Pengertian Diagram Class, Use Case, Sequence Diagram

 Sequence Diagram Sequence diagram adalah suatu diagram yang menggambarkan interaksi antar obyek dan mengindikasikan komunikasi diantara obyek-obyek tersebut. Diagram ini juga menunjukkan serangkaian pesan yang dipertukarkan oleh obyek-obyek yang melakukan suatu tugas atau aksi tertentu. Obyek-obyek tersebut kemudian diurutkan dari kiri ke kanan, aktor yang menginisiasi interaksi biasanya ditaruh di paling kiri dari diagram. Pada diagram ini, dimensi vertikal merepresentasikan waktu. Bagian paling atas dari diagram menjadi titik awal dan waktu berjalan ke bawah sampai dengan bagian dasar dari diagram. Garis Vertical, disebut lifeline, dilekatkan pada setiap obyek atau aktor. Kemudian, lifeline tersebut digambarkan menjadi kotak ketika obyek melakukan suatu operasi , kotak tersebut disebut activation box. Obyek dikatakan mempunyai live activation pada saat tersebut. Pesan yang dipertukarkan antar obyek digambarkan sebagai sebuah anakpanah antara activation box pengirim dan pener...

SOFTWARE

Berikut merupakan review pertemuan mata kuliah Rekayasa Perangkat lunak yang diampu oleh Bapak Bambang Prasetya Adhi, S.Pd., M.Kom. Yang di jadwalkan pada hari kamis lalu, 19 September 2019. Software/Perangkat Lunak  adalah program komputer yang mempunyai fitur, fungsi, struktur data yang memungkinkan program untuk memanipulasi informasi dan dokumentasi yang mendeskripsikan operasi dari progam. Software tidak akan usang karena suatu software mempunyai tujuan tertentu dan bisa dibilang selalu berkembang. Suatu software harus beradaptasi pada lingkungannya dan akan selalu meningkat terhadap kebutuhan bisnis baru Karakter Aplikasi Web Dapat diakses semua kalangan (Network intensiveness) Concurrency Unpredictable load Performance Availability Data driven Content sensitive Continous evolution Immediacy Security Aesthetics Umbrella Activities Software project management Formal technical reviews Software quality assurance Software configura...