DESIGN CONCEPT
Desain adalah langkah pertama dalam fase pengembangan bagi setiap produk atau sistem yang direkayasa. Desain dapat didefinisikan sebagai proses aplikasi berbagai teknik dan prinsip bagi tujuan pendefinisian suatu perangkat, suatu proses atau sistem dalam detail yang memadai untuk memungkinkan realisasi fisiknya.Tujuan desainer adalah untuk menghasilkan suatu model atau representasi dari entitas yang kemudian akan dibangun.
Desain Perangkat Lunak
Desain perangkat lunak berada pada inti teknik dari proses rekayasa perangkat lunak dan diaplikasikan tanpa memperhatikan model proses perangkat lunak yang digunakan. Desain sangat penting karena dapat menentukan kualitas dari suatu perangkat lunak. Dengan menggunakan satu dari sejumlah metode desain, langkah desain menghasilkan desain data, desain arsitektur, desain interface, dan desain procedural
- Desain Data : Translasi ERD & Data Dictionary ke dalam konteks lingkungan implementasi.
- Desain Arsitektur : Rancang bangun dari PL, relasi dan posisi antar bagian utama dari PL dengan memanfaatkan “design patterns”.
- Desain Interface : Merancang metode interaksi antar komponen PL dan terhadap pengguna.
- Desain Komponen : Desain detail masing-masing prosedur di dalam komponen.
pedoman bagi evaluasi suatu desain yang baik
- desain dapat mengimplementasikan keseluruhan persyaratan eksplisit yang dibebankan dalam model analisis juga mengakomodasikan semua persyaratan implisit yang diinginkan pelanggan.
- Desain dapat menjadi panduan yang dapat dibaca, dapat dipahami bagi mereka yang menghasilkan kode dan yang menguji serta memelihara perangkat lunak.
- Desain dapat memberikan suatu gambaran lengkap mengenai perangkat lunak, yang menekankan data, dan domain perilaku dari perspektif implementasi.
Kriteria teknis desain yang baik
- Desain dapat memperlihatkan suatu organisasi yang dengan baik menggunakan kontrol di antara elemen-elemen perangkat lunak.
- Desain besifat modular yaitu perangkat lunak harus dipartisi secara logika ke dalam elemen-elemen yang melakukan fungsi dan subfungsi khusus.
- Desain harus berisi data dan abstraksi prosedural.
- Desain membawa ke arah modul (misal subrutin atau prosedur) yang memperlihatkan karakteristik fungsional independent.
- Desain mengarah kepada interface yang mengurangi kompleksitas hubungan antara modul-modul dan dengan lingkunga eksternal.
Desain harus didapat dengan menggunakan metode berulang yang dikendalikan oleh informasi yang diperoleh selama analisis persyaratan perangkat lunak.
Prinsip desain
- Proses desain tidak boleh menderita karena “tunnel vision”
- Desain harus dapat ditelusuri sampai model analisis.
- Desain tidak boleh berulang.
- Desain harus “meminimalkan kesenjangan intelektual” di antara perangkat lunak dan masalah yang ada di dunia nyata.
- Desain harus mengungkap keseragaman dan integrasi.
- Desain harus terstruktur untuk mengakomodasi perubahan.
- Desain harus terstruktur untuk berdegradasi dengan baik, bahkan pada saat data dan event-event menyimpang, atau menghadapi kondisi operasi.
- Desain bukanlah pengkodean, dan pengkodean bukanlah desain.
- Desain harus dinilai kualitasnya pada saat desain dibuat, bukan setelah jadi.
- Desain harus dikaji untuk meminimalkan kesalahan-kesalahan konseptual (semantik).
Arsitektur perangkat lunak
adalah struktur sistem dari suatu program atau sistem komputer yang terdiri dari komponen-komponen perangkat lunak, ciri yang tampak secara eksternal dari komponen-komponen tersebut, serta hubungan antar komponen tersebut. Istilah ini juga merujuk pada dokumentasi arsitektur perangkat lunak suatu sistem.
Beberapa Jenis Software Architecture Pattern
- Layered Pattern
Pattern ini digunakan untuk menstruktur program yang dapat didekompos menjadi beberapa subtask. Setiap layer memberikan service kepada layer diatasnya. 4 layer yang umumnya ditemukan ada sebagai berikut :
- Presentation layer (UI layer)
- Application layer (Service layer)
- Business logic layer (Domain layer)
- Data access layer (Persistence layer)
- Client-Server Pattern
Pattern ini terdiri dari 2 komponen, yaitu satu Server dan Client yang lebih dari 1. Komponen server akan menyediakan berbagai macam service kepada komponen klien, dan komponen klien akan me-request service yang disediakan oleh komponen server, dan komponen server akan memberikan service yang relevan kepada komponen klien tersebut.
- Microservices Architecture Pattern
Pada microservices, pendekatannya berdasarkan service-service yang mempunyai fitur tertentu, lalu terkumpul membangun suatu sistem. Sistem yang terbangun dari kumpulan service-service ini dapat memanggil service yang menjalankan fitur tersendiri.
- Event-Driven Architecture (arsitektur berbasis acara)
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.
- 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..
- Space-Based Architecture (arsitektur berbasis ruang)
Pola arsitektur berbasis ruang (terkadang disebut sebagai cloud architecture pattern atau pola arsitektur awan) dirancang khusus untuk mengatasi dan memecahkan masalah skalabilitas yang ekstrem dan konkurensi. Pola ini juga berguna untuk aplikasi yang volume penggunanya tidak dapat diprediksi. Pola ini dinamakan berdasar pada konsep tuple space dimana menggunakan shared memory yang terdistribusi.
SUMBER :
1. https://rplhlw117a04.wordpress.com/2015/11/16/konsep-desain/
2. https://medium.com/ppl-teman-bisnis/arsitektur-perangkat-lunak-5d263cf732d6
3. https://socs.binus.ac.id/2020/04/02/software-engineering-design-engineering-architectural-design/