Anda di halaman 1dari 5

PENGERTIAN ARSITEKTUR PERANGKAT LUNAK

Arsitektur perangkat lunak adalah sekumpulan pernyataan yang menggambarkan


komponen perangkat lunak dan fungsi-fungsi yang ada pada komponen tersebut. Ia
menggambarkan struktur teknis, batasan-batasan, ciri-ciri, serta antarmuka pada
komponen-komponen tersebut. Arsitektur merupakan rancangan fisik sistem dan
oleh karena itu membutuhkan rencana yang matang pada saat pembuatannya
(Krafzig et al, 2004).

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.

Hubungan arsitektur, infrastruktur, dan perangkat lunak

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
Arsitektur Perangkat Lunak (Software Architecture)
Iseng-iseng baca buku Microsoft Application Architecture Guide v2 dari Microsoft, ternyata ada yg menarik yg
ingin gw rangkum.

Pengertian Software Architecture


Adalah proses yg mendefinisikan solusi yg terstruktur yang memenuhi kebutuhan teknis dan operasional, disisi
lain mengoptimasi quality dari sebuah aplikasi yg meliputi: performance, security, dan manageability.

Mendengar kata aplikasi ada beberapa hal yg perlu dipertimbangkan:


 Bagaimana user menggunakan aplikasi tersebut?
 Bagaimana aplikasi dideploy di production dan me-manage nya?
 Bagaimana dengan atribut kualitas nya spt : performance, concurrency dan konfigurasi nya?
 Bagaimana aplikasi didisain supaya memiliki fleksibilitas dan easy-to-maintain?
 Apakah sistem bisa in-line dengan perkembangan teknologi yg akan datang?

Beberapa trend arsitektur software:


 Desain yg fleksibel, configurable, dan berorientasi pada experience user (user empowerment).
 Penggunaan teknologi terupdate (market maturity)
 Fleksibilitas dalam desain sehingga aplikasi tsb reuse dan mempermudah maintenance nya (flexible
design). Teknik SOA bisa dipergunakan untuk berhubungan (interoperability) dengan aplikasi lain.
 Mendesain aplikasi dengan memperhatikan trend masa depan (future trend)
Key Design Principle

 Separation of concern :memisahkan layer aplikasi dari sisi fungsionalitas nya agar fitur aplikasi tidak
overlap
 Single responsibility principle :setiap komponen hanya bertanggung jawab pada 1 fungsionalitas atau
gabungan fungsionalitas sejenis
 Principle of least knowledge :komponen /object tidak perlu mengetahui detail dari object lain.
 Don't repeat yourself :suatu fungsionalitas seharusnya hanya ada pada 1 object dan tidak dikomponen
lain, sehingga menghindari copy-paste.
 Minimize upfront design :hanya mendisain yg dibutuhkan saja

Design Practise
 Menjaga pattern desain konsisten setiap layer.
 Tidak melakukan duplikasi fungsionalitas dalam sebuah aplikasi
 "Prefer composition to inheritance" karena inheritance menimbulkan ketergantungan yg lebih kepada
parrent class, sehingga membuat reuse dari child class terbatas.
 Menerapkan style coding dan naming convention dalam development nya.
 Memaintain system QA selama proses development
 Memperhatikan sisi operation
Key Architecture Style

 Client/Server : memisahkan aplikasi menjadi 2 dimana client membuat request ke server. Dalam
banyak kasus sebuah server adalah database dengan fungsionalitas direpresentasikan dalam sebuah
storeprocedure. Yg termasuk style ini diantaranya:Client-Queue-Client System (komunikasi client berbasis
queuing server), Peer-to-Peer application, Application Server (server host and execute application)
 Component Base Architecture: memisahkan komponen aplikasi berdasarkan fungsionalitas yg
reusable. Pertimbangan yg mendasarinya: reusable, replaceable, not context spesific, extensible, encapsulated &
independent.
 Domain Driven Design: mendefinisikan object-2 bisnis ke dalam 1 domain bisnis.
 Layered Architecture: memecah concern ke dalam beberapa layer aplikasi. Pertimbangannya:
abstraction, encapsulation, clearly defined functional layer, high cohesion, reusable, loose coupling.
 Message Bus: sebuah style yg menyediakan aplikasi yg bisa berinteraksi dengan menggunakan satu
atau lebih chanel komunikasi
 N-Tier/3-Tier: memisahkan fungsional ke dlm aplikasi yg berlokasi di beberapa komputer.
 Object Oriented: arsitektur yg berorientasi object (memiliki karakteristik OOP)
 Service Oriented Architecture (SOA): arsitektur yg menempatkan fungsionalitas aplikasi kedalam
sebuah service.
Overview of Layered Application Umumnya penggunaan layering dalam suatu aplikasi meliputi 3 layer
utama: Presentation, Business & Data Layer.
Sedangkan untuk Services Layer ada diantara Business & Presentation Layer. Langkah -2 mendisain untuk
sistem berbasis layer ini adalah:
 Memilih strategi layer yg tepat / yg diperlukan
 Memutuskan cara mendistribusikan layer dan komponen
 Menentukan apakah akan memecah layer
 Merumuskan aturan interaksi masing-masing layer
 Mengidentifikasikan Crosscutting Concern (Fungsional umum) spt: logging, caching, validation,
authentication, & exception management
 Mendefinisikan interface masing-2 layer
 Memilih strategy deployment
 Memilih protokol komunikasi

Layer Presentation

UI Component: Elemen visual untuk mendisplay informasi ke user dan menerima input.
UI Process Component: Menyediakan code yg berisi behavior & struktur aplikasi yg penempatannya terpisah
dari UI.
Beberapa hal yg patut dipertimbangkan dalam mendesain layer ini:

 Communication
 Caching
 Composition
 Exception Management
 Navigation
 User Experience
 User Experience
 User Interface
 Validation
Layer Bisnis
Terdiri dari: 1. Application Facade : (Optional) Menyediakan interface ke komponen business logic, diantaranya
dengan menggabungkan beberapa operasi bisnis ke sebuah operation. Ini mengurangi dependency krn external
caller tidak perlu mengetahui detail komponen bisnis dan teknik interaksinya.
2. Business Logic Component : Fokus pada retrieving, processing, transformation & management data.
Termasuk dalam kategori ini adalah:


 Business Workflow Component
 Business Entity Component

Step untuk membuat business Layer adalah:


 Membuat high level design nya
 Design kompoenen bisnisnya
 Design komponen entiti bisnis
 Design workflow nya

Anda mungkin juga menyukai