BAB IV
IMPLEMENTASI PERANGKAT LUNAK
Pada bab ini akan membahas tentang implementasi program dari hasil analisis dan perancangan sistem pada bab III, serta bagaimana cara sistem tersebut dijalankan. Perancangan aplikasi website dikembangkan dalam lingkungan pemrograman dengan spesifikasi teknis sebagai berikut ini :
a. Proses Instalasi, pada proses ini beberapa pengistalan ruby beserta framework compatible, kemudian dilanjutkan pada instalasi kebutuhan database dan disini penulis menggunakan MySQL beserta SQLyog sebagai sarana pengolahan database setelah semua selesai maka yang terakhir dilanjutkan denga proses instalasi NetBeans IDE 7 sebagai debugger dan desain aplikasi website.
b. Proses pembuatan antar muka layanan booking online, Pada proses ini akan menjelaskan pembuatan antar muka yang nantinya akan digunakan mengolah data pada web browser.
c. Implementasi aplikasi system jadi, Pada proses ini akan menjelaskan beberapa proses yang menyangkut pengisian data dan pembokingan oleh member melalui browser yang telah ada.
4.1 Lingkungan Implementasi Sistem
Dalam hal ini terdapat beberapa yang digunakan untuk pengujian dan pembuatan system, disini yang berhubungan dengan system yaitu :
a. Windows XP Profesional Edition dan OS setara sebagai sistem operasi.
b. Rational Rose 2000 untuk pembuatan desain.
c. Power designer 15.
d. Perangakat Ruby On Rails sebagai web development tool.
e. MYSQL sebagai database.
f. SQLyong sebagai frontend software untuk pengolahan database.
g. NetBeans IDE 7.0 sebagai debugger dan desain aplikasi web.
4.2 Implementasi Proses
Yang dimaksudkan disini yaitu proses realisasi dari beberapa gambaran-gambaran atau rancangan alur progam yang telah dibuat sebelumnya (analisa sistem). Sebelum beranjak pada pemrograman system yang musti dibuat adalah membuat project pada ROR (Ruby on Rails) dengan eksekusi perintah seperti pada umumnya yaitu rails [nama_project] misalnya membuat project rails dengan nama Leksono.
rails leksono
Setelah project berhasil dibuat maka proses selanjutnya adalah configurasi database.
rake db:create
rake db:migrate
Database yang telah dibuat sebelumnya diletakkan di server, selanjutnya harus dapat diakses untuk digunakan pada aplikasi. Berikut ini adalah koneksi database pada aplikasi ini, file tersebut diletakkan di dalam file database.yml pada config directory.
# MySQL. Versions 4.1 and 5.0 are recommended.
... ...
# And be sure to use new-style password hashing:
development:
adapter: mysql
encoding: utf8
reconnect: false
database: leksono_development
pool: 5
username: root
password: 1234
host: localhost
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run
"rake".
# Do not set this db to the same as development or production.
test:
adapter: mysql
encoding: utf8
reconnect: false
database: leksono_test
pool: 5
username: root
password: 1234
host: localhost
production:
adapter: mysql
encoding: utf8
reconnect: false
database: leksono_production
pool: 5
username: root
password: 1234
host: localhost
Pada
script yang ada diatas terdapat 3 penempatan konfigurasi
database yaitu
development, test dan
production. Secara umum konfigurasi yang mencakup keseluruhan. Pada tahap pengembangan ini database yang digunakan adalah
development ,sedangkan yang
test digunakan ketika proses tes aplikasi dan yang
Production ketika proses produksi. Untuk melakukan pengecekan apakah database dapat berjalan atau tidaknya adalah dengan membuka alamat
http://localhost:3000/ .
4.3 Implementasi Model View Controller (MVC)
Didalam framework rails ini pada dasarnya menggunakan penerapan metode MVC yang merupakan metode dalam membangun website aplikasi. Adapun cara kerjanya sebagai berikut: halaman interaksi yang merupakan bentuk dari View akan mengirimkan request ke controller sesuai dengan action yang diberikan user. Controller merespon aksi dari view dengan cara berkomunikasi dengan model. Komunikasi dapat berupa mengakses, mengubah, menambah data yang tersimpan oleh model. Controller akan memanggil view index dan file yang sesuai, untuk selanjutnya ditampilkan pada user interface sebagai output yang dapat dilihat oleh user. Pada implementasinya MVC dapat dibuat satu persatu atau bisa juga dibuat dengan sekaligus dengan memanfaatkan fasilitas eksekusi scaffold, yaitu ruby script/generate scaffold <table name in singular / name of the controller>, misalnya :
ruby script/generate scaffold member
4.3.1 Implementasi Model
Model mewakili data yang diproses oleh suatu aplikasi. Menyediakan suatu link penyimpanan data . Untuk menambahkan pemetaan hubungan antar kelas pada setiap model, misalnya pada model Member ( member.rb ), didalamnya akan terlihat kode berikut:
class Member < ActiveRecord::Base
has_many :events
validates_length_of :login, :within => 3..40
validates_length_of :password, :within => 5..40
validates_presence_of:login,:email,:password,
:password_confirmation, :salt
validates_uniqueness_of :login, :email
validates_confirmation_of :password
validates_format_of :email, :with => /^([^@\s]+)@((?:
[-a-z0-9]+\.)+[a-z]{2,})$/i, :message => "Invalid email"
attr_protected :id, :salt
attr_accessor :password, :password_confirmation
def self.random_string(len)
#generate a random password consisting of strings and digits
chars=("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
newpass = ""
1.upto(len) { |i| newpass << chars[rand(chars.size-1)] }
return newpass
end
def password=(pass)
@password=pass
self.salt = Member.random_string(10) if !self.salt?
self.hashed_password=Member.encrypt(@password, self.salt)
end
def self.encrypt(pass, salt)
Digest::SHA1.hexdigest(pass+salt)
end
def self.authenticate(login, pass)
u=find(:first, :conditions=>["login = ?", login])
return nil if u.nil?
return u if Member.encrypt(pass, u.salt)==u.hashed_password
nil
end
def send_new_password
new_pass = Member.random_string(10)
self.password = self.password_confirmation = new_pass
self.save
Notifications.deliver_forgot_password(self.email,
self.login, new_pass)
end
end
Dari code diatas, maka dapat dijelaskan bahwa, terdapat beberapa pengecekan kecocokan (validasi) yang tampak yaitu jumlah dan baris yang data diisikan, tinggkat uniquity. Selain itu yang tampak pada code tersebut direlasikan dengan event (hal_many pada member dan belong_to pada models event) yang dalam hal ini adalah untuk proses booking, enskripsi password, dan newpassword.
4.3.2 Implementasi View
View merupakan representasi visual dari user interface atau tampilan dari suatu aplikasi. Untuk implementasi view akan dipanggil sesuai dengan action dari controllernya.
Untuk membuat tampilan lebih menarik agar lebuh terlihat menjadi website yang user friendly pengunjung kepada perlu dilakukan penambahan beberapa code pada setiap moduls yang terdapat pada member seperti yang diperintahkan. Sedikit memberikan gambaran, dapat dilihat pada contoh code berikut ini.
<h3><%= @page_title = "Daftar" %></h3>
<% form_tag :action=> "signup" do %>
<%= error_messages_for 'member' %><br/>
<% content_tag :label do-%>Nama Lengkap<br/>
<%= text_field "member", "mem_nama" %><br/><% end %>
<% content_tag :label do -%>Telp<br/>
<%= text_field "member", "mem_telp" %><br/><% end %>
<label>alamat</label><br/>
<%= text_field "member", "mem_alamat" %><br/>
<label>Username</label><br/>
<%= text_field "member", "login", :size => 20 %><br/>
<label>Password</label><br/>
<%= password_field "member", "password", :size => 20 %><br/>
<label>Password Confirmation</label><br/>
<%=password_field"member","password_confirmation",:size=>20%><br/>
<label>Email</label><br/>
<%= text_field "member", "email", :size => 20 %><br/><br/>
<%= submit_tag "Daftar" %>
<% end %>
Code yang ditampilkan sebagai contoh view tersebut adalah contoh dari View Member Sign Up (signup.html.rb)
4.3.3 Pembuatan Controller
Controller berfungsi sebagai control flow logic, yaitu sebagai pengatur keputusan mengenai view mana yang harus dipanggil untuk menampilkan data tertentu dalam action view, berperan sebagai perantara dari aplikasi dan mengambil tiap request. Lalu memanggil model yang cocok untuk meng-update atau mengambil data. Setelah itu memilih view yang cocok untuk menampilkan data. Berikut ini potongan program controller pada member_controller:
class MemberController < ApplicationController
layout 'publik'
def index
@berita = Berita.find(:all, :order => 'updated_at DESC')
#redirect_to_stored
end
def signup
@member = Member.new(params[:member])
if request.post?
if @member.save
flash[:message] = "Pendaftaran berhasil"
redirect_to :action => "welcome"
else
flash[:warning] = "Signup Gagal"
end
end
end
def login
if request.post?
if session[:member] =
Member.authenticate(params[:member][:login],params[:member]
[:password])
flash[:message] = "Terima kasih telah login"
redirect_to :controller => "events"
else
flash[:warning] = "Login unsuccessful"
end
end
end
def logout
session[:member] = nil
flash[:message] = 'Logged out'
Dan sebagai lanjutan dari code member_controller pada halaman sebelumnya adalah sebagai berikut :
redirect_to :controller => 'member', :action => 'index'
end
def forgot_password
if request.post?
u= Member.find_by_email(params[:member][:email])
if u and u.send_new_password
flash[:message] = "A new password has been sent by email."
redirect_to :action=>'login'
else
flash[:warning] = "Couldn't send password"
end
end
end
def change_password
@member=session[:member]
if request.post?
@member.update_attributes(:password=>params[:member]
[:password], :password_confirmation => params[:member]
[:password_confirmation])
if @member.save
flash[:message]="Password Changed"
end
end
end
4.4 Implementasi Aplikasi Desain Antar Muka
Pada sub bab implementasi desain antarmuka ini menjelaskan beberapa form yang terlihat dalam aplikasi tersebut yang dapat menampilkan beberapa aplikasi form, didalam user interface yaitu:
4.4.1 Form Tampilan Halaman Utama
Seperti yang telah digambarkan dan dijelaskan pada bab III mengenai rancangan user interface maka implementasinya