1 of 32

Pengantar�Software�Engineering

Zain Fathoni

Senior Software Engineer @ Ninja Van

2 of 32

Perkenalan

  • Zain Fathoni
  • S1 Teknik Informatika ITB
  • Pengalaman kerja:

2014

QUN

Programmer

2015 - 2017

Software Developer,�Software Development Manager

2017

Software Engineer

2018 - sekarang

Senior Software Engineer 2

3 of 32

Aktivitas di luar pekerjaan

KawalCOVID19

Tech Lead

ReactJS Indonesia

Co-organizer

Frontend Indonesia

Co-organizer

Konferensi & Meetup

Pembicara

Blog

Penulis

Pejuang Kode

Pendiri

Informasi selengkapnya dapat dibuka di https://zainfathoni.com

4 of 32

Agenda Pembahasan

  1. Apa saja yang dilakukan dan dibutuhkan dalam Software Engineering?
  2. Contoh permasalahan dalam dunia Software Engineering
  3. Tahapan-tahapan dalam pengembangan sebuah software

5 of 32

Apa saja yang dilakukan dan dibutuhkan dalam Software Engineering?

6 of 32

Apa saja yang dilakukan dalam�Software Engineering?

Software Engineering = Rekayasa Perangkat Lunak

Tujuan → Merekayasa perangkat lunak untuk menyelesaikan permasalahan manusia

Bentuk rekayasanya mencakup–namun tidak terbatas pada–hal-hal berikut ini:

  • Perencanaan perangkat lunak
  • Analisis kebutuhan perangkat lunak
  • Perancangan perangkat lunak
  • Pengembangan perangkat lunak
  • Pengujian perangkat lunak
  • Penyebaran perangkat lunak
  • Pemeliharaan perangkat lunak

7 of 32

Apa saja yang dibutuhkan dalam�Software Engineering?

Berangkat dari aktivitas tersebut, kita bisa turunkan berbagai keahlian yang dibutuhkan:

Perencanaan

Pengambilan keputusan, alokasi sumber daya, penjadwalan, dsb.

Analisis kebutuhan

Komunikasi, analisis permasalahan, berempati terhadap pengguna, dsb.

Perancangan

Merancang arsitektur, membuat diagram, merancang tampilan, dsb.

Pengembangan

Pemrograman, algoritma, struktur data, logika, basis data, internet, dsb.

Pengujian

Pengujian manual, menulis skrip untuk otomasi pengujian, dsb.

Penyebaran

Arsitektur & jaringan komputer, continuous integration & delivery, dsb.

Pemeliharaan

Debugging, version control, strategi perbaikan, memastikan uptime, dsb.

8 of 32

Perencanaan

Kebutuhan:

  • Pengambilan keputusan
  • Alokasi sumber daya
  • Perkiraan harga
  • Penjadwalan proyek
  • Pengadaan
  • dsb.

Pihak yang terlibat:

  • Project/Product Manager
  • Engineering Manager
  • Scrum Master

9 of 32

Analisis Kebutuhan

Kebutuhan:

  • Komunikasi dengan pemangku kepentingan (stakeholders)
  • Komunikasi dengan para ahli (subject matter expert)
  • Analisis permasalahan
  • Merumuskan solusi
  • Berempati terhadap calon pengguna
  • dsb.

Pihak yang terlibat:

  • Project/Product Manager
  • User Experience (UX) Researcher
  • User Interface (UI) Designer
  • Product Owner

10 of 32

Perancangan

Kebutuhan:

  • Merancang arsitektur
  • Membuat diagram
    • Unified Modeling Language
  • Merancang tampilan
    • Mock-ups (low fidelity)
    • UI Design (high fidelity)
  • dsb.

Pihak yang terlibat:

  • Project/Product Manager
  • User Experience (UX) Researcher
  • User Interface (UI) Designer
  • Engineering Manager
  • Software Engineer

11 of 32

Pengembangan

Kebutuhan:

  • Pemrograman
  • Algoritma
  • Struktur data
  • Logika
  • Basis data
  • Frontend
  • dsb.

Pihak yang terlibat:

  • Engineering Manager
  • Software Engineer
  • Scrum Master

12 of 32

Pengujian

Kebutuhan:

  • Pengujian manual
  • Menulis skrip untuk otomasi pengujian
  • dsb.

Pihak yang terlibat:

  • Software Engineer
  • Manual Tester
  • Quality Assurance Engineer

13 of 32

Penyebaran

Kebutuhan:

  • Arsitektur komputer
  • Jaringan komputer
  • Cara kerja internet
  • Continuous Integration
  • Continuous Delivery
  • Keamanan informasi
  • dsb.

Pihak yang terlibat:

  • Software Engineer
  • System Engineer
  • DevSecOps (Development-Security-Operations)

14 of 32

Pemeliharaan

Kebutuhan:

  • Kemampuan debugging
  • Version control (Git, Mercurial, SVN, dll.)
  • Strategi perbaikan
  • Memastikan uptime
  • dsb.

Pihak yang terlibat:

  • Software Engineer
  • System Engineer
  • DevSecOps (Development-Security-Operations)
  • Quality Assurance Engineer

15 of 32

Contoh permasalahan dalam dunia�Software Engineering

16 of 32

Permasalahan Pengalaman Pengguna�(User Experience)

17 of 32

Permasalahan Tampilan

(User Interface)

Tampilan website tidak nyaman dibaca/digunakan di perangkat mobile (contoh)

Solusi: Responsive Web Design

18 of 32

Permasalahan Skalabilitas

Sering dengar suatu website/aplikasi down atau tidak bisa diakses akibat terlalu banyak pengguna dalam waktu yang bersamaan?

Pada umumnya ini akibat server yang tidak mampu melayani pengguna yang terlalu banyak.

19 of 32

Permasalahan Skalabilitas

Solusi: pasang banyak server di belakang layar

20 of 32

Permasalahan Pemeliharaan

Munculnya regresi/bug di production.

Investigasi akar masalah bisa dilakukan dengan memanfaatkan git bisect.

21 of 32

Tahapan-tahapan dalam pengembangan sebuah software

22 of 32

Siklus Hidup Pengembangan Perangkat Lunak

(Software Development

Life Cycle)

23 of 32

1. Perencanaan

24 of 32

2. Analisis Kebutuhan

25 of 32

3. Perancangan

26 of 32

4. Pengembangan

27 of 32

Agile vs Waterfall

28 of 32

5. Pengujian

29 of 32

6. Penyebaran

30 of 32

7. Pemeliharaan

31 of 32

Tanya Jawab

Via Zoom Chat

(Raise Hand)

32 of 32

Terima Kasih