Video Store Case Study Pada case berikut, kita akan membahas tentang sebuah toko video baru yang berminat untuk menyewakan video dalam bentuk tape dan CD untuk jangkauan pelanggan yang lebih besar. Manajemen toko berniat untuk menetapkan system operasi computer sebagai alat bantu manajemennya. Manajemen telah mempunyai beberapa program untuk bisnis kecil yang mungkin cocok digunakan dalam system video ini . Untuk menciptakan system yang baik maka toko menyewa sebuah konsultan
bisnis
analis
untuk
menjelaskan
dan
membuat
suatu
requirement yang spesifik. Toko video ini nantinya akan memiliki stock seribu video tape dan lima ratus video disk, yang akan dipesan oleh satu supplier dan mungkin supplier lain akan bertambah di waktu yang akan datang. Setiap video tape dan disk akan diberikan kode berupa barcode sehingga dapat didedeksi oleh scanner. Oleh karena itu alat untuk scanning dibutuhkan untuk melengkapi system pada saat penyewaandan pengembalian video. Selain itu member card (kartu anggota) juga akan diberikan barcode. Pelanggan
dapat
menempatkan
reservasi
pada
video
dan
dikumpulkan untuk tanggal yang spesifik. Oleh karena itu system harus mempunyai
system
pencarian
yang
fleksibel
untuk
menjawab
permintaan keterangan video dari pelanggan, termasuk keterangan mengenai video yang tidak ada ( tapi mungkin dapat dipesan nanti ).
• Requirement 1. Toko video menyimpan barang dalam tempat penyimpanan yang cukup luas untuk stock video yang ada. Beberapa film tersedia dalam bentuk video tape dan disk. 2. Video tape dalam format Beta atau VHS dan video disk dalam format DVD 3. Masing-masing film mempunyai periode penyewaan tertentu ( dalam hari ) dengan harga yang ditentukan dalam setiap periode. 4. Toko
video
harus
bisa
segera
menginformasikan
jumlah
ketersediaan barang yang dapat disewa kepada pelanggan baik dalam disk maupun tape untuk setiap permintaan (kondisi untuk setiap tape dan disk harus diketahui dan di dokumentasikan). 5. Setiap pelanggan diharuskan mempunyai member card ( dengan barcode ) dfan digunakan setiap kali penyewaan ( database diperoleh dari barcode yang di-scanning ). 6. Video dan member card di scan untuk melihat database mengenai pelanggaran
dan
keterlambatan
dalam
pengembalian.
Jika
pelanggan tidak dalam predikat pelanggar, maka pelanggan dapat meminjam maksimal 8 video setiap kali peminjaman. Jika predikat pelanggan tidak dapat dipercaya, maka hanya dapat meminjam 1 video untuk setiap periode peminjaman. Pembayaran dapat dilakuakan dengan tunai, kartu kredit atau transfer elektronik. 7. Dalam setiap penyewaan (dilihat dari record pelanggan) waktu meminjam dan waktu pengembalian dijadikan dalam satu record dengan identifikasi dari karyawan, dan setiap record penyewaan dilakukan terpisah dalam setiap penyewaan.
• Aktor Dilihat
dari
requirement,
maka
actor
yang
terlibat
adalah
pelanggan (customer) dan karyawan (employee). Karena setiap record pelanggan diidentifikasi
berdasarkan barcode dari member card. Oleh
karena itu customer dapat diwakilkan dengan member card yang discan, atau dengan kata lain scanning device-lah yang bersentuhan langsung dengan system. Berdasarkan keadaan diatas, dapat dikatakan actor yang terlibat adalah scanning device dan Employee.
Scanning Device
Employee
Gambar 1. Aktor
• Use Case Dapat dilihat dari requirement yang ada, beberapa aktivitas yang mungkin terjadi dan actor yang terlibat juga use case yang digunakan untuk aktivitas ini..
Req# Requirement 1
Aktor
Pelanggan dapat menanyakan Customer
Answers
ketersediaan
Enquiry
employee
barang akan
dan (Scanning
menjawab Device),
ketersediaan barang. 2
Use Case
Pelanggan video
dapat
dengan
Employee menyewa Scanning
Rent Video
menggunakan Device
member card 3
Pelanggan video
mengembalikan Scanning
juga
Return Video
menggunakan Device
member card 4
Employee
akan
memesan Employee
Order Video
video kepada bagian gudang penyimpanan 5
Pelanggan
dapat
video terlebih dahulu 6
memesan Scanning Device
Reserve Video
Pelanggan diberikan pelayanan Employee
Maintain
tentang member card
Customer
Answer enquiry
Rent Video
Return Video
Order Video
Reserve Video
Maintain Customer
Gambar 2. Use Case
• Use Case Diagram Sesuai dengan daftar use case diatas, maka dapat disusun use case diagram sebagai berikut :
Rent
Scanning
Reserve
<depends >
Return
Employ Order Video
Maintain
Answer
Gambar 3. Use Case Diagram
•
Narrative Specification : Use Case
Rent Video
Brief
Pelanggan menginginkan untuk menyewa video tape
Description
atau disk baik secara langsung dari rak penyewaan atau pun yang telah dipesan sebelumnya. Kemudian memastikan pelanggan tidak berpredikat pelanggar, dan memastikan bahwa tape/ disk hanya disewakan pada satu pelanggan pada waktu yang bersamaan. Jika tidak dikembalikan dalam waktu yang telah ditentukan , maka surat peringatan akan dikirim kepada pelanggan.
Actors
Employee, Scanning Device
Precondition
Video Tape atau disk layak untuk dipinjam, pelanggan mempunyai member card, scanning device bekerja denga baik dan employee menguasai system dengan baik
Main row
Pelanggan
akan
menanyakan
kepada
Employee
tentang ketersediaan video/disk (termasuk yang telah dipesan) atau mungkin mengambil tape dari rak. Kemudian video dan member card di-scan , dan setiap pelanggaran
yang
dilakukan
atau
perincian
keterlambatan didapat dari database oleh employee. Jika
pelanggan
tidak
dalam
predikat
pelanggar,
sehingga pelanggan dapat menyewa maksimal 8 video, tetapi jika predikat pelanggan “tidak dapat dipercaya” hanya dapat meminjam 1 buah video untuk setiap kali peminjaman. Untuk setiap kali pembayaran dilakukan
update data untuk gudang, video dan tape diserahkan berikut tanda terima penyewaan. Pelanggan dapat membayar tunai, dengan kartu kredit atau dengan transfer. Setiap kali rental record disimpan ( dalam account
pelanggan
pengembalian
)
bersama
tanggal dengan
peminjaman
dan
identifikasi
yang
dilakukan oleh Employee. Suatu record dibuat terpisah untuk masing-masing penyewaan video. Use case akan memberikan peringatan keterlambatan apabila video belum dikembalikan setelah terlambat 2 hari dari waktu pengembalian
yang telah ditetapkan,
dan peringatan kedua dikeluarkan setelah dua hari berikutnya ( pada saat itu predikat customer adalah “pelanggar”) Alternative Flows
• Pelanggan yang tidak memiliki member card Dalam hal ini use case akan “maintain customer” yang akan aktif untuk memberikan member card baru • Ada
pelanggan
yang
ingin
menyewa
banyak
video/disk • Tidak ada yang dapat disewakan karena pelanggan berpredikat “pelanggar”. • Video dan member card tidak dapat discan karena terdapat cacat atau kerusakan. • Pembayaran dapat dilakukan dengan transfer atau kartu kredit ternyata ditolak.
Postconditions Video telah disewakan dan database telah diperbaharui
•
Activities Req# Activity 1
Use case
Customer barang
menanyakan
dan
employee
ketersediaan Answer enquiry memberikan
jawaban berdasarkan database 2
Menyewa video
Rent Video
3
Mengembalikan Video
Return Video
4
Memesan
video
kepada
gudang Order Video
penyimpanan 5
Customer
memesan
video
terlebih Reserve video
dahulu 6
Memberikan member card
pelayanan
tenyang Maintain customer
Scan Customer Card
Verify Customer
Scan Video Medium [is delinquent]
Initiate Rent Transaction
[is unrliable] [deposit refused]
Scan Customer Card [More than8 video] [8 videos or less]
Create Rental Record for Each Video
Scan Customer Card [add deposit]
Accept Payment
Update Stock
Print Receipt
Commit Rent Transaction
Gambar 4. Activity Diagram •
Menentukan Class Berikut ini adalah kebutuhan untuk system video store , kemudian menentukan class-nya. 1. Video store menyimpan koleksi video/disk dalam perpustakaan yang besar dari judul-judul film terbaru dan popular. 2. Video tape dalam bentuk “Beta” atay “VHS”, sedangkan Video Disk dalam bentuk ‘DVD”.
3. Setiap film memiliki masa peminjaman masing-masing ( yang dinyatakan dalam hari ), dengan biaya peminjaman untuk masa tersebut. 4. Sistem video store harus dapat memberikan jawaban atas permintaan ketersediaan film dari jumlah tape atau disk yang tersedia untuk dipinjam (kondisi terkini dari setiap tape dan disk harus diketahui dan di data) Pernyataan pertama memiliki sedikit kata benda, tapi hanya beberapa diantaranya yang dapat dijadikan class. Video store bukan sebuah class , karena seluruh sistemnya adalah tentang video store (hanya akan ada satu objek dari class tersebut dalam database yang dinamakan singleton class). Kemudian, pengertian tentang persediaan dan pustaka terlalu umum untuk dijadikan class, setidaknya pada tahap ini. Class yang tepat tampaknya adalah MovieTittle, VideoTape dan
VideoDisk. Pernyataan kedua menjelaskan spesialisasi tambahan pada video tape dan video disk. Kita dapat mengajukan tiga bentuk class baru, yaitu : BetaTape, HVSTape dan DVDDisk. Bagaimanapun juga, karena hanya ada satu jenis video disk, kita tidak memerlukan
VideoDisk dan DVDDisk pada model akhirnya. Bentuk yang akan ada pada tahap akhir spesialisasi adalah video tape
dan video disk. Perlu
diperhatikan bahwa kita juga belum terlalu yakin jika BetaTape dan HVSTape memiliki perbedaan atribut (terlepas dari faktanya bahwa yang satu adalah Beta dan yang lainnya adalah VHS). Pernyataan ketiga menyatakan bahwa setiap judul film memiliki kondisi peminjaman. Bagaimanapun juga tidak jelas dengan apa yang dipahami dengan “film” – judul film atau media film (tape atau disk)?
Kita perlu mengklarifikasi hal ini kepada pelanggan. Sementara itu, kita mungkin ingin menyatakan RentalConditions sebagai fuzzy class daripada menyimpan masa peminjaman dan biaya peminjaman dalam judul film atau media film. Pernyataan
terakhir
meyakinkan
kita
bahwa
BetaTape,
HVSTape dan DVDDisk (atau VideoDisk) adalah class yang tepat. Kita perlu menyimpan informasi tentang kondisi terkini dari setiap tape dan disk. Bagaimanapun juga, atribut seperti video_condition atau
number_currently_available dapat secara umum dinyatakan dalam tingkat
abtraksi
class
yang
lebih
tinggi
(bisa
dinyatakan
dalam
VideoMedium) dan diturunkan dalam bentuk subclass (seperti VHSTape). Relevant Class
Fuzzy Class
MovieTittle
RentalConditions
VideoMedium VideoTape VideoDisk (atau DVDDisk) BetaTape VHSTape
•
Attribute Berikut ini adalah kebutuhan tambahan : 1. Biaya rental berbeda-beda tergantung dari jenis media film: tape atau disk ( tapi sama untuk kedua kategori tape: Beta atau VHS) 2. Meskipun DVD disk hanya satu-satunya jenis media disk yang ada,
pengguna
ingin
agar
system
dapat
dengan
mudah
menyesuaikan kebutuhan yang akan datang dari jenis media film dalam bentuk disk. 3. Karyawan dari video store harus dapat mengingat dengan mudah kode
dari
film
menggunakan
popular
kode
film,
terbaru. daripada
Mereka judul
secara
film,
berkala
untuk
dapat
menemukan film. Ini adalah cara yang baik karena beberapa judul film bisa ada lebih dari satu rilis oleh sutradara berbeda. Pernyataan pertama menjelaskan kondisi peminjaman berbeda dari VideoTape dan VideoDisk dengan film yang sama. Ini sudah tepat, oleh karena itu RentalConditions adalah class yang berbeda (untuk dihubungkan dengan class VideoTape dan VideoDisk). Pernyataan kedua menyatakan kebutuhan class VideoDisk dan
DVDDisk.
Sebuah
generalisasi
hierarki
yang
berasal
dari
VideoMedimum cukup mudah dipahami. Pernyataan ketiga menambahkan Video_Code (sebagai kunci attribute) dan director pada class MovieTitle. MovieTitle <
> movie_code : String movie_title : String director : String / is_in_stock : Boolean
RentalConditions rental _period_in_days : Integer rental_charge_per_days :
VideoMedium video_condition : Byte $ percentage_excellent_condition :
VideoTape
BetaTape
Gambar 5. Spesifikasi Class
VideoDisk
VHSTape
DVDDisk
MovieTitle <> movie_code : String Movie_title : String director : String 1 / is_in_stock : Boolean
VideoMedium Video_condition : Byte 0 $ percentage_excellent_condition : Integer 1
available
apply 1 RentalCondition Rental_period_in_days : Integer rental_charge_per_period : Currency
VideoTape Is_tape_over : Boolean
Betatape
VideoDisk different_languages : Boolean different_endings : Boolean
VHSTape
DVDDisk
Gambar 6. Spesifikasi Generalisasi Gambar 6 merupakan pengembangan model class untuk video store. Hirarki generalisasi menjelaskan bahwa videominimum
dapat
berupa VideoTape atau VideoDisk. VideoTape dapat berupa betatape atau VHSTape. VideoDisk dapat berupa DVDDisk (saat ini. VideoDisk pasti berupa DVDDisk, tetapi kita berasumsi bahwa subclass-subclass baru dari VideoDisk akan muncul di masa yang akan datang). VideoMedium, VideoTape dan VideoDisk merupakan class-class abstrak (ditunjukkan
dengan
garis
bawah
pada
namanya).
Objek-objek
VideoMedium berada dalam class BetaTape, VHSTape, dan DVDDisk.
Oleh karena itu, sebagai contoh asosasi available dalam keadaan sesungguhnya menghubungkan sebuah objek MovieTitle kesatu atau lebih objek-objek kongkret dari class VideoMedium (contoh ke objekobjek BetaTape, VHSTape, dan DVDDisk). Keadaan yang sama berlaku untuk asosiasi apply. Tetapi dalam kaitannya
dengan
ketidakefisiensian
asosiasi pada
apply,
modelnya.
kita Kita
dapat tahu
melihat
dari
adanya
apa-apa
yang
dibutuhkan oleh Video Store bahwa kondisi-kondisi peminjamannya berbeda untuk kaset Video dan CD Video untuk judul video yang sama. Tetapi semua kaset dari judul yang sama dan semua CD dari judul yang sama mempunyai kondisi peminjaman yang sama. Ini berarti sebuah objek dari rental condition akan lebih baik bila diasosiasikan dengan objek-objek dari class-class
VideoTape dan VideoDisk. Tetapi untuk
saat ini kita masih akan bergantung dengan ketidakefisiensian tersebut. Movie Title Available
Rent out (quantity)/subtract item [last item]
Not In Stock
Return item (quantity)/subtract item [no item] order item (quantity)
Put on shelf (quantity) Replenish stock (quantity)
In Stock
Ordered
Order item (quantity) [insufficient stock]
Reserved
[no more reserved]
reserved (medium type)/update number reserved
Gambar 7. Statechart diagram untuk class MovieTittle
Not Reserved
Statechart untuk Movie-Title yang ada pada gambar 7 diagram tersebut menunjukkan cara yang berbeda untuk melakukan transisi. Transisi diantara pernyataan Available dan Not in Stock menetapkan parameter nama action dan kondisi guarded. Dengan kata lain, transisi antara state Reserved ke state Not Reserved kurang pernyataan event pemicu. Hal tersebut dipicunya oleh selesainya aktifitas di state Reserved, dengan catatan bahwa kondisi (No more Reserved) True. •
Model Generalisasi OODB Perubahan bentuk dari UML ke pada ODB penyamarataan model ditunjukkan di dalam gambar 8.8. UML kelas RentalConditions diubah untuk suatu abstrak ODB kelas. ODB kelas VideoMedium berisi atribut rental_cond dari jenis RentalConditions. Atribut itu, bersama-sama dengan properties Videomedium lain, menerima inherited menuju ke beton pada pokoknya dari bagan inherited (yaitu betatape, VHStape, dan DVDdisk).
•
Database Design <>
Video medium Video condition char $ persentage_excellent_condition : flot rental_cond : rentalconditions movie_title : movie title
<<EXTENDS>>
<<EXTENDES>>
<>
Video Title <> movie_code : String movie_title : String director : String / is_in_stock : Boolean video_medium : set
<>
<>
Video Tape Is_taped_over : Boolean
Video Disk different_languages : Boolean different_endings : Boolean
<<EXTENDS>> <<EXTENDS>>
<<EXTENDS>>
<>
<>
<>
Beta Tape
VHS Tape
DVD Disk
Gambar 8. Mapping Generalizations to ODB design (video store) Kesukaran yang utama manakala pemecahan contoh ini hanya secara
tidak
langsung
dihubungkan
kepada
penyamarataan
yang
memetakan. Tantangan yang utama berhubungan dengan SQL : 1999 pembatasan satu nilai dari suatu referensi “scoped” hanya satu table didalam lingkup dari suatu tipe referensi dan lingkup harus dikenal secara statis pada waktu kumpulan.
Sebelumnya, menyiratkan
kita
bahwa
berhubungan
sebuah
objek
Movietitle
ke
Videomedium
Moviemedium, yaitu
betatape,
VHStape, atau DVDdisk, akan menjadi dihubungkan ke Movietitle. Sekarang
kita
wajib
menghubungkan
ke
dalam
Movietitle
untuk
menangani masalah itu. Solusi yang lengkap ditunjukkan di dalam gambar 9. •
Relational Database Model
<<structured type>>
<<stuctured type>>
RentalConditions TY rental_period_in_days : Integer rental_charge_per_period : money
Video Medium TY Video_condition : char rental_cond : RentalCondition TY
<<strutured type>>
movie Title TY movie_code : Char (10) movie_title : varchar(100) director : varchar(30)
<<structured type>>
<<structured type>>
VideoDisk TY differnt_langages : Boolean different_ending : Boolean
VideoTape TY Is_taped_over : Boolean
OF OF OF
<<structured type>>
<<structured type>>
DVDDisk Movie_title : ref(MovieTitle)
Beta Tape Movie_title : ref(MovieTitle) <<structured type>>
Movie Title beta_tape : set(ref(BetaTape)) vhs_tape : set(ref(VHSTape)) dvd_disk : set(ref(DVDDisk))
OF <<structured type>>
VHSTape Movie_title : ref(MovieTitle)
Gambar 9. Mapping Generalizations ORDB (video store)
• Database Design MovieTitle Char(10) varchar(100) varchar(30) bit
movie_code = movie_code movie_code movie_title director is_in_stock
not null movie_code = movie_code not null null not null
movie_code = movie_code BetaTape beta_id identity movie_code char(10) video_condition char(1) rental_period_in_days smallint rental_charge_per_period numeric is_taped_over bit
not null not null null not null not null not null
DVDDisk dvd_id identity movie_code char(10) video_condition char(1) rental_period_in_days smallint rental_charge_per_period numeric different_languages bit different_endings bit
VHSTape vhs_id identity movie_code char(10) video_condition char(1) rental_period_in_days smallint rental_charge_per_period numeric is_taped_over bit
not null not null null not null not null not null
Gambar 10. Mapping Generalizations to RDB Design (video store) RDB disain (untuk Sybase RDBMS) di dalam gambar 10 berisi bagian untuk masing-masing yang menyangkut ketiga kelas dasar (betatape, VHStape, dan DVDdisk). Tabel menyalin informasi tentang Video_condition, rental_period_in_days, dan rental_charge_per_period dapat direkam per tape atau disk.
not null null null not null not null not null not null
Kolom
is_taped_over,
different_languages,
different_endings
dan
is_in_stock bit. Menurut definisi, jenis bit tidak mengijinkan nilai batal (bit adalah salah satu dari nol atau satu). Kolom di dalam is_in_stock adalah mulai benar (satu) jika ada paling sedikit satu disk atau tape dengan movie tertentu dalam persediaan. Ini adalah informasi yang tidak bermanfaat jika suatu pelanggan hanya tertarik akan salah satu dari ketiga Videomedium. Suatu solusi lebih baik adalah untuk mempunyai tiga kolom bit atau untuk berasumsi bahwa informasi ini tidak dapat disimpan, data itu diperoleh kapan saja saat pelanggan meminta suatu tape atau disk. Atribut yang statis yang number_curently_available adalah tidak disimpan di dalam table manapun di dalam disain kita. Satu-satunya table yang dapat disimpan dengan tepat adalah Movietitle. Jika disimpan, terdapat pertimbangan yang sama perihal atribut tersebut, yaitu is_in_stock akan mempergunakan/meminta.
Video Store (Case Study)
Video store - Analisis
Problem statement
Find Entity Classes
Draw use Case Diagram Write Use Case Specification
Find Attributes
Draw Generalization
Draw Activity Diagram
Draw Statechart Diagram
Map Generalizations to ODB Design
Map Generalizations to ORDB Design
Map Generalizations to RDB Design