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:
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
Sumber : http://zydney09.blogspot.com/2010/10/arsitektur-perangkat-lunak-software.html

0 komentar:
Posting Komentar