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