TeachingSoftware EngineeringResponsi UAS Software Engineering — Rangkuman Materi
Workshop

Responsi UAS Software Engineering — Rangkuman Materi

Part 1 — System Analysis & Risk Identification (20%)

Definisi Risk

Risk ditentukan oleh dua komponen utama:

  • Probability — kemungkinan gagal mencapai outcome tertentu
  • Consequences — dampak dari kegagalan tersebut

Internal risk = risiko yang bisa kita kendalikan
External risk = risiko yang tidak bisa kita kendalikan


Reactive vs Proactive Risk Management

Reactive — tim bereaksi setelah risiko terjadi:

  • Mitigation — siapkan resource ekstra untuk "fire fighting"
  • Fix on failure — resource diterapkan setelah risiko muncul
  • Crisis management — kegagalan tidak tertangani, proyek terancam

Proactive — risiko diidentifikasi dan ditangani sebelum terjadi (prevention, elimination of root causes)


7 Prinsip Software Risk

  1. Global perspective — lihat risiko dalam konteks sistem dan bisnis
  2. Forward-looking view — antisipasi risiko masa depan, buat contingency plan
  3. Open communication — jangan abaikan risiko yang dikemukakan orang lain
  4. Integrate — pertimbangan risiko harus jadi bagian dari proses software
  5. Continuous process — pantau terus, modifikasi risiko yang teridentifikasi
  6. Shared product vision — semua stakeholder berbagi visi yang sama
  7. Teamwork — gabungkan keahlian semua stakeholder

Kategori Identifikasi Risiko

Kategori Deskripsi
Product size Risiko terkait ukuran software
Business impact Batasan dari manajemen/pasar
Customer characteristics Kecanggihan customer dan komunikasi
Process definition Sejauh mana proses sudah didefinisikan
Development environment Ketersediaan dan kualitas tools
Technology to be built Kompleksitas dan novelty teknologi
Staff size and experience Pengalaman teknis dan proyek tim

Level Risk Management (dari terendah ke tertinggi)

  1. Crisis management — fire fighting setelah masalah terjadi
  2. Fix on failure — deteksi dan reaksi cepat setelah terjadi
  3. Risk mitigation — siapkan resource, tapi tidak eliminasi penyebab
  4. Prevention — identifikasi dan cegah sebelum menjadi masalah
  5. Elimination of root causes — hilangkan faktor yang memungkinkan risiko ada

Komponen Risiko

  • Performance risk — ketidakpastian produk memenuhi requirements
  • Cost risk — ketidakpastian budget terjaga
  • Support risk — ketidakpastian software mudah dikoreksi dan ditingkatkan
  • Schedule risk — ketidakpastian jadwal dan delivery tepat waktu

Risk Projection (Risk Estimation)

Menilai setiap risiko dari dua sisi: likelihood dan consequences.

4 Langkah risk projection:

  1. Tentukan skala kemungkinan risiko
  2. Delineasi konsekuensi risiko
  3. Estimasi dampak pada proyek dan produk
  4. Catat akurasi proyeksi

Risk Table — sort berdasarkan probability dan impact (1=catastrophic, 2=critical, 3=marginal, 4=negligible)

Risk Exposure: RE = P × C
(P = probability, C = cost if risk occurs)

Contoh: 80% kemungkinan komponen reuse gagal → 18 komponen harus dibuat manual → biaya $25,200 → RE = 0.80 × $25,200 ≈ $20,200


Risk Mitigation, Monitoring, Management (RMMM)

  • Mitigation — bagaimana menghindari risiko?
  • Monitoring — faktor apa yang bisa dipantau untuk mendeteksi perubahan probabilitas?
  • Management — contingency plan jika risiko menjadi kenyataan?

Part 2 — Testing & Quality Engineering (25%)

Internal vs External Quality

  • Internal quality — struktur kode, keterbacaan, dokumentasi
  • External quality — crash, pemenuhan requirements, desain UI

7 Prinsip Testing

  1. Absence of defects fallacy — testing membuktikan ada defect, bukan tidak ada
  2. Exhaustive testing is impossible — tidak mungkin test semua kemungkinan input
  3. Start testing early — temukan bug sedini mungkin, biaya fix lebih murah
  4. Defects are clustered — bug cenderung terkonsentrasi di komponen tertentu
  5. Pesticide paradox — test suite yang sama terus-menerus tidak akan menemukan bug baru; variasikan
  6. Context-dependent — pendekatan testing bergantung pada jenis aplikasi
  7. Verification ≠ Validation
    • Verification: "Are we building the software right?" (sesuai spec?)
    • Validation: "Are we building the right software?" (sesuai kebutuhan user?)

Level Testing

Level Fokus Contoh
Unit Testing Komponen/fungsi individual secara isolasi Test fungsi login secara terpisah
Integration Testing Interaksi antar modul Test login mengambil data dari database
System Testing Sistem lengkap terintegrasi Test seluruh modul e-commerce
Acceptance Testing Perspektif end-user (alpha/beta) User test fitur social media di real-world

Teknik Testing

  • Black-Box — test berdasarkan requirements, tanpa melihat kode internal → cocok untuk functional & usability
  • White-Box — memerlukan pengetahuan struktur kode internal → cocok untuk unit & integration
  • Grey-Box — kombinasi keduanya, partial knowledge → cocok untuk integration & API testing

Static vs Dynamic Analysis

Static Analysis Dynamic Analysis
Eksekusi kode Tidak Ya
Input Hanya source code Build + test inputs
Hasil Bisa ada false positives Real problems (no false positives)
Kelemahan Subject to false negatives
Contoh SonarQube, code review Code coverage, profiling, testing

Software Reliability

Definisi: Probabilitas software beroperasi bebas-failure dalam periode tertentu di kondisi tertentu.

Metrik:

  • MTBF (Mean Time Between Failures) = MTTF + MTTR
  • MTTF = Mean Time to Failure
  • MTTR = Mean Time to Repair

Fault Tolerance Techniques

  • Redundancy — duplikasi sistem/komponen (contoh: load balancer)
  • Graceful Degradation — sistem tetap jalan di kapasitas tereduksi saat komponen gagal
  • Recovery Mechanisms:
    • Checkpointing & Rollback — simpan state secara berkala
    • Failover Systems — otomatis switch ke backup
    • Self-Healing — deteksi dan koreksi error tanpa intervensi manusia

Reliability Patterns

  • Circuit Breaker — cegah percobaan berulang ke service yang gagal
  • Bulkhead — isolasi komponen agar kegagalan satu tidak cascading ke yang lain
  • Event-Driven Architecture — decoupled services untuk high availability

Performance Testing

Jenis Tujuan
Performance Regression Ukur & bandingkan execution time antar versi
Profiling Temukan bottleneck CPU/memory (flame graphs)
Load Testing (JMeter) Simulasi beban user (throughput, error rate)
Stress Testing Test di luar batas normal → fokus robustness & error handling
Soak Testing Load signifikan dalam durasi panjang → deteksi memory leak

Part 3 — DevOps, SCM, and Deployment (20%)

Software Configuration Management (SCM)

Definisi: Disiplin yang mengontrol dan melacak perubahan software untuk menjaga integritas sepanjang SDLC.

Mengapa penting:

  • Control of Change — cegah error dan inkonsistensi
  • Team Collaboration — koordinasi tim besar
  • Quality Assurance — jaga integritas software
  • Compliance & Traceability — audit trail untuk perubahan

Software Configuration Items (SCI): source code, design docs, user manuals, test scripts, build scripts, requirements specs.

Baseline — versi SCI yang sudah disetujui secara formal; hanya bisa diubah via formal change control.

  • Functional Baseline — dari requirements analysis
  • Design Baseline — setelah design phase
  • Product Baseline — produk final

DevOps

Definisi: Praktik, prinsip, dan budaya yang menyatukan Dev dan Ops untuk deliver software berkualitas tinggi dengan cepat melalui kolaborasi, otomasi, dan feedback loop.

Prinsip:

  • Automation — otomasi repetitive task
  • CI (Continuous Integration) — merge dan test kode sering ke shared repo (tools: Jenkins, GitHub Actions)
  • CD (Continuous Delivery) — kode selalu siap di-deploy ke production

DevOps Toolchain

Kategori Tools
Planning Jira
Version Control Git, GitLab
Build & CI/CD Jenkins, Travis CI, GoCD, Spinnaker
Containerization Docker
Orchestration Kubernetes
IaC Terraform, Ansible
Monitoring Prometheus, Grafana
Logging ELK Stack (Elasticsearch, Logstash, Kibana)

Software Deployment Strategies

Strategi Deskripsi
Basic Update semua node sekaligus
Rolling Update subset instance bertahap
Multi-Service Update semua node dengan multiple service serentak
Blue/Green Deploy 2 versi bersamaan, switch traffic
Canary Rilis bertahap ke sebagian kecil user
A/B Testing Route subset kecil user ke fitur baru untuk analisis
Shadow Fork request ke versi baru secara paralel (user tidak sadar)

Part 4 — Reliability, Security, and Maintenance (20%)

Tipe Software Maintenance

Tipe Definisi Contoh
Corrective Fix bug setelah deployment Koreksi crash di kondisi tertentu
Adaptive Sesuaikan dengan environment baru Update app untuk iOS versi baru
Perfective Tingkatkan/refinement fitur existing Tambah filter pencarian baru
Preventive Cegah masalah masa depan, kurangi technical debt Refactoring kode

Tantangan Maintenance

  • High Complexity — legacy code dan dependencies
  • Inadequate Documentation — dokumentasi kurang lengkap
  • Resource Constraints — waktu, budget, tenaga terbatas
  • Technical Debt — shortcut yang menumpuk
  • Changing Requirements — perubahan bisnis/regulasi

Security Vulnerabilities & Threats

  • Sniffing/Eavesdropping — mendengarkan traffic jaringan
  • Spoofing — menyamar sebagai entitas lain (IP, email, DNS)
  • Injection Attacks — injeksi kode via input fields
  • Broken Authentication — autentikasi lemah
  • XSS — inject script ke halaman web
  • Insecure Deserialization — exploitasi data serial
  • Insider Threats — user authorized yang menyebabkan harm
  • APTs — serangan terus-menerus menarget data sensitif

The "Big Three" Network Security Concepts

  • Authentication — memastikan identitas pihak yang berkomunikasi
  • Authorization — user punya privilege untuk operasi tertentu
  • Confidentiality — komunikasi tanpa diketahui/diubah pihak lain

Security Testing

  • Static Analysis — analisis kode tanpa eksekusi (SonarQube)
  • Dynamic Analysis — test aplikasi berjalan (Burp Suite)
  • Penetration Testing — simulasi serangan nyata
  • Fuzz Testing — kirim data random untuk temukan loophole

Part 5 — Metrics, Ethics, and Improvement Strategy (15%)

Software Process Improvement (SPI)

Definisi: Menilai dan meningkatkan proses pengembangan software untuk meningkatkan kualitas, produktivitas, dan prediktabilitas.

Manfaat: Peningkatan kualitas, efisiensi biaya, reduksi risiko, kepuasan customer, keunggulan kompetitif.


Capability Maturity Model (CMM)

Framework yang mendeskripsikan elemen-elemen proses software yang efektif.

Level Nama Deskripsi
1 Initial Proses tidak terprediksi, reaktif
2 Repeatable Manajemen proyek dasar untuk track cost/schedule
3 Defined Proses terdokumentasi dan terstandarisasi
4 Managed Pengukuran detail dikumpulkan dan dikontrol
5 Optimizing Peningkatan berkelanjutan via feedback kuantitatif

Model SPI Lainnya

  • ISO/IEC 15504 (SPICE) — standar internasional penilaian proses software; 6 level: Incomplete → Performed → Managed → Established → Predictable → Optimizing
  • Six Sigma — pendekatan data-driven eliminasi defect; metodologi DMAIC (Define, Measure, Analyze, Improve, Control)

Strategi Peningkatan Proses

  1. Process Assessment — evaluasi proses saat ini (audit, survey)
  2. Process Modeling & Analysis — visualisasi proses, temukan bottleneck (flowchart, UML)
  3. Change Management — kelola aspek manusiawi perubahan (komunikasi, training, involvement)
  4. Continuous Improvement:
    • Kaizen — perubahan kecil incremental berkelanjutan
    • PDCA Cycle — Plan → Do → Check → Act

Intellectual Property Rights:

  • Copyright — melindungi kode dan dokumentasi sebagai karya original
  • Patent — melindungi invensi baru yang unik (contoh: algoritma page-rank Google)
  • Trademark — melindungi nama, simbol, atau logo (contoh: logo Windows)

Software Licenses:

  • Proprietary — batasi modifikasi dan redistribusi
  • Open Source — izinkan akses, modifikasi, dan berbagi kode (MIT, GPL)
  • Freeware/Shareware — gratis atau trial terbatas

Privacy Laws:

  • GDPR — regulasi Eropa untuk privasi data; right to be forgotten, consent
  • CCPA — regulasi California untuk data collection dan sharing

Prinsip dasar: Data Minimization, Purpose Limitation, Data Security


Etika Profesional Software

Menurut Harvard's Human Flourishing Program, flourishing mencakup: happiness & life satisfaction, mental & physical health, meaning & purpose, character & virtue, close social relationships.

Tanggung jawab software profesional:

  • Kepada User — pastikan software aman, secure, dan accessible
  • Kepada Masyarakat — pertimbangkan dampak lingkungan dan kesejahteraan sosial