Sprint 1 hampir selesai :)

PPL A2
4 min readMar 21, 2018

--

by Andhita Nurul Ainun

Sudah setengah perjalanan Sprint 1 dan semakin banyak hal yang telah saya pribadi dapatkan. Pada kesempatan ini saya ingin mencoba sedikit sharing terkait beberapa pengalaman yang sudah saya dapatkan selama setengah perjalanan sprint berlangsung.

Pada proses pengembangan software pada PPL ini digunakan metode Agile Software Development. Berangkat dari namanya yaitu Agile yang artinya lincah. Jika kita mengambil definisi lincah itu sendiri, kita dapatkan pengertian lincah yaitu tetap mencapai tujuan namun bisa menghindari obstacle atau rintangan yang ada; jika sudah keluar jalur, dapat langsung kembali ke jalur awalnya. Konsep Agile software development dicetuskan oleh Kent Beck dan 16 rekannya dengan menyatakan bahwa Agile Software Development adalah cara membangun software dengan melakukannya dan membantu orang lain membangunnya sekaligus. Penjelasan terkait agile lebih jelas dapat dilihat pada http://agilemanifesto.org/. Pada laman tersebut, dapat dilihat terdapat 4 nilai penting

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

Salah satu ciri dari Agile adalah tim yang tanggap terhadap perubahan. Sebagai contoh dalam penerapan proses development di mata kuliah PPL ini kami menggunakan salah satu metode agile development yaitu Scrum. Pada awal proses penerapan scrum ini, di awal kami melakukan brief overview dengan klien kami yaitu Bank Mata Indonesia namun tidak adanya perjanjian kontrak terkait bagaimana proyek akan dihasilkan. Sebaliknya, kami terus melakukan komunikasi secara berkala dengan klien kami untuk membahas masalah produk karena berdasarkan prinsip agile, klien merupakan bagian dari tim pengembang software. Beberapa hari sebelumnya kami juga melaksanakan pertemuan dengan klien secara langsung untuk kedua kalinya mendiskusikan sejauh mana produk sudah dikembangkan dan kami mendapatkan feedback langsung dari klien terhadap produk kami sehingga dari feedback tersebut, jika ada yang harus diubah baik dari segi tampilan maupun fitur, dapat langsung diimplementasikan. Proses Scrum ini diimplementasikan pada tim kami dengan melakukan daily scrum meeting setiap 2 kali seminggu. Pada tiap daily meeting, masing-masing individu menyampaikan 3 hal utama yaitu:

  1. Apa yang sudah dilakukan
  2. Apa hambatan yang dilalui
  3. Apa yang akan dikerjakan selanjutnya

Dari proses ini lah kami dapat menemukan apa saja hambatan yang dirasakan oleh tiap anggota tim selama proses pengembangan. Apakah harus terdapat perubahan dalam proses pengembangan produk dan sebagainya. Sehingga dengan diterapkannya proses agile ini, maka diharapkan proses yang dilalui sesuai dengan namanya yaitu lincah (mencapai tujuan, menghindari obstacle dan juga dapat kembali ke jalur awal) karena terjadi komunikasi yang baik dan lancar antar sesama anggota serta proses pengembangannya dapat terkontrol dengan baik dan selesai tepat pada waktunya.

Unit Testing

Dalam dunia Software Engineering ada beberapa jenis pengujian yang perlu dilakukan untuk memastikan bahwa software memang benar-benar sesuai dengan requirements. Salah satu testing yang pertama dilakukan dan yang paling utama adalah unit testing. Dalam perkuliahan PPL ini seluruh peserta juga wajib untuk melakukan unit testing terhadap code yang dikerjakan. Apa itu unit test?

Unit test adalah sebuah kode yang dibuat oleh developer yang digunakan untuk menguji bagian kecil/area spesifik dari suatu fungsionalitas dari kode yang telah dibuat. Unit testing dilakukan untuk membuktikan apakah kode yang telah ditulis oleh developer sudah berfungsi sesuai ekspketasi/kehendak developer atau belum

Sebagai contoh, beberapa hari yang lalu saya telah membuat fungsi model data Bank Mata Indonesia yaitu sebagai berikut:

public class EyeBank {
private String mAddress;
private String mAddressDetails;
private double mLatitude;
private double mLongitude;

public String getAddress() {
return mAddress;
}

public void setAddress(String address) { mAddress = address; }

public String getAddressDetails() {
return mAddressDetails;
}

public void setAddressDetails(String addressDetails) { mAddressDetails = addressDetails; }

public double getLatitude() {
return mLatitude;
}

public void setLatitude(double latitude) { mLatitude = latitude; }

public double getLongitude() {
return mLongitude;
}

public void setLongitude(double longitude) { mLongitude = longitude; }

}

Kemudian dilakukan unit testing untuk mengecek apakah fungsi diatas dapat berfungsi dengan benar. Kode dari unit test untuk model BMI diatas adalah sebagai berikut:

import org.junit.Test;

import static org.junit.Assert.assertEquals;


public class EyeBankTest {

@Test
public void getAddress() {
EyeBank eyeBank = new EyeBank();
eyeBank.setAddress("foo");
assertEquals("foo", eyeBank.getAddress());
}

@Test
public void setAddress() {
EyeBank eyeBank = new EyeBank();
eyeBank.setAddress("foo");
assertEquals(eyeBank.getAddress(), "foo");
}

@Test
public void getAddressDetails() {
EyeBank eyeBank = new EyeBank();
eyeBank.setAddressDetails("foo");
assertEquals("foo", eyeBank.getAddressDetails());
}

@Test
public void setAddressDetails() {
EyeBank eyeBank = new EyeBank();
eyeBank.setAddressDetails("foo");
assertEquals(eyeBank.getAddressDetails(), "foo");
}

@Test
public void getLatitude() {
EyeBank eyeBank = new EyeBank();
eyeBank.setLatitude(3.14);
assertEquals(3.14, eyeBank.getLatitude(), 0);
}

@Test
public void setLatitude() {
EyeBank eyeBank = new EyeBank();
eyeBank.setLatitude(3.14);
assertEquals(eyeBank.getLatitude(), 3.14, 0);
}

@Test
public void getLongitude() {
EyeBank eyeBank = new EyeBank();
eyeBank.setLongitude(3.14);
assertEquals(3.14, eyeBank.getLongitude(), 0);
}

@Test
public void setLongitude() {
EyeBank eyeBank = new EyeBank();
eyeBank.setLongitude(3.14);
assertEquals(eyeBank.getLongitude(), 3.14, 0);
}
}

Kita perlu melakukan Unit Testing karena akan mengurangi waktu yang digunakan untuk debugging. Membuat sebuah unit test memang akan memakan waktu yang lebih banyak, namun dengan adanya unit test tesebut, kita akan menjadi lebih tenang tanpa mengkhawatirkan adanya error. Unit test ini juga penting untuk mengecek apakah feature tambahan kita berdampak pada feature lain yang sudah ditest, sehingga jika kita ingin menambah kode, kita akan lebih hati-hati untuk tidak membuat feature lain menjadi error.

Sekian penjelasan saya kali ini :) semoga bermanfaat yaa :)

--

--