BAB 3
ANALISIS DAN PERANCANGAN PROGRAM
3.1 Latar Belakang Perusahaan IBM 3.1.1 Sejarah Perusahaan
Perusahaan IBM (Indonesia Bisnis Mandiri) adalah sebuah perusahaan yang bergerak dibidang trading (perdagangan) kertas, berdiri pada bulan Oktober 1999. Latar belakang terbentuknya perusahaan IBM ini dikarenakan melihat banyaknya sekolah, kampus, perusahaan-perusahaan, bahkan bidang usaha kecil atau menengah ke bawah yang membuat diktat-diktat, buku panduan, booklet untuk seminar,fotocoy dan kebutuhan lain-lainnya. Untuk itulah Direktur Perusahaan IBM dan rekan-rekannya pada saat itu milihat adanya suatu peluang bisnis dan memutuskan untuk membuka suatu usaha, di mana bisa mensuplai kebutuhan kertas ke dalam lingkungan sekolah, kampus, perusahaan-perusahaan, bahkan bidang usaha kecil atau menengah ke bawah.
Perusahaan IBM bukanlah perusahaan yang bergerak dalam bidang pembuatan kertas, yang dilakukan perusahaan ini adalah melakukan menyuplai kertas dengan ukuran yang bermacam-macam atau dapat disebut dengan istilah “cut size” . Perusahaan IBM melakukan usaha pemotongan kertas dengan berbagai macam ukuran, misalnya ukuran A3, A4, Folio, HVS, Plano, tidak hanya terbatas ukuran-ukuran standar tapi pemesanan dengan ukuran tertentu dapat dilakukan sesuai kebutuhan dan permintaan konsumen.
3.1.2 Struktur Perusahaan
Di awal berdirinya Perusahaan IBM memiliki beberapa anggota orang saja. Saat ini jumlah pegawai Perusahaan IBM sudah mencapai ke level job description.
Semua yang berhubungan tentang keanggotaan Perusahaan IBM diatur dalam Anggaran Dasar dan Anggaran Rumah Tangga.
Struktur Perusahaan IBM 2000-2007
Direktur : Halim Kurniadi Wakil Direktur : Daryanto Sekretaris : Aswarni Kepala bagian Penjualan & Marketing : Hoky Kepala bagian Keuangan : Tine Haryani Kepala bagian Pengiriman : Benny
Kepala Gudang : Handarto
Kepala Administrasi : Herman
3.1.3 Misi Perusahaan
Perusahaan IBM (Indonesia Bisnis Mandiri) mempunyai misi agar masyarakat lebih mengenal faedah dari kertas “cut size” karena kertas-kertas “cut size” tidak hanya diaplikasikan untuk fotocoy saja, tapi bisa untuk fax, scan, dan komputer. Selain itu Perusahaan IBM mempunyai misi untuk bisa menyuplai kertas “cut size” kekonsumen baik di kota bahkan sampai kepelosok daerah, dengan cepat, efisien dan optimal.
3.1.4 Visi Perusahaan
Semakin banyak Toko, usaha-usaha, kantor, perusahaan yang menggunakan berbagai macam ukuran kertas untuk kepentingan perusahaannya baik itu untuk kebutuhan printing, penggandaan dokumen, atau pencetakan dalam bentuk tertentu, hal ini yang menjadikan sebuah peluang bisnis besar.
3.1.5 Tugas dan Tanggung Jawab Direktur
1. Mengkoordinir seluruh kinerja kerja pegawai
2. Bertanggung jawab terhadap seluruh kegiatan perusahaan 3. Memimpin rapat
Wakil Direktur
1. Menggantikan tugas ketua disaat ketua berhalangan hadir atau ditunjuk oleh ketua
2. Melakukan perpajakan
Sekretasis
1. Mencatat notulen rapat atau pertemuan dengan klien 2. Mengatur jadwal rapat.
3. Penghubung antara klien dengan Direktur
Kepala bagian Penjualan & Marketing
2. Bertanggung jawab terhadap pemesanan barang
3. Mengkooridnir para sales dalam melakukan aktivitas penjualan
Kepala bagian Keuangan (Kasir dan Akuntan)
1. Kasir : Bertanggung jawab atas aktifitas keuangan perusahaan seperti gaji pegawai, pembelian bahan-bahan yang diperlukan perusahaan (resource), penagihan hutang terhadap konsumen atau pelanggan, dll
2. Akuntan : Bertanggung jawab atas pembuatan neraca rugi laba perusahaan, pembukuan keluar masuk keugangan, membuat renacan budgeting perusahaan serta pengontrolan terhadap seluruh kinerja perusahaan.
Kepala bagian Pengiriman
1. Bertanggung jawah atas pengiriman barang ke konsumen
2. Bertanggung jawah atas produk-produk yang dihasilkan oleh perusahaan dalam keutuhan
3. Mengatur jadwal pemgiriman
Kepala Gudang
1. Bertanggung jawab atas keluar masuknya barang dari gudang 2. Bertanggung jawab atas kinerja para supir dan pekerja kasar.
Kepala Administrasi
1. Mengatur biaya yang dikeluarkan oleh para supir untuk
melakukan pengangkutan barang dari gudang ke tempat tujuan, misal biaya bensin, biaya tol, parkir.
3.1.6 Lokasi Perusahaan dan Warehouse (gudang)
Lokasi Perusahaan :
Jl. Dr Susilo Raya No. C-2 Grogol
Jakarta Barat 11450 Indonesia
Telp. 021 5644942
Lokasi Warehouse :
Jalan Denpasar No. 17 & 18 Cilincing
Jakarta Utara
Indonesia
3.2 Perancangan Software
3.2.1 Perancangan Perangkat Lunak
Perangkat lunak atau piranti lunak adalah :
1. Program komputer yang berfungsi sebagai sarana interaksi antara pengguna dan perangkat keras, Penerjemah perintah-perintah yang
dijalankan pengguna komputer untuk diteruskan ke atau diproses oleh perangkat keras.
2. Perintah (berupa sebuah program) yang bila dieksekusi memberikan sebuah fungsi dan unjuk kerja seperti yang diinginkan oleh si pembuat.
3. Struktur data yang memungkinkan program memanipulasi informasi secara proporsional.
Menurut Sommerville (2001, p6), perancangan perangkat lunak adalah disiplin perancangan yang berhubungan dengan semua aspek dari produksi perangkat lunak dari tahap awal spesifikasi sistem sampai dengan pemeliharaan setelah sistem dalam tahap berjalan.
Perangkat lunak ini dibagi menjadi 3 tingkatan:
1. Tingkatan program aplikasi (application program misalnya Microsoft Office).
2. Tingkatan sistem operasi (operating system misalnya Microsoft Windows).
3. Tingkatan bahasa pemrograman (yang dibagi lagi atas bahasa pemrograman tingkat tinggi seperti Pascal dan bahasa pemrograman tingkat rendah yaitu bahasa Rakitan).
Perangkat lunak umumnya digunakan untuk mengontrol perangkat keras, melakukan perhitungan (memproses), berinteraksi dengan perangkat lunak yang lebih mendasar lainnya seperti sistem operasi, dan bahasa pemrograman, dan lain-lain.
Menurut Sommerville (2001, p6), perancangan perangkat lunak adalah disiplin perancangan yang berhubungan dengan semua aspek dari produksi perangkat lunak dari tahap awal spesifikasi sistem sampai dengan pemeliharaan setelah sistem dalam tahap berjalan.
3.2.2 Daur Hidup Perangkat Lunak
Salah satu model perancangan perangkat lunak adalah dengan menggunakan model air terjun (waterfall model). Menurut Sommerville (2001, p45), tahap-tahap utama dalam model air terjun yang menggambarkan aktivitas dasar pengembangan perangkat lunak adalah sebagai berikut:
Gambar 3.1 Daur Hidup Perangkat Lunak (Sumber: Sommerville, 2001, p45)
a. Analisis dan Penentuan Kebutuhan (Requirements)
Tugas, kendala dan tujuan sistem ditentukan melalui konsultasi dengan pemakai sistem. Kemudian ditentukan cara yang dapat dipahami, baik oleh user maupun penulis. Dalam hal ini menggunakan bahasa pemrograman Delphi.
b. Desain Sistem dan Perangkat Lunak (Design)
Proses desain sistem terbagi dalam kebutuhan perangkat keras dan perangkat lunak. hal ini menentukan arsitektur perangkat lunak secara keseluruhan. Desain perangkat lunak mewakili fungsi sistem perangkat lunak dalam suatu bentuk yang dapat ditransformasikan ke dalam satu atau lebih program yang dapat dieksekusi.
Penulis membuat sebuah desain program menggunakan Delphi dan membuat flowchart jalannya program
c. Implementasi dan Pengujian Unit (Implementation)
Dalam tahap ini, desain perangkat lunak direalisasikan dalam suatu himpunan program atau unit-unit program. Pengujian unit mencakup kegiatan verifikasi terhadap suatu unit sehingga memenuhi syarat spesifikasinya.
d. Integrasi dan Pengujian Sistem (Verivication)
Unit program secara individual diintegrasikan dan diuji sebagai satu sistem yang lengkap untuk memastikan bahwa kebutuhan perangkat
lunak telah terpenuhi. Setelah pengujian, sistem perangkat lunak disampaikan kepada pengguna.
e. Pengoperasian dan pemeliharaan (Maintenance)
Secara normal, walaupun tidak selalu diperlukan, tahap ini merupakan bagian siklus hidup yang terpanjang. Sistem telah terpasang dan sedang dalam penggunaan. Pemeliharaan mencakup perbaikan kesalahan yang tidak ditemukan dalam tahap-tahap sebelumnya, meningkatkan implementasi unit-unit sistem dan mempertinggi pelayanan sistem yang disebabkan oleh penemuan kebutuhan baru.
3.3 Alat Bantu Perancangan
3.3.1. State Transition Diagram (STD)
State transition diagram menggambarkan jalannya suatu program dalam kondisi tertentu. Notasi yang digunakan adalah sebagai berikut.
State menunjukkan satu atau lebih kegiatan atau keadaan atau atribut yang menjelaskan bagian tertentu dari program.
Anak panah berarah menunjukkan perubahan state yang disebabkan oleh aksi (action) terhadap kondisi (condition) tertentu. Kondisi merupakan suatu event pada lingkungan eksternal yang dapat dideteksi oleh suatu sistem, misalnya sinyal, interupsi, atau data. Hal ini akan menyebabkan perubahan dari suatu state ke state yang lainnya atau satu aktivitas ke aktivitas lainnya. Aksi merupakan hal yang dilakukan oleh sistem jika terjadi perubahan state atau merupakan reaksi terhadap kondisi. Aksi dapat menghasilkan output, tampilan pesan pada layar, kalkulasi atau kegiatan lainnya.
3.3.2. Pseudocode
Pseudocode adalah suatu bahasa pemprograman yang informal dan sangat fleksibel, yang tidak dimaksudkan untuk dieksekusi pada mesin, tetapi hanya digunakan untuk mengatur pemikiran programer sebelum melakukan pengkodean (Page-Jones.1980, p11).
Pseudocode dapat merupakan alternatif lain dalam perancangan perangkat lunak di samping alat-alat bantu berupa diagram. Tidak ada standarisasi dalam hal penulisan pseudocode. Pemprogram dapat menulisnya dalam bahasa apa saja yang mereka suka, dipadukan dengan bahasa pemprograman tertentu. Pemprogram juga bebas menggunakan teknik dan aturannya sendiri. Aturan untuk menulis pseudocode sebagai berikut:
• Pernyataan ditulis dalam bahasa Inggris sederhana.
• Setiap perintah ditulis pada baris tersendiri.
digunakan untuk menandai struktur kontrol khusus.
• Setiap bimbingan perintah ditulis dari atas ke bawah dengan hanya satu awal dan satu akhir program.
• Kumpulan pernyataan-pernyataan dapat dibentuk dalam modul-modul yang diberi nama tertentu.
3.4 Permasalahan yang Dihadapi Perusahaan
Sistem persediaan yang sekarang sedang dijalankan di Perusahaan IBM tidak memperhatikan biaya-biaya yang timbul akibat melakukan penempatan barang (stuffing plan). Hal ini menyebabkan biaya yang harus dikeluarkan perusahaan hanya untuk membiayai ongkos transport besar dan juga terjadi pemborosan waktu dalam pengiriman. Stuffing plan yang dilakukan pada perusahaan ini juga tidak memakai sistem apapun, di mana para pegawai bagian pengangkutan dan penempatan barang tidak memperhatikan posisi yang baik dalam peletakan barang di dalam mobil box. Stuffing plan yang dilakukan perusahaan ini sering kali tidak optimal, banyak terdapat ruang kosong yang seharusnya bisa diminimalisasi, sehingga terjadi pemborosan tempat dalam mobil box.
3.5 Pemecahan Masalah
Dari permasalahan di atas maka penelitian ini hendak mengembangkan software yang dapat mengoptimalisasi penempatan benda di dalam mobil box. Sehingga dengan software ini dapat menghasilkan solusi untuk permasalahan di
atas. Dengan permasalahan yang telah diketahui, maka software yang akan dikembangkan memiliki kemampuan sebagai berikut :
1. Memaksimalisasi penggunaan ruang yang tersedia
Sebagai solusi dari permasalahan di atas yaitu bagaimana menempatkan barang ke dalam mobil box adalah memaksimalkan penggunaan ruang yang tersedia dan meminimalkan yang tidak terpakai pada mobil box tersebut dengan beberapa batasan-batasan yang ada.
2. Batasan barang
Diperlukan parameter-parameter untuk batasan barang dan tempat antara lain :
1. Dimensi
Barang berbentuk kotak dan memiliki panjang, lebar serta tinggi, dalam kasus perusahaan ini, barang yang akan diletakkan kedalam mobil box mempunyai tinggi yang sama. Dalam penempatannya di dalam mobil box, barang bisa diputar untuk mencari kemungkinan akan posisi yang terbaik untuk melakukan penempatan (panjang menjadi lebar dan lebar menjadi panjang).
2. Ukuran
Setiap barang memiliki ukuran yang berbeda, sehingga besar benda tidak boleh lebih besar dari mobil box tersebut.
Diharapkan dari pembuatan software ini didapat hasil yang lebih cepat, akurat, efisien serta optimal dalam melakukan peletakan barang dalam mobil box. Sehingga tidak banyak waktu yang terbuang serta meminimalisasi ruang kosong yang seharusnya bisa ditempati barang.
3.6 Perancangan Sistem
3.6.1 Diagram Transisi Menu Aplikasi
Di bawah ini adalah diagram transisi keadaan sistem.
Diagram 3.1 STD Menu View
Diagram 3.2 STD Menu Add Menu Utama
View
Available Box Log
Open Log Save Log
Klik Klik Klik Klik Klik Menu Utama View Klik
Diagram 3.3 STD Menu Open File
Diagram 3.4 STD Menu Reset
Diagram 3.5 STD Menu Create Menu Utama Open File Load File Klik Klik Menu Utama Reset Klik Menu Utama Create Klik
Diagram 3.6 STD Menu Run
Diagram 3.8 STD Menu Layar Output
3.6.2 Rancangan Menu Aplikasi
Dibawah ini adalah perancangan untuk menu aplikasi yang akan dibuat softwarenya, didalam menu ini akan dijabarkan tombol-tombol apa saja yang ada, serta urutan kejadian yang terjadi setelah penekan tombol dilakukan.
Menu Utama Run Run Time Klik Klik Layar Output Menu Utama 2 D 3 D Klik Klik Klik
Gambar 3.2 Rancangan Menu Aplikasi Menu Utama
Add Open File Reset Create Run
View
Available Box
Log
Open Log Save Log
Load File
Layar Output
2 D
3 D
3.6.3 Perancangan Layar
Gambar 3.3 Tampilan Layar Program Menu Utama View
Layar Tampilan Box
Panjang Lebar Jumlah List Panjang Lebar Option Run Reset Besar Papan Panjang Lebar Create Add Open File Cutting Box
Pada layar ini, user bisa melakukan dua pilihan yaitu :
Pertama dengan memasukkan input panjang, lebar barang dan berapa banyak jumlah barang dengan ukuran tersebut, setelah itu di bagian bawah ada bagian untuk melakukan input besar papan, ukuran panjang dan lebar papan, dan di bagian layar tampilan (visualisasi) akan muncul gambar dengan ukuran papan yang kita input atau dengan cara kedua yaitu dengan open file, setelah tombol open file ditekan, maka akan keluar tampilan untuk melakukan open file, disini sudah tersedia data dalam bentuk text yang isinya adalah panjang dan lebar papan , serta panjang dan lebar barang.
Gambar 3.4 Tampilan Layar Program Menu Open File
Setelah cara pertama atau kedua dilakukan, maka selanjutnya dilakukan penekanan tombol run, disini program akan melakukan eksekusi, program akan jalan selama beberapa waktu (tergantung banyaknya jumlah barang). Setelah itu akan muncul Message Dialog yang menyatakan “Sukses” atau “Tidak”nya eksekusi program tersebut.
Open
File Name : File Type :
Open Cancel
Gambar 3.5 Tampilan Layar Program Menu Sukses
Gambar 3.6 Tampilan Layar Program Menu Gagal
Pada pojok kiri atas dari tampilan program terdapat menu view, ketika tombol view ditekan, maka akan terdapat dua pilihan yaitu “Available box” dan “log”.
Gambar 3.7 Tampilan Layar Program Menu Available Box Sukses ini … Milisecond
Confirm
OK
X
Information
Gagal Mencapai Solusi Pada Bangun ke…
OK X Available Box List Panjang Lebar X
Gambar 3.8 Tampilan Layar Program Menu Log
3.7 Perancangan FlowChart
Di bawah ini adalah perancangan FlowChart dari program yang akan dibangun.
X
Open Log Save Log Log
MULAI
Masukkan data Secara manual
Tidak
Ya
Masukkan data dengan Menekan tombol ”Open File” Masukkan data Secara manual Tekan Tombol “add” Tampilkan ke dalam ”List Barang”
Pilih File yang akan Ditampilkan
Tampilkan ke dalam ”List Barang” dan ”Layar Tampilan” A B Masukkan Ukuran Papan Masukkan ukuran barang C
Tekan tombol “Create” Tampilkan ke dalam “layar tampilan” Ya Tidak Tekan Tombol “Run” Tekan tombol “Reset” Tampilkan Hasil Eksekusi di “Layar Tampilan” Ya Tidak Tampilkan
“Gagal untuk mencapai solusi pada barang ke..”
Tampilkan “Sukses in .. Milisecond” Apa semua data benar? B Apa semua barang tereksekusi dengan sukses? D E A C
Diagram 3.9 Flowchart Tekan tombol “Ok”
Pilih menu “View”
Ya Tidak Pilih Menu “Available Box” Melakukan “Save Log” Melakukan “Open Log” Klik Ukuran Barang yang terdapat
di list
Menampilkan data hasil eksekusi program
Selesai Pilih menu
box?
3.8 Perancangan Spesifikasi Proses
Untuk memperjelas proses-proses yang terjadi pada setiap modul terdapat dalam program,maka akan diperinci dengan spesifikasi modul di bawah ini :
Modul Inisialisasi BEGIN
Set nilai awal untuk semua variabel dan komponen. END
Modul add
Menunggu user memasukkan nilai inputan panjang, lebar dan jumlah barang
Menunggu user menekan tombol ‘ADD’ BEGIN
If tombol “add” dipilih then panggil fungsi add cut box masukkan ukuran panjang dan lebar ke dalam list queue END
Modul Add_Cut_Box BEGIN
Masukkan barang ke dalam stack cut (simpan seluruh data barang kedalam array - mengambil parameter dari inputan user untuk ditaruh ke dalam list)
Panggil modul heuristic_luas END
Modul Heuristic_Luas BEGIN
Menghitung luas tiap barang Sorting barang berdasarkan Luas END
Modul create
Menunggu user memasukkan nilai inputan panjang dan lebar papan Menunggu user menekan tombol ‘CREATE’
Tampilkan secara visualisasi bentuk papan di layar tampilan BEGIN
Panggil modul Init_Cut END
Modul Init_Cut BEGIN
inisialisasi awal array penampung barang END
Modul open file
Menunggu user menekan tombol ‘Open File’ BEGIN
If tombol “open file” dipilih then tampilkan layar pilih file Pilih file
END
Modul run
Menunggu user menekan tombol ‘Run’ BEGIN
If tombol “run” dipilih then program melakukan eksekusi Panggil modul Init_Queue();
Masukkan semua data ke dalam available list END
Modul Init_Queue BEGIN
Inisialisasi Jumlah barang If ( temp <>nill) then
Panggil Modul Create_Successor();
Panggil Modul Insert_Successor_To_Open(); Else
MessageDlg(“Inputkan besar box yang diinginkan”); END
Modul Create_Successor BEGIN
Dapatkan nilai barang yang akan ditempatkan
while looping seluruh posisi benda yg bisa diletakkan di papan, masuk ke if
If (bangun = i) then ambil seluruh data barang tersebut If (p<>nil) then masuk ke for
For disini untuk menciptakan nilai heursitic untuk setiap barang
END
Modul Heuristic Sisi BEGIN
Hitung kelilingnya untuk mendapatkan posisi kotak yang dipilih akan diletakan di mana, dengan rumus (((Kel_Box - jml_kena) + (Kel_Cut - jml_Kena)) - jml_kena_bangun) + nilai_tambahan;
END
Modul Insert_Succesor_to_Open BEGIN
Memasukkan queue successor ke squeue open? END
Modul Solution BEGIN
if (Open = nil) then “gagal mencapai solusi” else “SUKSES in … Milisecond”
END
BEGIN
Memasukkan ukuran dari barang yang ada di queue Closed ke dalam Available List
END
Modul Reset BEGIN
Menghapus semua data dari inputan user maupun dari Open File END
Modul adalah sekumpulan fungsi spesifik yang mendukung satu tujuan yang lebih general.