BAB 3 ALGORITMA DALAM PENGEMBANGAN SOFTWARE
A. MODULARISASI DALAM PENULISAN PROGRAM
Modularisasi
adalah teknik pemecahan program menjadi beberapa subprogram. Modularisasi
program mempunyai dua keuntungan :
1. Modul tersebut cukup dituliskan sekali
saja, lalu dapat diakses. Hal ini bermanfaat bila ingin menghemat ukuran
program.
2. Kemudahan menulis dan menemukan kesalahan
(debug) program. Hal ini sangat berguna pada masalah yang besar.
Subprogram
memiliki struktur yang sama denga program utama, yaitu bagian header, deklarasi,
dan definisi. Subprogram dieksekusi dengan memanggil namanya dari program
utama. Ketika sebuah subprogram dipanggil, pelaksanaan program berpindah ke
subprogram. Selanjutnya, seluruh instruksi didalam subprogram utama untuk
menjalankan instruksi berikutnya.
1. Prosedur (Procedure)
Merupakan subprogram
yang mengerjakan tugas yang spesifik dan menghasilkan suatu efek netto. Efek
netto diketahui dengan membandingkan keadaan awal dan akhir pada pelaksanaan
sebuah prosedur.
2. Pendefinisian Prosedur
Menuliskan nama
prosedur (beserta parameter jika ada), mendeklarasikan nama peubah (variabel,
konstanta, tipe, dan lain-lain), dan menjabarkan rangkaian aksi yang dilakukan.
Setiap prosedur memiliki nama yang unik dan sebaikmya menggunakan kata kerja.
Sebagai contoh, Hitung_Luas_Segitiga, atau Cari_Nilai_Maks. Paramater digunakan
untuk pertukaran data/informasi antaa prosedur dengan titik (lokasi)
pemanggilnya.
Terdapat duajenis
parameter, yakni aktual dan formal. Parameter aktual (argumen) disertakan pada
saat pemanggilan prosedur. Adapun parameter formal dideklarasikan dalam bentuk
header prosedur.
Bentuk
pendefinisian prosedur :
Procedure NamaProsedur
(deklarasi parameter jika ada)
{ spesifikasi prosedur, keadaan
awal dan akhir prosedur}
DEKLARASI :
{semua
nama peubah}
DEFINISI :
{urutan
instruksi/aksi}
Contoh
(Prosedur dengan parameter) :
procedure Hitung_Nilai_Maks
(input a,b:integer)
{menghitung nilai maksimal
antara dua bilangan}
DEKLARASI :
maks:integer
DEFINISI :
if
a>b then
maks <- a
else
maks <- b
write
(maks)
end
procedure
Contoh (Prosedur tanpa parameter) :
procedure
Tulis_Deret_Bilangan_Genap
{menampilkan
deret bilangan genap kurang dari 10}
DEKLARASI
:
bilangan:integer
DEFINISI
:
bilangan <- 2
while (bilangan < 10) do
write(bilangan)
bilangan <- bilangan+2
endwhile
end
procedure
3. Pemanggilan Prosedur
Contoh (pengaksesan
prisedur dari program pemanggil) :
Algoritma Hitung_Nilai_Maks
{menghitung nilai maksimal
antara dua bilangan dengan menggunakan prosedur}
DEKLARASI :
a,b:integer
procedure
Hitung_Nilai_Maks(input a,b:integer)
DEFINISI :
read
(a,b)
Hitung_Nilai_Maks(a,b)
End Algoritma
4. Nama Global, Nama Lokal dan Lingkup
Nama global
dideklarasikan dalam algoritma/program utama untuk dapat digunakan dalam seluruh
bagian algoritma/program tersebut termasuk prosedur yang ada di dalamnya. Nama
lokal dideklarasikan dalam prosedur sehingga hanya akan dikenal dan digunakan
dalam prosedur tersebut.
5. Parameter
Digunakan untuk
menukar data/informasi antara algoritma/program utama dan prosedur. Tiga jenis
parameter formal sebagai berikut :
a. Parameter masukan (input) / parameter
nilai, yakni parameter yang nilainya berlaku sebagai masukan untuk prosedur.
b. Parameter keluaran (output), yakni
parameter yang menampung keluaran (output) yang dihasilkan prosedur.
c. Parameter masukan/keluaran, yakni
parameter yang berfungsi sebagai masukan dan keluaran bagi prosedur.
B.
ALGORITMA
BERDASARKAN KONSEP AI
Artificial
Intelligence merupakan salah satu bagian ilmu komputer yang membuat agar
komputer dapat melakukan pekerjaan seperti dan sebaik yang dilakukan oleh
manusia.
1. AI Dilihat dari Berbagai Sudut Pandang
a. Sudut pandang kecerdasan
Mesin menjadi cerdas
(mampu berbuat apa yang dilakukan oleh manusia)
b. Sudut pandang penelitian
Studi bagaimana
membuat agar komputer dapat melakukan sesuatu sebaik yang dilakukan oleh
manusia.
Domain penelitian :
1) Mundande task
a)
Persepsi
b)
Bahasa alami
c)
Pemikiran yang bersifat commonsense
d)
Robot control
2) Formal task
a)
Permainan / games
b)
Matematika (geometri, logika, kalkulus,
integral, pembuktian)
3) Expert task
a)
Analisis finansial
b)
Analisis medikal
c)
Analisis ilmu pengetahuan
d)
Rekayasa (desain, pencairan, kegagalan,
perencanaan, manufaktur)
c. Sudut pandang bisnis
Kumpulan peralatan
yang sangat powerfull dan metodologis dalam menyelesaikan masalag-masalah
bisnis
d. Sudut pandang pemrograman
Studi tentang
pemrograman simbolik, penyelesaian masalah (problem solving), dan pencarian
(searching). Aplikasi AI memiliki dua bagian utama :
1)
Basis pengetahuan : berisi fakta-fakta,
teori, pemikiran, dan hubunga antara satu dengan lainnya.
2) Motor inferensi : kemampuan menarik
kesimpulan berdasarkan pengalaman.
Gambar
penerapan konsep AI di komputer
2. Sejarah AI
Pada tahun 1950-an, Alan
Turing mengusulkan tes untuk melihat bisa/tidaknya mesin memberikan respons
terhadap serangkaian pertanyaan (agar mesin dapat dikatakan cerdas). Kemudian,
istilah “Artificial Intelligence” dimunculkan oleh John McCarthy (MIT), tahun
1956 pada Dartmouth Conference. Dalam konferensi itu juga didefinisikan tujuan
AI, yaitu mengetahui dan memodelkan proses-proses berpikir manusia dan
mendesain mesin agar dapat menirukan kelakuan manusia tersebut.
Beberapa program AI
periode tahun 1956-1966 sebagai beikut :
Ø Logic
Theorist, untuk pembuktian teorema matematik
Ø Sad
Sam (oleh Robert K.Lindsay, 1960), program yang dapat mengetahui kalimat
sederhana dalam bahasa Inggris dan memberikan jawaban dari fakta yang didengar
dalam sebuah percakapan.
Ø ELIZA
(Joseph Weizenbaum, 1967), program untuk terapi pasien dengan memberikan
jawaban.
3. Perbedaan Kecerdasan Buatan dengan
Kecerdasan Alami
Kecerdasan Buatan |
Kecerdasan Alami |
-
bersifat permanen -
lebih mudah diduplikasi dan disebarkan -
lebih murah -
konsisten -
dapat didokumentasi -
lebih cepat -
dapat mengerjakan pekerjaan lebih baik
|
-
cepat mengalami perubahan -
proses transfer dari manusia satu ke lainnya membutuhkan proses yang
lama -
lebih mahal karena tidak jarang harus mendatangkan orang untuk suatu
pekerjaan -
sering berubah-ubah (sifat manusia) -
sulit direproduksi -
lebih lambat -
seringkali kurang teliti |
4. Keuntungan Kecerdasan Alami
Ø Kreatif,
kemampuan menambah pengetahuan sangat lekat pada jiwa manusia.
Ø Memungkinkan
orang menggunakan pengalaman secara langsung.
Ø Pemikiran manusia dapat digunakan secara luas.
5. Perbandingan Komputasi AI dengan
Komputasi Konvensional
Dimensi |
Kecerdasan Buatan |
Pemrograman
Konvensional |
Pemrosesan |
Mengandung konsep-konsep simbolik |
Algoritmik |
Sifat Input |
Bisa tidak lengkap |
Harus lengkap |
Pencarian |
Kebanyakan bersifat Heuristik |
Biasanya didasarkan pada algoritma |
Keterangan |
Disediakan |
Biasanya tidak disediakan |
Fokus |
Pengetahuan |
Data & Informasi |
Struktur |
Kontrol dipisahkan dari
pengetahuan |
Kontrol terintegrasi dengan informasi (data) |
Sifat Output |
Kuantitatif |
Kualitatif |
Pemeliharaan & update |
Relatif murah |
Sulit |
Kemampuan menalar |
Ya |
Tidak |
6. Lingkup AI pada Aplikasi Komersial
a.
Sistem Pakar (Expert System)
Komputer memiliki
keahlian untuk menyelesaikan masalah dengan meniru keahlian yang dimiliki oleh
pakar.
b.
Pengolahan Bahasa Alami (Natural Language
Processing)
Diharapkan user dapat
berkomunikasi dengan komputer menggunakan bahasa sehari-hari
c.
Pengenalan Ucapan (Speech Recognition)
Melalui pengenalan
ucapan, diharapkan manusia dapat berkomunikasi dengan komputer menggunakan
suara.
d.
Robotika dan Sistem Sensor (Robotics
& Sensory Systems)
e.
Computer Vision
Menginterpretasikan
gambar atau obyek-obyek tampak melalui komputer
f.
Intelligence Computer – aided Instruction
Komputer digunakan
sebagai tutor yang dapat melatih dan mengajar.
g.
Game Playing
C.
ALGORITMA
UNTUK MEMECAHKAN MASALAH
Algoritma
adalah urutan atau langkah-langkah penyelesaian masalah yang disusun secara
sistematis dan logis. Algoritma dapat melatih kemampuan logika. Algoritma sangat
berguna dalam kegiatan sehari-hari karena algoritma merupakan urutan
langkah-langkah logis dan terdefinisi dengan jelas atau tidak ambigu yang dapat
menuntun kita dalam menyelesaikan suatu permasalahan. Dengan begitu, algoritma
dapat memudahkan pengambilan keputusan untuk pemecahan masalah dengan urutan
yang logis.
Contoh
algoritma :
1. Algoritma untuk mengirimkan surat
-
Mulai
-
Tulis surat pada kertas
-
Ambil amplop
-
Masukkan surat ke amplop
-
Tutup amplop dengan lem perekat
-
Tulis alamat surat yang dituju
-
Tempelkan perangko
-
Bawa surat ke kantor pos
-
Selesai
2. Algoritma untuk menghitung nilai y dari
persamaan y=2x+6
-
Mulai
-
Tentukan nilai x
-
Hitung nilai y=2x+6
-
Tuliskan/cetak nilai x dan y
-
Selesai
TUGAS MANDIRI
Buatlah
algoritma :
1.
Untuk memasak mie instan
2. Untuk
menghitung volume balok
D.
METODE
PENGEMBANGAN PERANGKAT LUNAK
1. Model Waterfall
Waterfall merupakan
salah satu metode pengembangan perangkat lunak yang mempunyai ciri khas
pengerjaan setiap fase dalam waterfall harus diselesaikan terlebih dahulu sebelum
metode melanjutkan ke fase selanjutnya.
Fase dalam metode
waterfall sebagai berikut :
a.
Reqirement analysis
b.
System design
c.
Implementation
d.
Integration dan testing
e.
Operation dan maintenance
Kelebihan metode waterfall sebagai
berikut :
a.
Proses menjadi lebih teratur
b. Dapat merencanakan dan menyiapkan seluruh
kebutuhan data dan pross yang akan diperlukan
c.
Jadwal menjadi lebih menentu
Kelemahan metode waterfall sebagai
berikut :
a.
Sifatnya kaku sehingga sulit melakukan
perubahab di tengah proses
b. Jika terdapat kekurangan prosedur dari
tahap sebelumnya, tahapan pengembangan harus dilakukan mulai dari awal
c.
Membutuhkan daftar kebutuhan yang lengkap
di awal
2. Model Prototype
Prototype adalah suatu
proses yang memungkinkan developer membuat sebuah model software. Metode ini
baik digunakan apabila client tidak bisa memberikan informasi yang maksimal
mengenai kebutuhan yang diinginkan.
Prototype dibedakan
menjadi dua, yaitu :
a.
Working prototype
b.
Paper prototype
Prototyping
sendiri mempunyai tujuan, yaitu mengembangkan model awal software menjadi
sebuah sistem yang final.
Proses
prototype meliouti sebagai berikut :
a.
Pengumpulan kebutuhan
b.
Membangun prototyping
c.
Evaluasi prototyping
d.
Mengodekan sistem
e.
Menguji sistem
f.
Evaluasi sistem
g.
Menggunakan sistem
Kelebihan protoryping sebagai berikut :
a.
Komunikasi akan terjalin baik antara
pengembang dan pelanggan
b. Pengembang dapat bekerja lebih baik dalam
menentukan kebutuhan setiap pelanggannya
c.
Pelangga berperan aktif dalam proses
pengembangan sistem
d.
Lebih menghemat waktu dalam pengembangan
sistem
e. Peneapan menjadi lebih mudah karena
pemakai mengetahui apa yang diharapkannya.
Kelemahan prototyping sebagai berikut :
a.
pelanggan tidak paham bahwa perangkat
lunak yang ada belum mencantumkan kualitas dan pemeliharaan untuk jangka waktu
lama.
b. hubungan pelanggan dengan komputer yang
disediakan tidak mencerminkan teknik perancangan yang baik.
c. pengembang biasanya ingin cepat,
menyelesaikan proyek sehingga menggunakan alogaritma dan bahasa yang sedderhana
agar lebih cepat, tanpa memikirkan program tersebut merupakan blue print
system.
3. Model Rapid Application Development (RAD)
Rapid Application
Development (RAD) adalah suatu model proses perkembangan software sekuensial
linier yang menekan siklus perkembangan yang sangat pendek.
Pendekatan RAD
melingkupi fase-fase sebagai berikut :
a.
Data modeling
b.
Proses modeling
c.
Aplication generation
d.
Testing and turnover
Kelebihan RAD sebagai berikut :
a.
Proses pengiriman menjadi lebih mudah
b.
Mudah untuk diamati
c.
Lebih fleksibel
d.
Bisa mengurangi penulisan kode
e.
Keterlibatan user semakin meningkat
f.
Mampu meminimalkan kesalahan
g.
Mempercepat waktu pengembangan sistem
h.
Tampilan yang standar dan nyaman
Kelemahan RAD sebagai berikut :
a.
Sistem sulit diaplikaikan di tempat lain
b.
Fasilitas yang tidak perlu kadang harus
disertakan
c.
Membutuhkan biaya tersendiri
d.
Kesulitan melakukan pengukuran mengenai
kemajuan proses
e.
Kurang efisien
f.
Ketelitian menjadi berkurang
g.
Lebih banyak terjadi kesalahan
h.
Fasilitas banyak yang dikurangi
4. Model Spiral
Spiral merupakan
penggabungan ide pengembangan berulang (prototyping) dengan aspek sistematis
terkedali model air terjun (waterfall).
Aktivitas-aktovitas
yang dilakukan dalam model spiral sebagai berikut :
a.
Customer comunication
b.
Planning
c.
Analysis risc
d.
Engineering
e.
Construction & Release
f.
Costumer evalution
Kelebihan model spiral sebagai berikut :
a. Dapat disesuaikan agar perangkat lunak
bisa dipakai selama hidup perangkat lunak komputer.
b. Lebih cocok untuk pengembangan sistem dan
perangkat lunak skala besar
c. Pengembang dan pemakai dapat lebih mudah
memahami dan bereaksi terhadap resiko setiap tingkat evolusi karena perangkat
lunak terus bekerja selama proses.
d. Menggunakan prototipe sebagai mekanisme
pengurangan resiko dan pada setiap keadaan di dalam evolusi produk.
e. Tetap mengikuti langkah-langkah dalam
siklus kehidupan klasik dan memasukkannya ke dalam kerangka kerja iteratif .
f. Membutuhkan pertimbangan langsung terhadp
resiko teknis sehingga mengurangi resiko sebelum menjadi permaslahan yang
serius.
Kelemahan model spiral sebagai berikut :
a. Sulit untuk menyakinkan pelanggan bahwa
pendekatan evolusioner ini bisa dikontrol.
b. Memerlukan penaksiran resiko yang masuk akal dan akan menjadi masalah yang serius jika resiko mayor tidak ditemukan dan diatur.
c. Butuh waktu lama untuk menerapkan paradigma ini menuju kepastian yang absolute