1.1 Pengantar Pengembangan Aplikasi – Konsep Dasar Generative AI dan LLM
Di balik setiap aplikasi (web, aplikasi android, dan aplikasi iOS) yang kita gunakan sehari-hari, terdapat kode pemrograman yang ditulis oleh programmer. Namun, bagaimana proses kerja aplikasi sebenarnya? Apa itu frontend, backend, dan bagaimana semuanya saling terhubung?
Bagi seorang SQA (Software Quality Assurance), pemahaman dasar tentang pemrograman dan arsitektur aplikasi bukan hanya nilai tambah, melainkan kebutuhan. SQA tidak harus menjadi programmer, tetapi harus memahami bagaimana aplikasi bekerja agar bisa menguji lebih efektif, memahami bug, dan berkomunikasi dengan tim developer dengan bahasa teknis yang tepat.
Topik ini penting untuk membuka wawasan dasar tentang bagaimana sebuah aplikasi dibangun, komunikasi antara frontend dan backend, hingga pemanggilan API (Application Programming Interface) sehingga QA bisa lebih kontekstual dalam merancang dan melakukan pengujian.
Sebelum memulai pembelajaran pada topik ini, mari luangkan waktu sejenak untuk merefleksikan pengalaman kamu saat menggunakan aplikasi. Pernahkah kamu berpikir, proses apa saja yang terjadi di balik setiap klik yang kamu lakukan?
Bagaimana sebuah tombol “Checkout” di website dapat memproses pesanan secara otomatis?
Apa perbedaan antara tampilan antarmuka yang terlihat oleh pengguna (User Interface) dan proses yang berlangsung di balik layar (server)?
Mengapa penting bagi QA memahami cara kerja aplikasi, meskipun tidak berperan langsung sebagai developer?
Ketika terjadi error pada website, langkah teknis apa yang sebaiknya dipahami terlebih dahulu untuk menelusuri penyebabnya?
Digiers, sebelum memulai pembelajaran, mari kita pahami terlebih dahulu capaian yang ingin diraih dalam topik ini. Berikut adalah tujuan pembelajaran yang menjadi panduan dalam proses belajar:
Subtopik 1.1.1 Arsitektur Aplikasi (Frontend, Middleware, Backend) dan Konsep Dasar Software Development Generative AI dan LLM
⬛ Apa itu Software Development?
Secara umum, software development adalah proses menciptakan software dari nol hingga siap digunakan. Proses ini melibatkan tahapan seperti perencanaan, penulisan kode, pengujian, serta pemeliharaan program atau aplikasi, dengan harapan software tersebut dapat menyelesaikan suatu masalah atau memenuhi kebutuhan pengguna. Pengembangan tidak terbatas pada software pada desktop (seperti Microsoft Word atau aplikasi pengeditan video), tetapi juga mencakup aplikasi seluler (mobile), situs web, hingga sistem operasi.
Aplikasi masa kini umumnya dibangun dengan menggunakan arsitektur multi lapis (multi layered) untuk mendukung skalabilitas, keamanan, dan kemudahan pemeliharaan. Salah satu bentuk arsitektur yang paling umum terdiri atas tiga lapisan utama:
- Front-end (client side atau sisi pengguna)
- Middleware (penghubung antara front-end dan back-end)
- Back-end (server side dan database atau sisi server dan basis data)
Secara konsep, tidak ada bedanya antara aplikasi mobile dan website (frontend, middleware, backend). Yang berbeda hanya implementasi pada frontend saja (misalnya perbedaan bahasa dan framework/tools yang digunakan).
Contoh system architecture di mana web app dan mobile app tidak ada perbedaan:
Gambar 1.1.1 Overview Sistem
Gambar 1.1.1 menunjukkan arsitektur sistem informasi yang terdiri dari beberapa komponen utama. Pada sisi client, terdapat perangkat desktop dan mobile yang berinteraksi melalui antarmuka aplikasi (frontend). Permintaan dari klien diproses oleh lapisan middleware, yang bertugas menjembatani komunikasi antara frontend dan backend. Di bagian backend, Application Programming Interface (API) menangani permintaan dari frontend dan meneruskannya ke komponen lain, seperti web server, database (SQL), dan file storage. Arsitektur ini menggambarkan pemisahan fungsi antar lapisan, sehingga menghasilkan sistem yang terstruktur, mudah dikelola, dan skalabel.
Gambar 1.1.2 Overview Sistem
Gambar 1.1.2 menunjukkan arsitektur sistem secara keseluruhan untuk sebuah aplikasi. Sistem terdiri dari tiga bagian utama: pengguna yang mengakses sistem melalui aplikasi mobile atau web (frontend), server aplikasi sebagai middleware yang mengelola komunikasi antara frontend dan backend, serta backend yang terdiri dari database dan file system untuk penyimpanan data. Interaksi antar bagian dilakukan melalui server aplikasi yang menjadi penghubung antara pengguna dan penyimpanan data di backend. Arsitektur ini memudahkan pengelolaan data dan memperlancar proses komunikasi antara pengguna dan sistem.
Berikut adalah penjelasan mengenai peran dari masing-masing lapisan dan bagaimana ketiganya saling berinteraksi.
⬛ Front-end: Antarmuka Pengguna (User Interface)
Frontend atau antarmuka pengguna grafis (Graphical User Interface) adalah bagian dari aplikasi yang berinteraksi langsung dengan pengguna. Contohnya adalah menu navigasi, elemen desain, tombol, gambar, dan grafik. Dalam istilah teknis, setiap tampilan yang dilihat pengguna dengan berbagai komponen UI disebut Document Object Model (DOM).
Ada tiga bahasa utama yang digunakan dalam pengembangan frontend:
● HTML (HyperText Markup Language): Menentukan struktur halaman dan elemen DOM.
● CSS (Cascading Style Sheets): Mengatur tampilan visual seperti tata letak, font, dan warna.
● JavaScript: Memberikan fungsionalitas dinamis, seperti memperbarui isi halaman secara real-time.
JavaScript memungkinkan perubahan langsung di halaman seperti menampilkan kalender atau memverifikasi email pengguna. Namun, jika interaksi pengguna lebih kompleks, frontend akan meneruskan permintaan tersebut ke backend.
⬛ Middleware
Middleware adalah perangkat lunak perantara yang memungkinkan berbagai aplikasi saling berkomunikasi dan bekerja secara efisien. Middleware berperan sebagai jembatan penghubung antar teknologi, alat, atau basis data yang berbeda agar semuanya bisa berjalan sebagai satu sistem terpadu. Dengan middleware, aplikasi dapat saling terhubung tanpa harus tahu secara langsung tentang bagaimana komponen lain bekerja. Misalnya, aplikasi frontend yang berjalan di Windows bisa berinteraksi dengan server backend di Linux tanpa pengguna menyadari perbedaan sistem operasinya.
Middleware menyederhanakan proses komunikasi antara frontend dan backend. Aplikasi hanya perlu berinteraksi dengan middleware, tanpa harus tahu bagaimana backend sebenarnya bekerja. Ini dimungkinkan karena adanya kerangka komunikasi pesan (messaging framework), yang membuat pertukaran data lebih standar dan konsisten.
Contoh Framework Pesan:
● JSON (JavaScript Object Notation)
● REST API (Representational State Transfer)
● XML (Extensible Markup Language)
● Web Services
● SOAP (Simple Object Access Protocol)
Framework ini menyediakan cara standar bagi aplikasi di berbagai platform dan bahasa untuk saling bertukar informasi.
Contoh Middleware
Contoh paling umum adalah web server sebagai middleware. Saat pengguna mengisi formulir di situs web, datanya dikirim dalam format JSON atau XML ke web server. Web server kemudian menjalankan logika bisnis, mengambil data dari database, atau berkomunikasi dengan microservices lainnya sebelum mengirimkan respons kembali ke frontend.
⬛ Back-end: Logika Bisnis dan Basis Data
Backend, sering disebut sebagai server-side, adalah bagian aplikasi yang mengelola logika, data, dan komunikasi antar sistem. Saat pengguna berinteraksi dengan frontend, permintaan dikirim ke backend dalam format HTTP. Backend kemudian memproses permintaan itu dan mengirimkan respons.
Backend biasanya berinteraksi dengan:
● Database: Untuk mengambil atau mengubah data.
● Microservices: Untuk menjalankan sebagian tugas (layanan-layanan kecil yang saling terhubung) yang diminta pengguna.
● API pihak ketiga: Untuk mengambil data tambahan atau fitur lainnya.
Backend menggunakan berbagai protokol dan teknologi komunikasi, serta mengelola ribuan permintaan secara bersamaan melalui teknik seperti pembagian beban kerja, caching, dan replikasi data.
⬛ API (Application Programming Interface)
API (Application Programming Interface) adalah kumpulan protokol atau aturan yang memungkinkan berbagai komponen perangkat lunak saling berkomunikasi dan bertukar data. Dalam praktiknya, API digunakan oleh developer untuk menghubungkan bagian-bagian kecil dari kode menjadi satu kesatuan sistem atau aplikasi yang lebih kompleks.
Dengan bantuan API, aplikasi bisa menjadi lebih kuat, tangguh, aman, dan mampu memenuhi kebutuhan pengguna. Meskipun API tidak terlihat secara langsung oleh pengguna, mereka sebenarnya selalu bekerja di balik layar dan menjadi pondasi penting dalam berbagai pengalaman digital yang kita nikmati sehari-hari, mulai dari aplikasi perbankan hingga layanan streaming.
Bagaimana Cara Kerja API?
API bekerja dengan mentransfer data antar aplikasi, sistem, atau perangkat melalui siklus permintaan dan respons (request-response cycle). Proses ini dimulai ketika sebuah aplikasi (API client) mengirimkan permintaan ke API server, lalu API server memprosesnya dan mengirimkan kembali hasilnya ke client.
Gambar 1.1.3 Cara Kerja API
Berikut penjelasan langkah demi langkah mengenai cara kerja API:
1. API Client – Pihak yang Memulai Permintaan
API client adalah aplikasi atau bagian dari sistem yang pertama kali mengirimkan permintaan ke API server. Permintaan ini bisa dipicu oleh:
● Aksi pengguna (misalnya mengisi kolom pencarian atau klik tombol)
● Peristiwa eksternal (misalnya notifikasi dari aplikasi lain)
2. API Request – Isi Permintaan yang Dikirim
Permintaan API (API request) bisa berbeda-beda tergantung jenis API-nya, tetapi umumnya memiliki beberapa elemen utama berikut:
● Endpoint
Alamat URL yang mewakili sumber daya tertentu. Contoh: /articles di aplikasi blog digunakan untuk menangani semua permintaan terkait artikel.
● Method (Metode HTTP)
Menjelaskan aksi apa yang ingin dilakukan terhadap sumber daya. Umumnya menggunakan metode standar HTTP:
○ GET → mengambil data
○ POST → membuat data baru
○ PUT / PATCH → memperbarui data
○ DELETE → menghapus data
● Parameters (Parameter)
Variabel tambahan yang memberikan instruksi lebih spesifik pada permintaan. Contoh: /articles?topic=QA berarti hanya ambil artikel bertopik QA.
● Request Headers
Informasi tambahan dalam bentuk pasangan key-value, seperti tipe konten (Content-Type: application/json) atau token autentikasi (Authorization: Bearer <token>).
● Request Body (Isi Permintaan)
Digunakan saat ingin mengirimkan data, misalnya saat membuat artikel baru, isi body bisa mencakup judul, konten, dan nama penulis.
3. API Server – Tempat Permintaan Diproses
Setelah permintaan dikirim, API server bertugas:
● Memverifikasi identitas pengguna (autentikasi)
● Mengecek apakah data valid (validasi)
● Mengambil atau memanipulasi data sesuai permintaan
4. API Response – Balasan dari Server
Setelah permintaan diproses, API server mengirimkan respons kembali ke client. Umumnya berisi:
● Status Code (Kode Status HTTP)
Angka tiga digit yang menunjukkan hasil dari permintaan:
○ 200 OK → Permintaan berhasil dan data dikembalikan
○ 201 Created → Data baru berhasil dibuat
○ 404 Not Found → Data yang diminta tidak ditemukan
○ 401 Unauthorized → Akses tidak sah
● Response Headers
Informasi tambahan dari server, misalnya format data (Content-Type: application/json) atau info cache.
● Response Body (Isi Balasan)
Data atau hasil yang diminta (misalnya daftar artikel), atau pesan error jika permintaan gagal.
Jenis-Jenis API Berdasarkan Arsitektur
- SOAP API
Menggunakan Simple Object Access Protocol dengan format XML. Jenis API ini kurang fleksibel, lebih umum digunakan pada sistem lama. - RPC API (Remote Procedure Call)
Client mengirim permintaan untuk mengeksekusi sebuah fungsi yang ada di server, lalu server akan menjalankan fungsi itu dan mengembalikan hasilnya. - WebSocket API
Mendukung komunikasi dua arah secara real-time menggunakan format JSON. Cocok untuk aplikasi yang membutuhkan update langsung, seperti chat atau game. - REST API
REST API adalah yang paling umum saat ini. Client mengirim permintaan melalui HTTP (GET, POST, PUT, DELETE), dan server mengirimkan respons sesuai data permintaan. REST API bersifat stateless, artinya server tidak menyimpan informasi client di antara permintaan.
API Gateway
API Gateway adalah alat manajemen API untuk perusahaan yang memiliki banyak layanan backend. Gateway ini menangani autentikasi, statistik, pengelolaan traffic, dan pengaturan versi API.
Contoh: Amazon API Gateway adalah layanan terkelola penuh yang menangani ribuan permintaan API per detik dengan fitur keamanan, throttling, dan monitoring.
⬛ Apa itu Software Development Life Cycle (SDLC)?
Gambar 1.1.4 Software Development Life Cycle (SDLC)
SDLC (Software Development Life Cycle) adalah sebuah kerangka kerja yang membantu tim dalam menyusun dan mengelola proses pengembangan perangkat lunak, mulai dari tahap perencanaan hingga peluncuran (deployment). SDLC bukanlah satu metode tunggal, melainkan sebuah payung besar yang mencakup berbagai pendekatan, seperti: Agile, Waterfall, Iterative, Spiral, Big Bang, dan bahkan model-model terbaru yang didukung oleh kecerdasan buatan (AI-augmented models).
7 Tahapan dalam Software Development Life Cycle (SDLC)
- Perencanaan dan Analisis (Planning & Analysis)
Tahap awal untuk menetapkan tujuan, ruang lingkup, dan sumber daya proyek. - Menentukan Kebutuhan (Define Requirements)
Mengidentifikasi kebutuhan pengguna dan sistem yang harus dipenuhi oleh perangkat lunak. - Desain (Design)
Menyusun arsitektur dan spesifikasi teknis dari sistem yang akan dikembangkan. - Pengembangan (Development)
Menulis kode dan membangun fungsi-fungsi sesuai dengan desain yang telah disepakati. - Pengujian (Testing)
Memeriksa dan memastikan bahwa perangkat lunak berfungsi sesuai harapan dan bebas dari kesalahan. - Implementasi atau Peluncuran (Deployment)
Merilis perangkat lunak untuk digunakan oleh pengguna akhir. - Pemeliharaan (Maintenance)
Menyediakan pembaruan, perbaikan bug, dan peningkatan setelah perangkat lunak digunakan.
Model SDLC yang Umum Digunakan
Gambar 1.1.5 Model Software Development Life Cycle (SDLC)
- Waterfall SDLC Model
Gambar 1.1.6 Waterfall SDLC Model
Waterfall Model dalam pengembangan perangkat lunak mengikuti proses yang bersifat linear dan berurutan, seperti aliran air terjun; setiap tahapan harus diselesaikan sebelum melanjutkan ke tahap berikutnya. Struktur yang rapi membuatnya mudah dipahami dan diimplementasikan.
Tahapan Waterfall Model
-
- Requirements (Analisis Kebutuhan)
Mengumpulkan dan menganalisis kebutuhan sistem dari pemangku kepentingan (stakeholders) untuk memahami apa yang diharapkan dari perangkat lunak yang akan dikembangkan.
- Requirements (Analisis Kebutuhan)
-
- Design (Desain)
Merancang sistem secara detail, termasuk arsitektur perangkat lunak, desain antarmuka pengguna, dan komponen sistem.
- Design (Desain)
-
- Implementation (Implementasi)
Mengimplementasikan atau menulis kode program berdasarkan desain yang telah dibuat.
- Implementation (Implementasi)
-
- Testing (Pengujian)
Seluruh perangkat lunak diuji untuk memastikan sudah memenuhi kebutuhan dan semua fungsi berjalan dengan baik serta bebas dari defects.
- Testing (Pengujian)
-
- Maintenance (Pemeliharaan)
Tahap pemeliharaan dimulai setelah perangkat lunak diluncurkan untuk memperbaiki masalah yang muncul setelah sistem berjalan serta memastikan perangkat lunak tetap memenuhi kebutuhan pengguna seiring waktu.
- Maintenance (Pemeliharaan)
2. Iterative SDLC Model
Gambar 1.1.7 Iterative SDLC Model
Model SDLC Iteratif adalah metode pengembangan perangkat lunak yang fokus pada proses bertahap melalui beberapa siklus atau iterasi. Pada setiap iterasi, akan dibuat versi perangkat lunak yang semakin lengkap dan berfungsi, serta masukan dari pengguna digunakan untuk memperbaiki dan menyempurnakan produk pada iterasi selanjutnya.
3. Agile SDLC Model
Gambar 1.1.8 Agile SDLC Model
Agile SDLC Model adalah metode pengembangan perangkat lunak yang bersifat iteratif dan inkremental, menekankan kolaborasi, fleksibilitas, dan respons cepat terhadap perubahan. Prosesnya berfokus pada pengerjaan secara bertahap melalui siklus pendek (sprint). Tiap siklus mencakup perencanaan, pembuatan, pengujian, serta evaluasi dengan tujuan untuk terus meningkatkan kualitas perangkat lunak berdasarkan feedback pengguna dan stakeholder.
4. V-model (Verification and Validation Models)
Gambar 1.1.9 V-model (Verification and Validation Models)
Sumber Gambar: geeksforgeeks.org
V-model adalah model pengembangan perangkat lunak yang menggambarkan proses secara berurutan berbentuk huruf "V", di mana setiap tahap pengembangan (seperti analisis kebutuhan, desain, dan implementasi) memiliki tahap pengujian atau verifikasi yang berpasangan. Pada sisi kiri "V" dilakukan aktivitas pengembangan (verifikasi: memastikan produk dibangun dengan benar sesuai spesifikasi), sedangkan pada sisi kanan dilakukan aktivitas pengujian (validasi: memastikan hasil akhir sesuai kebutuhan pengguna). Model ini menekankan pentingnya pengujian sejak awal, sehingga kualitas perangkat lunak lebih terjaga dan kesalahan dapat dideteksi lebih dini.
5. Rapid Application Development (RAD)
Rapid Application Development (RAD) adalah model pengembangan perangkat lunak yang bersifat iteratif dan inkremental, dengan fokus utama pada kecepatan pengembangan dan siklus iterasi yang cepat. Model ini sangat menekankan keterlibatan serta umpan balik dari pengguna selama proses berlangsung. Tujuan utama RAD adalah menghadirkan prototipe yang fungsional secara cepat, sehingga para pemangku kepentingan (stakeholders) dapat memberikan masukan dan arahan untuk pengembangan selanjutnya.
6. Spiral SDLC Model
Gambar 1.1.10 Spiral SDLC Model
Sumber Gambar: geeksforgeeks.org
Spiral model adalah model pengembangan perangkat lunak yang menggabungkan konsep pengembangan berulang (iteratif) dengan pendekatan sistematis seperti pada Waterfall model. Model ini menggunakan konsep spiral, di mana setiap putaran spiral merepresentasikan satu fase dalam proses pengembangan perangkat lunak. Keunikan dari model ini adalah pendekatannya yang berorientasi pada risiko-risiko proyek secara terus-menerus dievaluasi dan diatasi pada setiap tahap selama siklus pengembangan berlangsung. Dengan cara ini, keputusan yang diambil dalam setiap fase selalu mempertimbangkan potensi risiko, sehingga proses pengembangan menjadi lebih adaptif dan terkontrol.
7. DevOps SDLC Model
Gambar 1.1.11 DevOps SDLC Model
Model DevOps dalam SDLC adalah pendekatan yang menggabungkan proses pengembangan (Dev) dan operasional (Ops) dengan tujuan mempercepat dan meningkatkan efisiensi siklus hidup aplikasi. DevOps fokus pada kerja sama tim, otomatisasi proses, serta pemantauan terus-menerus selama seluruh tahap SDLC, mulai dari perencanaan hingga pemeliharaan.
8. Incremental SDLC Model
Model SDLC Incremental adalah metode pengembangan perangkat lunak yang membagi proyek menjadi beberapa bagian kecil (disebut increment) yang dikembangkan secara bertahap. Setiap increment menghasilkan versi perangkat lunak yang sebagian sudah berfungsi dan bisa langsung digunakan oleh pengguna. Setelahnya, increment berikutnya akan menambahkan fungsionalitas baru, sehingga produk akhir dibangun secara bertahap dari waktu ke waktu. Model ini menggabungkan pendekatan terstruktur seperti Waterfall dengan sifat iteratif dari Spiral, sehingga cocok untuk menghadirkan fitur lebih awal, menerima umpan balik secara berkelanjutan, dan menyesuaikan pengembangan sesuai kebutuhan yang berkembang sepanjang proyek.
⬛ Apa itu Software Testing Life Cycle (STLC)?
Gambar 1.1.12 Software Testing Life Cycle (STLC)
STLC adalah pendekatan sistematis untuk menguji aplikasi perangkat lunak guna memastikan bahwa aplikasi tersebut sesuai dengan kebutuhan dan bebas dari defects atau bugs. Tujuan utama STLC adalah memastikan bahwa software memiliki kualitas tinggi, andal, dan sesuai dengan kebutuhan pengguna.
Berikut adalah 6 tahapan dalam STLC:
- Phase 1: Requirement Analysis Menentukan strategi, sumber daya, dan jadwal pengujian.
- Phase 2: Test Planning Menyusun dan mendokumentasikan skenario dan langkah-langkah pengujian.
- Phase 3: Test Design Menyiapkan sistem dan alat yang dibutuhkan untuk menjalankan pengujian.
- Phase 4: Test Environment Setup Menjalankan test case dan mencatat hasilnya, termasuk bug atau isu yang ditemukan.
- Phase 5: Test Execution Mengevaluasi proses pengujian, mendokumentasikan temuan, dan menyimpulkan hasil akhir.
- Phase 6: Test Cycle Closure Mengevaluasi hasil pengujian, mendokumentasikan temuan, dan mendiskusikan laporan test dengan stakeholder. Tahap ini juga mencakup proses retrospektif untuk peningkatan di siklus berikutnya.
Perbedaan SDLC dan STLC
➔ SDLC (Software Development Life Cycle) adalah proses menyeluruh dalam pengembangan software yang mencakup tujuh fase: perencanaan dan analisis, menentukan kebutuhan (requirements), desain, pengembangan (development), pengujian (testing), implementasi/peluncuran (deployment), dan pemeliharaan (maintenance).
➔ STLC (Software Testing Life Cycle) adalah bagian dari SDLC yang secara khusus fokus pada fase pengujian (testing). Tujuannya adalah memastikan kualitas, fungsionalitas, dan keandalan software melalui berbagai aktivitas pengujian.