Target Pertemuan
Di akhir kelas, mahasiswa mampu menghubungkan kebutuhan pengguna, proses bisnis, struktur data, dan komunikasi web dalam satu rancangan sistem yang konsisten.
Jelaskan perjalanan data dari UI sampai tersimpan dan ditampilkan kembali, termasuk jika proses gagal.
Cocokkan flowchart, ERD, CRUD Matrix, dan request–response pada sistem yang sama.
Hubungkan kebutuhan dengan aktor, proses, tabel, dan hasil sistem.
Pertanyaan Pembuka
Tombol “Simpan” sudah diklik dan muncul tulisan “Berhasil”. Apakah itu membuktikan data sudah tersimpan?
Tuliskan jawaban di kertas. Sebutkan komponen yang perlu diperiksa serta bukti yang diperlukan. Bandingkan jawaban tersebut setelah menelusuri seluruh alur.
Rencana 200 menit
| Aktivitas | Durasi | Hasil |
|---|---|---|
| Review dan pertanyaan pemantik | 15 menit | Prediksi alur Simpan |
| Fundamental konsep | 35 menit | Peta komponen dan alur web |
| Ilustrasi kehidupan nyata | 20 menit | Pemetaan pesan makanan ke sistem web |
| Studi kasus bersama | 30 menit | Telusur penjualan dan kegagalan |
| Istirahat | 10 menit | — |
| Project Book / analisis kertas | 50 menit | Blueprint Sistem V1 |
| Diskusi dan mini-defense | 25 menit | Temuan dan revisi |
| Kesimpulan dan briefing | 15 menit | Persiapan UTS |
| Total | 200 menit |
1. Menyatukan Pertemuan 1–6
Materi sebelumnya merupakan bagian dari satu sistem. Sekarang hubungkan bagian tersebut agar satu fitur dapat dijelaskan dari awal sampai akhir.
| Materi | Pertanyaan penghubung | Bukti Blueprint |
|---|---|---|
| P1 — Cara kerja web | Siapa pengguna dan apa masalahnya? | Masalah, tujuan, aktor, arsitektur dasar |
| P2 — HTTP | Data apa dikirim dan apa balasannya? | Matriks request–response |
| P3 — Proses bisnis | Apa kondisi berhasil dan gagal? | Flowchart dan aturan bisnis |
| P4 — Database | Di tabel dan kolom mana data disimpan? | Entitas, atribut, tipe data, PK |
| P5 — Relationship | Bagaimana data saling terhubung? | ERD, FK, kardinalitas |
| P6 — CRUD | Data apa dibaca dan diubah? | CRUD Matrix dan kebijakan penghapusan |
2. Siapa Mengerjakan Apa?
User
Aktor yang mempunyai tujuan, misalnya kasir mencatat penjualan.
Frontend / UI
Tampilan dan kontrol: form, pilihan produk, tombol, tabel, serta pesan hasil.
Request
Pesan browser ke server berisi metode, alamat tujuan, dan data yang diperlukan.
Backend
Kode di server yang menerima request, memeriksa input, mengatur proses, dan menyusun response.
Business Logic
Aturan proses usaha yang dijalankan backend, misalnya jumlah harus positif dan stok harus cukup.
Database
Penyimpanan data yang juga menegakkan batasan struktur seperti PK dan FK.
UI membantu pengguna mengisi data, tetapi backend tetap harus memeriksa data yang diterima. FK dapat menolak referensi yang tidak ada; kecukupan stok perlu aturan proses tersendiri.
3. Alur Utuh: Dari Klik sampai Hasil
validasi & logika
hasil / galat
susun balasan
- Pengguna mengisi form pada browser.
- Browser mengirim request ke alamat proses pada server.
- Backend memeriksa bentuk input dan aturan bisnis.
- Jika valid, backend menjalankan operasi database.
- Database mengembalikan hasil atau galat kepada backend.
- Backend menentukan response berdasarkan hasil proses.
- Browser menerima response dan menampilkan hasil.
Satu klik dapat melibatkan beberapa tabel dan beberapa operasi CRUD.
4. Studi Kasus — Kasir Mencatat Penjualan
Gunakan konteks penjualan_db dari P6. Fitur yang ditelusuri adalah satu penjualan dengan satu produk, tanpa pembayaran. Sistem project mahasiswa tetap boleh berbeda.
Kondisi awal simulasi
- Andi: id_pelanggan = 1.
- Buku Tulis: id_produk = 1.
- Harga tersimpan Rp12.000 per unit.
- Stok tersedia 10 unit.
- Kasir meminta 2 unit.
Hasil yang diharapkan
- Satu baris penjualan baru.
- Satu baris detail penjualan baru.
- Total: 2 × Rp12.000 = Rp24.000.
- Stok menjadi 8 unit.
- Nomor dan ringkasan penjualan ditampilkan.
Angka tersebut ditetapkan untuk simulasi ini. Jika memakai database P6, cek kondisi nyata dengan SELECT karena latihan sebelumnya dapat mengubah harga dan stok. Tidak perlu menghapus database.
Input → Process → Output
| Input browser | Proses backend | Output |
|---|---|---|
| ID pelanggan, ID produk, jumlah | Validasi → baca pelanggan dan produk → cek stok → hitung total → simpan penjualan dan detail → kurangi stok | Berhasil: nomor, total, sisa stok. Gagal: alasan penolakan tanpa penjualan parsial. |
5. Hubungkan Aktivitas dengan Request–Response
Alamat berikut adalah rancangan endpoint, bukan file PHP yang sudah disediakan. Contoh memakai form HTML biasa dan response HTML.
| Aktivitas | Request | Proses / CRUD | Response rancangan |
|---|---|---|---|
| Buka form | GET /penjualan/tambah.php | R pelanggan dan produk | 200 + HTML form |
| Simpan penjualan | POST /penjualan/simpan.php | R pelanggan/produk; C penjualan/detail; U stok | 303 + Location menuju halaman detail |
| Lihat hasil | GET /penjualan/detail.php?id=101 | R penjualan, pelanggan, detail, produk | 200 + HTML ringkasan; 404 jika ID tidak ditemukan |
| Kirim jumlah tidak valid | POST /penjualan/simpan.php | Validasi menolak sebelum simpan | 400 + pesan input salah |
| Stok tidak cukup | POST /penjualan/simpan.php | Aturan bisnis menolak | 409 + pesan konflik stok |
| Gangguan penyimpanan | POST /penjualan/simpan.php | Batalkan perubahan belum disahkan | 500 + pesan umum; detail teknis dicatat di server |
POST /penjualan/simpan.php HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
id_pelanggan=1&id_produk=1&jumlah=2Nama input form menentukan nama data yang dikirim. Backend membaca ID pelanggan, ID produk, serta jumlah, lalu mencari data terkait berdasarkan ID tersebut.
HTTP/1.1 303 See Other
Location: /penjualan/detail.php?id=101
ID 101 hanya ilustrasi; implementasi mengambil ID dari baris yang berhasil dibuat. Browser kemudian meminta halaman detail melalui GET. Pola ini disebut Post/Redirect/Get.
6. Dari Flowchart ke Logika Backend
Gambar ulang alur berikut memakai simbol P3: terminator untuk mulai/selesai, input/output untuk data, persegi panjang untuk proses, belah ketupat untuk keputusan. Beri label Ya/Tidak pada cabang.
MULAI
TERIMA id_pelanggan, id_produk, jumlah dari POST
JIKA ID atau jumlah bukan bilangan bulat positif:
KIRIM 400 + pesan input tidak valid; SELESAI
MULAI TRANSAKSI DATABASE
COBA:
BACA pelanggan berdasarkan id_pelanggan
BACA dan KUNCI baris produk berdasarkan id_produk
JIKA pelanggan atau produk tidak ditemukan:
ROLLBACK; KIRIM 400 + pesan referensi tidak valid; SELESAI
JIKA stok produk < jumlah:
ROLLBACK; KIRIM 409 + pesan stok tidak cukup; SELESAI
subtotal = harga produk dari database * jumlah
total = subtotal // kasus satu produk
INSERT penjualan (pelanggan, tanggal server, total)
AMBIL id_penjualan baru
INSERT detail_penjualan (id_penjualan, id_produk, jumlah, subtotal)
UPDATE stok produk = stok lama - jumlah
COMMIT
JIKA terjadi galat database sebelum COMMIT berhasil:
ROLLBACK perubahan yang belum disahkan
CATAT detail galat di server
KIRIM 500 + pesan umum; SELESAI
KIRIM 303 menuju halaman detail dengan id_penjualan baru
BROWSER mengirim GET halaman detail
BACKEND membaca data; KIRIM 200 + HTML ringkasan
SELESAIValidasi input
Memastikan bentuk data sesuai: ID dan jumlah merupakan bilangan bulat positif, bukan kosong atau teks sembarang.
Aturan bisnis
Memastikan tindakan sesuai usaha: pelanggan dan produk tersedia, stok cukup, harga dari sumber yang benar.
7. Cocokkan Proses dengan Data dan ERD
Struktur inti berikut mengikuti P6. Tabel pembayaran belum terlibat karena fitur yang dianalisis baru mencatat penjualan.
| Tabel | Kolom yang ditelusuri | Peran |
|---|---|---|
| pelanggan | id_pelanggan (PK), nama | Identitas pelanggan penjualan. |
| produk | id_produk (PK), nama_produk, harga, stok | Sumber harga dan stok terkini. |
| penjualan | id_penjualan (PK), id_pelanggan (FK), tanggal, total | Identitas dan total transaksi. |
| detail_penjualan | id_detail (PK), id_penjualan (FK), id_produk (FK), jumlah, subtotal | Produk, kuantitas, dan nilai penjualan per detail. |
pelanggan (1) ───── (N) penjualan
penjualan (1) ───── (N) detail_penjualan
produk (1) ───── (N) detail_penjualan
penjualan.id_pelanggan → pelanggan.id_pelanggan
detail_penjualan.id_penjualan → penjualan.id_penjualan
detail_penjualan.id_produk → produk.id_produk
penjualan dan produk berhubungan N:M
melalui tabel perantara detail_penjualan.Label 1:N menunjukkan satu induk dapat terkait banyak anak. Pada proses ini setiap penjualan yang disahkan wajib mempunyai minimal satu detail. Backend menjaga aturan tersebut; FK saja tidak memastikan induk mempunyai anak.
8. CRUD Matrix untuk Satu Fitur
Matriks ini khusus aktivitas Simpan Penjualan, melengkapi matriks seluruh sistem pada P6.
| Tabel | C | R | U | D | Alasan |
|---|---|---|---|---|---|
| pelanggan | — | ✓ | — | — | Memastikan pelanggan terdaftar. |
| produk | — | ✓ | ✓ | — | Membaca harga/stok, mengurangi stok. |
| penjualan | ✓ | — | — | — | Mencatat transaksi baru. |
| detail_penjualan | ✓ | — | — | — | Mencatat produk yang dijual. |
Aktivitas Lihat Detail Penjualan setelah pengalihan mempunyai matriks tersendiri: R pada keempat tabel. Tentukan batas aktivitas dengan jelas.
9. Sistem Juga Harus Menjelaskan Kegagalan
| Situasi | Pemeriksa | Dampak dan response |
|---|---|---|
| Jumlah kosong, nol, negatif, atau pecahan | Validasi backend | Tidak ada data disimpan; 400 dan petunjuk perbaikan. |
| Stok tidak cukup | Logika bisnis backend | Transaksi dibatalkan; 409 dan pesan stok tidak cukup. |
| ID pelanggan tidak tersedia | Backend memeriksa; FK menjaga database | Backend menolak. Jika INSERT dengan FK tidak valid tetap dicoba, database menolak dengan galat 1452. |
| Penjualan dibuat, tetapi INSERT detail gagal sebelum COMMIT | Penanganan galat transaksi | ROLLBACK: perubahan yang belum disahkan dibatalkan; 500 jika gangguan internal. |
| Data tersimpan, koneksi browser terputus sebelum response diterima | Pemeriksaan status transaksi | Data bisa sudah tersimpan. Periksa daftar/nomor transaksi sebelum mengirim ulang. |
Pesan di layar, status HTTP, dan keadaan database perlu diperiksa bersama.
10. Pola yang Sama pada Berbagai Usaha
| Sistem / aktor | UI / input | Aturan bisnis | Data terlibat | Response |
|---|---|---|---|---|
| Laundry / petugas | Pelanggan, layanan, berat | Berat positif; tarif dari layanan | Pelanggan, layanan, transaksi, detail | Nomor transaksi dan biaya |
| Perpustakaan / petugas | Anggota dan eksemplar | Anggota aktif; eksemplar tersedia | Anggota, buku, eksemplar, peminjaman, detail | Bukti pinjam atau penolakan |
| Booking lapangan / pelanggan | Lapangan, tanggal, jam | Selesai setelah mulai; jadwal tidak bertabrakan | Pelanggan, lapangan, booking | Nomor booking atau konflik jadwal |
| Bengkel / petugas | Kendaraan dan jasa | Kendaraan tercatat; jasa tersedia | Pelanggan, kendaraan, servis, detail jasa | Nomor pekerjaan dan estimasi |
| Kos / pengelola | Penyewa, kamar, periode | Kamar tersedia pada periode itu | Penyewa, kamar, sewa | Konfirmasi atau penolakan |
Contoh entitas menyesuaikan batas fitur. Mahasiswa harus memperjelas apakah proses sudah mencakup pembayaran atau belum.
11. Praktik — Telusuri Satu Request di Kertas
Kerjakan berpasangan: satu mahasiswa menjadi pengguna/browser, satu menjadi backend/database. Pakai studi kasus bagian 4 dan tukar peran setelah satu skenario selesai.
- Gambar UI: buat tiga input beserta nama datanya dan tombol Simpan.
- Buat kartu request: tulis POST, alamat tujuan, serta id_pelanggan=1, id_produk=1, jumlah=2.
- Jalankan logika manual: cek input, pelanggan/produk, stok, serta sumber harga.
- Catat perubahan tabel: buat satu baris penjualan dan detail, lalu ubah stok dari 10 menjadi 8. ID baru cukup disimulasikan.
- Buat kartu response: tulis 303 beserta alamat detail, lalu GET dan 200 berisi ringkasan Rp24.000.
- Ulangi dari kondisi awal dengan jumlah 12. Tentukan titik penolakan dan buktikan tidak ada perubahan data.
- Ubah kebutuhan: harga di database menjadi Rp13.000 sebelum request diproses. Tentukan sumber harga dan hitung total baru Rp26.000.
USE penjualan_db;
SELECT id_pelanggan, nama
FROM pelanggan
WHERE id_pelanggan = 1;
SELECT id_produk, nama_produk, harga, stok
FROM produk
WHERE id_produk = 1;
SELECT p.id_penjualan, pl.nama, p.total
FROM penjualan AS p
JOIN pelanggan AS pl ON pl.id_pelanggan = p.id_pelanggan
ORDER BY p.id_penjualan DESC
LIMIT 5;Buka XAMPP, aktifkan Apache dan MySQL, lalu buka http://localhost/phpmyadmin dan tab SQL. Jika database P6 belum tersedia, praktik kertas tetap dapat diselesaikan tanpa membuat database baru.
12. Prediksi, Uji, dan Amati
Setiap baris dimulai dari stok 10 dan harga Rp12.000. Pengujian dapat berupa walkthrough kertas; tandai sebagai simulasi. Jika memakai aplikasi, lampirkan bukti aktual.
| Kasus uji | Prediksi proses | Keadaan akhir |
|---|---|---|
| Jumlah 2, referensi valid | Validasi lolos; R → C → U; COMMIT | Satu penjualan dan detail; total Rp24.000; stok 8. |
| Jumlah 0 | Validasi menolak | Tidak ada penjualan baru; stok 10. |
| Jumlah 12 | Aturan stok menolak | Tidak ada penjualan baru; stok 10. |
| Jumlah 2, harga browser diganti Rp1 | Backend memakai harga database Rp12.000 | Total tetap Rp24.000; stok 8. |
| ID pelanggan tidak ada | Pemeriksaan referensi menolak | Tidak ada penjualan/detail baru; stok 10. |
| INSERT detail gagal sebelum COMMIT | ROLLBACK perubahan transaksi | Tidak ada penjualan/detail baru; stok 10. |
| COMMIT berhasil, response tidak sampai | Periksa status sebelum mengulangi | Penjualan bisa sudah ada; jangan menyimpulkan hanya dari layar. |
13. Mini Challenge — Perbaiki Rancangan
- Flowchart menyebut pembayaran, tetapi ERD tidak menyediakan penyimpanan pembayaran. Apa yang perlu ditambahkan atau diperjelas pada batas fitur?
- CRUD Matrix hanya mencantumkan C penjualan, padahal stok produk berkurang. Operasi apa yang hilang?
- Form mengirim nama pelanggan, tetapi backend mengharapkan ID pelanggan. Bagaimana menyamakan data yang dikirim dan diproses?
- UI menampilkan nama produk, sementara detail hanya menyimpan ID produk. Bagaimana mendapatkan nama itu?
- Request sudah diperiksa backend, tetapi FK tetap menolak. Mengapa batasan database masih diperlukan?
- Pengguna mengklik Simpan dua kali. Jelaskan risiko data ganda dan usulkan penanda request unik yang diperiksa server. Menonaktifkan tombol saja belum menjamin request tidak terkirim ulang.
Jawab dengan koreksi rancangan dan alasan; belum perlu menulis implementasi.
14. Project Semester — Blueprint Sistem V1
Blueprint Sistem V1 menggabungkan hasil P1–P6 beserta koreksi dari P7. Gunakan sistem pilihan yang sama dan tunjukkan hubungan antarbagian.
| Bagian wajib | Isi | Cek konsistensi |
|---|---|---|
| Masalah dan tujuan | Masalah nyata, dampak, tujuan, manfaat | Fitur menjawab masalah tersebut. |
| Aktor dan batas sistem | Pengguna, aktivitas, cakupan fitur | Aktor mempunyai aktivitas jelas. |
| Proses bisnis | Input, urutan, aturan, hasil, kegagalan | Aturan muncul pada flowchart. |
| Flowchart | Mulai–selesai, keputusan, berhasil/gagal, perulangan atau alternatif | Data dan proses sesuai fitur. |
| Data | Entitas, atribut, tipe data, PK | Data penting mempunyai tempat penyimpanan. |
| ERD | Relasi, kardinalitas, FK, perantara N:M jika ada | Referensi proses tersedia di ERD. |
| CRUD Matrix | Operasi per entitas dan kebijakan penghapusan | Seluruh perubahan data tercakup. |
| Request–response | Minimal lima aktivitas: method, tujuan, input, proses, response | Nama input sesuai pemrosesan. |
| Arsitektur dasar | Browser/UI ↔ web server/backend ↔ database | Lokasi setiap tanggung jawab jelas. |
| Telusur dan pengujian | Satu fitur lengkap; satu berhasil dan minimal dua gagal | Bukti/simulasi mendukung kesimpulan. |
15. Template Project Book — Blueprint V1
Salin sebagai panduan, isi dengan sistem sendiri, dan gambar bagian visual secara manual. Hindari jawaban umum yang tidak menyebut proses serta data konkret.
IDENTITAS
Nama / NIM / kelas:
Nama sistem:
Versi: Blueprint V1
1. MASALAH DAN TUJUAN
Proses manual saat ini:
Masalah dan dampaknya:
Tujuan dan manfaat konkret:
2. AKTOR DAN BATAS SISTEM
Aktor → aktivitas utama:
Fitur yang dicakup / di luar cakupan:
3. PROSES BISNIS UTAMA
Nama proses:
Input → langkah proses → output:
Aturan bisnis:
Kondisi berhasil dan gagal:
4. FLOWCHART
[Gambar simbol, alur, cabang Ya/Tidak, alternatif/perulangan]
5. DATA
Entitas → atribut → tipe data → PK:
6. ERD
[Gambar entitas, PK, FK, relasi, kardinalitas]
Tabel perantara N:M (jika ada):
Alasan penempatan FK:
Kebijakan penghapusan induk dan dampaknya:
7. CRUD MATRIX
Entitas → C / R / U / D → alasan:
Data yang tidak boleh dihapus langsung dan alternatifnya:
8. REQUEST–RESPONSE (minimal 5 aktivitas)
Aktivitas → aktor → method → alamat tujuan → input
→ validasi/logika → tabel dan CRUD → status/isi response:
9. ARSITEKTUR DASAR
[Gambar Browser/UI ↔ Web Server/Backend ↔ Database]
Lokasi validasi, aturan, penyimpanan, dan tampilan:
10. TELUSUR SATU FITUR
UI → request → backend → aturan → database → response → UI:
Data sebelum → perubahan → data sesudah:
11. PENGUJIAN
Satu berhasil + minimal dua gagal:
Input → prediksi → hasil/bukti atau simulasi → analisis:
Jenis bukti: simulasi kertas / aplikasi aktual
12. EVALUASI
Mengapa sistem layak digunakan:
Satu risiko/keterbatasan dan penanganannya:
Temuan mini-defense dan revisi V1:16. Tugas Project Book — Minggu 7
- Gabungkan dan revisi P1–P6 menjadi Blueprint V1 sesuai bagian wajib.
- Gambar ulang flowchart dan ERD. Samakan nama entitas, PK, FK, dan data pada proses.
- Lengkapi CRUD Matrix seluruh entitas serta minimal lima aktivitas request–response.
- Telusuri satu fitur dari UI sampai response, termasuk tabel dan kolom yang berubah.
- Dokumentasikan satu berhasil dan minimal dua gagal, keadaan data sebelum/sesudah, serta jenis bukti.
- Tulis satu risiko dan mitigasinya. Perbaiki rancangan berdasarkan mini-defense.
- Siapkan Project Book untuk presentasi dan defense. Penyerahan mengikuti arahan dosen.
17. Mini-defense — Persiapan UTS
Latih penjelasan dengan sistem sendiri. Teman atau dosen memilih satu aktivitas dan menanyakan hubungan proses serta datanya.
Rancangan sesi 25 menit
- 5 menit: pilih fitur dan siapkan penjelasan.
- 8 menit: mahasiswa A menjelaskan, B bertanya.
- 8 menit: tukar peran.
- 4 menit: catat koreksi dan revisi.
Pertanyaan defense
- Masalah apa yang fitur ini selesaikan?
- Apa isi request, siapa pemeriksanya?
- Di kolom mana data disimpan?
- Mengapa FK berada di tabel itu?
- Bagaimana jika proses gagal di tengah?
- Mengapa sistem layak digunakan?
18. Quis Pertemuan 7
- Jelaskan komponen yang bekerja sejak klik Simpan sampai hasil ditampilkan.
- Bedakan peran UI, backend, logika bisnis, dan database dalam aktivitas sistem Anda.
- Mengapa backend menghitung ulang total walau form sudah menampilkannya?
- Apakah satu POST selalu berarti satu INSERT? Beri contoh dari kasus penjualan.
- Jumlah 12, stok 10: siapa menolak dan bagaimana keadaan data akhirnya?
- Jelaskan fungsi transaksi database saat penjualan dan detail disimpan pada dua tabel.
- Apa perbedaan status HTTP 400 dengan galat database 1452?
- Beri satu contoh ketidaksesuaian flowchart, ERD, dan CRUD Matrix serta perbaikannya.
- Jika response tidak diterima, apakah data pasti belum tersimpan? Jelaskan.
- Sebutkan isi utama Blueprint V1 dan perannya dalam defense sistem.
Quis dan pengumpulan mengikuti arahan dosen. Jawaban harus dikaitkan dengan sistem dan dapat dipertanggungjawabkan.
19. Ringkasan
masalah & aktor
flowchart & aturan
ERD & CRUD
request & response
Sistem yang dapat dijelaskan mempunyai hubungan jelas antara kebutuhan, proses, data, dan hasil.
Blueprint V1 menyatukan hubungan tersebut. Simpan Project Book, diagram, CRUD Matrix, dan catatan pengujian untuk UTS pada Pertemuan 8.
Glosarium
Istilah bergaris putus-putus dapat diarahkan kursor atau difokuskan untuk menampilkan definisi.