Software Development Life Cycle (SDLC)
:::info Status Locked v1.0 — proses hybrid Waterfall + Scrum, DoR/DoD, testing, dan disiplin kontrak OpenAPI terkunci. Selaras PRD dan Infrastructure. :::
| Field | Value |
|---|---|
| Product | Nexus Ops — Aplikasi Absensi Divisi Operation |
| Version | 1.0.5 |
| Tim | Kelompok B — Capstone Project 50 Team B 2026 |
| Last updated | 2026-09-28 |
1. Tujuan dokumen
Dokumen ini mendefinisikan cara tim bekerja dari requirement hingga release: model proses, fase, artefak, gate kualitas, peran, dan alur delivery.
| Dokumen | Fokus |
|---|---|
| PRD | Apa yang dibangun |
| SDLC (dokumen ini) | Bagaimana tim membangun & merilis |
| Infrastructure | Di mana sistem berjalan |
| Git Workflow | Kolaborasi Git/GitHub sehari-hari |
| Dev Setup | Tool lokal |
2. Model proses
| Lapisan | Pendekatan | Alasan |
|---|---|---|
| Kerangka proyek | Waterfall (fase berurutan 8 minggu) | Jadwal capstone tetap |
| Fase pengembangan | Agile Scrum (sprint 1 minggu × 8) | Backend + UI paralel sejak Minggu 2 |
Prinsip kerja:
- Requirement dikunci (PRD Locked v1.0).
- Paralel: backend, mobile, web sejak S2.
- Setiap sprint menghasilkan increment demoable.
- Board: filter This Sprint =
sprint:@current -status:Icebox. - Otomasi:
project-sprint-backlog.ymlmempromosikan[Contract]/[UI]yang sprint-nya sudah mulai: Icebox → Backlog, dan menghapus labelIcebox.[Test]tidak ikut promote — tetap Icebox sampai UI + API/Impl slice terkait siap (pindah manual ke Backlog).project-reconcile-closed-done.ymlmemindahkan issue closed / PR merged yang masih bukan Done → Done (safety net bila built-in Project workflow no-op setelah Status dikustomisasi).- Secret:
PROJECT_TOKEN(org Projects read/write).
3. Fase SDLC
3.1 Analisis kebutuhan
| Item | Isi |
|---|---|
| Output | PRD Locked v1.0 |
| Gate | Scope MVP + §10 domain locked |
3.2 Desain
| Item | Isi |
|---|---|
| Output | Infrastructure Locked, Design System, Screens, OpenAPI |
| Gate | Stack + FCM + R2 + face on-device + ERD v1 terkunci |
3.3 Implementasi (build)
| Item | Isi |
|---|---|
| Repos | backend · web · mobile |
| Praktik | Trunk-based, PR kecil, Husky |
| Gate | CI hijau sebelum merge |
3.4 Testing
| Lapisan | Cakupan | Catatan |
|---|---|---|
| Unit / service | Domain & use case backend | Coverage ≥ 95% (exclude handler/persistence per bunfig.toml) |
| Unit FE | src/lib + composable/hooks/store | Coverage ≥ 95% pada path itu; komponen UI = component test terpisah (bukan gate 95% global) |
| Kontrak API | OpenAPI + Zod | info.version bump wajib; mirror docs diisi Deploy backend main |
| Integrasi BE | Modul + Postgres | Service postgres di CI · drizzle-kit push · seed · assert app.request() · script test:integration · job terpisah dari unit |
| E2E web | Playwright | Job CI: playwright install --with-deps chromium; API di-mock lewat page.route (suite default tanpa secret E2E_*; tag @live opsional) |
| E2E mobile | Maestro | Gate manual vs APK debug (owner Atin + assignee card); bukan CI — emulator terlalu lambat/flaky |
| Manual / UAT | Checklist [Test] | Owner Atin; target adoption ≥ 80% |
Indeks di bawah = skenario utama untuk DoD / UAT. Detail langkah hidup di spek e2e/ + body card [Test]; aturan domain di PRD §10; inventaris layar di Screens. Jangan menduplikasi Given/When/Then di dokumen ini.
Integrasi BE (test:integration)
Assert HTTP via app.request() terhadap Postgres (seed + drizzle-kit push). Bukan alur UI.
| Modul / path | Skenario (happy path) | Story | Gate |
|---|---|---|---|
| Auth | Login valid → JWT; kredensial salah / user nonaktif ditolak | AUTH-01 | CI job integration |
| Users / RBAC | GET /me; route HRD ditolak untuk role karyawan | AUTH-02/03 | CI bila slice terkait |
| Attendance | Clock-in/out tersimpan + validasi geofence server-side | ATT-01…05 | CI bila slice terkait |
| Leave | Submit pengajuan → approve/reject (alasan wajib saat tolak) | LV-01/02 | CI bila slice terkait |
| Overtime | Submit lembur → approve/reject | OT-01/02 | CI bila slice terkait |
| Reports | Generate/rekap siap unduh (Excel) | RPT-02/03 | CI bila slice terkait |
| Notifications | Outbox FCM / in-app status approval | NTF-02 | CI bila slice terkait |
Edge case & reason codes (FACE_*, OUT_OF_GEOFENCE, dll.) cukup di unit + PRD — jangan wajib di setiap suite integration.
E2E web (Playwright)
Suite default: API di-mock (page.route). Smoke CI tanpa secret E2E_*.
| Skenario | Screens | Role | Artefak | Gate |
|---|---|---|---|---|
| Shell brand | — | — | web/e2e/smoke/shell.spec.ts | CI smoke |
| Login → dashboard | W-A01 | Supervisor | web/e2e/auth/login.spec.ts | CI setelah UI merge |
| Inbox + tolak leave (alasan wajib) | W-AP01→03 | Supervisor | web/e2e/approvals/inbox.spec.ts | CI setelah UI merge |
| Hub laporan → unduh Excel | W-R01→03 | HRD | web/e2e/reports/export.spec.ts | CI setelah UI merge |
E2E mobile (Maestro)
| Skenario | Screens | Role | Artefak | Gate |
|---|---|---|---|---|
| Shell brand | — | — | mobile/e2e/smoke/shell.yaml | Manual (tag smoke) |
| Login | M-A02 → M-H01 | Karyawan | mobile/e2e/auth/login.yaml | Manual vs APK |
| Clock-in happy path | M-H01 → M-ATT01…04 | Karyawan | mobile/e2e/attendance/clock-in.yaml | Manual vs APK |
| Ajukan cuti | M-LV01→02→04 | Karyawan | mobile/e2e/leave/submit.yaml | Manual vs APK |
Owner gate Maestro: Atin + assignee card [Test]. Bukan CI.
Manual / UAT
Card board [Test] (owner Atin) menutup gap yang tidak diotomasi (wajah native, GPS nyata, FCM device). Target adoption ≥ 80% skenario utama di atas lulus sebelum release S8. Checklist boleh ditulis di body issue sebelum DoR §5.2 terpenuhi; eksekusi setelah UI + client API di main / development.
3.5 Deployment & release
| Trigger | Lingkungan |
|---|---|
Push main | Worker / Pages development |
Tag v* | Worker / Pages production · APK stg |
3.6 Maintenance, evaluasi & karya ilmiah
Bugfix UAT Minggu 7–8; release + presentasi Minggu 8.
Karya ilmiah (karil) dikerjakan paralel dengan build (owner Atin), melanjutkan struktur metopen UT (Bab I–V / R&D). Lihat §4.1.
4. Jadwal & mapping fase ↔ sprint (1 minggu)
Sprint board = Senin → Minggu (field Sprint di Project #2; startDay = Senin).
| Sprint | Tanggal (dari · Senin) | Fase | Fokus | Artefak |
|---|---|---|---|---|
| S1 | 2026-09-21 | Analisis | Wawancara, requirement | PRD Locked + retro foundation cards (Done) |
| S2 | 2026-09-28 | Kickoff paralel | Auth/shell mobile + web; kontrak API; Karil Bab I | Login/home skeleton + outline naskah |
| S3 | 2026-10-05 | Build paralel | Attendance (face/GPS) + Approvals + notif feed UI; Karil Bab II teori | Clock-in + inbox + M-N01 |
| S4 | 2026-10-12 | Build paralel | Leave + Reports + riwayat UI + tim web; Karil Bab II lit. review | Leave + ekspor + history UI |
| S5 | 2026-10-19 | Build paralel | OT + HRD users + notif API; Karil Bab III metode | Lembur + kelola akun + FCM |
| S6 | 2026-10-26 | Build + integrasi | Geofence + face enroll + history API; Karil instrumen Bab IV | P1 lokasi & enrollment |
| S7 | 2026-11-02 | Polish + UAT start | P2 sisa + UAT; Karil Bab IV draft | UAT checklist berjalan |
| S8 | 2026-11-09 | UAT & Release | Deploy + Karil Bab V + finalisasi naskah + presentasi | Tag v1.0.0 + karil PDF |
Urutan jenis kerja: [Contract] / [UI] → Backlog di awal sprint → [Impl] / [API] (Icebox sampai kontrak/UI siap) → [Test] (Icebox sampai UI + wire API siap; lalu Backlog / eksekusi).
4.1 Karya ilmiah (karil) — lanjutan metopen
Naskah ilmiah capstone melanjutkan bentuk metopen UT (contoh struktur: Bab I Pendahuluan → Bab II Kajian pustaka → Bab III Metode R&D → Bab IV Hasil/pembahasan → Bab V Kesimpulan). Topik = Nexus Ops (bukan topik metopen individu lain); isi Bab I–III diadaptasi dari PRD + Infrastructure + proposal kelompok.
| Sprint | Card board (assignee Atin) | Bab / fokus |
|---|---|---|
| S2 | docs#12 | Outline + Bab I Pendahuluan |
| S3 | docs#13 | Bab II Landasan teori |
| S4 | docs#14 | Bab II Penelitian terdahulu & kerangka |
| S5 | docs#15 | Bab III Metode (R&D ↔ SDLC) |
| S6 | docs#16 | Bab III Instrumen/metrik + kerangka Bab IV |
| S7 | docs#17 | Bab IV Hasil & pembahasan (draft) |
| S8 | docs#18 + docs#10 | Bab V + finalisasi naskah + presentasi |
Accountable: Atin. Tim menyuplai data UAT, screenshot, dan review teknis. Prefix board: [Docs] Karil — … · label karil.
5. Scrum (sprint 1 minggu)
5.1 Ritme
| Event | Frekuensi | Tujuan |
|---|---|---|
| Sprint | 1 minggu (S1…S8), mulai Senin | Increment; BE ∥ mobile ∥ web |
| Sprint planning | Awal sprint (Senin) | Ambil sprint:@current (bukan Icebox) |
| Daily sync | Singkat | Blocking & handoff |
| Sprint review | Akhir sprint | Demo |
| Retro | Akhir sprint | Proses |
5.2 Definition of Ready (DoR)
Item siap dikerjakan jika:
- User story / AC jelas (atau merujuk PRD Locked).
- Dependensi teknis diketahui.
- Estimasi muat dalam sprint (field Estimate di board).
[UI]: frame Figma ada + daftar testID di Design System §7 + nama token diketahui.[Impl]/[API]:[Contract]sudah merge denganinfo.versionOpenAPI naik.[Test](manual / E2E): layar terkait sudah punya UI + client API dimain(atau env development) sehingga skenario bisa dijalankan tanpa skip massal; checklist/spek boleh ditulis lebih awal di body issue.
5.3 Definition of Done (DoD)
- Kode di
mainlewat CI. - Backend: coverage unit ≥ 95%; integration hijau bila menyentuh modul terkait.
- Perubahan API: OpenAPI
info.versionnaik + publish kedocs/static/openapi.json. - Tidak ada secret di Git.
- Demoable di development.
- Docs terkait diperbarui bila perilaku berubah.
- UI:
testID/data-testidterpasang sesuai registry.
5.4 Disiplin kontrak OpenAPI
- Backend generate & commit
openapi.json; bumpinfo.versionsetiap perubahan path/schema. - Setelah merge ke
main, job Deploy backend menulis mirror publikdocs/static/openapi.json(bukan CI anti-drift di FE). - Web/mobile:
npm run api:syncsaat mulai kerja / setelah contract di main — commit hasil Orval di PR klien.
5.5 Estimate di board
Field Estimate (story points / jam relatif) diisi untuk semua item agar bobot per sprint per orang terverifikasi di board, bukan hanya di chat. Assignee tidak diganti saat rebalance — hanya Sprint / Estimate.
6. Alur kerja Git & quality gate
Panduan: Git Workflow. Setup: Dev Setup.
7. Peran & tanggung jawab
| Anggota | GitHub | Peran | Tanggung jawab SDLC |
|---|---|---|---|
| Atin Mulyanto | atmcorporation | Project Leader & Analyst + Manual Tester + penulis karya ilmiah | Backlog, [Test], UAT sign-off, Maestro gate, naskah karil Bab I–V |
| Akmal Syarifudin | akmalsyrf | Backend & Infrastructure | API, DB, face server-side, FCM/R2, CI/CD |
| Leonardus Sunu Kristianto | leokrist | Mobile Developer | Auth/home, absensi (kamera + GPS + face), profil/enrollment |
| Asep Muhammad | asepmuhamad1300-ctrl | UI/UX & Web Frontend | Figma, design system, web dashboard |
| Moch Riswan Lutfin Anfa | anfariswan | Mobile & Web Frontend | Leave/OT/notif mobile; geofence & web pendukung |
atmcorporation (Atin) ≠ anfariswan (Anfa).
| Fase | A | R |
|---|---|---|
| Analisis / PRD | Atin | Tim |
| Desain UI | Asep | Atin (review AC) |
| Backend | Akmal | — |
| Mobile (absensi/auth) | Leonardus | Akmal (kontrak) |
| Mobile (leave/OT/notif) | Anfa | Akmal (kontrak) |
| Web | Asep (+ Anfa area assign) | Akmal (kontrak) |
| Tes manual / UAT | Atin | Seluruh tim (fix) |
| Karya ilmiah (karil) | Atin | Tim (data UAT, screenshot, review teknis) |
| Release | Akmal (tag/deploy) | Atin (sign-off) |
8. Manajemen risiko proses
| Risiko proses | Mitigasi |
|---|---|
| Requirement bergeser | Change kecil lewat backlog; besar = update PRD + Leader |
| Sprint overload | Potong MVP; defer P1 |
| Blocking antar-repo | Kontrak OpenAPI dulu; mock di klien |
| UAT terlambat | Slot Minggu 7 sejak analisis |
| CI merah menumpuk | Larangan merge; fix hari yang sama |
| Label Icebox ≠ Status | Automation hapus label Icebox saat promote |
Risiko produk: PRD §12.
9. Artefak per fase (checklist)
| Fase | Artefak wajib |
|---|---|
| Analisis | PRD Locked |
| Desain | Infra Locked, design system, screens, ERD |
| Build | Kode, OpenAPI versioned, coverage CI |
| Testing | Integration BE · Playwright CI · Maestro manual · checklist Atin |
| UAT | Hasil skenario pass/fail |
| Release | Tag v*, catatan rilis, naskah karil Bab I–V (PDF), presentasi |
10. Riwayat revisi
| Versi | Tanggal | Perubahan |
|---|---|---|
| 0.1.0 | 2026-09-23 | Draft awal SDLC |
| 0.1.1–0.1.6 | 2026-09-24 | Sprint 1 minggu, paralel, FCM/R2, automation, rebalance |
| 1.0.0 | 2026-09-24 | Locked: DoR testID/contract, coverage scope, Playwright CI + Maestro manual, OpenAPI via Deploy publish, Estimate field |
| 1.0.1 | 2026-09-25 | Otomasi Backlog: hanya [Contract]/[UI]; [Test] Icebox sampai UI+API siap (DoR §5.2) |
| 1.0.2 | 2026-09-25 | Karil paralel S2–S8 (Atin); mapping Bab I–V lanjutan metopen; card docs#12–#18 |
| 1.0.3 | 2026-09-25 | S1 artefak: retro foundation cards (Done) di board — pekerjaan fondasi docs/backend/web/mobile |
| 1.0.4 | 2026-09-26 | §3.4: indeks skenario utama integration BE + E2E web/mobile + rujukan UAT [Test] |
| 1.0.5 | 2026-09-28 | Sprint board & jadwal §4: mulai Senin (S1 21 Sep … S8 9 Nov); selaras Project #2 |