Arsitektur perangkat lunak merupakan struktur sebuah sistem, yang meliputi elemen
perangkat lunak, sifat (property) yang tampak dari elemen itu, serta relasi di antara elemen-
elemen tersebut (Bass et al dalam Krafzig et al, 2004). Sifat yang tampak misalnya fungsi apa
saja yang disediakan oleh elemen, bagaimana kinerjanya, bagaimana penanganan
kesalahannya, sumber daya apa saja yang digunakan.
Menurut Erl (2009), ada tiga elemen yang saling berkaitan erat ketika berbicara
tentang arsitektur perangkat lunak. Pertama adalah arsitektur teknologi, yaitu desain fisik dari
suatu perangkat lunak. Kedua adalah infrastruktur teknologi, yaitu lingkungan pendukung
yang termasuk di dalamnya perangkat keras dan perangkat lunak. Ketiga adalah perangkat
lunak itu sendiri. Berikut adalah diagram sederhana yang memperlihatkan keterkaitan ketiga
elemen tersebut.
Istilah “arsitektur” berasal dari istilah yang digunakan pada bidang konstruksi bangunan. Sebuah
bangunan memiliki desain fisik yang digambarkan dalam cetak biru arsitektur (architecture
blueprint) atau disebut juga spesifikasi arsitektur. Suatu bangunan berada dalam lingkungan
tertentu. Lingkungan ini bisa memberikan dukungan ataupun tidak terhadap bangunan tersebut.
Sebagai contoh, bangunan perumahan yang dididukung oleh sarana transportasi, pembangkit tenaga
listrik, dan sistem pembuangan limbah. Lingkungan pendukung inilah yang disebut infrastruktur.
Agar bangunan dapat memanfaatkan infrastruktur tersebut, desain fisiknya harus mengintegrasikan
berbagai infrasturktur tadi ke dalam arsitekturnya. Oleh karena itu, spesifikasi arsitektur sebuah
bangunan haruslah memperhatikan infrastruktur di sekitarnya. Begitu juga dengan perangkat lunak,
rancangan arsitekturnya harus memperhatikan infrastruktur di mana perangkat lunak ini akan
ditempatkan.
2.2 Layering
Software layer merupakan salah konsep utama yang harus diketahui, dikenali, dimengerti dan
diimplementasikan pada saat akan membangun sebuah perangkat lunak (software). Software
Layer terbagi menjadi empat lapisan, yaitu :
1. A Quality Focus
2. Process
3. Methods
4. Tools
Pada saat kita membangun sebuah aplikasi, Fokus pertama kali yang dibuat adalah Kita akan
membangun kualitas yang seperti apa,siapa sasaran kita, aplikasi yang dibangun siapa
pengguna dan lai-lain, Oleh karena itu FOKUS KUALITAS ini programmer akan
mengetahui level sebuah aplikasi yang dibangun. Misalnya akan dibangun APLIKASI
PEMUTAR MUSIC. Dengan berpatokan pada FOKUS KUALITAS maka Programmer
akan mengetahui sampai dimana aplikasi yang akan dibangun. File Music bisa beraneka
ragam mulai dari MP3, MP2, AUDIO TRACK, WAV, MDI dan lain-lain. Dengan
mengetahui, Aplikasi ini dibuat untuk File music apa,
maka programmer akan mengetahui segala hal yang berhubungan dengan
program yang dibuat. Apakah aplikasi yang dibuat akan mendukung untuk MP3, MP2,
WAV, OGG, TRACK atau yang lainnya. Jika dilihat dari segi Interaksi Manusia dan
Komputer, maka dengan FOKUS KUALITAS programmer akan mengetahui bentuk dari
aplikasi yang akan bangun.
2.2.2 PROCESS
Process atau Proses adalah merupakan lapisan kedua dalam SOFTWARE LAYER, Lapisan
ini terletak setelah QUALITY FOCUS, hal ini disebabkan setelah diketahui Fokus Kualitas
dari Perangkat Lunak yang akan dibangun, maka pemrogram harus mengetahui bagaimana
proses yang harus dijalani oleh pemrograman sehubungan dengan Fokus Kualitas dari
Perangkat Lunak yang diharapkan, Proses-proses ini dilakukan terurut dan tepat, agar tidak
terjadi kesalahan pada saat sebuah aplikasi di Launching. Proses-proses yang ada akan
dikerjakan sesuai dengan Kunci Proses Area yang ada (KPA/Key Process Area).
2.2.3 METHODS
Methods atau Metode merupakan salah satu hal yang penting dalam Pembuatan Perangkat
Lunak. Dengan metode, pembuat program akan melakukan langkah-langkah dan tindakan-
tindakan yang sesuai dengan metode yang ada. Metode yang digunakan harus disesuaikan
dengan perangkat lunak yang dibangun, dan tujuan dari pembuatan perangkat lunak.
2.2.4 TOOLS
Tools merupakan alat bantu yang dapat digunakan oleh programmer dalam menyelesaikan
proyek yang ada. Mulai dari tools animasi tools multimedia, tools normalisasi dan lain-lain.
Misalnya : X3D, power designer, paintshop pro, etc.
Ragam Arsitektur perangkat lunak terdiri dari : Data Centered Architectures, Data Flow
Architectures, Call and Return Architectures, Layered architectures, Event-based, Implicit
Invocation, Repositories, Table Driven Interpreters, Heterogeneous Architectures.
Arsitektur ini memiliki tujuan untuk mencapai kualitas integrability data. Istilah ini mengacu
ke sistem di mana akses dan update dari menyimpan data diakses secara luas adalah tujuan
utama mereka. Pada dasarnya, itu tidak lebih dari menyimpan data terpusat yang
berkomunikasi dengan sejumlah klien Penting untuk gaya ini adalah tiga protokol:
komunikasi, definisi data dan protokol data manipulasi. Sarana komunikasi membedakan dua
subtipe: repositori dan papan tulis
- Repository: klien mengirimkan permintaan ke sistem untuk melakukan tindakan yang
diperlukan (misalnya memasukkan data)
- Papan tulis: sistem mengirimkan pemberitahuan dan data untuk pelanggan ketika data
perubahan bunga, dan dengan demikian aktif.
Salah satu contoh yang paling terkenal dari Data Centered Architectures, adalah arsitektur
database. Ada skema database yang umum (meta struktur-yaitu dari repositori) - dibuat
dengan data protokol definisi Misalnya dalam RDBMS satu set tabel yang berkaitan dengan
bidang, tipe data, kunci, dll.
Klien menggunakan protokol data manipulasi untuk bekerja dengan data. Misalnya SQL
untuk memasukkan, memilih, deleteing data, dll. Tergantung di mana klien terletak protokol
komunikasi mungkin :
§ Sebuah komunikasi batin-proces
§ Komunikasi antar komponen di mesin yang sama
§ Komunikasi melalui jaringan, misalnya LAN, Internet, dll
Rangkaian ini adalah enkapsulasi suatu yang menyembunyikan rahasia internal dari
lingkungannya. Akses ke objek hanya diperbolehkan melalui operasi yang disediakan,
biasanya dikenal sebagai metode, yang dibatasi bentuk prosedur panggilan. enkapsulasi ini
mempromosikan penggunaan kembali dan modifiability, terutama karena mempromosikan
pemisahan keprihatinan:
Ø Pengguna jasa tidak perlu tahu, dan tidak harus tahu, apa-apa tentang bagaimana layanan
yang diimplementasikan.
Ø Sistem berlapis adalah orang-orang di mana komponen ditugaskan ke lapisan
untuk
mengontrol interaksi intercomponent. Dalam versi murni arsitektur ini, setiap
tingkat
hanya berkomunikasi dengan tetangga terde
Tujuannya adalah untuk mencapai kualitas modifiability dan, biasanya, mudah dibawa.
Lapisan terendah menyediakan beberapa fungsi inti, seperti perangkat keras, atau kernel
sistem operasi. Setiap lapisan berturut-turut dibangun di atas pendahulunya,
menyembunyikan lapisan bawah dan menyediakan beberapa layanan yang lapisan atas
memanfaatkan.
Gambar 5.4
Sebaliknya, dalam sistem yang didasarkan pada pemanggilan eksplisit, apabila identitas dari
yang memberikan beberapa fungsi sistem berubah, semua modul lain yang impor bahwa
modul juga harus diubah.
Kelemahan utama dari doa implisit adalah bahwa komponen melepaskan kontrol atas
perhitungan yang dilakukan oleh sistem. Ketika komponen mengumumkan acara, itu tidak
tahu apa yang akan komponen lainnya menanggapinya. Lebih buruk lagi, bahkan jika tidak
tahu apa komponen-komponen lainnya tertarik pada kegiatan yang mengumumkan, tidak bisa
mengandalkan urutan di mana mereka dipanggil. Juga bisa tahu ketika mereka selesai.
Masalah lain keprihatinan pertukaran data. Kadang-kadang data dapat lulus dengan acara
tersebut. Tapi dalam situasi lain sistem acara harus bergantung pada repositori bersama untuk
interaksi. Dalam kasus ini kinerja global dan pengelolaan sumber daya dapat menjadi isu
serius. Akhirnya, penalaran tentang kebenaran dapat bermasalah, karena pengertian prosedur
yang mengumumkan acara akan tergantung pada konteks binding di mana ia dipanggil. Hal
ini berbeda dengan tradisional penalaran tentang panggilan prosedur, yang hanya perlu
mempertimbangkan Prosedur pra-dan pasca-kondisi ketika penalaran tentang doa itu.
2.3.6 Repositories
Dalam gaya repositori yang berbeda ada dua macam komponen cukup: pusat struktur data
yang mewakili negara saat ini, dan sebuah koleksi independen komponen yang beroperasi
pada menyimpan data pusat. Interaksi antara repositori dan komponen eksternal dapat
bervariasi secara signifikan antara sistem.
Pilihan disiplin kontrol mengarah ke halaman utama. Jika jenis transaksi dalam aliran input
transaksi memicu proses pemilihan mengeksekusi, repositori bisa menjadi database
tradisional. Jika keadaan saat ini pusat struktur data merupakan pemicu utama memilih proses
untuk mengeksekusi, yang repositori bisa berupa papan tulis.
Gambar 7.1
Gambar diatas mengilustrasikan pandangan sederhana dari sebuah arsitektur papan tulis.
Papan Model biasanya disajikan dengan tiga bagian utama:
Ø Sumber pengetahuan (The knowledge sour ces) : terpisah, paket independen dari aplikasi
tergantung pengetahuan. Interaksi antara sumber-sumber pengetahuan yang diperlukan
tempat hanya melalui papan tulis.
Ø Papan tulis struktur data (The blackboard data structure) : pemecahan masalah negara
data, terorganisir menjadi tergantung aplikasi hirarki. Pengetahuan sumber melakukan
perubahan papan tulis yang mengarah bertahap untuk solusi untuk masalah tersebut.
Ø Pengendalian (Control) : didorong sepenuhnya oleh negara dari papan tulis. sumber
Pengetahuan merespon oportunis ketika perubahan di papan tulis membuat mereka berlaku.
Dalam diagram tidak ada representasi eksplisit control komponen. Doa dari sumber
pengetahuan dipicu oleh keadaan papan tulis. Lokus aktual kontrol, dan karenanya
pelaksanaannya, dapat dalam sumber-sumber pengetahuan, papan tulis, modul terpisah, atau
beberapa kombinasi ini.
Blackboard sistem secara tradisional telah digunakan untuk aplikasi yang memerlukan
kompleks interpretasi dari pemrosesan sinyal, seperti berbicara dan pola pengakuan.
Beberapa di antaranya yang disurvei oleh Nii. Mereka juga muncul dalam jenis lain dari
sistem yang melibatkan berbagi akses ke data dengan longgar agen ditambah.
Ada, tentu saja, contoh lain dari sistem repositori. Batch- sistem sekuensial dengan database
global merupakan kasus khusus. Pemrograman lingkungan sering diselenggarakan sebagai
kumpulan alat bersama-sama dengan berbagi repositori program dan fragmen program.
Bahkan aplikasi yang telah secara tradisional dipandang sebagai arsitektur jaringan pipa,
mungkin lebih akurat diartikan sebagai sistem repositori. Sebagai contoh, seperti yang akan
kita lihat nanti, sementara arsitektur compiler secara tradisional telah disajikan sebagai pipa,
yang "Fase" dari kompiler modern yang paling beroperasi pada dasar informasi bersama
(Simbol tabel, pohon sintaks abstrak, dll).
2.3.7 Table Driven Interpreters
Dalam sebuah organisasi juru mesin virtual diproduksi dalam perangkat lunak. Sebuah
penerjemah mencakup pseudo-program yang diinterpretasikan dan penafsiran mesin itu
sendiri. Pseudo-program termasuk program itu sendiri dan penafsir analog negara
pelaksanaannya (catatan aktivasi). Pada mesin interpretasi meliputi definisi penafsir dan
keadaan saat pelaksanaannya. Jadi penerjemah umumnya memiliki empat komponen: mesin
interpretasi untuk melakukan pekerjaan itu, sebuah memori yang berisi pseudo-code untuk
ditafsirkan, sebuah representasi dari negara control interpretasi mesin, dan sebuah
representasi dari keadaan saat ini program yang ditinjau.
Gambar 8.1
Juru biasanya digunakan untuk membangun mesin virtual yang menutup kesenjangan antara
mesin komputasi diharapkan oleh semantik program dan mesin komputasi yang tersedia di
hardware. Kami kadang-kadang berbicara tentang bahasa pemrograman menyediakan,
katakanlah, "Pascal mesin virtual."
Arsitektur berfungsi sebagai ‘Blue Print’ untuk suatu sistem. Ini memberikan abstraksi untuk
mengelola kompleksitas sistem dan membangun mekanisme komunikasi dan koordinasi antar
komponen. Ini mendefinisikan solusi terstruktur untuk memenuhi semua persyaratan teknis
dan operasional, sambil mengoptimalkan atribut kualitas umum seperti kinerja dan
keamanan.
Lebih lagi, ini melibatkan serangkaian keputusan penting tentang organisasi yang terkait
dengan pengembangan perangkat lunak dan masing-masing keputusan ini dapat memiliki
dampak yang besar pada kualitas, pemeliharaan, kinerja, dan keberhasilan keseluruhan
produk akhir. Keputusan-keputusan ini terdiri dari :
Prinsip dari software design juga disebut sebagai teknik penyediaan, adalah ide utama
berdasarkan pada berbagai pendekatan dan konsep yang berbeda dari software design.
Macam enabling techniques sebagai berikut:
Abstraction
Coupling and cohesion
Decomposition and modularization
Encapsulation / information hiding
Separation of interface and implementation
Arsitektur berbasis acara relatif kompleks dan sulit untuk diterapkan karena sifatnya
yang didistribusikan secara tidak sinkron. Untuk menerapkan arsitektur ini, harus
mempertimbangkan ketersediaan proses jarak jauh, kurangnya respon, dan koneksi
ulang ketika terjadi kegagalan. Salah satu kesulitan penerapan arsitektur ini adalah
penciptaan awal arsitektur, pemeliharaan, dan pengelolaan komponen.
3. Microkernel Architecture
Arsitektur microkernel (kadang disebut sebagai arsitektur plug-in) adalah pola untuk
menerapkan aplikasi berbasis produk yang mana dikemas dan tersedia untuk diunduh
dalam versi produk pihak ketiga. Arsitektur microkernel terdiri dari dua jenis
komponen arsitektur, yaitu sistem inti dan plug-in module. Sistem inti dari pola
arsitektur microkernel hanya berisi fungsionalitas minimal yang diperlukan untuk
membuat sistem operasional.
Modul plug-in adalah komponen independen yang berisi pemrosesan khusus, fitur
tambahan dan kode khusus yang diperuntukkan untuk meningkatkan sistem inti. Anda
dapat merancang plug-in yang independen, namun juga dapat berupa plug-in yang
membutuhkan plug-in lainnya. Dalam bentuk apa pun, komunikasi tiap plug-in harus
dibuat seminimal mungkin untuk menghindari masalah ketergantungan.
1. Transform Flow
Mengingat sistem model fundamental (level 0 data flow diagram), informasi harus
keluar dan masuk software dalam bentuk “external world”. Informasi masuk ke dalam
sistem melalui jalur yang mengubah data eksternal menjadi bentuk internal. Jalur ini
disebut incoming flow. Di kernel software, transaksi terjadi. Data yang masuk adalah
data melewati pusat transformasi dan mulai bergerak di sepanjang jalan yang
sekarang mengarah “keluar” software. Ini disebut outgoing flow. Secara keseluruhan
aliran data terjadi secara berurutan dan mengikuti satu, atau hanya beberapa jalur
“straight line”. Ketika segmen diagram aliran data menunjukkan karakteristik ini,
transform flow pun terjadi.
2. Transaction Flow
Aliran informasi data sering kali dikarakterisasikan oleh item data single, yang
disebut transaction, yang memicu aliran data lain di sepanjang satu jalan dari banyak
jalan.