top of page

Week 7: Pengetahuan Membuat Kode dan Progres Saat Ini

  • Writer: Admin
    Admin
  • Mar 23, 2017
  • 5 min read

Halo!

Selamat hari Kamis! Selamat hari claim nilai :)

Tulisan ini didedikasikan untuk proses claim nilai hari ini, berikut penjelasannya:

...

PENGETAHUAN

---

Test-Driven Development

Test-Driven Development (TDD) adalah suatu metodologi untuk berpikir tentang kualitas terlebih dahulu sebelum membuat program, sehingga tolak ukur kualitas dan integrasi dengan bagian lain bisa lebih awal dipikirkan.


---

POIN-POIN TDD (dalam PPL)


Test First

Memulai pengembangan dengan membuat unit test terlebih dahulu dengan menerapkan prinsip TDD.


Acceptance Criteria

Semua test yang dibuat harus mengacu pada acceptance criteria yang telah dibuat untuk setiap fitur yang akan dikembangkan.


Online Repository

Setiap pengembangan kode harus tercatat di dalam repositori.


Commit Milestone [Red]

Setiap penyusunan test harus tercatat di dalam repositori, dengan catatan baru terdapat test-nya saja, belum ada implementasinya.


Clean Test

Menerapkan aturan F.I.R.S.T pada penyusunan test-nya.


Commit Milestone [Green]

Setiap penyelesaian suatu task yang lolos test harus tercatat di dalam repositori.


Code Coverage

Unit test yang dibuat harus cukup komprehensif, sehingga dapat menguji seluruh bagian pada kode yang diimplementasikan. Minimal code coverage yang diterima adalah 80%.



---

PRINSIP TDD


Red

Red mengindikasikan test yang gagal. Pada awalnya, TDD test akan di-setup ke gagal untuk mengindikasikan bahwa kita baru membuat skema testing dan belum membuat implementasi dari testing-nya.


Green

Green mengindikasikan kode telah dibuat dan berhasil melewati fase testing.


Refactoring

Refactoring merupakan proses pengubahan internal code tanpa mengubah behaviour dari kode tersebut, bersifat opsional.



---

KELEBIHAN

  • Mengurangi waktu debugging.

  • Meningkatkan kualitas software.

  • Mempercepat pendeteksian awal terhadap bugs.


---

KEKURANGAN

  • Untuk lingkup software yang lebih besar, akan memerlukan lebih banyak waktu.

  • Jika terjadi perubahan business logic, maka testcase yang saling berhubungan harus di-maintenance atau dipastikan sesuai dengan business logic yang baru.

---

Refactoring

Refactoring adalah proses pengubahan struktur kode tanpa mengubah fungsionalitas atau perilakunya. Fungsionalitasnya tidak akan berubah, hanya struktur dari kodenya yang berubah.


---

MANFAAT MELAKUKAN REFACTORING

  • Memperbaiki design software.

  • Membuat kode menjadi lebih mudah dipahami.

  • Membantu menemukan bugs.

  • Membantu menuliskan program dengan cepat.


---

ALASAN MELAKUKAN REFACTORING


Ketika kode yang dituliskan tidak elegan. Ciri-ciri kode tidak elegan ialah sebagai berikut:


Duplicated Code

Kode yang sama dituliskan secara berulang di tempat yang berbeda, membuat kode menjadi tidak efisien dan sulit untuk melakukan perubahan di bagian kode tersebut.


Long Method

Isi method dari kode yang dituliskan terlalu panjang, sebaiknya isi method ini dipecah menjadi bagian-bagian yang lebih kecil, sehingga dapat mengatasi kompleksitas program dan menjadi lebih mudah dipahami.


Large Class

Cangkupan class terlalu besar, sehingga sulit untuk dipahami dan di-maintenance. Sebaiknya class ini dipecah menjadi beberapa class yang lebih kecil atau dapat dilakukan pembuatan partial class.


Long Parameter List

Parameter sebuah method terlalu banyak, sehingga sulit untuk dipahami. Sebaiknya, jumlah parameternya dibatasi atau dapat dilakukan pemberian tipe objek sebagai parameter.


Divergent Change

Adanya perubahan kecil pada suatu method/bagian dapat menyebabkan perubahan pada method/bagian lainnya.


Shotgun Surgery

Adanya perubahan kecil pada suatu class dapat menyebabkan perubahan pada class lainnya yang saling berelasi.


Feature Envy

Suatu method memerlukan informasi yang lebih banyak dari class lain dibandingkan dengan class-nya sendiri.


Primitive Obsessions

Lebih memilih menggunakan tipe primitive dibandingkan menggunakan suatu class. Jika tipe data yang dimiliki kompleks, sebaiknya menggunakan class untuk merepresentasikannya.


Switch Statement

Switch yang menggantikan if ada dimana-mana dan sering terdapat duplikasi, sebaiknya menggunakan polymorphism untuk menggantikannya.


Paralel Inheritance Hierarchy

Setiap saat membuat suatu sub-class diharuskan membuat sub-class yang lain.


Lazy Class

Terdapat classes yang hanya memiliki sedikit tanggung jawab, semakin banyak class yang dibuat akan membuat kode semakin kompleks, sebaiknya gabungkanlah classes yang memiliki sedikit tanggung jawab dan yang bersesuaian tersebut, atau hilangkanlah class yang methods-nya tidak dipanggil sama sekali.


Speculative Generality

Kode yang dituliskan pada suatu bagian sering berakhir tidak dipakai, sebaiknya tulislah kode yang diperlukan saja terlebih dahulu.


Temporary Fields

Class banyak mengandung bagian/fields yang tidak diperlukan.


Middle Man

Class bertanggung jawab penuh ke class lain.



---

Clean Code

Dalam menuliskan suatu kode pemrograman, sebaiknya program/kode dituliskan berkualitas yang sesuai dengan kriteria-kriteria penulisan program, sehingga memudahkan pembacaan dan proses maintenance. Berikut detailnya:


API Documentation dan Komentar yang Efisien

Kode yang dituliskan harus merupakan kode yang mudah dipahami, pastikan komentar hanya dituliskan untuk bagian-bagian yang membutuhkan penjelasan ekstra, bukan karena kode program yang ditulis tidak jelas atau tidak bagus. Dokumentasi API dituliskan dengan efektif dan efisien sesuai acuan yang dipilih.


Penamaan yang Baik

Pastikan penamaan, variabel, fungsi mengikuti acuan umum dan baku diterapkan.


Penulisan Fungsi (Method) yang Simple dan Efektif

Setiap satu fungsi (method) hanya bertanggung jawab melakukan 1 (satu) hal. Hindari adanya side-effect yang dapat membuat keliru atau mispersepsi pemahaman behaviour dari kode tersebut.


Pengkodean Error dan Exception Handling

Susun error code dengan baik dan lakukan antisipasi munculnya kemungkinan exception dengan handling yang sesuai.


Don't Repeat Yourself

Hindari duplikasi kode dengan membuat kode program yang terstruktur.


Formatting

Terapkan aturan formatting code (layout) yang sesuai dengan standar penulisan pemrograman.


---

Agile Software Development

---

AGILE MANIFESTO


Interaksi dan Personel

Menjaga interaksi antar anggota tim, guna melancarkan pengembangan software. Pada tim, tim selalu menyisihkan waktu untuk berinteraksi bersama se-tim dan mengerjakan task secara bersamaan di tempat dan waktu yang sama.


Perangkat Lunak yang Berfungsi

Memberikan perangkat lunak yang berfungsi lebih utama dibandingkan memberikan dokumentasi lengkap. Pada tim, tim berencana melakukan deploy fitur pada akhir Sprint 1, sehingga klien dapat langsung menggunakan fitur tersebut.


Kolaborasi dengan Klien

Menjaga interaksi dengan klien, sehingga improvisasi dan pengembangan fitur dapat berjalan dengan lancar. Pada tim, tim selalu berinteraksi dengan klien, yaitu bertemu langsung dan melalui Slack.


Respon terhadap Perubahan

Fleksibel terhadap perubahan, yaitu berfokus pada kesigapan tim dalam menangani perubahan yang diminta. Pada tim, tim terbuka terhadap perubahan yang dilakukan oleh klien dan tim bersikap sigap untuk menangani perubahan yang ada.



---

AGILE PRINCIPLES

  • Kepuasan klien adalah prioritas utama dengan menghasilkan produk lebih awal dan terus menerus.

  • Menerima perubahan kebutuhan, walaupun perubahan dilakukan di akhir pengembangan.

  • Bagian bisnis dan pembangun kerja sama tiap hari selama proyek berlangsung.

  • Membangun proyek di lingkungan orang-orang yang bermotivasi tinggi yang bekerja pada lingkungan yang mendukung dan dapat dipercaya untuk bisa menyelesaikan proyek.

  • Komunikasi dengan berhadapan langsung adalah komunikasi yang efektif dan efisien.

  • Software yang berfungsi adalah ukuran utama dari kemajuan proyek.

  • Dukungan yang stabil dari sponsor, pembangun, dan pengguna diperlukan untuk menjaga perkembangan yang berkesinambungan.

  • Perhatian kepada kehebatan teknis dan desain yang bagus meningkatkan sifat Agile.

  • Kesederhanaan penting.

  • Kebutuhan dan desain yang bagus muncul dari tim yang mengatur dirinya sendiri dengan baik.

  • Secara periodik, tim melakukan evaluasi diri dan mencari cara untuk lebih efektif. kemudian menyusun dan menyelaraskan cara kerja tim.


---

Software Environment

---

STAGING


Membuat environment staging di Heroku, guna mencoba kode dari branch development yang merupakan hasil merge antara branch user_story. Environment ini berguna untuk keperluan review internal, yaitu sebelum dilakukannya review bersama Product Owner pada environment SIT.


---

SIT


Membuat environment SIT di Heroku, guna mencoba kode dari branch development yang merupakan hasil merge antara branch user_story satu dengan user_story lainnya. Environment ini berguna untuk keperluan pengujian integrasi dengan sistem lain (apabila ada), atau demonstrasi proof of concepts kepada tim lain.


---

UAT


Membuat environment UAT di Heroku, guna mencoba kode dari branch master yang merupakan hasil merge dengan branch development. Environment ini berguna untuk keperluan approval kelayakan dari Project Owner yang dilakukan saat Sprint review.


...

PROGRES


Halo!


Selesai juga pada penjelasan tentang pengetahuan untuk claim nilai nanti, berikut adalah penjelasan tentang progres selama seminggu kemarin yang telah saya lakukan, simak yaa :)


---

Splash Screen

Ketika suatu aplikasi dibuka, biasanya akan menampilkan suatu tampilan awal selama beberapa detik sebelum memasuki tampilan utama. Berikut tampilannya:

Untuk menampilkan tampilan tersebut, berikut ialah kode implementasinya:


---

SplashScreenActivity.java


Kode ini berisikan lamanya waktu kemunculan splash_screen, yaitu selama 1 (satu) detik. Selanjutnya, halaman akan berpindah ke halaman utama aplikasi.


---

activity_splash_screen.xml


Kode ini berisikan layout yang menampung splash_screen, kemudian ditambahkan sebuah ImageView berisi logo aplikasi berukuran sesuai pada gambar (wrap_content ) dan posisi tepat di tengah aplikasi.


---

AndroidManifest.xml


Kode ini berisikan pemanggilan file SplashScreenActivity.java.


---

KETERANGAN


Implementasi kode dituliskan sesuai dengai standar penulisan pada Android Studio dengan menggunakan variabel dan fungsi yang sesuai dengan panduan penulisannya. Selain itu, penamaan file (baik source code, maupun image asset) juga disesuaikan dengan cara penulisannya.



Selain itu, saya juga melakukan revisi pada database design table untuk aplikasi ini yang sebelumnya telah di-post pada tulisan ini. Sekian yang dapat dituliskan untuk saat ini, semoga kedepannya proses pengembangan aplikasi dapat berjalan dengan lancar dan semoga ilmu yang didapatkan dapat berguna dengan sebagaimana mestinya.



Sumber:

- Slide di Scele

- http://www.coderefer.com/android-splash-screen-example-tutorial/

- https://ilmukuilmumu.wordpress.com/2009/12/25/agile-sofware-development/

- http://www.academia.edu/6786913/Test-Driven_Development_TDD_dengan_PHPUnit



Salam,

Betty Nauli Dina



Comments


© 2017 by GoodangCode

Subscribe for Goodang Team Updates!

bottom of page