Software Architecture

Andri N. R
Dekowarehouse Project
2 min readMay 1, 2018
https://softwarearchitecturefordevelopers.com/img/dwx17-software-architecture-for-developers-sketchnote.png

Software architecture adalah struktur fundamental dari sebuah sistem software. Software architecture secara umum menjelaskan struktur sistem yang terdiri dari komponen-komponen, atribut dari komponen tersebut dan bagaimana hubungan antar komponen.

Komponen itu tersendiri dapat berbentuk module, database, middleware atau class. Atribut dari komponen maksudnya adalah fungsi dan ciri dari komponen tersebut. Dan hubungan antar komponen adalah mekanisme komunikasi antar komponen yang ada.

Dalam mendesain sebuah software architecture, maka harus dipertimbangkan segala aspek dari software yang akan kita bangun tersebut, seperti contohnya performance, security, organisasi dari sistem tersebut, jika software kita ternyata membutuhkan external dependencies, bagaimana guideline dan implementasinya, dan masih banyak lagi hal lainnya.

Software architecture adalah base dari mendevelop sebuah software. Sehingga ketika kita mengubah satu aspek saja dari arsitektur ini, hal itu dapat memberikan dampak yang besar untuk softwarenya.

Kenapa software architecture sangat penting?

ada 3 poin penting yaitu :

  1. Menjadi basis dari komunikasi antar stakeholder. Software architecture adalah rancangan dari sistem dan hal tersebut digunakan untuk memberikan pemahaman yang sama untuk setiap stakeholder yang terlibat. Hal ini mempermudah untuk memahami seluruh sistem dan proses pengambilan keputusan menjadi lebih mudah.
  2. Keputusan pertama. Banyak keputusan-keputusan dasar dibuat dalam tahap ini sehingga akan mempengaruhi pengembangan software kedepan nya. Dan semakin akhir akan semakin sulit untuk mengubahnya.
  3. Penggunaan arsitektur. Software architecture mendefinisikan bagaimana model sebuah software dan fungsi dari software tersebut. Hal ini membuat sebuah model dapat digunakan kembali untuk software lainnya, code juga dapat digunakan kembali, begitu juga requirement dari sistem tersebut

Intinya adalah, sebuah arsitektur akan mendefinisikan masalah yang mungkin akan terjadi ketika implementasi. Ia juga menunjukan struktur yang mempermudah pengambilan keputusan ataupun memanage komponen-komponen yang ada. Serta dapat mempermudah kita untuk memperkirakan waktu dan cost dari sebuah project.

Lalu bagaimana sebuah desain software architecture yang baik?

Sebenarnya tidak ada jawaban yang paling benar ataupun salah dari pertanyaan ini. Secara umum, software architecture yang baik adalah yang dapat meminimalisir cost dari sebuah produk.

Beberapa prinsip yang dapat diikuti yaitu:

  • Software architecture tersebut kuat dan mudah di mantain ketika ditemukan bugs
  • Flexible dan Extendible, dapat digunakan dalam jangka waktu yang lama.
  • Sesuai dengan requirement yang dibutuhkan
  • Memiliki scalability yang tinggi sehingga memiliki kapasitas yang tinggi juga
  • Tidak ada duplikasi kode didalamnya
  • Mudah untuk di refactor
  • Respon positif untuk perubahan, ketika ada penambahan fitur, seharusnya performance tidak turun.

Jadi indikasi suatu software memiliki arsitektur yang baik adalah

  • User friendly dalam pemakaiannya
  • Fleksibel, pengguna menyesuaikannya dengan mudah
  • Skalabel, mendukung semua jenis pertumbuhan (misal user lebih banyak)
  • Kinerja tinggi dan bekerja cepat
  • Mudah dimodifikasi dan ditambah fungsi
  • Kuat dan dapat diandalkan

Terima kasih.

Reference :

https://drive.google.com/viewerng/viewer?url=http://lecturer.ukdw.ac.id/othie/Arsitektur_model.pdf

--

--