Dokumen tersebut merangkum beberapa aspek penting dalam rekayasa perangkat lunak, seperti tahap pengembangan yang terdiri dari desain, generasi kode, dan pengujian. Dokumen tersebut juga membahas proses desain perangkat lunak, meliputi desain awal dan rinci, serta metodologi seperti desain data, arsitektural, dan prosedural. Prinsip-prinsip penting seperti modularitas, abstraksi, dan kemandirian fungsional juga di
Materi untuk mata kuliah Pengujian Perangkat Lunak perihal Pengujian Perangkat Luak yang berfokus kepada Unit VS. Integration Testing dan White Box serta Black Box Testing
Materi untuk mata kuliah Pengujian Perangkat Lunak perihal Pengujian Perangkat Luak yang berfokus kepada Unit VS. Integration Testing dan White Box serta Black Box Testing
04 Software Design Strategies and MethodsAinul Yaqin
Desain didefinisikan sebagai proses mendefinisikan arsitektur, komponen, antarmuka, dan karakteristik lain dari sistem atau komponen" dan "hasil dari proses [itu]”
Desain software didefinisikan sebagai aktivitas siklus hidup rekayasa dan deskripsi struktur internal yang akan menjadi dasar untuk konstruksinya.
Hasil mendesain menggambarkan komponen pada tingkat detail dan antarmuka di antara komponen-komponen tersebut
Analog dan digital sebenarnya lebih kepada istilah dalam penyimpanan dan penyebaran data. Data Analog disebarluaskan melalui gelombang elekromagnetik (gelombang radio) secara terus menerus, yang banyak dipengaruhi oleh faktor ”pengganggu”, sementara data digital adalah merubah data menjadi sederhana yaitu ”hanya” terdiri dari ”0” dan ”1”, yang akan lebih mudah untuk di sebarkan secara mudah tanpa terjadi ”gangguan”.
Menurut Kamus Besar Bahasa Indonesia, teknologi adalah metode ilmiah untuk mendapatkan tujuan praktis melewati ilmu pengetahuan. Baik berupa keseluruhan sarana fasilitas barang yang diperlukan. Teknologi adalah sarana jaringan yang dihubungkan oleh beberapa software penghubung dengan dunia luar, meskipun perangkat dan lawan bicaranya berada beda tempat.
bahasa pemrograman adalah suatu perangkat lunak dan bahasa yang digunakan untuk membuat program-program komputer atau sering disebut sebagai bahasa komputer. Bahasa pemrograman menggunakan sistem tata bahasa tertentu atau kata-kata unik untuk dijadikan kode yang bisa menjalankan perintah tertentu pada komputer. Bahasa pemrograman inilah yang membentuk struktur perangkat lunak sebagai inti dari komputer untuk menjalankan perangkat keras. Tanpa perangkat lunak yang dibuat menggunakan bahasa pemrograman, maka perangkat keras tidak akan berjalan dengan baik atau bahkan tidak dapat berjalan sama sekali.
Sebuah buku foto yang berjudul Lensa Kampung Ondel-Ondelferrydmn1999
Indonesia, negara kepulauan yang kaya akan keragaman budaya, suku, dan tradisi, memiliki Jakarta sebagai pusat kebudayaan yang dinamis dan unik. Salah satu kesenian tradisional yang ikonik dan identik dengan Jakarta adalah ondel-ondel, boneka raksasa yang biasanya tampil berpasangan, terdiri dari laki-laki dan perempuan. Ondel-ondel awalnya dianggap sebagai simbol budaya sakral dan memainkan peran penting dalam ritual budaya masyarakat Betawi untuk menolak bala atau nasib buruk. Namun, seiring dengan bergulirnya waktu dan perubahan zaman, makna sakral ondel-ondel perlahan memudar dan berubah menjadi sesuatu yang kurang bernilai. Kini, ondel-ondel lebih sering digunakan sebagai hiasan atau sebagai sarana untuk mencari penghasilan. Buku foto Lensa Kampung Ondel-Ondel berfokus pada Keluarga Mulyadi, yang menghadapi tantangan untuk menjaga tradisi pembuatan ondel-ondel warisan leluhur di tengah keterbatasan ekonomi yang ada. Melalui foto cerita, foto feature dan foto jurnalistik buku ini menggambarkan usaha Keluarga Mulyadi untuk menjaga tradisi pembuatan ondel-ondel sambil menghadapi dilema dalam mempertahankan makna budaya di tengah perubahan makna dan keterbatasan ekonomi keluarganya. Buku foto ini dapat menggambarkan tentang bagaimana keluarga tersebut berjuang untuk menjaga warisan budaya mereka di tengah arus modernisasi.
2. THE DEVELOPMENT PHASE AND SOFTWARE DESIGN
Fase pengembangan terdiri dari 3
langkah :
• Design
• Code Generation (manual or
automatic)
• Testing
Setiap langkah melakukan transformasi
informasi dalam suatu cara yang
akhirnya
menghasilkan
software
komputer yang valid
Software requirements
Dijelaskan
dengan
“Infor-mation
Domain”, “Func-tional and performanc
requirments”, “Feed the design step”
Development Phase
3. THE DEVELOPMENT PHASE AND SOFTWARE DESIGN
Menggunakan metodelogi :
1. Data Design difokuskan pada definisi dari struktur data
2. Architectural Design mendefinisikan hubungan antara elemen
struktur utama dari program
3. Procedural Design mengubah struktur elemen ke dalam
prosedur software
4. THE DESIGN PROCESS
@ Software design a process through
which requirements are translated into a
representation of software
@Software design dibagi dalam 2 tahap :
1. Preliminary Design
Pada tahap ini difokuskan dengan transformasi dari keperluan / kebutuhan ke
dalam data dan arsitektur software
2. Detail Design
Difokuskan pada penghalusan representasi arsitektur yang berisi struktur data
detail dan algoritma untuk software
Hubungan antara aspek tehnik
dan management pada desain
5. DESAIN AND SOFTWARE QUALITY
Beberapa tuntunan dalam melakukan agar dihasilkan desain
dengan kriteria yang baik, yaitu suatu desain haruslah :
1. Memperlihatkan organisasi hirarki yang mengontrol
elemen-elemen software.
2. Berkenaan dengan modul. Software secara logika
terbagi dalam elemen-elemen yang membentuk fungsi
dan sub fungsi.
3. Berisi representasi yang berbeda dan terpisah dari data
dan prosedur.
4. Membentuk modul ( contoh subroutine dan procedure )
yang memperlihatkan karakteristik fungsi yang tidak
saling bergantung.
5. Diturunkan dengan menggunakan metode perulangan
yang didukung oleh informasi yang ada selama analisa
kebutuhan software.
6. THE EVOLUTION OF SOFTWARE DESIGN
Evolusi dari desain software merupakan proses yang
berkelanjutan terus selama 3 dekade
Beberapa metodologi telah tumbuh, dan secara umum
memiliki karakteristik sebagai berikut :
1. Sebuah mekanisme untuk menterjemahkan representasi
domain informasi ke dalam representasi desain
2. Notasi untuk merepresentasikan fungsi komponen-komponen
dan interfaces-nya
3. Heuristics untuk penghalusan dan pemartisian
4. Petunjuk untuk penaksiran kualitas
7. DESIGN FUNDAMENTALS
Membantu software enginee untuk menjawab
pertanyaan-pertanyaan berikut :
1. Apakah kriteria yang dapat dipakai untuk
mempartisi software menjadi sejumlah komponen ?
2. Bagaimana fungsi atau struktur data dipisahkan dari
suatu representasi konseptual software
3. Apakah ada kriteria yang seragam yang menetapkan
kualitas tehnik dari suatu software desain
REFINEMENT
“Stepwise refinement” adalah strategi desain topdown pertama yang diajukan oleh Nicklaus Wirth
Refinement sebenarnya merupakan suatu proses
pengembangan ( elaborasi )
8. SOFTWARE ARCHITECTURE
Arsitektur perangkat lunak menyinggung
2 karakteristik penting dari sebuah
program komputer :
1. Hirarki struktur dari komponenkomponen prosedural ( modul )
2. Data struktur
P1
S1
S2
P2
P3
P4
S3
P5
PR O B L EM T O BE SO L VE
S4
SO F T W AR E SO L U T IO N
VIA S O F T WA R E
PR O BL EM
S1
S4
S5
S4
S3
S1
S2
S3
S4
ST R U C T U R E 1
S5
S1
S2
S3
ST R U C T U R E 2
Different Structure
S2
S5
ST R U C T U R E 3
S5
Evolution of structure
9. PROGRAM STRUCTURE
Program structure menampilkan /
menyajikan organisasi ( seringkali
organisasi hirarki ) dari komponenkomponen program ( modul-modul )
dan mengandung arti hirarki dari
kontrol program
Notasi
yang
digunakan
adalah
diagram tree. Biasanya dinamakan
structure chart
Terminologi Structure
10. DATA STRUCTURE
Menggambarkan relasi logikal antara sejumlah elemen dari “dari”.
Contoh :
type G = array [1..100] of integer;
...
...
Procedure S ( var T : G ; n : integer ; sum : integer );
Var
I : integer;
begin
sum := 0;
for I:=1 to n do
sum := sum + t[i];
end;
11. SOFTWARE PROCEDURE
Difokuskan pada detail pemrosesan dari setiap modul secara
individu. Prosedur harus mengandung spesifikasi yang benar /
tepat dari pemrosesan, termasuk : sequence of events, decision
points, repetitive operations, dan struktur data.
MO DULE A
MO DULE A
Procedure dengan sebuah modul
12. MODULARITY
O R
E F F O R T
TOTAL SOFTWARE COST
COST TO INTERFACE
Region Of Minimum Cost
M
L O S T
Software is divided into separately named and
addressable elements, called modules, that are
integrated to satisfy problem requirements
Misalkan :
C(x)
= fungsi kompleksitas
dari suatu masalah
E(x)
= fungsi usaha/waktu
yang diperlukan untuk memecahkan suatu
masalah
P1 ,P2
= masalah 1, masalah 2
Jika :
C(P1) > C(P2) maka
:
E(P1) > E(P2)
Berdasarkan penelitian :
C ( P1 + P2 ) >
C ( P1 ) + C ( P2 )
E ( P1 + P2 ) >
E ( P1 ) + E ( P2 )
Konklusi :
Kompleksitas suatu masalah gabungan P1 dan P2
akan berkurang jika masalah tersebut dipisahkan
Akan lebih mudah menyelesaikan suatu masalah
jika dipecah / dipartisi
COST / MODULE
NUMBER OF MODULES
Modularity & Software Cost
13. ABSTRACTION
Jika kita menggunakan suatu solusi modular untuk beberapa
masalah, maka beberapa level / tingkat abstrasi dapat
ditampilakn / diperlihatkan.
Pada level tertinggi, suatu solusi berada pada term yang
umum dengan menggunakan bahasa natural
Level yang lebih rendah lebih berorientasi pada prosedurprosedur
Keuntungan :
1. Jika diperlukan modifikasi selama testing dan maintenance
data & prosedur disembunyikan dari bagian lain, dari
program / software secara keseluruhan.
2. Kesalahan-kesalahan yang terjadi selama modifikasi tidak
merambat pada bagian lain.
14. EFFECTIVE MODULAR DESIGN
Modular design mereduksi komplesitas masalah, menyediakan fasilitas untuk
melakukan perubahan ( dalam hal pemeliharaan ), dan memudahkan implementasi
dengan pengembangan paralel dari bagian-bagian yang berbeda dalam suatu sistem
MODULE TYPES
Abstraksi dan information hiding dipakai untuk mendefinisikan modul-modul di dalam
lingkungan software architecture
1.
Di dalam structure software, suatu modul mungkin dikategorikan sebagai berikut :
2.
Sequential module dieksekusi tanpa interupsi yang dilakukan software aplikasi
3.
Incremental module dapat diinterupsi oleh program aplikasi dan kemudian
kembali ke titik semula setelah interupsi selesai
4.
Parallel module dieksekusi secara simultan dengan modul lain dalam lingkungan
Concurrent multiprocessor
15. FUNCTIONAL INDEPENDENCE
Konsep functional independence berkembang dari modularitas dan konsep abstraksi serta information
hiding
Independence diukur dengan menggunakan 2 kriteria kualitatif, yaitu :
1. Cohesion ( keterpautan )
Perluasan / kelanjutan dari information hiding
Suatu modul kohesif membentuk sebuah tugas tunggal di dalam suatu software prosedur dan
memerlukan sedikit interaksi dengan prosedur yang dibuat dalam bagian lain dari suatu program
Coincidental cohesion :
sebuah modul yang membentuk sejumlah tugas yang berhubungan satu sama lain dengan longgar
Logically cohesion :
sebuah modul yang membentuk tugas-tugas yang dihubungkan secara logical
Temporal cohesion :
jika sebuah modul berisi sejumlah tugas yang dihubungkan dengan segala yang harus dieksekusi di dalam
waktu yang bersamaan.
Procedural cohesion :
jika pemrosesan elemen-elemen dari suatu modul dihubungkan dan harus dieksekusi dalam urutan spesifik
Communication cohesion :
jika pemrosesan elemen-elemen dikonsentrasikan pada satu area dari suatu struktur data
2. Coupling ( bergandengan )
Merupakan suatu pengukuran dari keterkaitan / keterhubungan antara sejumlah modul dalam struktur
program
Coupling tergantung pada kompleksitas interface antar modul
16. DATA DESIGN
Data Desain merupakan aktivitas penting yang diselenggarakan
selama proses perekayasaan perangkat lunak.
Data Desain berpengaruh besar terhadap kualitas software yang
dibuat / didesain. Karena kompleksitas dari struktur program
dan prosedur dapat dipengaruhi oleh bagaimana desain data
yang kita buat.
Proses desain data yang diringkat oleh Wasserman.
“Well - Designed” data dapat menyebabkan struktur program
lebih baik, modularitas, dan menghilangkan kompleksitas
procedural.
Wasserman mengajukan beberapa prinsip yang dipakai untuk
spesifikasi dan desain data.
Prinsip-prinsip tersebut merupakan basis untuk desain data yang
dapat dipadukan pada fase definisi dan fase pengembangan
pada proses perekayasaan perangkat lunak