Indikator Materi:

  • Mengetahui penggunaan Agile modelling & Prototyping

Pengantar Agile

Agile Value dan Agile Principles 

Agile Manifesto ditemukan pada 11-13 Februari 2001 di The Lodge, salah satu resort di Utah, Amerika Serikat yang terdiri dari 4 values dan 12 principles

Agile adalah sebuah mindset untuk dapat bertindak cepat, adaptif dan fleksibel yang terdiri dari 4 values dan 12 principles

Pentingnya Agile bagi Business User 

  1. Time to Market 
  2. Ability to Change 
  3. Accelerate Product Delivery & Feasibility 
  4. Customer Satisfaction 
  5. Business Existency 

Pentingnya Agile bagi Project Team 

  1. Collaboration IT & Business 
  2. Removed Silo Mindset 
  3. Self Organized 

4 Agile Value terdiri dari:

  1. Individuals and interactions over processes and tools 
  2. Working software over comprehensive documentation 
  3. Customer collaboration over contract negotiation 
  4. Responding to change over following a plan 

Gambar. Agile Value

12 Principles Agile




Penjelasan secara mudah sebagai berikut dari sumber https://medium.com/au-ppl/bedah-12-prinsip-agile-98c756ecf0e4

1. Prioritaskan Kepuasan Klien

Ada klien meminta dibuatkan perangkat lunak yang sesuai dengan keinginan klien. Bagaimana cara tahu produk yang dibuat itu sesuai? Tentu saja meihat apakah kliennya puas atau tidak.

Sounds simple, right? Not really. Terkadang apa yang diinginkan klien pada awal perencanaan, dapat berubah ketika ia melihat produk kita. Nah, kalau sampai begitu, harus kerja lagi, deh.

Lantas, bagaimana menyikapinya? Kita harus melakukan delivery product secara rutin, agar kita mendapat feedback dari klien untuk pengembangan kedepan, sehingga hasil akhir product benar-benar akan memuaskan pelanggan.

2. Menerima Perubahan Kebutuhan

Seperti yang dijelaskan pada prinsip nomer 1, klien terkadang merubah kebutuhan produk setelah mencoba hasil produk yang dikembangkan. Dalam hal ini, tim developer harus siap menerima pekerjaan tambahan, dan merubah rencana pengembangan jika dirasa perlu. Well, Customer always right.

3. Rilis Produk Secara Rutin

Untuk mendapatkan feedback dari klien, kita harus mengirim produk secara berkala untuk klien. Nah, pengiriman produk tersebut tidak bisa hanya ketika memang butuh feedback, harus dilakukan secara rutin. Semakin pendek jangka waktunya, akan semakin baik.

Selain berguna untuk proses pengembangan perangkat lunak, rilis produk secara rutin juga meningkatkan kepercayaan klien pada tim developer. Kalaupun memang hasil rilisnya tidak sebagus yang diharapkan, setidak klien mengetahui kalau tim developer memang mengerjakan proyek yang diminta dengan konstan.

4. Kolaborasi

Meskipun klien bukan bagian dari tim developer, klien tetap merupakan bagian dari tim proyek. Oleh karena itu, tim developer tetap harus mengikutsertakan klien dalam proses pengembangan perangkat lunak, karena toh, produk yang dikembangkan dalam proyek juga diperuntukkan kepada klien.

Caranya? Seringlah bertanya kepada klien tentang apa yang ia butuhkan secara detil, setiap kali developer meminta feedback kepada klien. Feedback dari klien terkadang masih bersifat umum, sehingga perlu ditanyakan kembali, apa yang sebenarnya kurang secara detil.

5. Bekerja dengan Individu yang Bersemangat

Kenapa anda tekun dalam main game? Karena anda suka main game! Karena anda suka main game, jadinya anda bersemangat main game. …Oke mungkin tidak semua suka main game.

Terus hubungannya apa? Coba ganti kata game dengan bekerja. Kalau anda semangat bekerja, maka anda akan tekun bekerja. Jika anda tekun bekerja, maka produk akan semakin baik, karena anda benar-benar memperhatikan apa yang kurang dalam produk anda.

6. Komunikasi Tatap Muka

Banyak hal yang kalau dikomunikasikan secara tertulis akan sulit, atau bahkan ada yang tidak bisa dikomunikasikan tertulis sama sekali. Karena itu, komunikasi tatap muka lebih baik dan efisien dibanding komunikasi tertulis.

Pada Agile, tim developer dan klien sering melakukan sesi tatap muka untuk membahas produk yang dikembangkan. Dengan komunikasi seperti ini, terjalin kesepahaman yang lebih erat, sehingga produk yang dihasilkan lebih optimal.

7. Kunci Keberhasilan adalah Produk yang Bekerja

Ya, mungkin ini adalah prinsip yang agak kontroversial, namun memang kenyataannya begitu. Saya tidak akan membahas mengenai apakah ini berarti klien akan menerima produk selama produk yang dikembangkan bekerja.

Yang ingin saya bahas adalah, dalam pengembangan perangkat lunak, kita tidak dapat memaksakan cara pengembangan kode milik kita, dengan anggota lain. Setiap anggota memiliki cara koding masing-masing, dan hal itu sangat lumrah. Yang terpenting adalah bagaimanapun cara setiap anggota ngoding, produk tetap bekerja dengan optimal.

8. Kecepatan yang Konstan

Ada alasan mengapa perlu adanya rilis produk secara rutin. Rilis rutin akan memicu tim developer untuk mengembangkan proyek secara konstan, sehingga kecepatan pengembangnya pun konstan.

Kecepatan yang konstan akan mengurangi resiko ketidaktelitian, karena pekerjaan yang konstan akan memperhatikan setiap detil akan apa yang dikerjakan.

9. Perhatian terhadap Keunggulan Teknis dan Desain yang baik

Salah satu tuntutan tim developer adalah mampu mengikuti perkembangan teknologi. Perkembangan teknologi akan menyajikan desain dan teknis baru yang (biasanya) lebih baik.

Menjadi tugas bagi tim developer untuk belajar dan mengikuti pekermbangan teknologi, untuk hasil produk yang maksimal.

10. Kesederhanaan itu Penting

Tuntutan mengikuti teknologi, bekerja secara konstan, komunikasi tatap muka. Sangat banyak energi yang harus dikerahkan untuk mengembangkan perangkat lunak, belum lagi urusan di luar proyek yang tidak kalah memelelahkannya.

Saya tahu untuk beberapa orang yang perfeksionis, hal ini menimbulkan kontra, namun terkadang ada baiknya bekerja hanya sesuai keinginan klien, tidak perlu menambahkan fitur-fitur lain diluar hasil diskusi dengan klien. Ingat, anda bukan robot.

11. Mengelola Diri Sendiri

Pada akhirnya kita hanya manusia biasa. Kita tidak dapat memperkirakan semuanya dari awal sampai akhir. Bahkan, sekalipun sudah berdiskusi dengan klien, terkadang belum jelas di benak kita, seperti apa produk yang diinginkan.

Untuk itulah tim developer mengembangkan produk secara progresif. Awalnya produk tidak terlalu baik, namun setelah mendapat feedback dan belajar lagi, produk yang dirilis semakin lama semakin baik.

Itulah cara kerja Agile Development. Kita tidak dituntut tahu semua dari awal sampai akhir, namun menemukan gambaran utuh sembari mengembangkan produk.

12. Refleksi dan Penyesuaian

Pernah merasa serba salah ketika mengembangkan perangkat lunak? Atau mungkin anda ingin sesaat melihat kebelakang, apa yang sudah anda kerjakan? Saatnya berhenti sejenak dan merefleksikan apa yang sudah kita lakukan.

Manusia punya batasan, tidak dapat terus menerus belajar dan bekerja. Untuk itulah, terkadang kita perlu refleksi sejenak dan merenungkan apa yang telah kita lakukan. Apa yang baik dan buruk, yang harus diteruskan atau yang harus dihentikan.

Waterfall Versus Agile

What is Waterfall? 

Waterfall adalah metodologi pengembangan perangkat lunak pertama, yang diwarisi dari industri manufaktur dan konstruksi di mana team project tidak mampu untuk beralih ke tahap sebelumnya. 

Perbedaan Agile dan Waterfall 

1. Ability to Change 

Waterfall: Tidak memberikan ruang untuk merubah scope. 

Agile: Memberikan ruang terhadap perubahan scope. 

2. Business Value 

Waterfall: Value hanya dapat dirasakan pada akhir projek. 

Agile: Value dapat dirasakan tiap akhir sprint.

3. Risk 

Waterfall: Perencanaan jangka panjang lebih resiko. 

Agile: Perencanaan jangka pendek yang selalu adapt tiap sprint. 

4. Visibility 

Waterfall: Business user hanya bisa mendapat laporan

Agile: Visibility dapat terlihat tiap akhir sprint.

Kesimpulan: Kenapa Agile Now?

Metode pengembangan perangkat lunak Agile tidak menjamin kesuksesan. Masalah masih bisa muncul dalam proses pengembangan. Komunikasi di antara anggota tim bisa salah. Alat teknologi bisa gagal. Pelanggan pada akhirnya tidak puas dengan produk.

Penting juga untuk diingat bahwa dengan Agile itu bukan proposisi satu ukuran untuk semua. Organisasi yang berbeda memiliki kebutuhan dan tantangan yang unik, baik secara internal maupun eksternal. Apa yang bekerja dengan baik untuk satu perusahaan mungkin tidak bekerja dengan baik untuk yang lain.

Tetapi potensi manfaat Agile tampaknya membuat metode ini layak dipertimbangkan untuk perusahaan mana pun yang memproduksi perangkat lunak. Sebagaimana dicatat dalam laporan tentang pasar Agile oleh Transparency Market Research, “mengingat perkembangan teknologi yang cepat terjadi, bisnis saat ini harus dinamis, dapat mencapai waktu-ke-pasar yang lebih cepat dan pada saat yang sama mengurangi biaya. Teknologi adalah faktor penting di mana kesuksesan bisnis bergantung. Ini panggilan untuk TI untuk menjadi inovatif, dapat diandalkan dan beradaptasi dengan perubahan persyaratan. “

Pengembangan tangkas “mempromosikan pendekatan disiplin untuk proses dan melibatkan pemeriksaan dan adaptasi pada berbagai tahap pengembangan perangkat lunak,” kata laporan itu. “Ini menuntut akuntabilitas dan hasil dalam mendorong penggunaan praktik-praktik teknik terbaik, yang menghasilkan pengiriman cepat perangkat lunak berkualitas dan pendekatan bisnis yang selaras dengan kebutuhan pelanggan.”

Dengan menjamurnya teknologi, perangkat, dan aplikasi, layanan di belakangnya sangat penting, Transparency Market mengatakan, mengakibatkan industri TI perlu semakin mengelola layanan yang disediakannya. Ini, dikombinasikan dengan persyaratan untuk memberikan nilai lebih, kemungkinan akan mendorong pertumbuhan layanan pengembangan Agile.

Semakin banyak organisasi bergerak menuju transformasi digital dan berupaya meningkatkan kemampuan manajemen data mereka, Agile kemungkinan akan memainkan peran yang lebih besar. Sebuah laporan oleh perusahaan konsultan McKinsey & Company, “Menggunakan Agile untuk Mempercepat Transformasi Data Anda,” mencatat bahwa pendekatan Agile untuk migrasi dan manajemen data menyampaikan sejumlah manfaat penting, tidak sedikit dari yang menyatakan decutter lanskap informasi bisnis.

“Data dari banyak basis data, fungsi, dan unit bisnis dapat digabungkan dan diakses lebih mudah,” kata laporan itu. “Perusahaan dapat menyadari nilai langsung dari seringnya merilis solusi manajemen data yang minimal. Melalui penambangan data yang dimungkinkan oleh pengembangan danau data yang komprehensif, perusahaan juga dapat mengidentifikasi peluang bisnis baru. Dan jika unit bisnis terlibat dalam migrasi data sejak awal, mereka dapat memanfaatkan peluang yang muncul ini lebih cepat atau membantu organisasi TI memprioritaskan inisiatif transformasi data dan digital. ”

Agile tidak lagi hanya sebuah metodologi untuk pengembangan perangkat lunak atau manajemen operasi, perusahaan mengatakan: “Ini menjadi kemampuan penting bagi perusahaan-perusahaan yang ingin mengelola data mereka secara lebih strategis dan memberikan pengalaman pelanggan multichannel yang mulus – yang, dalam era digitalisasi ini , adalah setiap perusahaan. “

Para pemimpin teknologi dan bisnis akan lebih bijaksana untuk membiasakan diri dengan Metode Agile, jika mereka belum melakukannya. Bagi banyak organisasi, ini merepresentasikan cara kerja dicapai dalam era transformasi digital.

https://www.planview.com/fr/resources/guide/agile-methodologies-a-beginners-guide/basics-benefits-agile-method/

Prototyping

Prototipe adalah model kerja dasar dari pengembangan sebuah program (software) atau perangkat lunak. Prototipe dalam Bahasa Inggris “prototype” disebut juga dengan purwarupa. Prototipe biasanya dibuat sebagai model untuk tujuan demonstrasi atau sebagai bagian dari proses pengembangan atau pembuatan sebuah software.

Prototyping adalah proses pembuatan model sederhana software yang mengijinkan pengguna memiliki gambaran dasar tentang program serta melakukan pengujian awal. Prototyping memberikan fasilitas bagi pengembang dan pemakai untuk saling berinteraksi selama proses pembuatan, sehingga pengembang dapat dengan mudah memodelkan perangkat lunak yang akan dibuat. Prototyping merupakan salah satu metode pengembangan perangat lunak yang banyak digunakan.

Model tersebut dapat berupa tiga bentuk :

  1. Prototipe kertas atau model berbasis komputer yang menjelaskan bagaimana interaksi antara pemakai dan komputer.
  2. Prototipe yang mengimplementasikan beberapa bagian fungsi dari perangkat lunak  yang sesungguhnya. Dengan cara ini pemakai akan lebih mendapatkan gambaran tentang program yang akan dihasilkan, sehingga dapat menjabarkan lebih rinci kebutuhannya.
  3. Menggunakan perangkat lunak yang sudah ada. Seringkali pembuat software memiliki beberapa program yang sebagian dari program tersebut mirip dengan program yang akan dibuat.

Proses-proses tersebut dapat dijelaskan sebagai berikut:

1. Pengumpulan kebutuhan: developer dan klien bertemu dan menentukan tujuan umum, kebutuhan yang diketahui dan gambaran bagian-bagian yang akan dibutuhkan berikutnya;

2.  Perancangan: perancangan dilakukan cepat dan rancangan mewakili semua aspek software yang diketahui, dan rancangan ini menjadi dasar pembuatan prototype;

3.   Evaluasi Prototype: klien mengevaluasi prototype yang dibuat dan digunakan untuk memperjelas kebutuhan software.

Terdapat tiga pendekatan utama prototyping, yaitu:

1.      THROW-AWAY

Prototype dibuat dan dites. Pengalaman yang diperoleh dari pembuatan prototype digunakan untuk membuat produk akhir (final), kemudian prototype tersebut dibuang (tak dipakai).

2.      INCREMENTAL

Produk finalnya dibuat sebagai komponen-komponen yang terpisah. Desain produk finalnya secara keseluruhan haya ada satu tetapi dibagi dalam komonen-komponen lebih kecil yang terpisah (independent).

3.      EVOLUTIONARY

Pada metode ini, prototipenya tidak dibuang tetapi digunakan untuk iterasi desain berikutnya. Dalam hal ini, sistem atau produk yang sebenarnya dipandang sebagai evolusi dari versi awal yang sangat terbatas menuju produk final atau produk akhir.

Teknik-teknik prototyping meliputi:

1.      Perancangan Model

Perancangan awal software oleh pengembang untuk dimodelkan sebagai gambaran awal kepada user/pengguna.

2.      Perancangan Dialog

Perancangan menu-menu pada software yang dibuat, dengan maksud agar user/pengguna dapat dengan mudah menggunkaannya.

3.      Simulasi

Proses percobaan software kepada calon user sebelum software dinyatakan layak pakai.

Keunggulan dan Kelemahan Prototyping adalah sebagai berikut :

A.    Keunggulan prototyping :

  1. Adanya komunikasi yang baik antara pengembang dan pelanggan.
  2. Pengembang dapat bekerja lebih baik dalam menentukan kebutuhan pelanggan.
  3. Pelanggan berperan aktif dalam pengembangan system.
  4. Lebih menghemat waktu dalam pengembangan system.
  5. Penerapan menjadi lebih mudah karena pemakai mengetahui apa yang diharapkannya

B.     Kelemahan prototyping :

  1. Pelanggan kadang tidak melihat atau menyadari bahwa perangkat lunak yang ada belum mencantumkan kualitas perangkat lunak secara keseluruhan dan juga belum memikirkan kemampuan pemeliharaan untuk jangka waktu lama.
  2. Pengembang biasanya ingin cepat menyelesaikan proyek. Sehingga menggunakan algoritma dan bahasa pemrograman yang sederhana untuk membuat prototyping lebih cepat selesai tanpa memikirkan lebih lanjut bahwa program tersebut hanya merupakan cetak biru sistem .
  3. Hubungan pelanggan dengan komputer yang disediakan mungkin tidak mencerminkan teknik perancangan yang baik.

PUSTAKA