Prodi Teknik Informatika
Universitas Langlangbuana
Perancangan
Perangkat Lunak
Mata Kuliah : Pengantar RPL
Iwan Abadi, S.Kom.,M.M.,M.T.
Dr. H. Awan Setiawan, S.kom.,M.T.
Overview of Design
What is it? Representasi rekayasa yang berarti dari
sesuatu yang akan dibangun
Who does it Software engineers dengan beragam keterampilan,
mulai dari ergonomi manusia hingga arsitektur
komputer
Why is it important? Tanpa desain, sistem mungkin gagal
dengan perubahan kecil, sulit untuk diuji
dan tidak dapat dinilai kualitasnya
What is the work Spesifikasi rancangan
product
Requirement/
Analysis
Desain dalam Konteks Software
Engineering
Evolution Design
• Perancangan/desain merupakan aktivitas terakhir dari rekayasa
perangkat lunak dalam hal pemodelan dan menyiapkan tahap
konstruksi
Testing
(coding dan testing).
Implementation
• Mengapa desain/perancangan begitu penting? Kualitas
• Desain merupakan tempat/fase di mana kualitas dibangun
dalam rekayasa perangkat lunak.
• Tanpa desain, software berisiko menjadi system yang tidak
stabil, antara lain:
• Kegagalan jika ada perubahan sedikit saja;
• Sulit diuji;
• Kualitas tidak dapat diukur sampai dengan tahap akhir.
DEFINISI [Roger S. Pressman, 7th
edition]
Sebuah proses yang menghasilkan sebuah model atau
representasi yang menampilkan ketegasan, komoditas,
dan kemudahan untuk dipahami
PRINSIP PERANCANGAN PERANGKAT LUNAK (1)
1. Proses perancangan tidak boleh menggunakan konsep “tunnel vision”.
2. Perancangan yang dibuat harus bisa ditelusuri pada model analisis.
3. Hasil perancangan harus original.
4. Bisa mengurangi jarak antara proses perangkat lunak dengan proses
dunia nyata.
08/01/2025
PRINSIP PERANCANGAN PERANGKAT LUNAK (2)
5. Desain harus seragam dan terintegrasi.
6. Perancangan bukan coding dan coding bukan perancangan.
7. Desain harus terstruktur dalam menghadapi perubahan.
8. Desain yang dibuat harus bisa dinilai dan direview untuk melihat
kesalahan semantik.
08/01/2025
Bagaimana hubungan desain dengan kode program?
• Kode program adalah bahasa yang digunakan untuk merepresentasikan
desain, tetapi dalam level abstraksi yang berbeda.
• Bahasa pemrograman bagus untuk merepresentasikan struktur data dan
algoritma, tetapi kurang dapat menggambarkan arsitektur atau kolaborasi
antar komponen perangkat lunak.
• Arsitektur dapat secara implisit disimpulkan dari kode program, tetapi
merupakan hal yang sulit untuk mendapatkan gambaran arsitektur dalam
big-picture dan secara cepat hanya dengan membaca kode.
Menerjemahkan model analisis (requirement) ke
dalam model perancangan (design)
Model klasik/lama untuk menerjemahkan model analisis
(requirement) ke dalam model perancangan (design):
Component-
Level
Design
Model Perancangan/Desain
Interface Design
1. Data/class design
Architectural Design
– Mentransformasikan model kelas analisis ke dalam model
kelas desain dan struktur data yang dibutuhkan untuk
mengimplementasikan
Data/Class Design perangkat lunak.
2. Architectural design
– Mendefinisikan relasi antara elemen struktural utama (major
structural elements) dari software, tipe arsitektur (architectural
style), dan pola (patterns);
3. Interface design;
– Menggambarkan bagaimana perangkat lunak berkomunikasi
dengan sistem lain dan pengguna.
4. Component-level design;
Design Model
– Mentransformasikan elemen struktural dari arsitektur ke dalam
deskripsi prosedural dari komponen perangkat lunak.
Petunjuk Dalam Melakukan Desain
Sebuah desain
Sebuah Sebuah harus mengarah
desain harus desain harus pada antarmuka
menunjukkan mengandung yang
mengurangi
organisasi abstraksi data
kompleksitas
secara dan hubungan antar
hirarkis prosedural modul dan
Sebuah desain Sebuah desain dengan Sebuah desain harus
harus bersifat harus mengarah lingkungan luar diturunkan
modular; jadi, pada modul- menggunakan
sebuah perangkat modul (prosedur metode yang
lunak seharusnya berulang yang
atau subrutin)
dapat dibagi-bagi diarahkan oleh
secara lojik menjadi yang
menunjukkan informasi yang
beberapa elemen
yang melakukan karakteristik dihasilkan pada
fungsi atau fungsional tahap analisis
subfungsi secara perangkat lunak
spesifik
Proses Desain/Perancangan
Awalnya, rancangan Add your words here, according to your need to
Desain software merupakan
menggambarkan gambaran draw the text box size. Please read the
proses iteratif di mana instructions and more work at the end of the
global/keseluruhan dari
manual template.
kebutuhan (requirements) software. Sasaran spesifik dari
diterjemahkan ke dalam sistem beserta kebutuhan data,
“blueprint” untuk konstruksi fungsional, dan perilaku dapat
Kualitas
Rancangan
Assessment
terhadap
kualitas software
pada tahap
desain
1. Pada saat desain, sebuah perangkat lunak belum dapat diuji karena belum ada
executable software
2. Namun, kita tetap dapat melakukan assessment melalui Technical Reviews
(TRs)
3. Dalam technical review:
Pertemuan (meeting) dihadiri oleh anggota tim
Banyaknya anggota yang hadir tergantung dari cakupan desain yang akan direview
Peran review leader adalah merencanakan pertemuan
Karakteristik Umum dari Semua Metode Desain
Setiap metode desain memiliki fokus, serta keunikan notasi dan pendekatan
(heuristics) tersendiri. Namun, semuanya memiliki kesamaan karakteristik,
yaitu:
• Mekanisme untuk mentranslasikan model kebutuhan/analisis ke dalam
representasi/model desain.
• Notasi untuk merepresentasikan komponen fungsional dan antarmuka-
nya.
• Heuristics/pendekatan untuk penyempurnaan (refinement) dan pemilahan
(partitioning).
• Panduan/guidelines untuk melakukan assessment terhadap kualitas.
Konsep-konsep dalam Desain/Perancangan
1. Abstraksi
2. Arsitektur
3. Pola (Patterns)
4. Pemilahan Masalah (Separation of Concerns)
5. Modularitas
6. Penyembunyian Informasi (Information Hiding)
7. Independensi Fungsional
8. Penyempurnaan Bertahap (Stepwise Refinement)
9. Pemfaktoran Ulang (Refactoring)
10.Kelas Desain (Design Classes)
Tugas Kelompok
Berikan Penjelasan dari 10 Konsep
perancangan
Silahkan di cari di berbagai media
pembelajaran.
Waktu mengerjakan 30 Menit
Dikumpulkan di Elearning
Hasilnya di presentasikan di depan kls
Model Perancangan (Design Model)
• Membuat model desain sama dengan pekerjaan arsitek membuat desain
rumah/gedung. Dimulai dari model rumah yang akan dibangun secara
keseluruhan, kemudian disempurnakan dengan menambahkan detail
untuk panduan konstruksi (misalnya bagan instalasi saluran air).
• Model desain dapat dipandang dalam dua dimensi:
• Dimensi Proses: menunjukkan perkembangan/evolusi model desain
sesuai dengan langkah-langkah dalam proses desain.
• Dimensi Abstraksi: menunjukkan tingkat ke-detail-an setiap elemen dari
model analisis yang ditransformasikan ke dalam model desain dan
kemudian disempurnakan secara iteratif.
Dimensi Desain
Garis putus-putus menunjukkan
batas antara model analisis dan
model desain.
Kadang-kadang batas antara
model analisis dan model desain
tidak terlalu jelas.
Baik model analisis maupun model
desain menggunakan diagram
UML. Bedanya adalah pada model
desain, diagram tersebut
disempurnakan dan didetailkan
untuk implementasi.
Elemen arsitektur, antarmuka, dan
component-level pada dimensi
proses dapat dikembangkan
secara paralel, sedangkan elemen
deployment-level biasanya
dibangun setelah semua elemen
lainnya diselesaikan.
Prinsip-prinsip Pemodelan Desain (1)
Terdapat berbagai metode untuk menghasilkan elemen desain software, seperti:
• Data driven: menggunakan struktur data untuk menentukan tipe arsitektur dan komponen
pemrosesan.
• Pattern driven: menggunakan informasi mengenai domain masalah (model requirement /
kebutuhan).
• Object oriented: menggunakan objek-objek dalam domain masalah sebagai dasar dalam
pembangunan struktur data dan fungsi/metode.
Semua metode tersebut memiliki kesamaan dalam prinsip-prinsip desain yaitu:
1. Desain harus dapat ditelusuri kepada model requirements/kebutuhan.
• Model kebutuhan merepresentasikan domain informasi dari permasalahan yang akan diselesaikan.
2. Selalu mempertimbangkan arsitektur software dari sistem yang akan dikembangkan.
• Arsitektur software merupakan kerangka dari sistem yang akan dibangun. Elemen-elemen lainnya dibuat
berdasarkan kerangka tersebut.
Prinsip-prinsip Pemodelan Desain (2)
3. Desain data sama pentingnya dengan desain fungsi pemrosesan.
• Desain data yang terstruktur dengan baik akan menyederhanakan alur program,
memudahkan desain dan implementasi komponen, dan membuat proses
keseluruhan lebih efisien.
4. Antarmuka (baik internal maupun eksternal) harus dirancang dengan
hati-hati.
• Antarmuka yang didesain dengan baik membuat integrasi lebih mudah dan
membantu penguji/tester untuk mem-validasi fungsi komponen.
5. Desain antarmuka pengguna (user interface) harus sesuai dengan
kebutuhan end user. Tetapi, dalam setiap kasus, harus tetap berfokus
kepada kemudahan penggunaan.
• User interface merupakan wujud software yang terlihat. Seberapa pun bagusnya
software, jika user interface-nya kurang baik, akan memunculkan persepsi bahwa
software tersebut tidak berkualitas.
6. Desain component-level harus independen secara fungsional.
• Sesuai dengan salah satu prinsip desain software, yaitu ‘kohesif’, sebuah
komponen harus berfokus kepada satu dan hanya satu fungsi.
Prinsip-prinsip Pemodelan Desain (3)
7. Komponen harus terhubung secara renggang (loosely coupled) satu sama lain dan juga
terhadap lingkungan eksternal.
• Semakin tinggi tingkat ketergantungan (coupling) antar komponen, semakin mudah sebuah error akan
merembet ke komponen lain dan juga membuat pemeliharaan software semakin sulit.
8. Representasi desain (model) harus dapat dimengerti secara mudah.
• Tujuan desain adalah mengkomunikasikan informasi kepada anggota tim yang akan membuat kode
program, menguji software, serta melakukan pemeliharaan software.
9. Desain harus dilakukan secara iteratif.
• Iterasi pertama untuk menyempurnakan desain dan memperbaiki error. Iterasi-iterasi berikutnya bertujuan
untuk membuat desain menjadi semakin sederhana (simple).
10. Pembuatan model desain tidak menghambat pendekatan agile.
• Meskipun ada pendapat bahwa dalam pendekatan agile, yang utama adalah kode,.namun tujuan dari
model desain adalah untuk membantu developer lain dalam mengembangkan dan memelihara sistem.
Akan sangat sulit untuk mengerti tujuan dari sebuah rangkaian kode dan interaksinya dengan modul lain
tanpa membaca modelnya.
Elemen Desain Data
• Sama seperti aktivitas dalam rekayasa perangkat lunak lainnya, desain data dimulai dari
abstraksi pada level tinggi dan kemudian disempurnakan bertahap kepada representasi
yang semakin implementatif.
• Peran penting desain data:
• Pada tingkatan komponen (diwujudkan dalam struktur data), memiliki pengaruh esensial dalam
pengembangan aplikasi yang berkualitas tinggi.
• Pada tingkatan aplikasi (diwujudkan dalam database), memiliki peran signifikan dalam pencapaian tujuan
bisnis.
• Pada tingkatan bisnis (diwujudkan dalam “data warehouse” yang memungkinkan data mining atau
pengetahuan baru), memiliki dampak terhadap kesuksesan bisnis itu sendiri.
Elemen Desain Arsitektur
• Sama seperti denah rumah yang memberikan gambaran keseluruhan dari rumah
tersebut, elemen desain arsitektur memberikan gambaran keseluruhan dari software.
• Model arsitektur dibangun dari tiga sumber:
• Informasi mengenai domain aplikasi.
• Elemen model kebutuhan spesifik, seperti use case, kelas analisis, serta relasi dan kolaborasi antar
mereka.
• Ketersediaan tipe arsitektur dan pola/pattern.
• Elemen desain arsitektur digambarkan sebagai sekumpulan subsistem yang saling
terhubung, dan seringkali berasal dari elemen analisis dalam model kebutuhan.
Elemen Desain Antarmuka (1)
• Menggambarkan alur informasi yang masuk dan keluar sistem serta bagaimana informasi
tersebut dikomunikasikan di antara komponen-komponen dalam arsitektur.
• Tiga elemen dalam desain antarmuka:
1. Antarmuka Pengguna (User Interface / UI)
• Merupakan subsistem dalam arsitektur aplikasi yang dirancang untuk memberikan pengguna akhir (end
user) dengan user experience/UX yang memuaskan.
2. Antarmuka Eksternal (External Interfaces)
• Membutuhkan definisi tentang entitas yang mengirimkan dan menerima informasi yang berasal dari
tahap requirements. Termasuk dalam desain adalah error checking dan fitur keamanan.
3. Antarmuka Internal (Internal Interfaces)
• Rancangannya sesuai/mirip dengan desain component-level. Kelas analisis direalisasikan ke dalam
desain berupa semua operasi dan pesan untuk komunikasi dan kolaborasi antar operasi dari berbagai
kelas.
• Desain UX (User Experience): merupakan desain yang berfokus kepada penggunaan
desain UI, antara lain:
• Estetis (layout, warna, grafik, layout informasi);
• Ergonomis (mekanisme interaksi, penempatan informasi, metafora, navigasi UI);
• Teknis (pola UX, komponen reusable).
Contoh Desain Antarmuka untuk ControlPanel
dalam Aplikasi SafeHome.
• Interface merupakan sekumpulan operasi
yang menggambarkan sebagian dari perilaku
(behavior) kelas dan memberikan akses
terhadap operasi-operasi tersebut.
• Pada contoh di samping:
• Fungsi keamanan SafeHome menggunakan
control panel melalui KeyPad.
• Fungsi dalam control panel dapat
diimplementasikan melalui tablet atau
smartphone.
Elemen Desain Component-Level
• Dapat dianalogikan dengan spesifikasi dan gambar detail dari rancangan kamar dalam
sebuah rumah.
• Menggambarkan detail internal dari setiap komponen software.
• Mendefinisikan:
• Struktur data untuk setiap objek data lokal;
• Algoritma di dalam komponen;
• Interface yang memungkinkan akses terhadap operasi;
• Detail desain komponen dapat dimodelkan menjadi beberapa level abstraksi.
• Detail struktur data dapat dimodelkan dengan pseudocode atau bahasa pemrograman.
• Logika pemrosesan dapat menggunakan UML activity diagram.
• Struktur algoritma (sequence, selection, iteration) dapat menggunakan pseudocode atau
bentuk diagram lainnya, seperti flowchart.
Contoh Diagram Komponen UML untuk SensorManagement
dalam Aplikasi SafeHome
• Pada contoh di atas:
• Panah putus-putus (dashed arrow) menghubungkan komponen SensorManagement dengan
kelas “Sensor”.
• Komponen SensorManagement melaksanakan semua fungsi yang berhubungan dengan sensor
SafeHome, termasuk pemantauan dan konfigurasi.
Elemen Desain Deployment-Level
• Menunjukkan bagaimana fungsionalitas dan subsistem software akan dialokasikan
dalam lingkungan fisik yang akan mendukung software tersebut.
Contoh UML Deployment Diagram
• Elemen-elemen dari software SafeHome dikonfigurasikan
untuk beroperasi dalam tiga lingkungan komputasi:
Perangkat mobile, dalam hal ini adalah PC.
Control panel.
Server, yang berada di penyedia layanan internet.
• Dalam desain lengkap, akan ada lebih banyak detail seperti
sensor, kamera, dan berbagai fungsi mobile.
• Berbagai subsistem ditunjukkan seperti security,
surveillance, external access, dsb.
• Diagram di samping merupakan bentuk descriptor form,
yang menampilkan lingkungan komputasi tetapi tidak
menunjukkan detail konfigurasi.
• Pada tahap desain berikutnya dalam instance form,
“personal computer” diidentifikasi/didetailkan, misalnya
Mac, Windows-based PC, Linux box, atau platform mobile
dengan sistem operasinya.
Referensi
• Referensi utama:
• Pressman, Roger S. Software Engineering: A Practitioner’s
Approach, 9th ed. McGraw-Hill Education, 2020.
THANK YOU
have attended today's lecture