Knowledge Sharing — AGILE, Testing, and Software Architecture for Dummies
AGILE
Agile dalam bahasa Indonesia berarti “cepat” atau “lincah”. Dalam pengembangan software agile merupakan paradigma dalam melakukan pengembangan secara “cepat” dan “lincah”. Terdapat 4 value utama menerapkan agile :
- Individuals and Interactions Over Processes and Tools
- Working Software Over Comprehensive Documentation
- Customer Collaboration Over Contract Negotiation
- Responding to Change Over Following a Plan
WHY AGILE
Secara umum Agile meminimalisir biaya yang dihadapi selama pengembangan software seiring dengan berjalannya waktu. Salah satu penyumbang biaya yang cukup besar adalah perubahan di tengah pengembangan. Dengan prinsip-prinsip Agile, pengembangan dilakukan dengan beradaptasi dengan perubahan.
WHEN TO AGILE ?
Agile dapat baik diterapkan ketika dihadapkan pada masalah yang kompleks dimana tingkat ketidapastian sangat tinggi, karena pada agile pengembangan bersifat iteratif, maka disetiap iterasinya diharapkan dapat memberi “feedback” yang dapat membangun dan memberikan gambaran untuk pengembangan selanjutnya. Untuk masalah yang simple agile kurang memberi dampak (e.g creating personal website with agile).
TESTING
WHY TESTING
Alasan tidak melakukan testing :
- Tidak ada waktu
- Sulit dilakukan
- Tidak tahu apa yang mau di test (*me)
Dalam membuat perangkat lunak, testing memberikan dampak yang cukup besar terhadap software yang kita buat atau kembangkan, dunia tanpa testing seperti :
- Jika terdapat bug sulit melakukan tracing
- Tidak ada ukuran kuantatias dalam menilai kualitas software.
- Kerugian menjadi bertambah bila kedua masalah diatas muncul
Terdapat beberapa level dalam melakukan testing :
- Unit Testing
- Component Testing
- Integration Testing
- System Testing
- End to End Testing
Software Architecture
Software architecture atau sturuktur software merupakan struktur mengambarkan komponen-komponen di dalam software yang saling berinteraksi.
Secara umum terdapat tiga jenis software architecture :
- Monolithic (satu komponen menghandle semua tugas)
- Client-server (server menyediakan data dan client mengatasi semua interaksi user dan mengambil/mengirim data ke server)
- Microservice (satu task unik diatasi oleh 1 komponen, contohnya Payment Service, Booking Service)
Dalam mengembangkan println kami menggunakan arsitektur Client-Server dan satu Microservice. Frontend mengatasi semua interaksi user dan mengirim mengambil data ke backend yang sebagai server. Microservice yang digunakan mengatasi semua transaksi print yang melibatkan interaksi dengan printer.