[Week 5] Sprint 1 PPL, Sebuah Proses Adaptasi?

Reinhard Hotma
LapakLaut
Published in
4 min readMar 7, 2018

Proyek Perangkat Lunak atau yang biasa disebut PPL merupakan salah satu mata kuliah wajib mahasiswa semester 6 Fasilkom UI prodi Ilmu Komputer. Pada PPL sendiri kita belajar untuk membuat sebuah software layaknya di dunia kerja nantinya, dengan berbagai metodologi yang ada. Pada PPL kali ini, kami menggunakan metode Scrum, dan juga sangat mengedepankan TDD atau Test-Driven Development dalam pembangunannya. Metode Scrum serta TDD ini merupakan hal yang cukup baru bagi saya sendiri, sehingga perlu waktu untuk membiasakan diri dengan hal ini yang tentunya akan sangat bermanfaat kedepannya.

Proses adaptasi saya yang pertama yaitu pembiasaan menggunakan version control (GitLab). Saya sudah mencoba untuk membuat sebuah React-Native project, dan melakukan push ke repository kelompok pada GitLab, tidak lupa melakukan konfigurasi Continuous Integration (CI) nya melalui .gitlab-ci.yml. Tidak mudah memang konfigurasinya, cari-cari referensi di internet, coba push, gagal berkali-kali, sampai akhirnya udah bener formatnya cuma masih salah, dan sampe sekarang pun akhirnya mulai berangsur-angsur membaik (sepertinya). Ya namanya juga proses belajar, akhirnya jadi tau banyak cara penerapan config CI yang salah hehe. Walaupun sampai sekarang mungkin masih belum sempurna, tapi semoga ke depannya bisa terus ada progressnya sehingga akhirnya bisa berjalan dengan baik. Masih tentang GitLab, yang masih bikin sedikit bingung adalah tentang branch-branch yang ada. Awal-awal masih bingung harus push ke branch mana, tapi akhirnya udah dikasihtau kalo awal-awal harusnya push ke CobaCoba dulu, terus nanti ke sit_uat, baru di merge ke master. Terus ternyata kalo nanti konfigurasinya udah bener, kita bisa langsung ngompile kode nya di GitLab, dan file .apk nya pun bisa langsung didownload dari sana. Keren ya. Seru deh pokoknya.

Selanjutnya, baca-baca sedikit tentang banyak hal, terutama yang ada di kompetensinya individual review hehe. Tapi ternyata emang pas banget sih buat jadi panduan biar ngerti ke depannya. Contohnya itu refactoring, yang secara singkat itu restructuring code tanpa ubah fungsionalitasnya, biar jadi lebih gampang dibaca sama ngurangin kompleksitasnya. Mungkin ini ada hubungannya juga sama clean code, tapi belum terlalu baca clean code lebih dalem juga. Hal lain yang gak kalah penting itu tentang Testing. Namanya juga TDD, pasti Testing lah yang jadi fitur utamanya. Yang paling mendasar mungkin tentang unit testing, tapi ternyata selain itu ada yang lain juga kayak functionality testing, stress testing, penetration testing, dll. Di TDD sendiri kita diajak untuk selalu menuliskan test nya terlebih dahulu sebelum nulis kode dengan fungsionalitas penuh. Ini bertujuan biar kita gak asal nulis kode, melainkan mengacu pada unit test yang udah kita buat sebelumnya. Tapi sejauh ini masih belum terlalu paham sama testing-testing ini, kayak perbedaan mendasar mock-up dan stubs, sama panduan commit untuk testing yang ada di SCELE juga masih belum terlalu paham. Semoga ke depannya bisa mempelajari ini lagi lebih lanjut.

Lalu untuk task yang saat ini sedang saya ambil yaitu tentang Firebase, tentang desain database nya dan juga soal peng-query-an. Secara singkat, Firebase adalah sebuah platform back-end untuk aplikasi, yang berhubungan database lah intinya. Untuk Firebase sendiri, bentuk datanya berupa objek-objek, mirip format JSON. Untuk dasar desainnya sendiri, yang perlu diperhatikan adalah pengelompokan datanya, karena pada Firebase, pas pengambilan datanya itu dia bakal ngambil semua child nodesnya, jadinya kalo semua data dikelompokin jadi satu, bakal berat pas ngambil datanya dan akan redundant juga, karena gak semua atributnya dibutuhkan pas ngambil datanya. Untuk proses peng-query-annya, Firebase juga sedikit berbeda dengan query-query standar ala MySQL. Di sini kita memadukan antara ordering dan juga filtering untuk meretrieve suatu data. Untuk ordering nya sendiri contohnya ada 3, yaitu Order by Child, Order by Key, dan juga Order by Value. Agar lebih mudah, saya akan mengambil contoh dari tutorialspoint.com sebagai ilustrasi.

src: tutorialspoint.com

Jadi pada gambar di atas, kita mempunyai root players, dengan parent-parent nya yaitu kombinasi alpha-numeriknya, dan atribut-atributnya berupa child nya. Jadi untuk yang pertama, misalnya kita ingin mengurutkan data tersebut sesuai value atribut namanya (child), jadi kita akan menggunakan Order by Child. Contoh kodenya seperti ini:

var playersRef = firebase.database().ref("players/");

playersRef.orderByChild("name").on("child_added", function(data) {
console.log(data.val().name);
});

Kode di atas akan mengurutkan data sesuai child (atribut) name, sehingga outputnya yaitu Amanda terlebih dahulu, baru John.

Untuk contoh yang by Key dan Value kurang lebih sama, hanya beda sedikit syntaxnya saja.

Lalu pada bagian filtering, ada banyak juga macamnya, antara lain Limit to first and last, juga ada yang lainnya seperti startAt, endAt dan juga equalTo. Langsung ke intinya, jadi seperti yang sudah disebutkan, untuk meretrieve sebuah data spesifik bisa dengan mengombinasikan antara ordering dan filtering. Contoh filtering yang kita pakai adalah equalTo. Jadi bila kita ingin mengambil data orang dengan nama John, kode yang kita gunakan akan seperti ini:

playersRef.orderByChild("name").equalTo("John").on("child_added", function(data) {
console.log("Equal to filter: " + data.val().name);
});

Kode di atas akan melakukan ordering terlebih dahulu, lalu di filter, hanya yang punya atribut nama “John”. Karena kebetulan pada data yang ada hanya ada 1 yang match, jadi outputnya juga hanya 1. Sedangkan kalau ada banyak, maka outputnya akan terurut sesuai ordering yang digunakan. Untuk penggunaan Firebase, saya sendiri masih belum terlalu familiar. Semoga dengan waktu yang ada, saya bisa mengembangkan pengetahuan saya tentang Firebase dan menerapkannya dengan lebih baik lagi.

Kira-kira begitulah pengalaman saya menjalani week 5 PPL ini. Proses adaptasi memang diperlukan, tapi semoga saja saya bisa beradaptasi dengan cepat sehingga dapat menjalani Sprint 1 ini dengan lancar.

referensi:

  • SCELE Fasilkom UI, Mata Kuliah Proyek Perangkat Lunak 2018
  • tutorialspoint.com/firebase

--

--