Selasa, 16 Desember 2014

Pengertian Software Architecture

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
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxk7J8fhca9CxE6HDfhS-gyDbWu8s9xcyZAsp83EeS72ioUsWZA3LTvKstltaeL1I35IU4lL4qZhNnNHMjbfRTIn6A6vjXfRhJrNKzSRXFWIMS6RAul-bpjiaT29XKwYJ-R19N4MjbIgb8/s400/presentation.JPG

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


Sumber : http://zydney09.blogspot.com/2010/10/arsitektur-perangkat-lunak-software.html

0 komentar:

Posting Komentar