Software Engineering #Chapter 22 : Project Management – Risk Management

risk_management-removebg-preview

 

Hallo teman-teman Akhdani, aku mau sedikit sharing nih dari buku yang udah aku baca

Apa itu Project Management?
Project Management adalah metode penyelesaian proyek dengan melakukan proses initiating, planning, executing, control and monitoring, hingga closing untuk mencapai output/tujuan yang sudah ditentukan.

Dalam pengelolaan proyek dapat mengikuti panduan dari PMBOK Guide 4th Edition yang salah satu isinya ada Risk Management.

Apa itu Risk Management?

Risk Management adalah salah satu pekerjaan terpenting seorang Project Manager yang memikirkan kemungkinan terjadinya risiko dan konsekuensinya terhadap proyek. Risk Management dapat mengantisipasi risiko yang mungkin mempengaruhi jadwal proyek atau kualitas software yang sedang dikembangkan, kemudian mengambil tindakan untuk menghindari risiko tersebut.

Beberapa tahapan yang dapat dilakukan:

screenshot-2023-10-30-105801

  1. Risk Identification
    Pada tahapan ini tim berkumpul untuk bertukar pikiran mengenai kemungkinan risiko yang terjadi sehingga project manager dapat mengidentifikasi risiko berdasarkan pengalaman pada proyek sebelumnya.
    Sebagai titik awal untuk identifikasi risiko, ada 6 (enam) jenis risiko yang dapat dimasukkan dalam daftar risiko:
    a. Estimation
    b. Organizational
    c. People
    d. Requirements
    e. Technology
    f. Tools
  2. Risk Analysis
    Pada tahapan ini project manager harus mempertimbangkan setiap risiko yang teridentifikasi dan mengambil tindakan penilaian tentang kemungkinan dan keseriusan risiko tersebut. Project manager tidak mungkin membuat penilaian numerik yang tepat mengenai probabilitas dan keseriusan setiap risiko, sehingga dapat dilakukan penilaian dengan cara berikut ini:
    a. Kemungkinan risiko dapat dinilai sebagai tidak signifikan (rendah, sedang, tinggi, atau sangat tinggi).
    b. Dampak risiko dapat dinilai sebagai bencana besar (mengancam kelangsungan hidup proyek), serius (akan menyebabkan penundaan besar), dapat ditoleransi (keterlambatan akan terjadi kontingensi yang diperbolehkan), atau tidak signifikan.
  3. Risk Planning
    Pada tahapan ini project manager mengembangkan strategi untuk mengelola risiko-risiko utama yang mengancam proyek. Untuk setiap risiko, project manager harus memikirkan tindakan yang memungkinkan dalam meminimalisir gangguan terhadap proyek jika masalah yang diidentifikasi dalam risiko tersebut terjadi.
  4. Risk Monitoring
    Pada tahapan ini project manager harus memantau risiko secara teratur di semua tahapan proyek, mempertimbangkan dan mendiskusikan setiap risiko utama secara terpisah, memutuskan apakah risiko tersebut lebih besar atau lebih kecil kemungkinannya untuk timbul dan apakah konsekuensi risiko telah berubah.

Sehingga dapat disimpulkan untuk pengajuan proposal manajemen proyek bagian Risk Management tertulis seperti berikut ini: 

421315

Mengenal Business Intelligence

Cover BI

Halo Sobat Akhdani! Di era teknologi saat ini, para pelaku usaha mulai menggunakan Businesss Intelligence sebagai tools untuk memonitoring performa bisnisnya. Secara umum, Businesss Intelligence dapat membantu mengumpulkan informasi dari berbagai sumber, yang kemudian disimpan, diolah dan diproses menjadi data visual. Untuk mengenal lebih dalam apa itu BI dan bagaimana cara kerjanya, mari simak artikel berikut ini!

Apa itu Business Intelligence?

Business Intelligence merupakan bentuk pengolahan data menggunakan model matematis dan analitis yang kemudian akan menghasilkan informasi untuk memudahkan perusahaan dalam pengambilan keputusan pada proses bisnis yang dijalankan.

Dalam artian lain, BI dapat membantu perusahaan melihat secara rinci dan real-time kondisi bisnis yang sedang berjalan saat ini, apakah sedang mengalami penurunan, peningkatan, atau bahkan stagnan. BI juga dapat membantu menyajikan informasi secara lebih ringkas, sehingga perusahaan dapat mengambil langkah lebih cepat dan tepat untuk perencanaan bisnis kedepannya.

BI

Komponen Business Intelligence

Business Intelligence terdiri atas beberapa komponen pembentuk, antara lain:

  • OLAP (On-line Analytical Processing)

OLAP melakukan query data dari berbagai sumber untuk menghasilkan berbagai sudut pandang. Dengan kata lain, BI menggunakan OLAP untuk menggabungkan dan mengelompokkan data ke dalam beberapa kategori untuk memberikan informasi yang lebih ringkas dalam bentuk pelaporan, analisis, pemodelan, dan perencanaan. Beberapa operasi OLAP yang digunakan adalah roll up, drill down, slice and dice, dan pivot.

  • Analisis lanjutan

BI menerapkan teknik machine learning, otomasi proses bisnis, teknik statistik tren, mengenali pola, karakteristik, serta menganalisa anomali dari berbagai sumber data.

  • Manajemen Kinerja Perusahaan

Peran utama BI adalah integrasi dari beberapa data untuk menghasilkan informasi kinerja bisnis. Dalam komponen ini, BI berperan untuk meningkatkan kinerja perusahaan dengan melacak fluktuasi pasar, menganalisis tren jangka pendek dan jangka panjang, serta menciptakan peluang investasi

Cara kerja Business Intelligence

Untuk menghasilkan sebuah data visual berbentuk laporan, BI perlu melewati beberapa proses seperti pengumpulan data, pemrosesan dan penyimpanan data, serta analisis dan penyajian.

konsep BI

Sumber: Pengantar BI dalam Bisnis

  • Pengumpulan data

Pada tahapan ini, BI akan melakukan ekstraksi pada data-data “mentah” yang telah tercatat pada database, seperti data penjualan, laporan laba rugi, penggajian, dan lain-lain sebelum disimpan dan diintegrasikan antar satu dengan yang lain.

  • Penyimpanan pada Data Warehouse

Data mentah yang telah dikumpulkan berikutnya akan disimpan dalam bentuk Data Warehouse untuk dilakukan proses integrasi dari beragam database yang ada.

  • Akses dan Analisis Data

Setelah proses integrasi data, peran BI berikutnya adalah mengakses informasi dari Data Warehouse untuk kemudian dianalisa dan diinterpretasikan dalam bentuk tren, pola, dan menyajikannya dengan bentuk yang lebih ringkas.

  • Pembuatan Laporan

Dari hasil analisa dan interpretasi data tersebut, dilakukan proses pembuatan laporan yang nantinya akan menampilkan data visual beserta informasi pendukung agar pengguna dapat lebih mudah memahami data yang telah diolah.

Aplikasi Business Intelligence

Nah, berikut ini terdapat beberapa rekomendasi aplikasi yang dapat mendukung penerapan Business Intelligence, antara lain:

  1. Microsoft Power BI
  2. Tableau
  3. Oracle BI

 


Referensi:
Business Intelegent (Pengantar Business Intelligence dalam Bisnis)
PT. Sonpedia Publishing Indonesia
Bagian 1 - Pengenalan dan Konsep Dasar Business Intellegence

Meningkatkan User Interface dan User Experience (UI/UX) melalui Pendekatan Berbasis Pengguna

user-1

Pengembangan aplikasi yang sukses tidak hanya bergantung pada teknologi canggih, tetapi juga pada kemampuan untuk memahami, menghormati, dan memenuhi kebutuhan pengguna. Salah satu pendekatan yang fading efektif dalam mencapai tujuan ini adalah Metode User Centered Design( UCD). UCD adalah kerangka kerja yang difokuskan pada pengguna dalam pengembangan tampilan antarmuka aplikasi. Pada kesempatan kali ini ARS Mania akan membahas tentang metode UCD dan mengapa ini sangat penting dalam menciptakan aplikasi yang sukses.

Berdasarkan penelitian yang dilakukan oleh (Kaligis & Fatri, 2020), berikut adalah penjelasan mengenai User Centered Design (UCD).

Apa Itu User Centered Design?

Menurut ISO 9241- 210 yang mengatur tentang Prinsip- prinsip Ergonomi Antarmuka Manusia Sistem Interaktif, metode UCD merupakan pendekatan dalam pengembangan sistem secara interaktif dengan tujuan untuk mengembangkan sistem yang berguna bagi penggunanya. UCD menempatkan pengguna sebagai pusat dari proses desain, dan berfokus pada pemahaman mendalam tentang kebutuhan, dan pengalaman pengguna. Pada metode pengembangan aplikasi, UCD diterapkan pada tahap perencanaan, perancangan, dan pengujian.

Tahapan Metode User Centered Design

the-user-centred-design-process-according-to-iso-9241-21020101. Understand and Specify the Context of Use (Memahami dan Menentukan Konteks Penggunaan)

Pada tahapan ini kita melakukan identifikasi yang berfokus pada kondisi siapa yang akan menggunakan sistem, di mana mereka akan menggunakannya dan apa yang menjadi alasan pengguna menggunakan sistem. Kita mencoba memahami apa yang mereka butuhkan dari sistem tersebut

2. Specify the User Requirements (Menentukan Kebutuhan Pengguna)

Setelah kita tahu siapa pengguna, di mana sistem akan digunakan, dan mengapa pengguna menggunakan sistem, kita menuliskan dengan jelas apa yang pengguna butuhkan dari sistem ini. Kita menentukan apa tugas yang harus mereka lakukan dan apa keinginan mereka.

3. Produce Design Solutions to Meet User Requirements (Menghasilkan Solusi Desain yang Memenuhi Kebutuhan Pengguna)

Dalam tahap ini, kita mulai membuat desain sistem. Desain ini harus mencakup antarmuka yang memudahkan pengguna untuk mengoperasikan sistem dan mencapai tujuan mereka. Pada tahapan ini juga kita berfokus pada untuk meningkatkan user experinece.

4. Evaluate the Design Against Requirements (Evaluasi Desain Berdasarkan Kebutuhan)

Setelah desain dibuat, kita menguji desain ini dengan pengguna. Pengguna mencoba sistem dan memberikan masukan atau feedback. Dari masukan tersebut akan dilakukan perbaikan secara berulang hingga memenuhi ekspektasi pengguna, karena pada metode ini berjalan secara iteratif.

Kesimpulan

Metode User-Centered Design (UCD) adalah pendekatan yang kritis dalam pengembangan aplikasi yang bertujuan untuk meningkatkan pengalaman pengguna. Dengan memahami dan memenuhi kebutuhan pengguna, aplikasi dapat menjadi lebih efisien, efektif, dan memuaskan. UCD membantu mengurangi risiko kesalahan desain dan meningkatkan peluang kesuksesan aplikasi. Oleh karena itu, pengguna seharusnya selalu menjadi fokus utama dalam pengembangan aplikasi yang sukses.

Referensi : 
¹Kaligis, D.L. & Fatri R.R. (2020). Pengembangan Tampilan Antar Muka Aplikasi Survei Berbasis Web Dengan Metode User Centered Design. Jurnal Sistem Informasi, Teknologi Informatika dan Komputer, Vol 10. No 2, Hal 106-114.
²Saputri, I.S.Y. Fadhli, M. & Surya, I. (2017). Penerapan Metode UCD (User Centered Design) pada E-Commerce Putri Intan Shop Berbasis Web. Jurnal Nasional Teknologi dan Sistem Informasi. Vol 03. No 02. 269-278.

Understanding Requirement Engineering

cover-1

Fase Requirement Engineering merupakan proses memahami kebutuhan sistem, baik dari segi bisnis, kebutuhan fungsional, ataupun dari segi interaksi pengguna dengan sistem nantinya.

Tujuan dilakukannya fase Requirement Engineering adalah untuk menyamakan presepsi setiap pemangku kepentingan yang terlibat, agar dapat menghasilkan solusi yang efektif dan efisien.

Fase ini terdiri dari beberapa tahapan:

  1. Identifikasi permasalahan
  2. Analisa kebutuhan pengguna
  3. Klasifikasi kebutuhan pengguna
  4. Pemodelan sistem
  5. Negosiasi dan spesifikasi kebutuhan
  6. Validasi kebutuhan
Identifikasi Permasalahan

Tahapan ini merupakan awal dari proses Requirement Engineering. Identifikasi permasalahan biasanya dilakukan menggunakan teknik kolaborasi meeting yang akan dihadiri oleh pihak user atau pengguna, serta vendor atau tim yang akan melakukan pengembangan sistem. Tahapan ini dapat juga disebut Requirement Gathering.

Tujuan utama dari Requirement Gathering adalah memahami permasalahan yang dihadapi oleh user yang kemudian dilanjutkan dengan penawaran solusi secara garis besar.

Analisa Kebutuhan Pengguna

Tahapan ini merupakan tindak lanjut atas informasi yang telah diperoleh pada tahap sebelumnya. Pemasalahan akan dipetakan menjadi poin-poin kebutuhan yang nantinya akan direalisasikan dalam bentuk fitur-fitur pada sistem yang dikembangkan.

Klasifikasi Kebutuhan Pengguna

Setelah diperoleh daftar kebutuhan pengguna, maka selanjutnya akan dilakukan klasifikasi kebutuhan berdasarkan level kepentingannya, yaitu:

  1. Normal Requirement (Kebutuhan objektif sesuai dengan permintaan user)
  2. Expected Requirement (Kebutuhan dasar sebuah sistem)
  3. Exciting Requirement (Kebutuhan tambahan yang berada di luar ekspektasi user)

Klasifikasi kebutuhan dilakukan untuk memudahkan tim pengembang dalam menentukan prioritas ketika proses pengerjaan nantinya.

Pemodelan Sistem

Tahapan ini bertujuan untuk menggambarkan sistem dalam bentuk dokumen teknis untuk memperjelas elemen apa saja yang dibutuhkan, bagaimana hubungan antar entitas, serta bagaimana behavior atau perilaku sistem atas berbagai kondisi yang diminta oleh setiap aktor.

Pemodelan dapat dilakukan menggunakan Use Case Skenario ataupun Use Case Diagram, UML, Class Diagram, ataupun Prototype sistem.

Negosiasi dan Spesifikasi Kebutuhan

Setelah dilakukan pemodelan, gambaran alur serta fungsional sistem akan semakin jelas. Tahapan berikutnya adalah melakukan diskusi dan negosiasi antara vendor dan user untuk menentukan prioritas pada proses pengembangan, biaya yang dibutuhkan, risiko yang akan ditimbulkan, serta kemungkinan untuk menggabungkan, memodifikasi atau bahkan mengeliminasi kebutuhan-kebutuhan yang telah dituliskan di awal agar mencapai kesepakatan bersama.

Hasil terbaik negosiasi adalah terbentuknya Project Plan dimana pihak user dapat memperoleh sistem yang diinginkan sesuai spesifikasi yang telah diminta, dan pihak vendor dapat bekerja dengan realistis, mendapatkan upah yang sesuai, serta deadline yang wajar.

Validasi Kebutuhan

Setelah proses negosiasi menghasilkan kesepakatan bersama, maka tahapan berikutnya adalah proses validasi dari kedua belah pihak yaitu user dan vendor. Hal ini dilakukan untuk mencegah kesalahan interpretasi, kurangnya informasi, inkonsistensi, serta kemungkinan tidak terpenuhinya kebutuhan yang telah disepakati di awal.

Jika seluruh informasi telah dinyatakan valid, maka dilanjutkan dengan proses pengembangan sistem sesuai dengan kebutuhan yang telah dituliskan dalam dokumen Requirement Engineering.

Dalam beberapa kasus, proses Requirement Engineering dapat berlangsung secara paralel atau beriringan dengan proses pengembangan sistem, tergantung pada kebutuhan setiap projectnya. Semakin banyak pemangku kepentingan yang terlibat, maka akan bertambah pula kebutuhan yang harus diidentifikasi. Maka dibutuhkan kemampuan manajemen informasi dan pendokumentasian yang baik, agar memudahkan pelacakan perubahan sepanjang proses pengembangan.

Beberapa kendala yang memungkinkan terjadi pada proses Requirement Engineering adalah:

  1. User kesulitan dalam mengkomunikasikan kebutuhannya.
  2. Terlalu banyak pemangku kepentingan yang terlibat, sehingga menyulitkan dalam proses pengambilan keputusan.
  3. Ketidaksesuaian antara permintaan, deadline, serta budget yang ditawarkan.

It’s your worst nightmare. A customer walks into your office, sits down, looks you straight in the eye, and says, “I know you think you understand what I said, but what you don’t understand is what I said is not what I meant.” Invariably, this happens late -Ralph Young

Reference: Software Engineering A Practitioner’s Approach / Roger S. Pressman / Seventh Edition

Mengenal Bahasa Pemrograman Python dan Django

Python telah lama menjadi salah satu bahasa pemrograman yang paling populer, dan salah satu alasan utama kepopulerannya adalah kemampuan untuk mengembangkan aplikasi web dengan cepat dan efisien. Python memiliki beragam framework yang sering digunakan dalam pengembangan berbagai jenis aplikasi, diantaranya seperti framework Flask, Pyramid, Tornado dan Falcon. Namun yang paling populer dan banyak digunakan adalahan Framework Django, sebuah alat yang mempermudah pengembangan aplikasi web yang kuat dan skalabel. Artikel ini akan membahas bagaimana Python, bersama dengan Django, memungkinkan pengembangan aplikasi web yang efisien dan kuat.

Python: Bahasa Pemrograman yang Populer

Faktanya menurut IEE Spectrum mengatakan bahwa python adalah bahasa pemrograman paling populer. Sebelum kita membahas Django, mari tinjau mengapa Python menjadi pilihan utama dalam pengembangan web

  1. Sintaksis yang Mudah Dipahami: Python dikenal dengan sintaksisnya yang sederhana dan mudah dipahami. Ini membuatnya menjadi bahasa yang ideal untuk pemula dan pengembang yang ingin fokus pada logika aplikasi daripada menangani kompleksitas sintaksis.
  2. Ekosistem yang Kaya: Python memiliki ekosistem yang kaya dengan berbagai pustaka dan framework yang mendukung pengembangan web, analisis data, kecerdasan buatan, dan banyak lagi. Ini berarti Anda dapat dengan mudah mengakses alat-alat yang diperlukan untuk tugas-tugas khusus dalam pengembangan web.
  3. Komunitas yang Besar: Python memiliki komunitas yang besar dan beragam. Komunitas ini menyediakan dukungan, tutorial, dan sumber daya yang berlimpah, membuatnya mudah untuk menyelesaikan masalah dan memperdalam pengetahuan Anda.
  4. Kemampuan Cross-Platform: Python dapat berjalan di berbagai platform, termasuk Windows, macOS, dan Linux. Ini membuatnya cocok untuk pengembangan aplikasi web yang bersifat lintas platform.

Django: The Web Framework for Perfectionists with Deadlines

Menurut penelitian yang dilakukan dengan judul “Pemanfaatan Python dan Framework Django Sebagai Dashboard Sistem Informasi Pengelolaan Skripsi Pada STIMIK Pontianak” (Gat,2023) mengatakan bahwa Bahasa pemrograman Python dan framework Django hadir dengan kesederhaan, memiliki sintaks yang mudah dipahami untuk dibaca dan juga menyedikan banyak library yang siap dipergunakan. Dari segi keamanan, python menawarkan keamanan yang lebih kuat dari framework kebanyakan bahasa pemrograman lainnya. Hasil dari penelitian tersebut membuktikan bahwa, bahasa pemrograman Python dengan framework Django yang dilengkapi dengan banyak fitur dan library yang lengkap, mampu menghasilkan sistem informasi pengelolaan skripsi dengan mudah dan cepat.

Hal yang paling menarik dari Django adalah arsitektur sistem MTV (Model, Template, View) yang dimilikinya, berbeda dengan kebanyakan framework yang menggunakan sistem MVC (Model, View, Control) hal ini merupakan setara namun istilahnya saja yang berbeda.

assitektur-sistem-mtv

 

  • Model mewakili struktur data aplikasi Anda dan berfungsi untuk berinteraksi dengan basis data.
  • View bertanggung jawab untuk mengatur logika presentasi dan mengatur bagaimana data dari model ditampilkan kepada pengguna.
  • Template adalah komponen yang mengontrol tampilan akhir yang diberikan kepada pengguna, seringkali dalam bentuk halaman web HTML.

Berikut adalah 10  keunggulan framework Django dibandingkan beberpa framework python lainnya:

  1. Kekuatan Batteries-Included: Django sering dijuluki sebagai “framework yang memiliki baterai terisi penuh” karena menyertakan banyak komponen bawaan (seperti ORM, sistem admin, sistem otentikasi, dll.) yang membuat pengembangan web lebih cepat dan mudah. Ini mengurangi kebutuhan untuk mencari pustaka pihak ketiga atau menggabungkan berbagai komponen sendiri.
  2. ORM Kuat: Django dilengkapi dengan Django ORM (Object-Relational Mapping) yang kuat, yang memungkinkan Anda berinteraksi dengan basis data relasional tanpa harus menulis SQL secara eksplisit. Ini mempermudah pemodelan dan pengaksesan data.
  3. Sistem Admin yang Kuat: Django menyertakan sistem admin bawaan yang memungkinkan Anda membuat antarmuka administrasi web untuk aplikasi Anda dengan sedikit atau tanpa penulisan kode tambahan. Ini sangat berguna untuk mengelola data aplikasi Anda.
  4. Dokumentasi yang Luar Biasa: Django memiliki dokumentasi yang sangat baik dan komprehensif, yang membuatnya mudah bagi pengembang baru untuk memahami dan memulai dengan framework ini. Dokumentasi yang baik juga membantu dalam pemeliharaan dan pengembangan aplikasi.
  5. Keamanan Terintegrasi: Django menerapkan banyak praktik keamanan terbaik secara bawaan, termasuk proteksi terhadap serangan umum seperti SQL injection, Cross-Site Scripting (XSS), dan Cross-Site Request Forgery (CSRF). Ini membantu menjaga aplikasi Anda aman secara default.
  6. Skalabilitas: Meskipun Django cocok untuk proyek-proyek kecil, itu juga dapat digunakan untuk proyek-proyek besar dan rumit. Dengan desain yang kuat dan kemampuan untuk membagi aplikasi menjadi komponen yang terpisah, Anda dapat mengembangkan aplikasi yang sangat skalabel.
  7. Dukungan Komunitas dan Ekosistem: Django memiliki komunitas yang besar dan aktif, sehingga Anda dapat dengan mudah menemukan dukungan, tutorial, dan pustaka pihak ketiga yang memperluas fungsionalitas Django.
  8. Ketersediaan Hosting dan Deployment yang Luas: Ada banyak penyedia hosting web dan layanan PaaS yang mendukung Django, membuatnya mudah untuk mendeploy aplikasi Anda secara online.
  9. Berfokus pada Prinsip “Don’t Repeat Yourself” (DRY): Django mendorong praktik pengembangan yang menghindari pengulangan kode (DRY) dengan menyediakan alat-alat seperti template dan middleware yang memungkinkan Anda mengorganisir kode Anda dengan baik.
  10. Desain URL yang Elegan: Django memiliki sistem routing URL yang sangat baik yang memungkinkan Anda mendefinisikan pola URL dengan mudah, membuat aplikasi Anda lebih terstruktur dan mudah dipahami.

Namun, penting untuk diingat bahwa setiap framework memiliki kelebihan dan kelemahan masing-masing. Pilihan framework web Python terbaik tergantung pada kebutuhan proyek Anda dan preferensi pribadi Anda sebagai pengembang.

Kesimpulan:

Python dengan Django adalah kombinasi yang sangat kuat untuk pengembangan aplikasi web. Python memberikan sintaksis yang mudah dipahami, ekosistem yang kaya, dan dukungan komunitas yang besar, sementara Django menawarkan produktivitas tinggi, keamanan terintegrasi, dan kemampuan skalabilitas. Kombinasi ini membuat Python dan Django menjadi pilihan yang luar biasa untuk pengembangan aplikasi web yang efisien dan andal. Jika Anda ingin membangun aplikasi web, pertimbangkan untuk memulai dengan Python dan Django untuk mendapatkan hasil terbaik dalam waktu singkat.

Software Engineering #Chapter 3 – Agile Software Development

blog-removebg-preview

Ringkasan Agile Software Development
Metode agile adalah metode pengembangan berulang yang berfokus pada pengurangan biaya overhead dan proses dokumentasi serta pengiriman perangkat lunak tambahan. Metode ini cocok untuk pengembangan aplikasi dimana persyaratan sistem biasanya berubah dengan cepat, kemudian mengusulkan persyaratan baru dan perubahan untuk disertakan dalam iterasi sistem selanjutnya selama proses pengembangan.

Scrum merupakan metode agile yang telah muncul sebagai metode yang paling banyak digunakan. Proses scrum atau siklus sprint menghasilkan peningkatan produk dari setiap iterasi proses, kemudian dapat dikirimkan ke pelanggan. Titik awal siklus sprint scrum adalah product backlog. Product backlog merupakan daftar dari item seperti fitur produk, dokumen requirement, daftar cerita pengguna, atau deskripsi lain dari software yang akan dikembangkan oleh tim Scrum. Kemudian seluruh tim dilibatkan dalam memilih item mana yang memiliki prioritas tertinggi dan memperkirakan waktu yang dibutuhkan untuk menyelesaikan setiap sprint.

Dalam berbagai kisah sukses Scrum (Schatz and Abdelshafi 2005; Mulder and van Vliet 2008; Bellouiti 2009), hal-hal yang disukai pengguna tentang metode Scrum adalah:

  1. Produk dipecah menjadi serangkaian bagian yang dapat dikelola bersamaan dan dipahami oleh para pemangku kepentingan.
  2. Perubahan requirement saat pengembangan software tidak menghambat kemajuan progress.
  3. Seluruh tim dapat melihat progress pengerjaan produk, sehingga komunikasi dan semangat tim meningkat.
  4. Pelanggan melihat kemajuan progress, deliverable tepat waktu, dan mendapatkan feedback tentang produk dengan jangka waktu yang cukup pendek.
  5. Kepercayaan antara pelanggan dan pengembang terjalin, dimana setiap pelanggan mengharapkan produk berhasil dan sesuai dengan yang diharapkan.

Diketahui sebagian besar software engineering melakukan pemeliharaan dan pengembangan dari sistem yang ada. Berikut adalah keunggulan pada metode agile software development:

  1. Up to date, karena lebih fleksibel dan menerima perubahan berkelanjutan.
  2. Resource yang dibutuhkan tidak terlalu banyak.
  3. Alur kerja lebih singkat dan efisien,  sehingga kinerja tim menjadi lebih stabil.
  4. Interaksi antara client dan developer menjadi lebih intens dan responsif terhadap kebutuhan pengembangan software.

Tetapi bagaimana jika business requirement saat pemeliharaan perangkat lunak melibatkan sistem kustom yang harus diubah, tidak ada konsensus yang jelas mengenai kesesuaiannya?
Tiga jenis masalah dapat terjadi:

  1. Kurangnya dokumentasi produk dari pembangunan perangkat lunak sebelumnya
  2. Menjaga keterlibatan pelanggan dalam proses pengembangan
  3. Tim pengembangan harus dapat memahami perangkat lunak sebelumnya

Kesimpulan
Menurut saya buku ini sangat menarik untuk pembaca yang ingin mengetahui teknik agile development seperti user stories, refactoring, pair programming and test-first development. Pada buku ini pembaca juga dapat memahami perbedaan antara metode agile software development dengan plan-driven development, dan isu-isu pada scaling agile methods.

Akhdani Tech Talk 2021 Series #8 – Database Transaction

Database Transaction

Oleh: Aldia Rahman Mahmudi, Arvin Rasheda, Hesti Pratiwi

Apa itu Database Transaction?

Database transaction adalah salah satu subset yang disediakan SQL. Gunanya untuk mengatur alur data transaksi dalam suatu database. Dengan menggunakan Database Transaction maka kita akan memasukan beberapa query kedalam satu blok dan DBMS akan menganggap query tadi menjadi suatu kesatuan, sehingga jika terjadi error pada salah satu query maka sistem akan membatalkan (rollback) query yang sudah di eksekusi sebelumnya. Konsep ini adalah pengertian dari Atomic yaitu do all or nothing (lakukan semua atau tidak sama sekali).

Konsep Dasar

Dalam implementasinya, kita akan bertemu dengan 3 istilah berikut:Dalam implementasinya, kita akan bertemu dengan 3 istilah berikut:

  • BEGIN/START TRANSACTION

Ini adalah perintah untuk memulai sesi database transaction.

  • COMMIT

Commit adalah perintah untuk menyimpan semua perubahan pada database secara permanen, commit ini dijalankan setelah semua query dieksekusi dan tidak ada error sama sekali.

  • ROLLBACK

Rollback adalah perintah untuk membatalkan semua perubahan data, rollback ini akan dijalankan ketika ada salah satu query yang error. Jika kita menggunakan try..catch, maka perintah rollback ini biasa disimpan di blok catch.

Properti ACID

ACID merupakan singkatan dari Atomicity, Consistency, Isolation, and Durability. ACID adalah karakteristik dari Database Transaksional yang menjamin transaksi database diproses secara reliable.

1

  1. Atomicity: transaksi merupakan suatu kesatuan yang tidak dapat dipisah. Suatu proses selesai secara menyeluruh atau tidak sama sekali.
  2. Consistency: semua proses yang terjadi di database harus memiliki state yang jelas. Sehingga ketika proses gagal, maka data akan dikembalikan seperti keadaan sebelum proses transaksi dimulai.
  3. Isolation: data yang belum selesai diproses harus terisolasi dari transaksi lainnya. Berarti bahwa satu transaksi tidak dapat membaca data dari transaksi lain yang belum selesai.
  4. Durability: kemampuan DBMS untuk menyimpan data transaksi yang terjadi. Sehingga jika terjadi kegagalan, DBMS menjamin bahwa data transaksi yang telah tersimpan tidak akan hilang.

State Transaksi

2

Beberapa state dalam sebuah transaksi, diantaranya:

  1. Active: inisiasi state, transaksi tetap berada pada state ini pada saat proses transaksi
  2. Partially committed: setelah statement final telah dieksekusi
  3. Failed: setelah ditelusuri bahwa eksekusi tidak dapat diproses kembali
  4. Aborted: setelah transaksi di-rolled back dan database di-restore ke kondisi awal sebelum transaksi dimulai.
  5. Committed: setelah transaksi sukses dipenuhi

Implementasi

Misalkan kita memiliki sebuah desain database berisi 2 buah tabel (“header” dan “detail”) yaitu “akun” dan “transaksi” untuk menyimpan saldo dan transaksi yang dilakukan user. Di dalam tabel akun terdapat attribute id, nama dan jumlah saldo user tersebut, dimana saldo memiliki check constraint yaitu saldo harus lebih besar atau sama dengan 0. Dalam satu akun dapat memiliki beberapa detail transaksi yang jenisnya dapat berupa debit dan kredit yang dapat di tuliskan dalam bentuk +/- dalam attribute jenis, besaran transaksi pada attribute jumlah, tanggal dilakukannya transaksi dan akunid yang merupakan foreign key dari tabel akun. Struktur data tersebut dalam database dapat digambarkan dalam sebuah skema sederhana sebagai berikut :

3

Contoh Kasus :

User A dan B memiliki sebuah akun, dimana dalam akun tersebut user A memiliki saldo awal sebesar Rp 100.000,00 dan user B memiliki saldo awal sebesar Rp 750.000,00.

4

Misal user B ingin melakukan transfer saldo sebesar Rp. 800.000,00 ke user A, dimana transaksi ini harusnya gagal karena user B hanya memiliki saldo sebesar Rp. 750.000,00. Disini kita akan mensimulasikan transaksi tersebut dalam bentuk query untuk memperbarui data transaksi dan saldo kedua akun tersebut tanpa menggunakan database transaction.

5

Terdapat error ketika melakukan update pada saldo user B karena saldo akhir menjadi -50.000 dan terdapat check constraint dimana minimal saldo harus lebih besar atau sama dengan 0. Ketika kita melihat kembali data pada tabel akun dan transaksi maka akan terdapat kesalahan data karena ketiga query sebelumnya berhasil dilakukan sedangkan saldo user B tidak berhasil di update.

67

Berikut ini perbandingan apabila kita menggunakan database transaction.

8

Ketika terjadi error kita tinggal melakukan perintah ROLLBACK untuk membatalkan semua perubahan data / mengembalikannya lagi ke state awal, atau lakukan COMMIT jika semua query sukses dijalankan dan data akan tersimpan. Disini kita akan melakukan ROLLBACK pada transaction tersebut.

9

Jika kita melihat kembali data yang ada pada tabel akun dan transaksi, maka tidak akan terdapat perubahan dimana saldo masih sesuai data awal dan transaksi masih kosong.

10 11

Kesimpulan

Database transaction dapat disebut sebagai salah satu fundamental dari pemrograman menggunakan database relasional karena dapat membantu mencegah inkosistensi data atau kesalahan yang terjadi akibat aksi yang dilakukan pada database. Secara umum implementasi database transaction dapat membantu meningkatkan keandalan, integritas dan kinerja aplikasi yang dibangun diatas database tersebut.

Akhdani Tech Talk 2021 Series #7 – Penerapan Algoritma Naive Bayes pada Klasifikasi Data Penerimaan Pegawai

PENERAPAN ALGORITMA NAIVE BAYES PADA KLASIFIKASI DATA PENERIMAAN PEGAWAI

oleh: Maulana, Hardi, Akbar

Apa itu Klasifikasi Naive Bayes ?

Naïve Bayes Classifier merupakan Metode pengklasifikasian dg menggunakan metode probabilitas dan statistik yg dikemukakan oleh ilmuwan Inggris Thomas Bayes, yaitu memprediksi peluang di masa depan berdasarkan pengalaman di masa sebelumnya sehingga dikenal sebagai Teorema Bayes. Klasifikasi Naive Bayes diasumsikan bahwa ada atau tidak ciri tertentu dari sebuah kelas tidak adahubungannya dengan ciri dari kelas lainnya.

Alasan Memilih Algoritma Klasifikasi Naive Bayes ?

  • Naive Bayes Classifier bekerja sangat baik dibanding dengan model classifier lainnya. Hal ini dibuktikan oleh Xhemali , Hinde Stone dalam jurnalnya “Naïve Bayes vs. Decision Trees vs. Neural Networks in the Classification of Training Web Pages” mengatakan bahwa “Naïve Bayes Classifier memiliki tingkat akurasi yg lebih baik dibandingmodel classifier lainnya”.
  • Penggolong statistik: Melakukan prediksi probabilitas, misalnya: Memprediksi probabilitas keanggotaan kelas
  • Standar: Sekalipun metode Bayesian tidak dapat dilakukan secara komputasional, mereka dpaat memberikan standar pengambilna keputusan yang optimal yang ddapat diukur dengan metode lain.

Kelebihan dan Kekurangan Algoritma Naive Bayes

1. Kelebihan

  • Bisa dipakai untuk data kuantitatif maupun kualitatif
  • Tidak memerlukan jumlah data yang banyak
  • Tidak perlu melakukan data training yang banyak
  • Jika ada nilai yang hilang, maka bisa diabaikan dalam perhitungan.
  • Perhitungannya cepat dan efisien
  • Mudah dipahami
  • Mudah dibuat
  • Pengklasifikasian dokumen bisa dipersonalisasi, disesuaikan dengan kebutuhan setiap orang
  • Jika digunakan dalaam bahasa pemrograman, code-nya sederhana
  • Bisa digunakan untuk klasifikasi masalah biner ataupunmulticlass

2. Kekurangan

  • Apabila probabilitas kondisionalnya bernilai nol, maka probabilitas prediksi juga akan bernilai nol
  • Asumsi bahwa masing-masing variabel independen membuat berkurangnya akurasi, karena biasanya ada korelasi antara variabel yang satu dengan variabel yang lain
  • Keakuratannya tidak bisa diukur menggunakan satu probabilitas saja. Butuh bukti-bukti lain untuk membuktikannya.
  • Untuk membuat keputusan, diperlukan pengetahuan awal atau pengetahuan mengenai masa sebelumnya. Keberhasilannya sangat bergantung pada pengetahuan awal tersebut Banyak celah yang bisa mengurangi efektivitasnya
  • Dirancang untuk mendeteksi kata-kata saja, tidak bisa berupa gambar

skema-naive-bayesGambar 1.1. Skema Naive Bayes

Perancangan Sistem

flowchart-sistemGambar 2.1. Flowchart Sistem

diagram-classGambar 2.2. Diagram Kelas

Implementasi Klasifikasi Naive Bayes dan Rancangan Sistem 

Klasifikasi Naive bayes dibuat menggunakan bahasa pemrograman python yang terintegrasi dengan halaman web yang dibuat berdasarkan rancangan sistem diatas.

data-trainingGambar 3.1. Tabel Data Training

Tabel data training seperti gambar 3.1, data tersebut yang akan diklasifikasi menggunakan algoritma Naive Bayes dan digunakan sebagai pengambil keputusan untuk menentukan lulus atau tidaknya data baru calon pegawai.

halamanGambar 3.2. Halaman Form Input Sistem

dalam halaman web yang dibuat seperti Gambar 3.1. user akan menginput data calon pegawai seperti nama, nilai administrasi, nilai tes 1, nilai tes 2 dan nilai interviewnya. setelah user menginput data calon pegawai, sistem akan menentukan lulus atau tidaknya data calon pegawai berdasarkan hasil klasifikasi data training seperti pada gambar 3.3 dan gambar 3.4.lulus

Gambar 3.3. Tampilan Data Calon Pegawai Lulus

tidak-lulus

Gambar 3.4. Tampilan Data Calon Pegawai Tidak Lulus

Kesimpulan

1. Dengan adanya sistem ini, akan mempermudah pihak panitia penerimaan pegawai dalam memperkirakan calon pegawai yang akan bergabung sehingga panitia bisa mengambil keputusan untuk menerima atau tidak calon pegawai tersebut.

2. Pada algoritma Naive Bayes, semua attribut akan memberikan kontribusinya dalam pengambilan keputusan, dengan bobot atribut yang sama penting dan setiap atribut saling bebas satu sama lain.

Akhdani Tech Talk 2021 Series #5 – Test Driven Development

Test Driven Development

Oleh: Agus, Dimas, Moris

Apa itu Test Driven Development (TDD)

Praktek koding yang pertama kali dibuat adalah uji tesnya, lalu membuat koding yang bisa membuat test tersebut lolos. Menagapa harus TDD ? TDD baiknya digunakan apabila Anda ingin menjaga base code dalam waktu yang lama.  TDD itu merupakan proses tertutup yang berulang. Hal ini membuat programmer paham dengan apa yang dia buat. Sebagai contoh berikut adalah gambaran dari proses pembuatan TDD tersebut

Mengapa menggunakan TDD?

Karena TDD adalah cara paling sederhana untuk mencapai kode berkualitas baik dan cakupan pengujian yang baik.

Untuk Jawaban lebih panjang, keep scrolling!

Lima langkah dalam flow TDD

  1. Baca, pahami dan proses permintaan fitur atau fix-bug.
  2. Terjemahkan persyaratan dengan menulis tes unit. Jika memiliki pengaturan hot-reload, unit test akan berjalan dan gagal karena belum ada kode yang diimplemen.
  3. Tulis dan implementasikan kode yang memenuhi persyaratan. Jalankan semua tes dan pastikan test berhasil/lulus. Jika ada yang tidak lulus ,silakan ulangi langkah ini.
  4. Bersihkan kode dengan refactoring.
  5. Check dan ulangi hingga test sudah bisa diimpelemtasikan untuk produksi (production).

tdd

tdd-red-green-refactoring-v3

 

 

Terdapat beberapa keuntungan dan kekurangan yang didapatkan jika menggunakan metode TDD. Berikut adalah contohnya :

Keuntungan : 

  1. Bisa memberitahu pada kondisi apa kodingan tersebut bisa berjalan sempurna dan tidak jalan sempurna. Programmer bisa mengetahui jika terjadi kesalahan karena sebelumnya kodingan tersebut berjalan dengan baik.
  2. Membuat waktu yang lebih singkat untuk melakukan refactor kodingan jika diperlukan, karena programmer dapat mengetes dengan mudah.
  3. Membuat programmer lebih percaya diri. karena apabila ada penambahan fitur, dapat dites dengan mudah.

Kekurangan : 

  1. Tidak mudah untuk memulai dengan TDD. Anda harus mengetahui mengetahui banyak praktik dan teknik baru. Contoh: unit testing, dan asertions, dll.
  2. Dibutuhkan lebih banyak waktu diawal saat melakukan pengembangan, karena Programmer harus menguji kode saat membuat kodingan juga.

Secara umum, TDD dapat dibagi menjadi 4 bagian yaitu : 

  1. Unit Testing: Unit test yang paling rendah. Biasanya yang di test hanya 1 method. Hal ini membuat unit testing mudah untuk digunakan.
  2. Integration Testing: Integration testing yang menyentuh beberapa class. Selain berhubungan dengan beberapa class, ada juga yang berhubungan dengan pihak external lainnya, misalnya API lain. 
  3. Functional Testing: Functional testing adalah tipe testing yang dilakukan kepada semua fitur. Testing ini agak memakan banyakan waktu karena fitur yang dites nya lebih banyak dari integration testing.
  4. Acceptance Testing: Acceptance testing merupakan test yang paling atas. Testing ini hanya dianggap sukses apabila customer sudah mengatakan testnya selesai.

Sebagai contoh, disini kita akan membuat 1 bagian TDD yaitu unit testing. Sebagai awalan, framework yang digunakan adalah menggunakan laravel (contoh menggunakan laravel karena saat menginstal laravel sudah sekaligus otomatis terinstal contoh unit testnya). Untuk menjalankan TDD secara otomatis, ketikan “vendor\bin\phpunit” pada root folder laravel.

Script test yang dibuat biasanya disimpan pada folder test\Unit

folder

lalu pada terminal akan muncul tampilan seperti ini

success1

hal tersebut menandakan bahwa semua test lolos.

sebagai contoh lain, kita buat 1 class yang bernama Calculate yang isinya 1 methode untuk menghitung luas

public function areaOfSquare($length)
{
    return pow($length, 2);
}

lalu buat class testnya yang bernama CalculateTest pada folder “tests\Unit”

 

folder-2

 

buat 1 method pada CalculateTest yang berfungsi untuk mengetes hasil balikan dari method “areaOfSquare” pada class “Calculate”

public function test_areaOfSquare_WhenCalledWithLength2_Return4()
{
    $this->calculate = new Calculate();

    $length = 2;

    $response = $this->calculate->areaOfSquare($length);

    $this->assertTrue(is_int($response));
    $this->assertEquals(4, $response);
}

jalankan test maka akan menghasilkan tampilan seperti berikut

success1

untuk apabila ada logic yang salah pada method “areaOfSquare” pada class “Calculate”, maka akan muncul tampilan seperti berikut.

error

 

disana disebutkan bahwa pada test “test_areaOfSquare_WhenCalledWithLength6_Return36″ hasil yang diharapkan adalah 36, sedangkan hasil yang keluar dari uji test adalah 216. dari sana bisa diambil kesimpulan bahwa kodingan di method “areaOfSquare” pada class “Calculate” terdapat kesalahan. Namun tidak menutup kemungkinan juga jika output yang ditulis pada script test yang dibuat salah. padahal hasil yang dikeluarkan oleh kodingan di method tersebut betul.

Kesimpulan :

Pengembangan berbasis tes (TDD) adalah teknik pengembangan di mana harus terlebih dahulu menulis tes yang gagal sebelum menulis kode fungsional baru. TDD dengan cepat diadopsi oleh pengembang perangkat lunak tangkas untuk pengembangan kode sumber aplikasi. TDD tidak menggantikan pengujian tradisional, melainkan mendefinisikan cara yang telah terbukti untuk memastikan pengujian unit yang efektif. Efek samping dari TDD adalah bahwa tes yang dihasilkan adalah contoh kerja untuk menjalankan kode, sehingga memberikan spesifikasi kerja untuk kode tersebut. Pengalaman pribadi, bahwa TDD bekerja dengan sangat baik dalam praktiknya dan ini adalah sesuatu yang harus dipertimbangkan oleh semua pengembang perangkat lunak.

 

Akhdani Tech Talk 2021 Series #4 – Deteksi Emosi pada teks Chat

Deteksi Emosi pada teks Chat

Oleh: Fildah A., Ikhsan H. Frasetiawan H.

  • Masalah dan Ide

    Bentuk komunikasi teks saat ini merupakan salah satu yang tidak bisa dipisahkan dari kehidupan kita, meskipun ada banyak aspek non verbal yang terkadang tidak mampu ditunjukkan melalui komunikasi teks. Dengan perkembangan AI hingga kini, sangat memungkinkan untuk menggali informasi non verbal dari sebuah teks seperti emosi agar tercipta suatu bentuk komunikasi teks yang lebih komprehensif. Kali ini tim techtalk akan membuat sebuah sistem prediksi emosi sederhana menggunakan machine learning dari data teks.

  • Requirements

  • Python versi 3
  • Modul sklearn
  • Modul nltk corpora
  • Flask
  • Tahap Implementasi

    1. Mencari dataset yang sesuai

    Untuk melakukan sebuah proses supervised learning, dataset yang diperlukan untuk proses training nanti adalah labeled dataset. Terdapat banyak dataset yang sudah dilabeli emosi tersedia secara gratis di internet, misalnya di https://www.kaggle.com/.
    Dataset yang dipilih untuk percobaan kali ini merupakan data tweet dalam Bahasa Inggris yang sudah dilabeli dengan berbagai macam emosi seperti senang, sedih, marah, khawatir, bosan, netral. Untuk menyederhanakan proses training dan prediksi, dipakai hanya data-data yang memiliki label senang, sedih dan netral.

image9Gambar 1. Snippet code untuk load dataset

2. Preprocessing data

Untuk mengoptimalkan proses ekstraksi fitur dan akurasi prediksi, perlu dilakukan ‘pembersihan’ dari kata-kata yang tidak menambah/memiliki makna maupun pengubahan kata menjadi kata dasar. Tahap-tahap preprocessing data meliputi beberapa hal berikut.

  • Memilih data dengan label happiness, sadness dan netral
  • tweet_id sentiment content
    1 1956967666 sadness layin n bed headache ughh waitin call
    2 1956967696 sadness funeral ceremony gloomy friday
    4 1956968416 neutral dannycastillo want trade someone houston ticke...
    6 1956968487 sadness sleep im thinking old friend want married damn...
    8 1956969035 sadness charviray charlene love miss
    ... ... ... ...
    39992 1753918881 neutral jasimmo oo showing french skill lol thing good...
    39993 1753918892 neutral haha yeah twitter many us know ppl care
    39994 1753918900 happiness succesfully following
    39995 1753918954 neutral
    39998 1753919043 happiness wassup beautiful follow peep new hit single ww...
    
    [19012 rows x 3 columns]
  • Penyeragaman huruf kapital menjadi huruf kecil (lowercase)
  •  tweet_id sentiment content
    1 1956967666 sadness layin n bed with a headache ughhhh...waitin on...
    2 1956967696 sadness funeral ceremony...gloomy friday...
    4 1956968416 neutral @dannycastillo we want to trade with someone w...
    6 1956968487 sadness i should be sleep, but im not! thinking about ...
    8 1956969035 sadness @charviray charlene my love. i miss you
    ... ... ... ...
    39992 1753918881 neutral @jasimmo ooo showing of your french skills!! l...
    39993 1753918892 neutral @sendsome2me haha, yeah. twitter has many uses...
    39994 1753918900 happiness succesfully following tayla!!
    39995 1753918954 neutral @johnlloydtaylor
    39998 1753919043 happiness @niariley wassup beautiful!!! follow me!! peep...
    
    [19012 rows x 3 columns]
  • Menghilangkan tanda baca
  •  tweet_id sentiment content
    1 1956967666 sadness layin n bed with a headache ughhhh waitin on...
    2 1956967696 sadness funeral ceremony gloomy friday
    4 1956968416 neutral dannycastillo we want to trade with someone w...
    6 1956968487 sadness i should be sleep but im not thinking about ...
    8 1956969035 sadness charviray charlene my love i miss you
    ... ... ... ...
    39992 1753918881 neutral jasimmo ooo showing of your french skills l...
    39993 1753918892 neutral sendsome2me haha yeah twitter has many uses...
    39994 1753918900 happiness succesfully following tayla
    39995 1753918954 neutral johnlloydtaylor
    39998 1753919043 happiness niariley wassup beautiful follow me peep...
    
    [19012 rows x 3 columns]
  • Menghilangkan stopwords
  •  tweet_id sentiment content
    1 1956967666 sadness layin n bed headache ughhhh waitin call
    2 1956967696 sadness funeral ceremony gloomy friday
    4 1956968416 neutral dannycastillo want trade someone houston ticke...
    6 1956968487 sadness sleep im thinking old friend want married damn...
    8 1956969035 sadness charviray charlene love miss
    ... ... ... ...
    39992 1753918881 neutral jasimmo ooo showing french skills lol things g...
    39993 1753918892 neutral sendsome2me haha yeah twitter many uses know p...
    39994 1753918900 happiness succesfully following tayla
    39995 1753918954 neutral johnlloydtaylor
    39998 1753919043 happiness niariley wassup beautiful follow peep new hit ...
    
    [19012 rows x 3 columns]
  • Mengubah kata ke bentuk kata dasar
  • tweet_id sentiment content
    1 1956967666 sadness layin n bed headache ughhhh waitin call
    2 1956967696 sadness funeral ceremony gloomy friday
    4 1956968416 neutral dannycastillo want trade someone houston ticke...
    6 1956968487 sadness sleep im thinking old friend want married damn...
    8 1956969035 sadness charviray charlene love miss
    ... ... ... ...
    39992 1753918881 neutral jasimmo ooo showing french skill lol thing goo...
    39993 1753918892 neutral sendsome2me haha yeah twitter many us know ppl...
    39994 1753918900 happiness succesfully following tayla
    39995 1753918954 neutral johnlloydtaylor
    39998 1753919043 happiness niariley wassup beautiful follow peep new hit ...
    
    [19012 rows x 3 columns]

image7Gambar 2. Snippet code untuk preprocessing data

3. Ekstraksi fitur

Mesin melakukan pembelajaran melalui suatu proses kalkulasi tertentu yang memetakan antara nilai input dan output dalam bentuk numerik. Dalam percobaan ini data yang akan dibaca tersedia dalam bentuk teks, sehingga perlu dilakukan pengubahan untuk data input (konten teks) maupun outputnya (label) dari teks menjadi nilai numerik.

3.1. Untuk label, proses transformasi dilakukan dengan cara mengubah label menjadi nilai 0…n sesuai banyaknya jenis label berbeda.

image8Gambar 3. Snippet code untuk encoding label

3.2. Untuk data konten teks, dilakukan 2 metode berbeda untuk mengekstraksi fitur-fitur yang dimiliki teks menjadi bentuk numerik yaitu CountVectorizer dan TF-IDF

image5Gambar 4. Snippet code untuk ekstraksi fitur

*CountVectorizer adalah sebuah metode mengubah data teks dengan menghitung banyaknya kemunculan sebuah kata dalam dokumen teks dan kemudian dari nilai hasil kemunculan tiap kata tersebut diubah menjadi bentuk vektor

*TF-IDF adalah sebuah metode mengubah data teks dengan memberikan bobot/nilai terhadap kata berdasarkan seberapa penting kata tersebut dianggap memberikan makna pada kalimat.

4.Melakukan training dan test

Sebelum melakukan training data dan test, dipisahkan terlebih dahulu antara data training dan tes dari dataset yang tersedia dengan rasio 9:1. Ada beberapa model yang dilakukan untuk percobaan, yaitu multinomial naive bayes dan linear svm.

image6Gambar 5. Snippet code untuk split dataset dan fit model

*Multinomial Naive Bayes adalah suatu model klasifikasi berdasarkan teorema bayes dengan mengasumsikan bahwa setiap aspek/fitur dianggap setara.
*Linear SVM adalah model klasifikasi dengan ide untuk mencari sebuah garis pemisah antara kelompok-kelompok vektor

image1Gambar 6. Hasil akurasi model

Model dengan akurasi tertinggi dipilih dan disimpan ke dalam bentuk objek untuk kemudian dipakai melakukan prediksi. Proses menyimpan model menggunakan joblib dari python.

image4Gambar 7. Snippet code dump model menggunakan joblib

5. Membuat web app dengan Flask

Flask merupakan microframework web app untuk python. Model terlebih dahulu di load, lalu dilakukan proses prediksi menggunakan model dan vocab hasil training.

image3Gambar 8. Snippet code app.py

image2Gambar 9. Menjalankan web app

6. Melakukan prediksi menggunakan input random

Setelah web app berhasil dijalankan, selanjutnya kita coba melakukan prediksi dengan input yang kita buat sendiri dengan cara mengetikkan pesan ke dalam textbox yang tersedia.

image11Gambar 10. Tampilan input teks untuk prediksi emosi

image10Gambar 11. Tampilan hasil prediksi

  • Saran pengembangan selanjutnya

  1. Sistem prediksi dengan Bahasa Indonesia
    Pengembangan sistem prediksi dalam Bahasa Indonesia membutuhkan dataset berlabel dan serangkaian langkah preprocessing untuk Bahasa Indonesia. Pada proses pencarian dataset sebelumnya, kami sempat menemukan dataset dengan Bahasa Indonesia. Namun, kami belum sempat eksplorasi lebih jauh mengenai library/modul preprocessing dari python apakah sudah tersedia untuk Bahasa Indonesia.
  2. Disambungkan dengan sosial media
    Sistem prediksi emosi berkaitan erat dengan kegiatan komunikasi teks. Dalam kegiatan sehari-hari kita tentu paling sering melakukan komunikasi teks melalui sosial media. Sistem prediksi emosi mungkin bisa dimanfaatkan untuk meningkatkan kualitas respon chatbot atau sejenisnya. Tentu saja harus dengan pengembangan model ML lebih lanjut agar prediksi bisa lebih akurat.

Sumber :
https://medium.com/the-research-nest/applied-machine-learning-part-3-3fd405842a18
https://towardsdatascience.com/develop-a-nlp-model-in-python-deploy-it-with-flask-step-by-step-744f3bdd7776
https://towardsdatascience.com/naive-bayes-classifier-81d512f50a7c
https://towardsdatascience.com/https-medium-com-pupalerushikesh-svm-f4b42800e989