Agile Development Methods
Agile Development Methods 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. Agile development methods merupakan salah satu
dari Metodologi pengembangan perangkat lunak yang digunakan dalam pengembangan perangkat lunak. Agile
memiliki pengertian bersifat cepat, ringan, bebas bergerak, dan waspada.[1] Sehingga saat membuat perangkat
lunak dengan menggunakan agile development methods
diperlukan inovasi dan responsibiliti yang baik antara tim
pengembang dan klien agar kualitas dari perangkat lunak
yang dihasilkan bagus dan kelincahan dari tim seimbang.
en membuat rencana tentang kebutuhan dari perangkat lunak yang akan dibuat.
• Implementasi, bagian dari proses dimana programmer melakukan pengkodean perangkat lunak.
• Tes perangkat lunak, disini perangkat lunak yang telah dibuat di tes oleh bagian kontrol kualitas agar
bug yang ditemukan bisa segera diperbaiki dan kualitas perangkat lunak terjaga.
• Dokumentasi, setelah dilakukan tes perangkat lunak
langkah selanjutnya yaitu proses dokumentasi perangkat lunak untuk mempermudah proses maintenanance kedepannya.
• Deployment, yaitu proses yang dilakukan oleh penjamin kualitas untuk menguji kualitas sistem. Setelah sistem memenuhi syarat maka perangkat lunak
siap dideployment.
• Pemeliharaan, langkah terakhir yaitu pemeliharaan.
Tidak ada perangkat lunak yang 100% bebas dari
bug, oleh karena itu sangatlah penting agar perangkat lunak dipelihara secara berkala.
2 Agile manifesto
Diagram dari agile development methods
1
Pendahuluan
Saat bekerja dalam tim untuk mengerjakan suatu proyek
sangatlah penting menentukan Metodologi pengembangan perangkat lunak dan Proses pengembangan perangkat
lunak yang akan digunakan. Metodologi pengembangan
perangkat lunak sendiri adalah sebuah metodologi yang
digunakan untuk membuat struktur, rencana, dan kontrol pengerjaan suatu proyek, sedangkan Proses pengembangan perangkat lunak adalah model-model dan metodologi yang digunakan untuk mengembangkan suatu perangkat lunak. Ada beberapa model Metodologi pengembangan perangkat lunak diantaranya : waterfall, fountain,
spiral, rapid, prototyping, incremental, build & fix, dan
synchronize & stabilize.[2] Terdapat enam langkah yang
digunakan dalam Metodologi pengembangan perangkat
lunak,[3] yaitu :
Martin Fowler, salah satu pencetus ide agile development methods
Agile development methods terdefinisi dalam empat nilai,
biasa di sebut Agile Alliance’s Manifesto,[4] diantaranya :
1. Interaksi dan personel lebih penting daripada proses dan alat.
• Perencanaan, pada langkah ini pengembang dan kli1
2
3
2. Perangkat lunak yang berfungsi lebih penting daripada dokumentasi yang lengkap.
3. Kolaborasi dengan klien lebih penting daripada
negosiasi kontrak.
4. Respon terhadap perubahan lebih penting daripada mengikuti rencana.
Pengertian dari Agile Alliance’s Manifesto[4] dijelaskan
di bawah ini:
• Interaksi dan personel lebih penting daripada proses dan alat, di dalam agile interaksi antar anggota
tim sangatlah penting, karena tanpa adanya interaksi
yang baik maka proses pembuatan perangkat lunak
tidak akan berjalan sesuai rencana.
• Perangkat lunak yang berfungsi lebih penting daripada dokumentasi yang lengkap, saat melakukan
proses demonstrasi kepada klien, perangkat lunak
yang berfungsi dengan baik akan lebih berguna daripada dokumentasi yang lengkap.
• Kolaborasi dengan klien lebih penting daripada
negosiasi kontrak, salah satu ciri dari agile adalah
klien menjadi bagian dari tim pengembangan perangkat lunak. Kolaborasi yang baik dengan klien
saat proses pembuatan perangkat lunak sangatlah
penting ketika menggunakan agile. Karena fungsifungsi dari perangkat lunak yang dikembangkan harus terus menerus dibicarakan dan diimprovisasi disesuaikan dengan keinginan klien.
• Respon terhadap perubahan lebih penting daripada mengikuti rencana, agile development methods
berfokus terhadap kecepatan respon tim ketika klien menginginkan perubahan saat proses pembuatan
perangkat lunak.
Agar suatu tim berhasil dalam menerapkan agile development methods, maka tim tersebut harus mengikuti dua
belas prinsip yang ditetapkan oleh Agile Alliance,[4] yaitu :
1. Prioritas utama proses agile adalah memuaskan klien dengan menghasilkan perangkat lunak yang bernilai dengan cepat dan rutin.
2. Menyambut perubahan kebutuhan, walaupun terlambat dalam pengembangan perangkat lunak. Proses Agile memanfaatkan perubahan untuk keuntungan kompetitif klien.
MODEL PROSES AGILE
5. Kembangkan proyek di sekitar individual yang termotivasi. Berikan mereka lingkungan dan dukungan yang mereka butuhkan, dan percayai mereka untuk menyelesaikan pekerjaan dengan baik.
6. Metode yang paling efisien dan efektif untuk menyampaikan informasi dari dan dalam tim pengembang perangkat lunak adalah dengan komunikasi secara langsung.
7. Perangkat lunak yang bekerja adalah ukuran utama
kemajuan.
8. Proses agile menggalakkan pengembangan berkelanjutan.
Sponsor-sponsor, pengembangpengembang, dan pengguna-pengguna dapat
mempertahankan kecepatan tetap secara berkelanjutan.
9. Perhatian yang berkesinambungan terhadap keunggulan teknis dan rancangan yang baik meningkatkan
Agility.
10. Kesederhanaan (memaksimalkan sumber daya yang
tersedia) adalah hal yang amat penting.
11. Arsitektur, kebutuhan, dan rancangan perangkat lunak terbaik muncul dari tim yang yang dapat mengorganisir diri sendiri.
12. Secara berkala, tim pengembang berefleksi tentang
bagaimana untuk menjadi lebih efektif, kemudian
menyesuaikan dan menyelaraskan kebiasaan bekerja mereka.
Dua belas prinsip tersebut menjadi suatu dasar bagi tim
agar sukses menerapkan agile development methods. Dengan prinsip-prinsip tersebut agile berusaha untuk menyiasati tiga masalah yang biasanya dihadapi saat proses
pembuatan perangkat lunak, yaitu:
• Kebutuhan perangkat lunak sulit diprediksi dari
awal dan selalu akan berubah. Selain itu, prioritas
klien juga sering berubah seiring berjalannya proyek.
• Desain dan pembangunan sering tumpang tindih.
Sulit diperkirakan seberapa jauh desain yang diperlukan sebelum pembangunan.
• Analisis, desain, pembangunan dan testing tidak dapat diperkirakan seperti yang diinginkan.
3. Menghasilkan perangkat lunak yang bekerja secara 3 Model proses agile
rutin, dari jangka waktu beberapa minggu sampai
beberapa bulan, dengan preferensi kepada jangka Beberapa model dari agile development methods,[2] yaitu
waktu yang lebih pendek.
:
4. Rekan bisnis dan pengembang perangkat lunak harus bekerja sama tiap hari sepanjang proyek.
• Acceptance Test Driven Development (ATDD)
3
Pada Dynamic System Development Method
menyajikan kerangka kerja (framework) untuk membangun dan memelihara sistem dalam waktu yang terbatas melalui penggunaan
prototip yang incremental dalam lingkungan
yang terkondisikan. Metode ini bisa membuat pengerjaan software lebih cepat 80%.Hal hal yang perlu diperhatikan jika menggunakan
dynamic system development method:
1. Feasibility study, siapkan requirement,
dan batasan, lalu uji apakah sesuai gunakan proses DSDM.
Model proses agile
• Agile Modeling
• Adaptive Software Development (ASD)
Adaptive software development (ASD) diajukan oleh Jim Highsmith sebagai teknik untuk
membangun software dan sistem yang kompleks. Filosofi yang mendasari adaptive software development adalah kolaborasi manusia
dan tim yang mengatur diri sendiri. Sistem
kerja adaptive software development : collaboration dan learning. '
1. Collaboration : orang-orang yang bermotivasi tinggi bekerja sama, saling melengkapi, rela membantu, kerja keras, terampil di bidangnya, dan komunikasikan masalah untuk menyelesikan masalah secara
efektif.
2. Learning: tim developer sering merasa
sudah tahu semua hal tentang proyek, padahal tidak selamanya begitu. Karena itu
proses ini membuat mereka belajar lebih
tentang proyek melalui tiga cara:
1. Fokus grup, klien dan pengguna memberi
masukan terhadap perangkat lunak.
2. Formal Technique Reviews, tim ASD
lengkap melakukan review.
3. Postmortems, tim ASD melakukan instrospeksi pada kinerja dan proses.
• Agile Unified Process (AUP)
2. Business Study, susun kebutuhan fungsional dan informasi, tentukan arsitektur
aplikasi dan identifikasi kebutuhan pemeliharaan untuk aplikasi.
3. Functional model iteration, perlihatkan
fungsi perangkat lunak ke klien untuk
mendapatkan feedback
4. Design and Build Iteration, cek ulang
prototip yang dibangun dan pastikan bahwa prototip dibangun dengan cara yang
memungkinkan fungsi tersebut benarbenar bekerja.
5. Implementation: buat perangkat lunak
sesuai protoip yang ada dan terus tambah
fungsionalitasnya.
• Extreme Programming (XP)
• Feature Driven Development (FDD)
Feature driven development merupakan sebuah model pengembangan perangkat lunak yang
berdasarkan pada fitur yang akan dibuat. Keuntungan dari metode feature driven development :
1. User dapat menggambarkan dengan mudah bentuk sistem yang akan dibuat.
2. Dapat diorganisasikan atau diatur ke dalam kelompok bisnis sesuai hierarki yang
ada.
3. Desain dan kode lebih mudah diperiksa
secara efektif.
4. Perancangan proyek, biaya pembuatan
dan jadwal rilis ditentukan oleh fiturnya.
• Continuous integration (CI)
• Graphical System Design (GSD)
• Crystal Clear
• Kanban
• Crystal Methods
• Lean software development
• Dynamic Systems Development Method (DSDM)
• Rational Unified Process (RUP)
4
4
Rational unified process, adalah suatu kerangka
pengembangan perangkat lunak iteratif yang
dibuat oleh Rational Software, suatu divisi
dari IBM sejak 2003. Rational unified process bukanlah suatu proses dengan aturan yang
konkrit, melainkan suatu kerangka proses yang
dapat diadaptasi dan dimaksudkan untuk disesuaikan oleh tim pengembang perangkat lunak
yang akan memilih elemen proses disesuaikan
dengan kebutuhan mereka.Model ini membagi
suatu sistem aplikasi menjadi beberapa komponen sistem dan memungkinkan para developer aplikasi untuk menerapkan metode iterative (analisis, disain, implementasi dan pengujian) pada tiap komponen. Dengan menggunakan model ini, Rational unified process membagi
tahapan pengembangan perangkat lunaknya ke
dalam 4 fase sebagai berikut.
1. Inception, merupakan tahap untuk mengidentifikasi sistem yang akan dikembangkan. Aktivitas yang dilakukan pada tahap ini antara lain mencakup analisis sistem, perumusan target dari sistem
yang dibuat, identifikasi kebutuhan, perumusan kebutuhan pengujian, pemodelan diagram UML, dan pembuatan dokumentasi.
2. Elaboration, merupakan tahap untuk melakukan disain secara lengkap berdasarkan hasil analisis di tahap inception. Aktivitas yang dilakukan pada tahap ini antara lain mencakup pembuatan disain arsitektur subsistem, disain komponen sistem, disain format data disain database,
disain antarmuka/tampilan, disain peta
tampilan, penentuan design pattern yang
digunakan, pemodelan diagram UML,
dan pembuatan dokumentasi.
3. Construction, merupakan tahap untuk
mengimplementasikan hasil disain dan
melakukan pengujian hasil implementasi. Pada tahap awal construction, ada baiknya dilakukan pemeriksaan ulang hasil analisis dan disain, terutama disain
pada diagram sequence,class, component,
dan deployment. Apabila disain yang
dibuat telah sesuai dengan analisis sistem, maka implementasi dengan bahasa pemrograman tertentu dapat dilakukan. Aktivitas yang dilakukan pada tahap ini antara lain mencakup pengujian hasil analisis dan disain (misal menggunakan class responsibility collaborator
untuk kasus pemrograman berorientasi
obyek), pendataan kebutuhan implementasi lengkap (berpedoman pada identifikasi kebutuhan di tahap analisis), pe-
TUJUAN AGILE
nentuan coding pattern yang digunakan,
pembuatan program, pengujian, optimasi program, pendataan berbagai kemungkinan pengembangan / perbaikan lebih
lanjut, dan pembuatan dokumentasi.
4. Transition, merupakan tahap untuk menyerahkan sistem aplikasi ke konsumen
(roll-out), yang umumnya mencakup pelaksanaan pelatihan kepada pengguna
dan testing beta aplikasi terhadap ekspetasi pengguna.
• Scrum
• Scrum-ban
• Story-driven modeling
• Test-driven development (TDD)
• Velocity tracking
• Software Development Rhythms [5][6]
4 Tujuan agile
Secara garis besar tujuan dirumuskannya agile development methods,[7] yaitu :
1. High-value & working App system, diharapkan dengan memakai agile development methods dapat dihasilkan perangkat lunak yang mempunyai nilai jual
yang tinggi, biaya pembuatan bisa di tekan dan perangkat lunak bisa berjalan dengan baik.
2. Iterative, incremental, evolutionary, agile adalah
metode pengembangan perangkat lunak yang iteratif, selalu mengalami perubahan, dan evolusioner. Tim harus bekerja dalam waktu yang singkat(biasanya 1-3 minggu) dan juga selalu menambah fungsionalitas dari perangkat lunak sesuai dengan kebutuhan klien. Agile dapat dianalogikan ketika seseorang ingin pergi ke suatu kota dan dia tidak
tahu jalannya. Lalu bagaimana dia bisa sampai tujuan? Dengan sering bertanya kepada orang yang dia
temui dijalan hingga dia sampai di tempat tujuan.
3. Cost control & value-driven development, salah satu tujuan dari agile yaitu pengembangan perangkat
lunak disesuaikan dengan kebutuhan pengguna, tim
bisa dengan cepat merespon kebutuhan yang diinginkan pengguna sehingga waktu dan biaya pembuatan perangkat lunak bisa dikontrol.
4. High-quality production, walaupun biaya pembuatan perangkat lunak bisa ditekan dan proses pembuatan bisa dipercepat , tetapi kualitas dari perangkat
5.2
lunak yang dibuat harus tetap dijaga. Dengan melakukan tes setiap fungsionalitas perangkat lunak setelah selesei dibuat berarti agile juga mengakomodir
kebutuhan ini.
5. Flexible & risk management, jika kita menggunakan metode pembuatan yang biasanya dipakai, jika
ingin mengubah fungsionalitas dari wireframe yang
telah dibuat di butuhkan proses yang rumit. Mulai
dari pertemuan dengan sistem analis untuk mengubah sistem perangkat lunak, perubahan rencana rilis produk hingga perubahan biaya produksi. Pertemuan dengan klien untuk melakukan tes perangkat
lunak juga sering dilakukan sehingga fungsionalitas
perangkat lunak mudah diubah dan akhirnya kegagalan perangkat lunakpun bisa diminimalisir.
6. Collaboration, dengan menggunakan agile, tim pengembang diharuskan sering bertemu untuk membahas perkembangan proyek dan feedback dari klien yang nantinya akan ditambahkan dalam perangkat lunak, sehingga tim bisa berkolaborasi dengan
maksimal.
7. Self-organizing, self-managing teams, rekrut
orang terbaik, beri dan dukung kebutuhan mereka
lalu biarkan mereka bekerja. Itulah perbedaan agile
dan SDM lainnya. Dengan agile, developer dapat
memanajemen dirinya sendiri, sedangkan manajer
tim hanya bertugas mengkolaborasikan developer
perangkat lunak dengan klien. Sehingga terciptalah
tim yang solid.
5
5
Story
Bagaimana agile bekerja
• Developer, merupakan titik vital dalam tim, tanpa
developer perangkat lunak tidak akan bisa dibuat.
5.2 Story
Story adalah daftar kebutuhan atau fitur yang nanti akan
dibuat. Story berisi apa yang klien kehendaki, dan ditulis dalam bahasa yang dimengerti klien. Dengan kata
lain dapat disimpulan Story adalah bagian terpenting dari
Scrum.
Story terdiri dari kolom-kolom berikut ini[9] :
• ID – Identifikasi unik, biasanya berupa nomor urut.
Hal ini untuk menghindari kehilangan jejak story
kalau kita mengganti namanya.
• Nama – Nama story bersifat deskriptif, padat, singkat, dan jelas (2-10 kata), sehingga tim dan klien
memahami kira-kira story yang dibicarakan.
• Kepentingan – Derajat kepentingan yang diberikan oleh klien terhadap story. Pemberian derajat
kepentingan biasanya menggunakan deret fibonacci
(1,1,2,3,5,dst). Semakin tinggi nilainya maka semakin tinggi pula prioritas pengerjaannya.
• Perkiraan awal – Perkiraan awal tim tentang berapa banyak kerja yang diperlukan untuk mengimplementasikan sebuah story.
• Demo – deskripsi umum bagaimana cara story ini
didemokan pada waktu sprint demo (lakukan ini,
klik itu, lalu ini akan muncul,dll).
5.3 Sprint
Topik selanjutnya yaitu tentang cara kerja agile develo- Sprint (Rapat perencanaan pembuatan perangkat lunak
pment methods. Disini akan dijelaskan bagaimana agi- dilakukan 2-8 minggu sekali), yang perlu diperhatikan
le development methods (model scrum) digunakan dalam saat melaksanakan sprint antara lain[9] :
manajemen proyek.
• Tujuan sprint.
5.1 Komposisi tim
Secara umum komposisi dari sebuah tim pengembang
perangkat lunak[8] yaitu :
• Daftar anggota tim harus lengkap.
• Sprint backlog (daftar story yang akan diikutkan dalam sprint).
• Tanggal demo yang pasti.
• Owner / Klien, bersama dengan developer sebagai
• Tempat dan waktu yang jelas untuk pelaksanaan spbagian terpenting dalam proyek, tugas dari klien
rint berikutnya.
menentukan fungsi dari perangkat lunak yang akan di buat, melakukan testing dan memberikan fee- Tim akan melakukan sprint secara simultan sampai perdback.
angkat lunak selesei dikerjakan, sebagai contoh:
• Manajer / Scrum Master, bertugas mengkolaborasik- Sprint 1, tim membuat fungsi login,logout dan demo peran developer dengan klien, membuat dan mengeva- angkat lunak akan dilakukan 3 minggu kemudian. Setelah dilakukan demo untuk mengevaluasi kerja yang dilaluasi target pengerjaan perangkat lunak.
kukan tim pada Sprint 1, maka Sprint 1 dianggap selesei.
• Sistem Analis, membuat arsitektur sistem dari per- Bahan evaluasi dari Sprint 1 akan dibawa ke Sprint 2 begitu seterusnya sampai aplikasi selesei dikerjakan.
angkat lunak yang akan dibuat.
6
6
8 REFERENSI
Kelebihan dan Kekurangan
6.1 Kelebihan
Beberapa kelebihan dari agile diantaranya[8] :
• 82% Menambah produktivitas tim.
• 77% Menambah kualitas perangkat lunak.
• 78% Menambah kepuasan klien.
• 37% Menghemat biaya.
Merupakan salah situs yang wajib dibaca bila anda ingin belajar tentang agile development
methods, didalamnya anda dapat menemukan
informasi diantaranya :
• Cara untuk mengembangkan perangkat
dengan menggunakan prinsip-prinsip dari agile.
• Bagaimana tim berinteraksi selama proses pembuatan perangkat lunak.
• 12 prinsip agile manifesto.
• Agile and lean software development linkedin group
6.2 Kekurangan
• Lean startup
Sedangkan kekurangan dari agile antara lain :
• Pivotal tracker
• Agile tidak akan berjalan dengan baik jika komitmen tim kurang.
• Tidak cocok dalam skala tim yang besar (>20
orang).
• Perkiraan waktu release dan harga perangkat lunak
sulit ditentukan.
7
Sumber (Resources)
Untuk memperdalam pengetahuan tentang agile development methods, anda bisa mengunjungi website di bawah
ini[10] :
• The agile samurai
Secara garis besar buku ini menjelaskan tentang :
• Cara membuat perencanaan dan jadwal
pembuatan aplikasi.
• Karakteristik untuk membuat tim yang
tangkas dan bisa memanajemen dirinya
sendiri.
• Bagaimana cara mengumpulkan persyaratan yang dibutuhkan dengan lebih cepat.
• Apa yang harus dilakukan ketika menemukan perencanaan yang tidak sesuai,
dan bagaimana dapat mengoreksinya dengan benar.
• Bagaimana mengeksekusi rencana yang
ada dengan sumber daya yang tersedia
dengan tepat.
• The agile manifesto
Pivotal tracker merupakan perangkat lunak
agile project management dari Pivotal Lab.Di
dalam perangkat lunak ini terdapat berbagi file
dan fungsionalitas manajemen tugas, pelacakan kecepatan dan perencanaan iterasi, penanda
rilis, dan grafik kemajuan.
• Trello
Trello merupakan layanan berbasis web yang
bisa membantu kita dalam memanajemen proyek yang sedang dikembangkan baik sendiri
atau dalam suatu tim. Di Trello kita dapat
membuat pekerjaan lebih fokus dan terarah.
• Asana
Asana merupakan aplikasi alternatif yang sederhana dan intuitif untuk manajemen kerja,
baik dalam tim maupun sendiri.
• Iterative and incremental development
Salah satu model pengembangan perangkat lunak dimana pada model ini berawal dari suatu
proses perencanaan dan berakhir pada proses
deployment
• Iterasi
8 Referensi
[1] Proboyekti, U. Bahan Ajar Rekayasa Perangkat Lunak
Agile Software Development. Indonesia
[2] Agile Software Development. Diakses dari situs wikipedia
pada 7 November 2013
7
[3] Software Development Process. Diakses dari situs wikipedia pada 7 November 2013
[4] Agile Manifesto. Diakses dari situs wikipedia pada 5 November 2013
[5] Ambler, S.W., (2012). Disciplined Agile Delivery
(DAD): The Foundation for Scaling Agile Presentation
Slide 15
[6] Lui, K.M., (2013). Software development rhythms: Searching for Simplicity Presentation Slide 15
[7] Collier, K.(2011).Agile Analytics: A Value-Driven Approach to Business Intelligence and Data Warehousing.USA:
Addison-Wesley.
[8] Silverburg,A.(2012).Agile Analytics in Higher Education.USA:Phytorion.
[9] Kniberg,
H.(2007).Scrum
ce.USA:C4Media.
and
XP
[10] Taymor, E.Agile Handbook.USA:Philosophie.
•
•
•
Practi-
8
9
9
TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES
Text and image sources, contributors, and licenses
9.1 Text
• Agile Development Methods Sumber: https://id.wikipedia.org/wiki/Agile_Development_Methods?oldid=11931575 Kontributor: Hariadhi, Mimihitam, Hysocc, Bozky, AABot, SamanthaPuckettIndo, IF3706 113134226, IF3706 113134236, IF3706 113130244, IF3706
113130229, IF3706 113130245, BeeyanBot, HsfBot dan Pengguna anonim: 3
9.2 Images
• Berkas:Agile_Method.jpg Sumber: https://upload.wikimedia.org/wikipedia/id/8/83/Agile_Method.jpg Lisensi: GFDL Kontributor: ?
Pembuat asli: ?
• Berkas:Generic_diagram_of_an_agile_methodology_for_software_development.png Sumber:
wikipedia/commons/f/ff/Generic_diagram_of_an_agile_methodology_for_software_development.png
Kontributor: Karya sendiri Pembuat asli: Benzirpi
https://upload.wikimedia.org/
Lisensi:
CC BY-SA 3.0
• Berkas:Martin_Fowler_(2008).jpg Sumber: https://upload.wikimedia.org/wikipedia/commons/f/f8/Martin_Fowler_%282008%29.jpg
Lisensi: CC BY 2.0 Kontributor: Flickr: Martin Fowler Pembuat asli: Ade Oshineye
• Berkas:Question_book-4.svg Sumber: https://upload.wikimedia.org/wikipedia/commons/6/64/Question_book-4.svg Lisensi: CC-BYSA-3.0 Kontributor: Created from scratch in Adobe Illustrator. Originally based on Image:Question book.png created by User:Equazcion.
Pembuat asli: Tkgd2007
• Berkas:Wiki_letter_w.svg Sumber: https://upload.wikimedia.org/wikipedia/commons/6/6c/Wiki_letter_w.svg Lisensi: CC BY-SA 3.0
Kontributor: Karya sendiri; Wikimedia Foundation Pembuat asli: SVG Jarkko Piiroinen; rights, design and origin Wikimedia Foundation
9.3 Content license
• Creative Commons Attribution-Share Alike 3.0