Kamis, 27 Oktober 2011

BAB IV

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

Tidak ada komentar:

Posting Komentar