Claim nilai
PART A
1. Refactoring
Refactor (verb): to restructure software by applying a series of refactorings without changing its observable behavior.
Refactoring (noun): a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior.
Implementasi:
Don’t repeat yourself & Simplifying Conditional Expressions
Remove Parameter
6. Agile manifesto
Agile Manifesto adalah sebuah metode alternatif dari pengembangan software yang memiliki 4 nilai utama:
a. Individuals and interactions over processes and tools
Kelompok kami selalu memprioritaskan interaksi antar individu dan menghargai pendapat antar sesama dibanding hanya mengedepankan processes yang berjalan dan tools yang canggih.
b. Working software over comprehensive documentation
Kelompok kami memprioritaskan bekerja dan berfungsinya software dibanding dokumentasi yang sangat komprehensif. Tidak akan berguna dokumentasi baik, akan tetapi software berjalan tidak baik.
c. Customer collaborations over contract negotiation
Kami berkolaborasi dengan partner kami, yaitu cermati dengan cara menerima setiap input dari mereka, memberikan update pada mereka, meminta pendapat mengenai solusi efisien dari suatu permasalahan, dsb. Kolaborasi ini kami utamakan dibanding hanya sebuah kontrak dengan mereka yang menyatakan hubungan antar kita dengan partner hanya sebatas mereka minta kami kerjakan.
d. Responding to change over following a plan
Kelompok kami lebih mengutamakan perubahan signifikan yang lebih baik dibanding strict mengikuti rencana awal. Contohnya kami pernah melakukan alter database untuk mengubah beberapa atribut dari suatu tabel karena setelah berdiskusi dengan tim mobile (PPLB2), kami menemukan suatu hal yang dapat mengoptimasi penggunaan API.
7. Penerapan agile principle
Agile principles yang berdasarkan Agile Manifesto
a. Our highest priority is to satisfy the customer through early and continous delivery
Prioritas kami untuk menyelesaikan software yang baik dan benar sampai partner kami puas dengan hasil software kami. Hal ini dilakukan secara continous dengan cara kami delivery fitur demi fitur agar setiap fitur yang ada telah sesuai dengan kriteria yang dibutuhkan.
b. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
Kami menerima setiap perubahan requirements, walaupun sudah late in developmet, selama perubahan yang di-propose dapat meningkatkan competitive advantage partner kami. Hal ini terlihat dari ada beberapa user story tambahan seperti add multiple documents at once dan add tasks using json and API untuk kemudahan admin pengurus sistem.
c. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
Kami terus deliver software kami melalui user story yang telah diselesaikan setiap individual review maupun sprint review secara berkala.
d. Business people and developers must work together daily throughout the project.
Kami selalu bekerja sama dengan product manager cermati untuk kolaborasi mengembangkan software ini dari perspektif bisnis dan teknis.
e. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
Kami membuat software ini secara berkelompok. Kelompok kami selalu bekerja sama dan saling membantu untuk menyelesaikan pekerjaan mereka. Kami sering berkumpul di kontrakan Akbar dan ngoding bersama untuk meningkatkan produktivitas.
f. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Kami pergi ke kantor Cermati di ruko dekat mall taman anggrek untuk menanyakan semua kebutuhan requirements yang masih tidak jelas sekaligus mereka memberikan pengetahuan node js mereka kepada kami.
g. Working software is the primary measure of progress.
Kami mengukur progress kami dari bekerjanya software yang kami kembangkan, dapat dilihat pada tiap kali sprint review.
h. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
Dalam proses pengembangan, agar sustainable, pengembangan harus melihat secara berkelanjutan supaya setiap stakeholder software kami dapat maintain pace yang sama.
i. Continuous attention to technical excellence and good design enhances agility.
Kami selalu review sebelum menerima merge request dari branch user story ke branch develop supaya setiap kode yang di-merge telah didesain dengan baik dan benar.
j. Simplicity–the art of maximizing the amount of work not done–is essential.
Kami selalu melakukan refactoring agar kode-kode dapat reusable, simpel dan bebas redudansi.
k. The best architectures, requirements, and designs emerge from self-organizing teams.
Kami selalu bekerja sama dan mengevaluasi antar sesama pada proses pengembangan software.
l. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Pada momen sprint retrospective, kami selalu introspeksi diri dan orang lain dalam kelompok demi kemajuan pengembangan software secara baik. Introspeksi dilakukan dengan cara mengutarakan kelebihan dan kekurangan tim.
3. Error code and handling
Kami telah mendefine error code sebagai berikut
implementasi
pada terminal
12. Version control, git flow
git stash
Command ini berguna untuk menyimpan secara sementara pekerjaan yang telah kita kerjakan. Jika kita belum ingin commit, akan tetapi ingin ganti branch, supaya pekerjaan yang telah kita lakukan tidak hilang.
git pop
Command ini digunakan ketika ingin mengambil pekerjaan yang sudah kita stash sebelumnya. Jika sudah melakukan stash, maka lakukan command ini untuk mengambil yang sudah di stash.
git reset HEAD
Command ini digunakan untuk melakukan rollback terhadap commit. Command ini pernah saya gunakan ketika saya mau membatalkan git commit yang telah saya jalankan.
git log
Command ini memberikan daftar commit pada branch tertentu dengan detil dari commit tersebut. Command ini berguna untuk mengetahui list commit apa saja yang sudah dilakukan ketika kita ingin mengetahui dengan cepat dan detil siapa yang terakhir kali commit.
git gc
Command ini berguna mengaktifkan garbage collector pada repository, untuk membuang segala macam index-index yang sudah tidak terpakai supaya repository bersih.
PART D
2. Configure Code Coverage Tool
Kami menggunakan code coverage tool istanbul nyc. Code coverage telah secara otomatis berjalan ketika memasukkan perintah ‘npm test’, dan akan terlihat hasil dari code coveragenya.
3. Issue in Gitlab.
Bug tracking : open issue ketika ada bug atau error saat merge request, dengan adanya issue ini, kami jadi lebih aware terhadap masalah yang timbul dari code yang telah kami buat, serta issue yang kami buat tidak hanya masalah code, melainkan juga issue database pada staging yang perlu diperbaiki
issue 50
issue 56
4. Define Project Error Code
ada pada part A
5. Software enviroment, platform selection
Heroku digunakan sebagai platform untuk hosting code yang kita buat ke cloud, sehingga product owner dapat melihat progress kami, Heroku sendiri tidak seperti hosting pada umumnya, heroku memiliki system GIT, dimana jika kita ingin upload diperlukan push ke Heroku dengan command misalnya ingin push ke master git push heroku master Diheroku juga kita dapat memilih bahasa/platform yang kita inginkan dalam hal tim kami, kita memilih node js sebagi webserver Gitlab kami menggunakan gitlab sebagi hub untuk version control yang kami gunakan yakni git. Kami mengupload source code serta melakukan review terhadap code yang dibuat oleh tim kami
8. Product Packaging & Installer
Kami mengguanakan NPM (node package manager) untuk menginstall semua depedencies atau module yang kami gunakan dalam webapp yang kami buat
10. Scrum as framework for development team work
Kami sudah mengimplementasikan scrum sebagai framework dalam kerja tim, dengan cara menggunakan pivotal tracker sebagai tools dan mengadakan scrum daily meeting duakali dalam seminggu, Sprint planning yang dipimpin scrum master tiap bulan dalam menentukan task yang akan dikerjakan untuk satu sprint, scrum retrospective yang dipimpin juga oleh scrum masteruntuk mengevaluasi hasil kerja serta menilai teman sekelompok. Dari Scrum ini kami memiliki proses development yang terarah dan sebagai tools untuk mengetahui progress serta memberikan evaluasi/review teman se-Tim
11. Role management, Authentication and Authorization
Role management : Sementara ini hanya ada admin dan super admin
Authentication : Memverifikasi apakah orang yang ingin masuk kedalam sistem merupakan orang yg sudah dikenali (terdapat dalam database) dan memiliki izin untuk masuk kedalam sistem (account tersebut tidak di banned).
Authorization : otoritas atau dengan kata lain merupakan fitur fitur apa saja yang dapat dipakai oleh suatu role. Contoh superadmin dapat membuka page create user sedangkan admin tida bisa membukanya.
Hal ini sangatlah penting dalam aspek security agar tidak sembarang orang dpt mengakses maupun edit data dari system. Authorization diberikan karena ada tujuan tertentu, misal superadmin dapat semua hal, sedangkan admin biasa hanya memiliki akses ke beberapa fitur saja, mungkin jika ada role data scientist, hanya bisa melihat fitur statistic saja
12. Additional Branching
Kami menerapkan brach hotfix jika ada userstory yang perlu direvisi berdasarkan evaluasi pada sprint review














