Wecome


Click here for Myspace Layouts
Twitter Delicious Facebook Digg Stumbleupon Favorites More

Jumat, 14 Januari 2011

Cara Memilih Pemimpin Islam

Cara Memilih Pemimpin Islam
ada dua keyword yg penting di sini yaitu "pemimpin" dan "islam"
Pertama, mengenai pemimpin. Seorang pemimpin didalam islam, dia dilantik oleh Tuhan. Ketika di zaman ada nabi dan rasul., merekalah pemimpin tersebut. Tuhan menunjuk mereka melalui wahyu yg diturunkan kpd mereka dan mereka menyampaikan pada ummatnya bahwa mereka adalah utusan Tuhan, dan perjuangan pun dimulai utk menegakkan sistem Tuhan utk masa itu.
Nabi berbeda dengan Rasul. Rasul wajib menyampaikan risalahnya kpd kaumnya. Nabi tidak demikian, tetapi sekiranya ada yang mau ikut mrk, nabi itu pun menerima pengikut tsb dan mendidiknya. Jumlah Rasul lebih sedikit dari pada jumlah Nabi. Rasul jumlahnya menurut bbrp kitab 313 orang , sedangkan nabi 124.000 banyaknya.
Di zaman ketika Nabi Muhammad Sudah Wafat, Pemimpin tersebut bukan lagi nabi atau rasul. Tetapi watak perjuangannya terbagi menjadi dua, ada yg mirip watak nabi, ada yang mirip watak rasul. Mereka inilah yang disebut "Ulama Pewaris Nabi".
Ketika zamannya adalah zaman berjuang (menurut hadist, di awal kurun hijriah , sekitar 30-40 th pertama dari 100 tahun tiap kurun hijriah), Muncul Pemimpin yang di sebut Mujaddid.
Ketika di tengah atau di akhir kurun hijriah, muncullah pemimpin yg di sebut wali kutub atau ghauts.
Pemimpin2 yang tergolong mujaddid adalah : Sayidina Umar Bin Abdul Aziz, Imam Abu Hasan Ashaari, Imam Sayuti, Imam Ghazali, imam sayuti dll. Mereka berjuang memperbaiki kerusakan agama di zamannya.
Ketika di zaman Umar bin abdul aziz, sisi islam yang rusak adalah sisi pemerintahan islam, maka beliau berjuang memperbaiki segi pemerintahan islam sehingga jadilah kekhalifahan beliau kekhalifahan yg sangat dikagumi sampai hari ini.
ketika zaman imam abu hasan ashaari, segi aqidah islam di serang oleh paham muktazilah, beliau berjuang mempertahankan aqidah ahlussunnah wal jamaah dengan mengeluarkan kaidah sifat 20 dan membersihkan paham
muktazilah dari ummat islam.
ketika zaman imam syafii, terjadi permasalahan dalam menentukan hukum2 islam, terjadi perbedaan diantara mahzab imam malik yang semata2 menggunakan hadist , dgn imam hanafi yang kuat menggunakan logika. imam syafii mengeluarkan kaedah yang sampai sekarang masih digunakan, yaitu usul fiqh.
begitulah seterusnya permasalahan atau segi2 kerusakan dalam pengamalan ajaran islam setiap waktu diperbaiki oleh Tuhan dengan mengirimkan mujaddid tiap seratus tahun sekali. Dan di akhir zaman ketika pengamalan islam di semua segi kehidupan sudah rusak, maka mujaddid sekaligus khalifah terakhir yang akan dikeluarkan oleh Tuhan untuk membenahi semua kerusakan adalah Imam Mahdi.
Itulah peran mujaddid, Ulama berwatak rasul. Sedangkan Gauts, atau Kutub, adalah Ulama berwatak nabi yang turun di tengah atau di akhir kurun hijriah, biasanya beliau2 ini mengajak ummat untuk ber uzlah dan ber ibadah saja. Sebab zamannya bukan zaman berjuang. Tuhan sudah tentukan demikian, mrk pun Taat. mrk mengajak pengikutnya hanya untuk mengasingkan diri (ber uzlah) dan memperbaiki ibadah2 saja. Mereka ini misalnya, Syeikh abdul qadir jailani , syeikh abu hasan syazili, syeikh ahmad rifai dll syeikh tarikat pada umumnya
Itu dari segi peranannya. Sedangnya dari segi cara Tuhan menunjuk mereka, caranya sama. Rasulullah akan datang kepada mereka, baik dengan jalan mimpi, maupun secara yakazah (berjumpa dalam keadaan sadar dengan ruh rasulullah), kemudian rasulullah menyatakan dan melantik beliau sebagai pemimpin.
Sebagai kaedah verifikasinya, Ruh Rasulullah Tidak hanya datang ke orang ini. Ruh Rasulullah akan menemui wali wali lain untuk memberikan kabar yang sama, sehingga masyarakat bisa melihat , dari berbagai belahan bumi, orang2 yang sebelumnya tidak pernah dijumpai dan dikenali oleh yang dilantik tersebut, datang membawa berita bahwa
"Saya berjumpa rasullah pada tanggal sekian2 dan rasulullah menyebut bahwa engkau adalah mujaddid, dan saya diminta oleh Rasulullah berbaiat kepada engkau".
Kaedah verifikasi ini mesti ada. Ini adalah cara pelantikannya, Langsung dilantik oleh Rasulullah sebagai wakil dari Tuhan.
Jadi kalau mau mencari pemimpin untuk di baiat, coba cek apakah pemimpin tsb pernah (atau malah sering) berjumpa Rasulullah dan apakah ada orang lain dari belahan dunia lain yg tidak di kenali tiba2 datang membawa berita yang sama. ini kaedah yg paling simpel
Sebagai contoh, Saya bawakan kisah pemimpin yang sudah di tunjuk oleh hadist utk menaklukkan konstantinopel, namanya Sultan Muhammad Al Fateh. Ketika dia baru lahir, datang seseorang dari bukhara, uzbekistan, yaitu syeikh syamsuddin al wali mendatangi ayahnya (raja osman ghazi , CMIIW) yang waktu itu sedang berniat menyerbu pusat
kerajaan romawi timur tersebut sambil berkata, "bukan engkau yang akan menaklukkan konstantinopel, tetapi bayi yang ada dalam buaian ini". Bayi itu pun diambil untuk dididik oleh Syeikh tersebut dan pada umur 21th, apa yang dikatakannya menjadi kenyataan.

Syeikh syamsuddin al wali ini di utus oleh gurunya di bukhara dan gurunya ini mendapat pesan dari Rasulullah untuk mengutus muridnya ke turki untuk mendidik sang calon pemimpin.

ini kaedahnya. Ada juga kaedah lain utk menilai apakah seorang itu betul2 pemimpin kebenaran atau bukan, cuman agak panjang, jadi mudah2an lain kali sempat di tuliskan.

Contoh: SISTEM PENDETEKSI WAJAH MANUSIA PADA CITRA DIGITAL (PROPOSAL SKRIPSI)

Contoh:

SISTEM PENDETEKSI WAJAH MANUSIA
PADA CITRA DIGITAL

(PROPOSAL SKRIPSI)


















diajukan oleh:

NamaMhs
NIM: XX.YY.ZZZ


Kepada:

PROGRAM STUDI TEKNIK INFORMATIKA
UNIVERSITAS MUHAMMADIYAH SUKABUMI
LEMBAR PERSETUJUAN


Proposal Skripsi dengan judul

SISTEM PENDETEKSI
WAJAH MANUSIA PADA CITRA DIGITAL


yang diajukan oleh
NamaMhs
NIM: XX.YY.ZZZ


telah disetujui oleh Program Studi Teknik Informatika Universitas Muhammadiya Sukabumi (UMMI), dengan dosen pembimbing:
1. …………………………………………………………….
2. …………………………………………………………….



Sukabumi, tanggal……………………
Ketua Program Studi Teknik Informatika


Iwan Rizal Setiawan, MT.
IMPLEMENTASI SISTEM PENDETEKSI
WAJAH MANUSIA PADA CITRA DIGITAL


1. LATAR BELAKANG

Dewasa ini teknologi pengenalan wajah semakin banyak diaplikasikan, antara lain untuk sistem pengenalan biometrik (yang dapat juga dikombinasikan dengan fitur biometrik yang lain seperti sidik jari dan suara), sistem pencarian dan pengindeksan pada database citra digital dan database video digital, sistem keamanan kontrol akses area terbatas, konferensi video, dan interaksi manusia dengan komputer.
Dalam bidang penelitian pemrosesan wajah (face processing), pendeteksian wajah manusia (face detection) adalah salah satu tahap awal yang sangat penting di dalam proses pengenalan wajah (face recognition). Sistem pengenalan wajah digunakan untuk membandingkan satu citra wajah masukan dengan suatu database wajah dan menghasilkan wajah yang paling cocok dengan citra tersebut jika ada. Sedangkan autentikasi wajah (face authentication) digunakan untuk menguji keaslian/kesamaan suatu wajah dengan data wajah yang telah diinputkan sebelumnya. Bidang penelitian yang juga berkaitan dengan pemrosesan wajah adalah lokalisasi wajah (face localization) yaitu pendeteksian wajah namun dengan asumsi hanya ada satu wajah di dalam citra, penjejakan wajah (face tracking) untuk memperkirakan lokasi suatu wajah dalam video secara real time, dan pengenalan ekspresi wajah (facial expression recognition) untuk mengenali kondisi emosi manusia (Yang, 2002).
Pada kasus tertentu seperti pemotretan untuk pembuatan KTP, SIM, dan kartu kredit, citra yang didapatkan umumnya hanya berisi satu wajah dan memiliki latar belakang seragam dan kondisi pencahayaan yang telah diatur sebelumnya sehingga deteksi wajah dapat dilakukan dengan lebih mudah. Namun pada kasus lain sering didapatkan citra yang berisi lebih dari satu wajah, memiliki latar belakang yang bervariasi, kondisi pencahayaan yang tidak tentu, dan ukuran wajah yang bervariasi di dalam citra. Contohnya adalah citra yang diperoleh di bandara, terminal, pintu masuk gedung, dan pusat perbelanjaan. Selain itu juga pada citra yang didapatkan dari foto di media massa atau hasil rekaman video. Pada kasus tersebut pada umumnya wajah yang ada di dalam citra memiliki bentuk latar belakang yang sangat bervariasi.
Penelitian ini akan difokuskan pada masalah pendeteksian wajah. Dengan sistem pendeteksi wajah yang akurat, maka proses selanjutnya yaitu pengenalan wajah dapat dilakukan dengan lebih mudah.

2. IDENTIFIKASI MASALAH

Masalah deteksi wajah dapat diidentifikasi sebagai berikut:
1. Dengan masukan berupa sebuah citra digital sembarang, sistem akan mendeteksi apakah ada wajah manusia di dalam citra tersebut.
2. Sistem akan memberitahu berapa wajah yang ditemukan dan di mana saja lokasi wajah tersebut di dalam citra.

3. BATASAN MASALAH

Pada sistem deteksi wajah ini diberikan pembatasan masalah sebagai berikut:
1. Citra masukan yang digunakan adalah hitam putih dengan 256 tingkat keabuan (grayscale).
2. Wajah yang akan dideteksi adalah wajah yang menghadap ke depan (frontal), dalam posisi tegak, dan tidak terhalangi sebagian oleh objek lain.
3. Metode yang dipakai adalah jaringan syaraf tiruan multi-layer perceptron dengan algoritma pelatihan back-propagation.

4. TUJUAN PENELITIAN

Penelitian bertujuan untuk membuat suatu desain dan implementasi sistem deteksi wajah dengan masukan berupa citra digital sembarang. Sistem ini akan menghasilkan subcitra yang berisi wajah-wajah yang berhasil dideteksi.
{atau bisa dijabarkan satu-satu }

5. MAMFAAT PENELITIAN

Hasil penelitian ini diharapkan dapat digunakan sebagai langkah awal untuk membangun sistem pemrosesan wajah yang menyeluruh, yang bisa diaplikasikan pada sistem pengenalan wajah atau verifikasi wajah. Program aplikasi yang dibuat juga dapat dijadikan bahan untuk penelitian lebih lanjut di bidang yang berkaitan.
Dengan penyesuaian tertentu, metode yang digunakan mungkin dapat juga dimanfaatkan untuk sistem deteksi objek secara umum yang tidak hanya terbatas pada wajah, misalnya deteksi kendaraan, pejalan kaki, bahan produksi, dan sebagainya.
Dari hasil penelitian ini juga diharapkan dapat diperoleh pemahaman yang lebih baik terhadap jaringan syaraf tiruan, dan pengaruh berbagai parameter yang digunakan terhadap unjuk kerja pengklasifikasi jaringan syaraf tiruan.

6. METODE PENELITIAN

Metode yang akan digunakan dalam penelitian ini terdiri dari langkah-langkah berikut:
• Melakukan studi kepustakaan terhadap berbagai referensi yang berkaitan dengan penelitian yang dilakukan. Topik-topik yang akan dikaji antara lain meliputi: pengenalan pola, pengolahan citra digital, pendeteksian objek secara umum, pendeteksian wajah, dan jaringan syaraf tiruan.
• Menyiapkan training data set yang akan digunakan untuk proses pembelajaran dari sistem. Data wajah yang digunakan akan melalui praproses berupa resizing menjadi 20x20 pixel, masking, dan histogram equalization.
• Merancang sistem pendeteksi wajah dengan jaringan syaraf tiruan, kemudian membuat program aplikasinya.
• Melakukan pelatihan pada sistem dengan training data set yang telah disiapkan sebelumnya.
• Melakukan pengujian unjuk kerja sistem. Unjuk kerja pada sistem pendeteksi wajah diukur dengan menghitung detection rate dan false positif rate.

7. SISTEM PERANCANGAN
Gambarkan diagram alur, kontek diagram atau uml tergantung jenis penelitiannya.




8. JADWAL PENELITIAN


No.
Kegiatan Bulan / tahun
Okt
03 Nop
03 Des
03 Jan
04 Feb
04 Mar
04
1 Studi Kepustakaan
2 Penulisan Proposal
3 Pengumpulan Data
4 Pembuatan Sistem/Program
5 Pengujian Sistem
6 Penulisan Laporan Akhir


8. DAFTAR PUSTAKA
L. Fausett, 1994, Fundamentals of Neural Networks: Architectures, Algorithms, and Applications, Prentice-Hall Inc., USA.

R.C. Gonzalez, R.E. Woods, 1992, Digital Image Processing, Addison-Wesley Publishing Company, USA.

E. Hjelmas, B.K. Low, 2001, “Face Detection: A Survey”, Computer Vision and Image Understanding. 83, pp. 236-274.

H. Rowley, S. Baluja, T. Kanade, 1998, “Neural Network-Based Face Detection”, IEEE Trans. Pattern Analysis and Machine Intelligence, vol. 20, no. 1.

M.H. Yang, D. Kriegman, N. Ahuja, 2002, “Detecting Faces in Images: A Survey”, IEEE Trans. Pattern Analysis and Machine Intelligence, vol. 24, no. 1.

KARAKTER MANUSIA DENGAN KOMPUTER

KARAKTER MANUSIA DENGAN KOMPUTER
• Karakteristik manusia sebagai pemores Informasi
• Hal – hal yang penting diketahui atau dipelajari antara lain:
o Model – model arsitektur kognitif
o Teori tentang memori, persepsi, kemampuan motorik, motivasi, dll
Language, Communication and Interaction
• Bahasa sebagai media bagi manusia untuk berinteraksi dengan manusia lain, aspek –aspek yang dipelajari:
o Sintaksis, sematik dan pragmatisme bahasa dan fenomena – fenomena dan bahasa
Ergonomics
• Berkaitan dengan karakteristik antropometri dan fisiologis dan kaitannya dengan kenyamanan kerja
• Beberapa parameter dan aspek yang diperhatikan antara lain:
o Antropometri manusia dalam kaitannya dengan lingkungan kerja.
o Masalah yang berkaitan dengan aspek kelelahan bagi manusia
Computer System and Interface Architecture
(C)
Input and Output Devices
• Konstruksi teknis pada peraltan yang digunakan sebagai media interaksi manusia dan komputer
Dialogue Techniques
• Arsitektur software dasar dan teknik – teknik dalam berinteraksi dengan manusia terdiri dari input dan output dialog, cara – cara berinteraksi, dan masalah – masalah dalam dialog
Dialogue Genre
• Gaya / metode yang digunakan, antara lain:
o Penggunaan metafora
o Metode – metode yang relevan dengan media lain misal : film, grafis.
o Aspek estetika
Computer Graphics
• Konsep – konsep dasar dari tampilan komputer
o Aspek geometris dalam 2 atau 3 dimensi
o Transformasi linear
o Tampilan warna

Dialogue Architecture
• Arsitektur software dan standar – standart untuk antar muka dengan user
o Model- model referensi dialog pada sistem ( dialogue system reference models )
o Model – model pencitraan pada layar (screen imaging models)
o Windows manager models
o Multi user interface architecture
Development Process (D)
Design Approaches
• Proses desain dan topik – topik yang relevan dari disiplin ilmu yang lain, antara lain:
o Ilmu tentang desain grafis
o Proses pengembangan system
o Teknik analisa kerja
o Desain industrial
Implementation Techniques and Tools
• Cara- cara dan peralatan implementasi
o Hubungan anatara desain, evaluasi, dan implementasi
o Independensi dan reusability, independensi aplikasi, independensi peralatan.
o Teknik prototype
o Peralatan dialogue
o Method berorientasi objek
o Representasi data & algoritma
Evaluation Techniques
• Metode - metode spesifik untuk evaluasi
o Productivitas
o Aspek –aspek yang dievaluasi seperti waktu, error, kemudahan untuk dipelajari, desain, dll
Example Systems and Case Studies
• Command oriented
o PC DOS
o Airline check in
• Graphics- oriented
o Windows
o Apple macintosh
• Frame base
o hypercard

ari wibowo

DATA FLOW DIAGRAM

DATA FLOW DIAGRAM



1. KONSEP PERANCANGAN TERSTRUKTUR


Pendekatan perancangan terstruktur dimulai dari awal 1970. Pendekatan terstruktur dilengkapi dengan alat-alat (tools) dan teknik- teknik (techniques) yang dibutuhkan dalam pengembangan sistem, sehingga hasil akhir dari sistem yang dikembangkan akan diperoleh sistem yang strukturnya didefinisikan dengan baik dan jelas.


Melalui pendekatan terstruktur, permasalahan yang komplek di organisasi dapat dipecahkan dan hasil dari sistem akam mudah untuk dipelihara, fleksibel, lebih memuaskan pemakainya, mempunyai dokumentasi yang baik, tepat waktu, sesuai dengan anggaran biaya pengembangan, dapat meningkatkan produktivitas dan kualitasnya akan lebih baik (bebas kesalahan)



2. DATA FLOW DIAGRAM (DFD)


Data Flow Diagram (DFD) adalah alat pembuatan model yang memungkinkan profesional sistem untuk menggambarkan sistem sebagai suatu jaringan proses fungsional yang dihubungkan satu sama lain dengan alur data, baik secara manual maupun komputerisasi. DFD
ini sering disebut juga dengan nama Bubble chart, Bubble diagram, model proses, diagram alur kerja, atau model fungsi.


DFD ini adalah salah satu alat pembuatan model yang sering digunakan, khususnya bila fungsi-fungsi sistem merupakan bagian yang lebih penting dan kompleks dari pada data yang dimanipulasi oleh sistem. Dengan kata lain, DFD adalah alat pembuatan model yang memberikan penekanan hanya pada fungsi sistem.


DFD ini merupakan alat perancangan sistem yang berorientasi pada alur data dengan konsep dekomposisi dapat digunakan untuk penggambaran analisa maupun rancangan sistem yang mudah dikomunikasikan oleh profesional sistem kepada pemakai maupun pembuat program.






Parno, SKom., MMSI Halaman 1 dari 17 Halaman

Lecture Notes : Sistem Informasi Data Flow Diagram




3. KOMPONEN DATA FLOW DIAGRAM


Menurut Yourdan dan DeMarco








Terminator Proses Data Store Alur Data


Menurut Gene dan Serson






Terminator Proses Data Store Alur Data



3.1. Komponen Terminator / Entitas Luar
Terminator mewakili entitas eksternal yang berkomunikasi dengan
sistem yang sedang dikembangkan. Biasanya terminator dikenal dengan nama entitas luar (external entity).


Terdapat dua jenis terminator :
1. Terminator Sumber (source) : merupakan terminator yang menjadi
sumber.
2. Terminator Tujuan (sink) : merupakan terminator yang menjadi tujuan
data / informasi sistem.



Bagian
Penjualan


Terminator Sumber Terminator Tujuan T. Tujuan & Sumber


Terminator dapat berupa orang, sekelompok orang, organisasi, departemen di dalam organisasi, atau perusahaan yang sama tetapi di luar kendali sistem yang sedang dibuat modelnya.


Terminator dapat juga berupa departemen, divisi atau sistem di luar sistem yang berkomunikasi dengan sistem yang sedang dikembangkan.


Parno, SKom., MMSI Halaman 2 dari 17 Halaman

Lecture Notes : Sistem Informasi Data Flow Diagram


Komponen terminator ini perlu diberi nama sesuai dengan dunia luar
yang berkomunikasi dengan sistem yang sedang dibuat modelnya, dan biasanya menggunakan kata benda, misalnya Bagian Penjualan, Dosen, Mahasiswa.


Ada tiga hal penting yang harus diingat tentang terminator :
¶ Terminator merupakan bagian/lingkungan luar sistem. Alur data yang menghubungkan terminator dengan berbagai proses sistem, menunjukkan hubungan sistem dengan dunia luar.
¶ Profesional Sistem Tidak berhak mengubah isi atau cara kerja organisasi atau prosedur yang berkaitan dengan terminator
¸ Hubungan yang ada antar terminator yang satu dengan yang lain tidak digambarkan pada DFD.


3.2. Komponen Proses


Komponen proses menggambarkan bagian dari sistem yang mentransformasikan input menjadi output.


Proses diberi nama untuk menjelaskan proses/kegiatan apa yang sedang/akan dilaksanakan. Pemberian nama proses dilakukan dengan menggunakan kata kerja transitif (kata kerja yang membutuhkan obyek), seperti Menghitung Gaji, Mencetak KRS, Menghitung Jumlah SKS.


Ada empat kemungkinan yang dapat terjadi dalam proses sehubungan dengan input dan output :










1 input & 1 output 1 input & banyak output










Banyak input & 1 output Banyak input & banyak output


Parno, SKom., MMSI Halaman 3 dari 17 Halaman

Lecture Notes : Sistem Informasi Data Flow Diagram


Ada beberapa hal yang perlu diperhatikan tentang proses :
¶ Proses harus memiliki input dan output.
• Proses dapat dihubungkan dengan komponen terminator, data store atau proses melalui alur data.
¸ Sistem/bagian/divisi/departemen yang sedang dianalisis oleh profesional sistem digambarkan dengan komponen proses.


Berikut ini merupakan suatu contoh proses yang salah :











1 2



Gambar 1. Contoh proses


Umumnya kesalahan proses di DFD adalah :
1. Proses mempunyai input tetapi tidak menghasilkan output. Kesalahan
ini disebut dengan black hole (lubang hitam), karena data masuk ke
dalam proses dan lenyap tidak berbekas seperti dimasukkan ke dalam lubang hitam (lihat proses 1).
2. Proses menghasilkan output tetapi tidak pernah menerima input. Kesalahan ini disebut dengan miracle (ajaib), karena ajaib dihasilkan output tanpa pernah menerima input (lihat proses 2).



3.3. Komponen Data Store


Komponen ini digunakan untuk membuat model sekumpulan paket data dan diberi nama dengan kata benda jamak, misalnya Mahasiswa.


Data store ini biasanya berkaitan dengan penyimpanan-penyimpanan, seperti file atau database yang berkaitan dengan penyimpanan secara komputerisasi, misalnya file disket, file harddisk, file pita magnetik. Data store juga berkaitan dengan penyimpanan secara manual seperti buku alamat, file folder, dan agenda.



Parno, SKom., MMSI Halaman 4 dari 17 Halaman

Lecture Notes : Sistem Informasi Data Flow Diagram


Suatu data store dihubungkan dengan alur data hanya pada komponen
proses, tidak dengan komponen DFD lainnya. Alur data yang
menghubungkan data store dengan suatu proses mempunyai pengertian sebagai berikut :


• Alur data dari data store yang berarti sebagai pembacaan atau pengaksesan satu paket tunggal data, lebih dari satu paket data, sebagian dari satu paket tunggal data, atau sebagian dari lebih dari satu paket data untuk suatu proses (lihat gambar 2 (a)).


• Alur data ke data store yang berarti sebagai pengupdatean data, seperti menambah satu paket data baru atau lebih, menghapus satu paket atau lebih, atau mengubah/memodifikasi satu paket data atau lebih (lihat gambar 2 (b)).


Pada pengertian pertama jelaslah bahwa data store tidak berubah, jika suatu paket data/informasi berpindah dari data store ke suatu proses. Sebaliknya pada pengertian kedua data store berubah sebagai hasil alur yang memasuki data store. Dengan kata lain, proses alur data bertanggung jawab terhadap perubahan yang terjadi pada data store.














(a) (b)


Gambar 2. Implementasi data store



3.4. Komponen Data Flow / Alur Data


Suatu data flow / alur data digambarkan dengan anak panah, yang menunjukkan arah menuju ke dan keluar dari suatu proses. Alur data ini digunakan untuk menerangkan perpindahan data atau paket data/informasi dari satu bagian sistem ke bagian lainnya.





Parno, SKom., MMSI Halaman 5 dari 17 Halaman

Lecture Notes : Sistem Informasi Data Flow Diagram


Selain menunjukkan arah, alur data pada model yang dibuat oleh
profesional sistem dapat merepresentasikan bit, karakter, pesan,
formulir, bilangan real, dan macam-macam informasi yang berkaitan dengan komputer. Alur data juga dapat merepresentasikan data/informasi yang tidak berkaitan dengan komputer.


Alur data perlu diberi nama sesuai dengan data/informasi yang dimaksud, biasanya pemberian nama pada alur data dilakukan dengan menggunakan kata benda, contohnya Laporan Penjualan.


Ada empat konsep yang perlu diperhatikan dalam penggambaran alur data, yaitu :
¶ Konsep Paket Data (Packets of Data)
Apabila dua data atau lebih mengalir dari suatu sumber yang sama
menuju ke tujuan yang sama dan mempunyai hubungan, dan harus
dianggap sebagai satu alur data tunggal, karena data itu mengalir bersama-sama sebagai satu paket.





Mahasiswa

Nama
NPM Alamat


Periksa Formulir Daftar Ulang

(a) Konsep paket data yang salah






Mahasiswa

Formulir Daftar Ulang

Periksa
Formulir
Daftar Ulang




(b) Konsep paket data yang benar


Gambar 3. Konsep paket data


• Konsep Alur Data Menyebar (Diverging Data Flow)
Alur data menyebar menunjukkan sejumlah tembusan paket data yang yang berasal dari sumber yang sama menuju ke tujuan yang berbeda, atau paket data yang kompleks dibagi menjadi beberapa elemen data yang dikirim ke tujuan yang berbeda, atau alur data ini membawa paket data yang memiliki nilai yang berbeda yang akan dikirim ke tujuan yang berbeda.

Parno, SKom., MMSI Halaman 6 dari 17 Halaman

Lecture Notes : Sistem Informasi Data Flow Diagram






Laporan
Penerimaan
Sehari-hari




Manajer






Pesanan


Pesanan

Membuat
Laporan Penerimaan Sehari-hari








Laporan Penerimaan Sehari -hari






Bagian
Pembukuan



Gambar 4. Konsep alur data menyebar


¸ Konsep Alur Data Mengumpul (Converging Data Flow)
Beberapa alur data yang berbeda sumber bergabung bersama-sama
menuju ke tujuan yang sama.






Membuat
Faktur


Faktur








Membuat Slip Pengirim

Slip
Pengiriman

Konsumen




Gambar 5. Konsep alur data mengumpul


¹ Konsep Sumber atau Tujuan Alur Data
Semua alur data harus minimal mengandung satu proses. Maksud
kalimat ini adalah :
 Suatu alur data dihasilkan dari suatu proses dan menuju ke suatu
data store dan/atau terminator (lihat gambar 6 (a)).
 Sutu alur data dihasilkan dari suatu data store dan/atau terminator
dan menuju ke suatu proses (lihat gambar 6 (b)).
 Suatu alur data dihasilkan dari suatu proses dan menuju ke suatu
proses (lihat gambar 6 (c)).


Parno, SKom., MMSI Halaman 7 dari 17 Halaman

Lecture Notes : Sistem Informasi Data Flow Diagram














(a) (b)








(c)
Gambar 6. Konsep sumber atau tujuan alur data



4. BENTUK DATA FLOW DIAGRAM


Terdapat dua bentuk DFD, yaitu Diagram Alur Data Fisik, dan Diagram Alur data Logika. Diagram alur data fisik lebih menekankan pada bagaimana proses dari sistem diterapkan, sedangkan diagram alur data logika lebih menekankan proses-proses apa yang terdapat di sistem.


4.1. Diagram Alur Data Fisik (DADF)

DADF lebih tepat digunakan untuk menggambarkan sistem yang ada
(sistem yang lama). Penekanan dari DADF adalah bagaimana proses- proses dari sistem diterapkan (dengan cara apa, oleh siapa dan dimana), termasuk proses-proses manual.


Untuk memperoleh gambaran bagaimana sistem yang ada diterapkan, DADF harus memuat :
1. Proses-proses manual juga digambarkan.
2. Nama dari alur data harus memuat keterangan yang cukup terinci
untuk menunjukkan bagaimana pemakai sistem memahami kerja sistem.
3. Simpanan data dapat menunjukkan simpanan non komputer.
4. Nama dari simpanan data harus menunjukkan tipe penerapannya
apakah secara manual atau komputerisasi. Secara manual misalnya dapat menunjukkan buku catatat, meja pekerja. Sedang cara komputerisasi misalnya menunjukkan file urut, file database.
Parno, SKom., MMSI Halaman 8 dari 17 Halaman

Lecture Notes : Sistem Informasi Data Flow Diagram


5. Proses harus menunjukkan nama dari pemroses, yaitu orang,
departemen, sistem komputer, atau nama program komputer yang
mengakses proses tersebut.


4.2. Diagram Alur Data Logika (DADL)


DADL lebih tepat digunakan untuk menggambarkan sistem yang akan diusulkan (sistem yang baru). Untuk sistem komputerisasi, penggambaran DADL hanya menunjukkan kebutuhan proses dari sistem yang diusulkan secara logika, biasanya proses-proses yang digambarkan hanya merupakan proses-proses secara komputer saja.



Konsumen


Harga

Konsumen



Item-item
untuk dibeli Pembayaran Nota

Item & Jml yang

1
Identitas
Item

ID item

2
Melihat
harga

harga

3
Menghit. Total biaya pesanan

hrs dibayar

4
Menetapkan transaksi & menerbitkan nota



(a) Diagram Alur Data Fisik






Konsumen


File trans. File Harga Sementara
UPC

Konsumen

Item-item Item Item,harga, Tunai,cek, Nota kas
& Subtotal kartu debit register


UPC Item & Jml yang

1
Menscan item

Bar code

2
Melihat harga

harga

3
Menghit. Total biaya

hrs dibayar

4
Mengumpul- kan uang & memberi nota
(manual)




(b) Diagram Alur Data Logika


Gambar 7. DADF dan DADL




Parno, SKom., MMSI Halaman 9 dari 17 Halaman

Lecture Notes : Sistem Informasi Data Flow Diagram


5. SYARAT -SYARAT PEMBUATAN DATA FLOW DIAGRAM


Syarat pembuatan DFD ini akan menolong profesional sistem untuk menghindari pembentukkan DFD yang salah atau DFD yang tidak lengkap atau tidak konsisten secara logika. Beberapa syarat pembutan DFD dapat menolong profesional sistem untuk membentuk DFD yang benar, menyenangkan untuk dilihat dan mudah dibaca oleh pemakai.


Syarat-syarat pembuatan DFD ini adalah :
1. Pemberian nama untuk tiap komponen DFD
2. Pemberian nomor pada komponen proses
3. Penggambaran DFD sesering mungkin agar enak dilihat
4. Penghindaran penggambaran DFD yang rumit
5. Pemastian DFD yang dibentuk itu konsiten secara logika


5.1. Pemberian Nama untuk Tiap komponen DFD
Seperti yang telah dijelaskan sebelumnya, komponen terminator mewakili lingkungan luar dari sistem, tetapi mempunyai pengaruh terhadap sistem yang sedang dikembangkan ini. Maka agar pemakai mengetahui dengan lingkungan mana saja sistem mereka berhubungan, komponen terminator ini harus diberi nama sesuai dengan lingkungan luar yang mempengaruhi sistem ini. Biasanya komponen terminator diberi nama dengan kata benda.
Selanjutnya adalah komponen proses. Komponen proses ini mewakili fungsi sistem yang akan dilaksanakan atau menunjukkan bagaimana fungsi sistem dilaksanakan oleh seseorang, sekelompok orang atau mesin. Maka sangatlah jelas bahwa komponen ini perlu diberi nama yang tepat, agar siapa yang membaca DFD khususnya pemakai akan merasa yakin bahwa DFD yang dibentuk ini adalah model yang akurat.


Pemberian nama pada komponen proses lebih baik menunjukkan aturan-aturan yang akan dilaksanakan oleh seseorang dibandingkan dengan memberikan nama atau identitas orang yang akan melaksanakannya. Ada dua alasan mengapa bukan nama atau identitas orang (yang melaksanakan fungsi sistem) yang digunakan sebagai nama proses, yaitu :


À Orang tersebut mungkin diganti oleh orang lain saat mendatang, sehingga bila tiap kali ada pergantian orang yang melaksanakan fungsi tersebut, maka sistem yang dibentuk harus diubah lagi.



Parno, SKom., MMSI Halaman 10 dari 17 Halaman

Lecture Notes : Sistem Informasi Data Flow Diagram


Á Orang tersebut mungkin tidak melaksanakan satu fungsi sistem saja, melainkan beberapa fungsi sistem yang berbeda. Daripada menggambarkan beberapa proses dengan nama yang sama tetapi artinya berbeda, lebih baik tunjukkan dengan tugas/fungsi sistem yang sebenarnya akan dilaksanakan.


Karena nama untuk komponen proses lebih baik menunjukkan tugas/fungsi sistem yang akan dilaksanakan, maka lebih baik pemberian nama ini menggunakan kata kerja transitif.


Pemberian nama untuk komponen data store menggunakan kata benda, karena data store menunjukkan data apa yang disimpan untuk kebutuhan sistem dalam melaksanakan tugasnya. Jika sistem sewaktu- waktu membutuhkan data tersebut untuk melaksanakan tugasnya, maka data tersebut tetap ada, karena sistem menyimpannya.


Begitu pula untuk komponen alur data, namanya lebih baik diberikan dengan menggunakan kata benda. Karena alur data ini menunjukkan data dan infiormasi yang dibutuhkan dan yang dikeluarkan oleh sistem dalam pelaksanaan tugasnya.


5.2. Pemberian Nomor pada Komponen Proses
Biasanya profesional sistem memberikan nomor dengan bilangan terurut pada komponen proses sebagai referensi. Tidak jadi masalah bagaimana nomor-nomor proses ini diberikan. Nomor proses dapat diberikan dari kiri ke kanan, atau dari atas ke bawah, atau dapat pula dilakukan dengan pola-pola tertentu selama pemberian nomor ini tetap konsisten pada nomor yang dipergunakan.


R 1



S X



2 3
W Y
Z T


Gambar 8. Contoh Pemberian nomor pada proses



Parno, SKom., MMSI Halaman 11 dari 17 Halaman

Lecture Notes : Sistem Informasi Data Flow Diagram


Nomor-nomor proses yang diberikan terhadap komponen proses ini
tidak dimaksudkan bahwa proses tersebut dilaksanakan secara
berurutan. Pemberian nomor ini dimaksudkan agar pembacaan suatu proses dalam suatu diskusi akan lebih mudah dengan hanya menyebutkan prosesnya saja jika dibandingkan dengan menyebutkan nama prosesnya, khususnya jika nama prosesnya panjang dan sulit.


Maksud pemberian nomor pada proses yang lebih penting lagi adalah untuk menunjukkan referensi terhadap skema penomoran secara hirarki pada levelisasi DFD. Dengan kata lain, nomor proses ini merupakan dasar pemberian nomor pada levelilasi DFD (lihat gambar 11).


5.3. Penggambaran DFD sesering mungkin
Penggambaran DFD dapat dilakukan berkali-kali sampai secara teknik DFD itu benar, dapat diterima oleh pemakai, dan sudah cukup rapih sehingga profesional sistem tidak merasa malu untuk menunjukkan DFD
itu kepada atasannya dan pemakai.


Dengan kata lain, penggambaran DFD ini dilakukan sampai terbentuk DFD yang enak dilihat, dan mudah dibaca oleh pemakai dan profesional sistem lainnya. Keindahan penggambaran DFD tergantung pada standar-standar yang diminta oleh organisasi tempat profesional sistem
itu bekerja dan perangkat lunak yang dipakai oleh profesional sistem
dalam membuat DFD.


Penggambaran yang enak untuk dilihat dapat dilakukan dengan memperhatikan hal-hal berikut ini :


 Ukuran dan bentuk proses.
Beberapa pemakai kadang-kadang merasa bingung bila ukuran proses satu berbeda dengan proses yang lain. Mereka akan mengira bahwa proses dengan ukuran yang lebih besar akan diduga lebih penting dari proses yang lebih kecil. Hal ini sebenarnya hanya karena nama proses itu lebih panjang dibandingkan dengan proses yang lain. Jadi, sebaiknya proses yang digambarkan memiliki ukuran dan bentuk yang sama.


 Alur data melingkar dan alur data lurus.
Alur data dapat digambarkan dengan melingkar atau hanya garis lurus. Mana yang lebih enak dipandang tergantung siapa yang akan melihat DFD tersebut.



Parno, SKom., MMSI Halaman 12 dari 17 Halaman

Lecture Notes : Sistem Informasi Data Flow Diagram












(a). Alur data dengan garis lurus (b). Alur data dengan melingkar
Gambar 9


 DFD dengan gambar tangan dan gambar menggunakan mesin.
DFD dapat digambarkan secara manual atau dengan menggunakan bantuan mesin, tergantung pilihan pemakai atau profesional sistem.


5.4. Penghindaran Penggambaran DFD yang rumit
Tujuan DFD adalah untuk membuat model fungsi yang harus dilaksanakan oleh suatu sistem dan interaksi antar fungsi. Tujuan lainnya adalah agar model yang dibuat itu mudah dibaca dan dimengerti tidak hanya oleh profesional sistem yang membuat DFD, tetapi juga oleh pemakai yang berpengalaman dengan subyek yang terjadi. Hal ini berarti DFD harus mudah dimengerti, dibaca, dan menyenangkan untuk dilihat.


Pada banyak masalah, DFD yang dibuat tidak memiliki terlalu banyak proses (maksimal enam proses) dengan data store, alur data, dan terminator yang berkaitan dengan proses tersebut dalam satu diagram.


Bila terlalu banyak proses, terminator, data store, dan alur data digambarkan dalam satu DFD, maka ada kemungkinan terjadi banyak persilangan alur data dalam DFD tersebut. Persilangan alur data ini menyebabkan pemakai akan sulit membaca dan mengerti DFD yang terbentu. Jadi semakin sedikit adanya persilangan data pada DFD, maka makin baik DFD yang dibentuk oleh profesional sistem.


Persilangan alur data ini dapat dihindari dengan menggambarkan DFD secara bertingkat-tingkat (levelisasi DFD), atau dengan menggunakan pemakaian duplikat terhadap komponen DFD.


Komponen DFD yang dapat menggunakan duplikat hanya komponen store dan terminator. Pemberian duplikat ini juga tidak dapat diberikan sesuka profesional sistem yang membuat DFD, tetapi makin sedikit pemakaian duplikat, makin baik DFD yang terbentuk.



Parno, SKom., MMSI Halaman 13 dari 17 Halaman

Lecture Notes : Sistem Informasi Data Flow Diagram


Pemberian duplikat terhadap data store dilakukan dengan memberikan
simbol garis lurus (x) atau asterik (*), sedangkan untuk terminator menggunakan simbol garis miring (/) atau asterik (*). Banyaknya pemberian simbol duplikat pada duplikat yang digunakan tergantung banyaknya duplikat yang digunakan.





T1 T1

atau * *
T1 T1








T1 T1 T1

(a)


atau



(b)



** ** **
T1 T1 T1



Gambar 10. Contoh pemakaian simbol duplikat pada terminator
(a) Satu duplikat yang digunakan (b) Dua duplikat yang digunakan


5.5. Penggambaran DFD yang Konsisten
Penggambaran DFD harus konsisten terhadap kelompok DFD lainnya. Profesional sistem menggambarkan DFD berdasarkan tingkatan DFD dengan tujuan agar DFD yang dibuatnya itu mudah dibaca dan dimengerti oleh pemakai sistem. Hal ini sesuai dengan salah satu tujuan atau syarat membuat DFD.



6. PENGGAMBARAN DFD


Tidak ada aturan baku untuk menggambarkan DFD. Tapi dari berbagai referensi yang ada, secara garis besar langkah untuk membuat DFD adalah :


1. Identifikasi terlebih dahulu semua entitas luar yang terlibat di sistem.


2. Identifikasi semua input dan output yang terlibat dengan entitas luar.


3. Buat Diagram Konteks (diagram context)
Diagram ini adalah diagram level tertinggi dari DFD yang menggambarkan hubungan sistem dengan lingkungan luarnya.
Caranya :


Parno, SKom., MMSI Halaman 14 dari 17 Halaman

Lecture Notes : Sistem Informasi Data Flow Diagram


 Tentukan nama sistemnya.
 Tentukan batasan sistemnya.
 Tentukan terminator apa saja yang ada dalam sistem.
 Tentukan apa yang diterima/diberikan terminator dari/ke sistem.
 Gambarkan diagram konteks.


4. Buat Diagram Level Zero
Diagram ini adalah dekomposisi dari diagram konteks. Caranya :
 Tentukan proses utama yang ada pada sistem.
 Tentukan apa yang diberikan/diterima masing-masing proses
ke/dari sistem sambil memperhatikan konsep keseimbangan (alur data yang keluar/masuk dari suatu level harus sama dengan alur data yang masuk/keluar pada level berikutnya).
 Apabila diperlukan, munculkan data store (master) sebagai
sumber maupun tujuan alur data.
 Gambarkan diagram level zero.
- Hindari perpotongan arus data
- Beri nomor pada proses utama (nomor tidak menunjukkan urutan proses).


5. Buat Diagram Level Satu
Diagram ini merupakan dekomposisi dari diagram level zero. Caranya :
 Tentukan proses yang lebih kecil (sub-proses) dari proses utama yang ada di level zero.
 Tentukan apa yang diberikan/diterima masing-masing sub-proses ke/dari sistem dan perhatikan konsep keseimbangan.
 Apabila diperlukan, munculkan data store (transaksi) sebagai sumber maupun tujuan alur data.
 Gambarkan DFD level Satu
- Hindari perpotongan arus data.
- Beri nomor pada masing-masing sub-proses yang menunjukkan
dekomposisi dari proses sebelumnya. Contoh : 1.1, 1.2, 2.1


6. DFD Level Dua, Tiga, …
Diagram ini merupakan dekomposisi dari level sebelumnya. Proses dekomposisi dilakukan sampai dengan proses siap dituangkan ke dalam program. Aturan yang digunakan sama dengan level satu.







Parno, SKom., MMSI Halaman 15 dari 17 Halaman

Lecture Notes : Sistem Informasi Data Flow Diagram





a 0 d
Sistem
b



c

ds1








a 1
e 2 d


b

4 f

g 3 c








ds1
















h

3.1
b

k

3.2


j


i f



3.3





3.4 c


ds1





Gambar 11. Levelisasi DFD



Parno, SKom., MMSI Halaman 16 dari 17 Halaman

Lecture Notes : Sistem Informasi Data Flow Diagram


Pada gambar 11 terlihat bahwa Proses 0 diuraikan lagi ke dalam empat
proses, penguraian ini digambarkan pada diagram Figure 0, sedangkan
Proses 2 diuraikan kembali menjadi tiga proses yang digambarkan pada diagram Figure 2. Penguraian ini juga diikuti oleh alur data yang berkaitan dengan tiap proses yang diuraikan. Alur data yang berkaitan dengan tiap proses yang diuraikan dikenal dengan Alur data global. Jadi pada balancing DFD yang perlu diperhatikan adalah jumlah alur data global pada suatu level harus sama pada level berikutnya.


Ada beberapa hal yang perlu diperhatikan dalam penggambaran levelisasi DFD, yaitu :
¶ Dalam diagram konteks, ada beberapa hal yang perlu diperhatikan seperti hubungan sistem dengan dunia luar yang mempengaruhinya, penggambaran sistem dalam satu proses, dan penggambaran data store (optional) yang dikenal dengan data store eksternal atau data store master. Data store eksternal ini maksudnya adalah data store
itu dihasilkan oleh sistem yang sedang dianalisis, tetapi digunakan oleh sistem lain, atau data store itu dihasilkan oleh sistem lain tetapi digunakan oleh sistem yang sedang dianalisis.



0

Sistem












Gambar 12. Contoh penggambaran diagram konteks


• Balancing (kesimbangan) dalam penggambaran levilisasi DFD perlu diperhatikan. Balancing DFD ini maksudnya keseimbangan antara alur data yang masuk/keluar dari suatu level harus sama dengan alur data yang masuk/keluar pada level berikutnya (lihat gambar 11).










Parno, SKom., MMSI Halaman 17 dari 17 Halaman

contoh surat Peminjaman Tempat & Peralatan

Nomor : 003/MTI -UMMI/01/2011 11 Januari 2011
Lampiran :-
Perihal : Peminjaman Tempat & Peralatan


Yth. Kabag.Umum UMMI
di Tempat
Dengan hormat,
Dalam rangka Peningkatan Kreatifpitas Mahasiswa Teknik Informatika serta merealisasikan Tugas Kewirausahan , maka kami selaku panitia Kreasai teknik informatika akan menyelenggarakan sebuah kegiatan yaitu Pameran Kreasis Teknik Informatika yang akan dilaksanakan pada:
hari/tanggal : Jumat 14 Januari 2011
waktu : 08.00-selesai
tempat : Parikir Selatan
Maka melalui surat ini kami bermaksud mengajukan Peminjaman Berupa :

1.Meja & Kursi
2.Parkir Selatan

Demikian surat ini kami sampaikan. Atas perijinan dan bantuan Bapak kami ucapkan terima kasih.


Mengetahui Ketua Panitia
Ketua Progdi TI



Iwan Rizal Setiawan,M.T Ari Wibowo






Nomor : 003/MTI -UMMI/01/2011 13 Januari 2011
Lampiran :
Perihal : Pemberitahuan

Yth. Kepala Satatuan Keamanan UMMI
di Tempat
Dengan hormat,
Dalam rangka Peningkatan Kreatifitas Mahasiswa Teknik Informatika serta merealisasikan Tugas Kewirausahan , maka kami selaku panitia Kreasi teknik informatika akan menyelenggarakan sebuah kegiatan yaitu Pameran Kreasi Teknik Informatika yang akan dilaksanakan pada:
hari/tanggal : Jumat 14 Januari 2011
waktu : 08.00-selesai
tempat : Parkir Timur
Maka Melalui surat ini kami bermaksud Memohon izin untuk melaksanakan kegiatan tersebut

Demikian surat ini kami sampaikan. Atas perijinan dan bantuan Bapak kami ucapkan terima kasih.




Mengetahui Ketua Panitia
Ketua Progdi TI




Iwan Rizal Setiawan,M.T Ari Wibowo

User Interface atau Antar Muka

User Interface atau Antar Muka dalam aplikasi berbasis web, merupakan bentuk grafis yang akan dihadapi saat user menggunakan menggunakan aplikasi melalui bantuan browser Dalam pembuatan analisis interface pada sebuah web saya akan coba menganalisis interface pada sebuah web yaitu permaisuru.com tapi web ini bayak memfokuskan pada penjualan Velg dan pejual ban mobil terutama pada penjualan mobil mobil mewah contoh BMW Seris,Alphard,Vellefire.hal ini terlihat dari tidak di temukan velg dan ban mobil untuk merek tertentu tetapi untuk velg dan ban mobil mewah bayak tersedia beserta model modelnya.
Untuk mengetahui lebih lanjut tentang dan Pembelian di web ini sebaiknya melakukuan registry (sign in) terlehdahulu sebagai member.Proses register sangat mudah cukup mengisi E-mail dan alamat penguna jika sudah maka penguna akan mendapatakn user name dan password ke E-mail yang telah anda isi kan tadi .jika user tidak melakuan login terlebih dahulu (baik yang sudah registry atau belum) maka user tidak dapat membuka beberapa fitur cotohnya tire calculator,member calculator,member area.selain itu juga user tidak dapat melihat produk secara rinci dan pastinya tidak dapat memesan produk.
Sekarang Tentang usability dari website permaisuri.com. Usability itu sendiri adalah ukuran seberapa mudah suatu interface dapat digunakan oleh penggunanya (user). Faktor-faktor yang mempengaruhi usability diantaranya adalah learnability, efficiency, memorability, errors, dan satisfatction.







Gambar 1. Halaman muka dari situs permaisuri.com
Halaman muka (beranda) website Permaisuri.com cukup menggambarkan halaman muka yang baik dari sebuah antarmuka ( interface) untuk sebuah website. Karena dapat menjelaskan bahawa isi dari website tersebut adalah berjualan perangkat otomotif yang terutama difokuskan kepada penjualan velg dan ban mobil. Namun, mungkin bagi masyarakat awam yang tidak mengerti sama sekali tentang otomotif, bila pertama kali mengakses situs ini akan mengira bahwa situs ini berjualan mobil, bukan velg/ban mobil. hal tersebut terjadi karena tampilan flash yang ada dan dominan pada halaman muka adalah gambar mobil yang terus-menerus berganti. Tetapi jika kita scroll sedikit kebawah, kita akan sadar bahwa situs ini berjualan velg/ban.
Selain itu tab-tab atau link-link yang ada pada website ini dibuat sesuai dengan contoh link secara umum, sehingga memudahkan user untuk melakukan pencarian atau pembelian. Link-link yang berupa gambar (baik gambar velg maupun logo dari merk velg) juga cukup jelas, sehingga user tahu bila dia mengklik link tersebut, dia akan langsung dilink ke produk tersebut. Hal tersebut memenuhi kriteria learnability yang baik, karena akan mudah dimengerti oleh user.
Namun ada hal yang mengurangi usability dari situs ini, salah satunya adalah nama situs yang muncul pada tab browser anda bukanlah permaisuri.com, melainkan velg mobil indonesia. Hal ini akan membingungkan user tentang keberadaannya ketika dia sedang membuka banyak tab di browser, apakah dia berada di permaisuri.com atau di velg mobil indonesia?
Untuk errors situs ini memperkecil peluang terjadinya error dengan menggunakan dropdownlist dan checkbox pada hampir semua tempat sebagai inputan informasi dari user. Hal ini sangat baik, karena bila input dilakukan dengan menggunakan textbox akan memperbesar terjadinya kesalahan yang dilakukan oleh user, seperti kesalahan pengejaan, dll.
Menurut saya, kesalahan yang mungkin dilakukan user adalah kesalahan dalam memasukkan inputan pada saat login (lupa username / password, dll).
Untuk satisfatction, situs ini hanya menawarkan sedikit user experience, yaitu hanya melalui flash yang ada dihalaman awal, selebihnya hanyalah gambar-gambar statis. Namun cukup memberikan kesenang an, karena gambar-gambar yang dimuat memiliki kualitas yang baik dan gambarnya bagus (yaiyalah, mobilnya bikin ngiler semua euyy). Saran dari saya, akan lebih menarik jika fitur tire calculator, yang merupakan fitur yang sangat memberikan informasi tentang komposisi ban dan velg yang benar, bisa diberikan animasi / flash dalam memperlihatkan hasil kalkulasinya. Saya rasa hal tersebut akan memberikan user experience yang berbeda.

Gambar 2. Halaman tire calculator dari situs permaisuri.com
Selebihnya untuk efficiency dan memorability saya rasa situs ini sudah bisa memberikannya secara baik. Karena tab-tab, link-link, ataupun task yang ada pada situs ini disusun sesuai desain pada umumnya. Seh ingga membuat user mudah menggunakan situs ini dan mudah mengingatnya bila sewaktu-waktu ingin membukanya kembali.
after all saya rasa ini adalah sebuah situs yang baik dan bermanfaat. Nantikan post saya selanjutnya mengenai situs permaisuri.com ini.
terimakasih =)
Posting kali ini akan melanjutkan posting sebelumnya, yaitu menganalisa interface yang terdapat pada situs permaisuri.com.
Faktor-faktor yang akan dibahas pada posting kali ini adalah windowing, coloring, messaging, SERP, user experience, dan lain lain.
Windowing, mengapa windowing menjadi penting dalam suatu interface? alasannya adalah windowing menjadi penentu, apakah user akan paham akan apa yang akan disampaikan oleh interface tersebut atau malah salah menafsirkan. Karena windowing merupakan tata letak dari apa yang akan diperlihatkan oleh suatu interface pada layar monitor anda.
Pada situs permaisuri.com, windowing yang ada dirasakan kurang baik. Karena halaman yang terdisplay dilayar monitor tidak lah secara langsung menggambarkan apa yang diinginkan. Seperti contohnya halaman muka (beranda) dan halaman tire calculator. Pada halaman muka, display dari situs terpotong hanya sampai pada bagian flash yang menunjukkan gambar-gambar mobil (hal ini terjadi jika layar dalam kondosi zoom normal, tidak diminimize atau maximize). Hal ini akan membingungkan user, terutama orang awam, karena mereka akan mengira bahwa situs permaisuri.com adalah toko mobil online, karena gambar yang terdisplay adalah gambar mobil. Baru ketuka sedikit discroll kebawah kita akan menetahui bahwa situs ini sebenarnya menjual velg dan ban mobil. Akan lebih baik jika proporsi display pada windowing di perhatikan, seperti misalnya diberikan sedikit gambar dari velg yang muncul (muncul tapi terpotong), sehingga membangkitkan rasa ingin tahuuser, dan akhirnya menscroll kebawah. Atau diberi penjelasan berupa text yang menujukkan situs ini berjualan velg dan ban mobil. Atau posisi gambar velg dan ban ditukar dengan posisi flash yang berada diatasnya.

Gambar 1. Halaman muka sebelum discroll (kiri) dan sesudah (kanan).

Selain pada halaman muka, pada halaman tire calculator juga terjadi hal demikian. Display yang pertama kali terlihat adalah gambar sketsa dari komposisi ban dan velg serta ukurannya. Padahal hasil dari kalkulasi (perhitungan) ada di bagian bawah, dan tidak ada bagian yang muncul keatas samasekali. Ini akan menimbulkan peluang untuk user tidak melihat hasil kalkulasi tersebut. Saya rasa solusinya hampir sama dengan yang telah saya bicarakan pada halaman muka.
Selanjutnya adalah coloring dan messaging. Untuk coloring saya rasa tidak ada masalah, karena pemilihan warna (baik background maupun gambar) sudah tepat dan menggambarkan kemewahan yang memang ingin ditunjukkan.

Untuk messaging saya rasa juga sudah cukup baik, karena sesuai standar. Karena untuk inputan sudah menggunakan dropdownlist dan checkbox saya rasa messaging untuk kesalahan input tidak diperlukan. Messaging yang ada hanyalah pada saat kita registrasi (misalnya ada yang kurang lengkap), pada saat login (username/passworrd salah atau tidak cocok), atau pada saat tidak ditemukan satupun pencarian.
Untuk SERP atau Search Engine Result Page, situs ini memiliki kolom pencarian, yang informasinya pencariannya sudah dibagi kedalam beberapa kategori (untuk mempersempit pencarian). Hasil dari pencarian (SERP) yang ditampilkan sudah baik, apa bila produk yang kita cari ada, maka gambarnya langsung muncul, tetapi jika tidak akan muncul tulisan “no product found”. Namun yang menjadi sedikit kekurangan menurut saya, adalah terlalu seringnya muncul tulisan “no product found” tersebut, yang akhirnya kita hanya menenukan sedikit saja dari yang kita cari. Hal ini mungkin berhubungan dengan masalah database dari situs ini sendiri, yang mungki belum semuanya di entry atau mungkin memnag barang tersebut tidak ada. Namun yang menurut saya bagus adalah situs ini memberitahukan kondisi/status dari produk tersebut, apakah masih ada stock yang tersisa atau sudah terjual (sold out). Lalu yang saya perhatikan agak berbeda adalah terdapatnya perbedaan tombol search pada beberapa halaman. Beberapa halaman menggunakan tombol “go” tetapi beberap lainnya menggunakan “search”.
Untuk user experience seperti yang telah disinggung sebelumnya, sudah cukup baik. Namun alangakah baiknya lebih banyak diberikan flash/anmasi-animasi atau video yang bisa menambah daya tarik. Karena situs ini mengangkat tema otomotif yang memang sudah menarik dan identik dengan canggih,jadi lebih baik apabila lebih attraktif dan interaktif lagi.
Yang terakhir adalah dari segi lain-lain (saya bingung mau memasukan ke kategori mana, hhehe), yang pertama ingin saya sampaikan adalah masalah kekonsistenan bahasa. Situs ini meurupakan situs lokal dan jika dilihat dari nama situs dan pengelolanya berbahasa Indonesia. Namun hampir seluruh isi situs ini berbahsa Inggris. Mungkin lebih baik jika semuanya menggunakan 1 bahasa saja. Tapi mungkin jika semuanya menggunakan bahasa Indonesia dirasa kurang pas / kurang keren, pengelola bisa menggunakan 2 bahasa, tetapi harus menitik beratkan ke salah satunya. Misalkan yang diutamakan adalah bahasa Indonesia, baiknya seluruh is situs (termasuk penjelasan dan perincian produk) menggunakan bahsa Indonesia, hanya header / tab-tabnya saja yang menggunakan bahasa Inggris, seperti Home, Autoshow,Contact Us, dll. Atau pilihan lainnya adalah dengan membuat dua vesri situs, yang satu berbahasa Indonesia yang lainya berbahasa asing.
Untuk halaman registrasi (baik pada saat mendaftar atau membeli) saya rasakan sudah cukup baik dan tidak ada masalah.
Sekian pembahan tentang tugas analis interface pada Web yang saya ketahui mohon maaf bila ada kekurangan wasalamualaikumwr.wb.

JAVATM SECURITY OVERVIEW
White Paper April 2005

Table of Contents
1 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Java Language Security and Bytecode Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3 Basic Security Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
Security Providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
FileLocations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4 Cryptography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
5 Public Key Infrastructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Key and Certificate Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
PKITools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
6 Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
7 Secure Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
SSL/TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
SASL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
GSS-API and Kerberos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
8 Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Policy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
Access Control Enforcement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
9 For More Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15
Appendix A – Classes Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16
Appendix B – Tools Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17
Appendix C – Built-in Providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

Chapter 1
Introduction
The JavaTM platform was designed with a strong emphasis on security. At its core, the Java language itself is type-safe and provides automatic garbage collection, enhancing the robustness of application code. A secure class loading and verification mechanism ensures that only legitimate Java code is executed.
The initial version of the Java platform created a safe environment for running potentially untrusted code, such as Java applets downloaded from a public network. As the platform has grown and widened its range of deployment, the Java security architecture has correspondingly evolved to support an expanding set of services. Today the architecture includes a large set of application programming interfaces (APIs), tools, and implementations of commonly-used security algorithms, mechanisms, and protocols. This provides the developer a comprehensive security framework for writing applications, and also provides the user or administrator a set of tools to securely manage applications.
The Java security APIs span a wide range of areas. Cryptographic and public key infrastructure (PKI) interfaces provide the underlying basis for developing secure applications. Interfaces for performing authentication and access control enable applications to guard against unauthorized access to protected resources.
The APIs allow for multiple interoperable implementations of algorithms and other security services. Services are implemented in providers, which are plugged into the Java platform via a standard interface that makes it easy for applications to obtain security services without having to know anything about their implementations. This allows developers to focus on how to integrate security into their applications, rather than on how to implement complex security mechanisms.
The Java platform includes a number of providers that implement a core set of security services. It also allows for additional custom providers to be installed. This enables developers to extend the platform with new security mechanisms.
This paper gives a broad overview of security in the Java platform, from secure language features to the security APIs, tools, and built-in provider services, highlighting key packages and classes where applicable.
Note – This paper is based on JavaTM 2 Platform, Standard Edition (J2SETM), version 5.0.

Chapter 2
Java Language Security and Bytecode Verification
The Java language is designed to be type-safe and easy to use. It provides automatic memory management, garbage collection, and range-checking on arrays. This reduces the overall programming burden placed on developers, leading to fewer subtle programming errors and to safer, more robust code.
In addition, the Java language defines different access modifiers that can be assigned to Java classes, methods, and fields, enabling developers to restrict access to their class implementations as appropriate. Specifically, the language defines four distinct access levels: private, protected, public, and, if unspecified,
package. The most open access specifier is public—access is allowed to anyone. The most restrictive modifier is private—access is not allowed outside the particular class in which the private member (a method, for example) is defined. The protected modifier allows access to any subclass, or to other classes within the same package. Package-level access only allows access to classes within the same package.
A compiler translates Java programs into a machine-independent bytecode representation. A bytecode verifier is invoked to ensure that only legitimate bytecodes are executed in the Java runtime. It checks that the bytecodes conform to the Java Language Specification and do not violate Java language rules or namespace restrictions. The verifier also checks for memory management violations, stack underflows or overflows, and illegal data typecasts. Once bytecodes have been verified, the Java runtime prepares them for execution.

Chapter 3
Basic Security Architecture
The Java platform defines a set of APIs spanning major security areas, including cryptography, public key infrastructure, authentication, secure communication, and access control. These APIs allow developers to easily integrate security into their application code. They were designed around the following principles:
1. Implementation independence
Applications do not need to implement security themselves. Rather, they can request security services from the Java platform. Security services are implemented in providers (see below), which are plugged into the Java platform via a standard interface. An application may rely on multiple independent providers for security functionality.
2. Implementation interoperability
Providers are interoperable across applications. Specifically, an application is not bound to a specific provider, and a provider is not bound to a specific application.
3. Algorithm extensibility
The Java platform includes a number of built-in providers that implement a basic set of security services that are widely used today. However, some applications may rely on emerging standards not yet implemented, or on proprietary services. The Java platform supports the installation of custom providers that implement such services.
Security Providers
The java. security. Provider class encapsulates the notion of a security provider in the Java platform.
It specifies the provider’s name and lists the security services it implements. Multiple providers may be configured at the same time, and are listed in order of preference. When a security service is requested, the highest priority provider that implements that service is selected.
Applications rely on the relevant getInstance method to obtain a security service from an underlying provider. For example, message digest creation represents one type of service available from providers. (Chapter 4 discusses message digests and other cryptographic services.) An application invokes the getInstance method in the java. security. MessageDigest class to obtain an implementation of a specific message digest algorithm, such as MD5.
MessageDigest md = MessageDigest.getInstance("MD5");
The program may optionally request an implementation from a specific provider, by indicating the provider name, as in the following:
MessageDigest md = MessageDigest.getInstance("MD5", "ProviderC");
Figures 1 and 2 illustrate these options for requesting an MD5 message digest implementation. Both figures show three providers that implement message digest algorithms. The providers are ordered by preference from left to right (1-3). In Figure 1, an application requests an MD5 algorithm implementation without specifying a provider

name. The providers are searched in preference order and the implementation from the first provider supplying that particular algorithm, ProviderB, is returned. In Figure 2, the application requests the MD5 algorithm implementation from a specific provider, ProviderC. This time the implementation from that provider is returned, even though a provider with a higher preference order, ProviderB, also supplies an MD5 implementation.



Figure 1 – Provider searching Figure 2 – Specific provider requested
The Java platform implementation from Sun Microsystems includes a number of pre-configured default
providers that implement a basic set of security services that can be used by applications. Note that other vendor implementations of the Java platform may include different sets of providers that encapsulate vendor-specific sets of security services. When this paper mentions built-in default providers, it is referencing those available in Sun’s implementation.
The sections below on the various security areas (cryptography, authentication, etc.) each include descriptions of the relevant services supplied by the default providers. A table in Appendix C summarizes all of the default providers.
File Locations
Certain aspects of Java security mentioned in this paper, including the configuration of providers, may be customized by setting security properties. You may set security properties statically in the security properties file, which by default is the java.security file in the lib/security directory of the directory where the JavaTM Runtime Environment (JRE) is installed. Security properties may also be set dynamically by calling appropriate methods of the Security class (in the java.security package).

Chapter 4
Cryptography
The Java cryptography architecture is a framework for accessing and developing cryptographic functionality for the Java platform. It includes APIs for a large variety of cryptographic services, including:
• Message digest algorithms
• Digital signature algorithms
• Symmetric bulk encryption
• Symmetric stream encryption
• Asymmetric encryption
• Password-based encryption (PBE)
• Elliptic Curve Cryptography (ECC)
• Key agreement algorithms
• Key generators
• Message Authentication Codes (MACs)
• (Pseudo-)random number generators
For historical (export control) reasons, the cryptography APIs are organized into two distinct packages. The java. security package contains classes that are not subject to export controls (like Signature and MessageDigest). The j avax. crypto package contains classes that are subject to export controls (like Cipher and KeyAgreement).
The cryptographic interfaces are provider-based, allowing for multiple and interoperable cryptography implementa¬tions. Some providers may perform cryptographic operations in software; others may perform the operations on a hardware token (for example, on a smartcard device or on a hardware cryptographic accelerator). Providers that implement export-controlled services must be digitally signed.
The Java platform includes built-in providers for many of the most commonly used cryptographic algorithms, including the RSA and DSA signature algorithms, the DES, AES, and ARCFOUR encryption algorithms, the MD5 and SHA-1 message digest algorithms, and the Diffie-Hellman key agreement algorithm. These default providers implement cryptographic algorithms in Java code.
The Java platform also includes a built-in provider that acts as a bridge to a native PKCS#11 (v2.x) token. This provider, named “SunPKCS11”, allows Java applications to seamlessly access cryptographic services located on PKCS#11-compliant tokens.

Chapter 5
Public Key Infrastructure
Public Key Infrastructure (PKI) is a term used for a framework that enables secure exchange of information based on public key cryptography. It allows identities (of people, organizations, etc.) to be bound to digital certificates and provides a means of verifying the authenticity of certificates. PKI encompasses keys, certificates, public key encryption, and trusted Certification Authorities (CAs) who generate and digitally sign certificates.
The Java platform includes API and provider support for X.509 digital certificates and certificate revocation lists (CRLs), as well as PKIX-compliant certification path building and validation. The classes related to PKI are located in the java. security and java. security.cert packages.
Key and Certificate Storage
The Java platform provides for long-term persistent storage of cryptographic keys and certificates via key and certificate stores. Specifically, the java. security. KeyStore class represents a key store, a secure repository of cryptographic keys and/or trusted certificates (to be used, for example, during certification path validation),
and the java. security. cert . CertStore class represents a certificate store, a public and potentially vast repository of unrelated and typically untrusted certificates. A CertStore may also store CRLs.
KeyStore and CertStore implementations are distinguished by types. The Java platform includes the standard PKCS11 and PKCS12 key store types (whose implementations are compliant with the corresponding PKCS specifications from RSA Security), as well as a proprietary file-based key store type called JKS (which stands for “Java Key Store”).
The Java platform includes a special built-in JKS key store, cacerts, that contains a number of certificates for well-known, trusted CAs. The keytool documentation (see the security features documentation link in Chapter 9) lists the certificates included in cacerts.
The SunPKCS11 provider mentioned in the “Cryptography” chapter (Chapter 4) includes a PKCS11 KeyStore implementation. This means that keys and certificates residing in secure hardware (such as a smartcard) can be accessed and used by Java applications via the KeyStore API. Note that smartcard keys may not be permitted to leave the device. In such cases, the java. security. Key object reference returned by the KeyS tore API may simply be a reference to the key (that is, it would not contain the actual key material). Such a Key object can only be used to perform cryptographic operations on the device where the actual key resides.
The Java platform also includes an LDAP certificate store type (for accessing certificates stored in an LDAP directory), as well as an in-memory Collection certificate store type (for accessing certificates managed in a java.util .Collection object).
PKI Tools
There are two built-in tools for working with keys, certificates, and key stores: keytool is used to create and manage key stores. It can
• Create public/private key pairs
• Display, import, and export X.509 v1, v2, and v3 certificates stored as files

• Create self-signed certificates
• Issue certificate (PKCS#10) requests to be sent to CAs
• Import certificate replies (obtained from the CAs sent certificate requests)
• Designate public key certificates as trusted
The jarsigner tool is used to sign JAR files, or to verify signatures on signed JAR files. The JavaTM ARchive (JAR) file format enables the bundling of multiple files into a single file. Typically a JAR file contains the class files and auxiliary resources associated with applets and applications. When you want to digitally sign code, you first use keytool to generate or import appropriate keys and certificates into your key store (if they are not there already), then use the jar tool to place the code in a JAR file, and finally use the jarsigner tool to sign the JAR file. The jarsigner tool accesses a key store to find any keys and certificates needed to sign a JAR file or to verify the signature of a signed JAR file.
Note – jarsigner can optionally generate signatures that include a timestamp. Systems (such as JavaTM Plug-in) that verify JAR file signatures can check the timestamp and accept a JAR file that was signed while the signing certificate was valid rather than requiring the certificate to be current. (Certificates typically expire annually, and it is not reasonable to expect JAR file creators to re-sign deployed JAR files annually.)

Chapter 6
Authentication
Authentication is the process of determining the identity of a user. In the context of the JavaTM runtime environment, it is the process of identifying the user of an executing Java program. In certain cases, this process may rely on
the services described in the “Cryptography” chapter (Chapter 4).
The Java platform provides APIs that enable an application to perform user authentication via pluggable login modules. Applications call into the LoginContext class (in the javax. security.auth. login package), which in turn references a configuration. The configuration specifies which login module (an implementation of the j avax. security. auth. spi . LoginModule interface) is to be used to perform the actual authentication.
Since applications solely talk to the standard LoginContext API, they can remain independent from the underlying plug-in modules. New or updated modules can be plugged in for an application without having to modify the application itself. Figure 3 illustrates the independence between applications and underlying login modules:
Figure 3 – Authentication login modules plugging into the authentication framework
It is important to note that although login modules are pluggable components that can be configured into the Java platform, they are not plugged in via security providers. Therefore, they do not follow the provider searching model described in Chapter 3. Instead, as is shown in the above diagram, login modules are administered by their own unique configuration.

The Java platform provides the following built-in LoginModules, all in the com. sun. security. auth. module package:
• Krb5LoginModule for authentication using Kerberos protocols
• JndiLoginModule for username/password authentication using LDAP or NIS databases
• KeyStoreLoginModule for logging into any type of key store, including a PKCS#11 token key store
Authentication can also be achieved during the process of establishing a secure communication channel between two peers. The Java platform provides implementations of a number of standard communication protocols, which are discussed in the following chapter.

Chapter 7
Secure Communication
The data that travels across a network can be accessed by someone who is not the intended recipient. When the data includes private information, such as passwords and credit card numbers, steps must be taken to make the data unintelligible to unauthorized parties. It is also important to ensure that you are sending the data to the appropriate party, and that the data has not been modified, either intentionally or unintentionally, during transport.
Cryptography forms the basis required for secure communication, and that is described in Chapter 4. The Java platform also provides API support and provider implementations for a number of standard secure communication protocols.
SSL/TLS
The Java platform provides APIs and an implementation of the SSL and TLS protocols that includes functionality for data encryption, message integrity, server authentication, and optional client authentication. Applications can use SSL/TLS to provide for the secure passage of data between two peers over any application protocol, such as HTTP on top of TCP/IP.
The j avax . net. ssl . SSLSocket class represents a network socket that encapsulates SSL/TLS support on top of a normal stream socket (java . net. Socket). Some applications might want to use alternate data transport abstractions (e.g., New-I/O); the j avax . net. ssl . SSLEngine class is available to produce and consume SSL/TLS packets.
The Java platform also includes APIs that support the notion of pluggable (provider-based) key managers and trust managers. A key manager is encapsulated by the j avax. net. ssl . KeyManager class, and manages the keys used to perform authentication. A trust manager is encapsulated by the TrustManager class (in the same package), and makes decisions about who to trust based on certificates in the key store it manages.
SASL
Simple Authentication and Security Layer (SASL) is an Internet standard that specifies a protocol for authentication and optional establishment of a security layer between client and server applications. SASL defines how authentica¬tion data is to be exchanged, but does not itself specify the contents of that data. It is a framework into which specific authentication mechanisms that specify the contents and semantics of the authentication data can fit. There are a number of standard SASL mechanisms defined by the Internet community for various security levels
and deployment scenarios.
The Java SASL API defines classes and interfaces for applications that use SASL mechanisms. It is defined to be mechanism-neutral; an application that uses the API need not be hardwired into using any particular SASL mechanism. Applications can select the mechanism to use based on desired security features. The API supports both client and server applications. The j avax. security. sasl . Sasl class is used to create SaslClient and SaslServer objects.

SASL mechanism implementations are supplied in provider packages. Each provider may support one or more SASL mechanisms and is registered and invoked via the standard provider architecture.
The Java platform includes a built-in provider that implements the following SASL mechanisms:
• CRAM-MD5, DIGEST-MD5, EXTERNAL, GSSAPI, and PLAIN client mechanisms
• CRAM-MD5, DIGEST-MD5, and GSSAPI server mechanisms
GSS-API and Kerberos
The Java platform contains an API with the Java language bindings for the Generic Security Service Application Programming Interface (GSS-API). GSS-API offers application programmers uniform access to security services atop a variety of underlying security mechanisms. The Java GSS-API currently requires use of a Kerberos v5 mechanism, and the Java platform includes a built-in implementation of this mechanism. At this time, it is not possible to plug in additional mechanisms.
Note – The Krb5LoginModule mentioned in Chapter 6 can be used in conjunction with the GSS Kerberos mechanism.
Before two applications can use the Java GSS-API to securely exchange messages between them, they must establish a joint security context. The context encapsulates shared state information that might include, for example, cryptographic keys. Both applications create and use an org. ietf . j gss . GSSContext object to establish and maintain the shared information that makes up the security context. Once a security context has been established, it can be used to prepare secure messages for exchange.
The Java GSS APIs are in the org. ietf . j gss package. The Java platform also defines basic Kerberos classes, like KerberosPrincipal and KerberosTicket, which are located in the javax.security. auth.kerberos package.

Chapter 8
Access Control
The access control architecture in the Java platform protects access to sensitive resources (for example, local files) or sensitive application code (for example, methods in a class). All access control decisions are mediated by a security manager, represented by the java. lang. SecurityManager class. A SecurityManager must be installed into the Java runtime in order to activate the access control checks.
Java applets and JavaTM Web Start applications are automatically run with a SecurityManager installed. However, local applications executed via the java command are by default not run with a SecurityManager installed. In order to run local applications with a SecurityManager, either the application itself must programmatically set one via the setSecurityManager method (in the java. lang. System class), or java must be invoked with a - Dj ava. security. manager argument on the command line.
Permissions
When Java code is loaded by a class loader into the Java runtime, the class loader automatically associates the following information with that code:
• Where the code was loaded from
• Who signed the code (if anyone)
• Default permissions granted to the code
This information is associated with the code regardless of whether the code is downloaded over an untrusted network (e.g., an applet) or loaded from the filesystem (e.g., a local application). The location from which the code was loaded is represented by a URL, the code signer is represented by the signer’s certificate chain, and default permissions are represented by java. security. Permission objects.
The default permissions automatically granted to downloaded code include the ability to make network connections back to the host from which it originated. The default permissions automatically granted to code loaded from the local filesystem include the ability to read files from the directory it came from, and also from subdirectories of that directory.
Note that the identity of the user executing the code is not available at class loading time. It is the responsibility of application code to authenticate the end user if necessary (for example, as described in Chapter 6). Once the user has been authenticated, the application can dynamically associate that user with executing code by invoking the doAs method in the javax. security.auth. Subject class.
Policy
As mentioned earlier, a limited set of default permissions are granted to code by class loaders. Administrators have the ability to flexibly manage additional code permissions via a security policy. The Java platform encapsulates the notion of a security policy in the java. security. Policy class. There is only one Policy object installed into the Java runtime at any given time. The basic responsibility of the Policy object is to determine whether
access to a protected resource is permitted to code (characterized by where it was loaded from, who signed it, and who is executing it). How a Policy object makes this determination is implementation-dependent. For example, it may consult a database containing authorization data, or it may contact another service.

The Java platform includes a default Policy implementation that reads its authorization data from one or more ASCII (UTF-8) files configured in the security properties file. These policy files contain the exact sets of permissions granted to code—specifically, the exact sets of permissions granted to code loaded from particular locations, signed by particular entities, and executing as particular users. The policy entries in each file must conform to a documented proprietary syntax, and may be composed via a simple text editor or the graphical policytool utility.
Access Control Enforcement
The Java runtime keeps track of the sequence of Java calls that are made as a program executes. When access to a protected resource is requested, the entire call stack, by default, is evaluated to determine whether the requested access is permitted.
As mentioned earlier, resources are protected by the SecurityManager. Security-sensitive code in the Java platform and in applications protects access to resources via code like the following:
SecurityManager sm = System. getSecurityManager (); if (sm != null) {
sm. checkPermission (perm);
}
where perm is the Permission object that corresponds to the requested access. For example, if an attempt is made to read the file /tmp/abc, the permission may be constructed as follows:
Permission perm =
new java.io.FilePermission("/tmp/abc", "read");
The default implementation of SecurityManager delegates its decision to the java. security. AccessController implementation. The AccessController traverses the call stack, passing to the installed security Policy each code element in the stack, along with the requested permission (for example, the FilePermission in the above example). The Policy determines whether the requested access is granted, based on the permissions configured by the administrator. If access is not granted, the AccessController throws a java. lang. SecurityException.
Figure 4 illustrates access control enforcement. In this particular example, there are initially two elements on the call stack, ClassA and ClassB. ClassA invokes a method in ClassB, which then attempts to access the file
/tmp/abc by creating an instance of java. io.FileInputStream. The FileInputStream constructor creates a FilePermission, perm, as shown above, and then passes perm to the SecurityManager’s checkPermission method. In this particular case, only the permissions for ClassA and ClassB need to be checked, because all system code, including FileInputStream, SecurityManager, and
Acces sControl l er, automatically receives all permissions.
In this example, ClassA and ClassB have different code characteristics—they come from different locations and have different signers. Each may have been granted a different set of permissions. The AccessController only grants access to the requested file if the Policy indicates that both classes have been granted the required FilePermission.

authorization
data



Figure 4 – Controlling access to resources

Chapter 9
For More Information
Detailed documentation for all the J2SE 5.0 security features mentioned in this paper can be found at http://java.sun.com/j2se/1.5.0/docs/guide/security/index.html
Additional Java security documentation can be found online at http://java.sun.com/security/
and in the book Inside Java 2 Platform Security, Second Edition (Addison-Wesley). See http://java.sun.com/docs/books/security/index.html
Note – Historically, as new types of security services were added to the Java platform (sometimes initially as extensions), various acronymns were used to refer to them. Since these acronyms are still in use in the Java security documentation, here’s an explanation of what they represent: JSSE (Java' Secure Socket Extension) refers to the SSL-related services described in Chapter 7, JCE (Java' Cryptography Extension) refers to cryptographic services (Chapter 4), and JAAS (Java' Authentication and Authorization Service) refers to the authentication and user-based access control services described in Chapters 6 and 8, respectively.

Appendix A – Classes Summary
Table 1 summarizes the names, packages, and usage of the Java security classes and interfaces mentioned in this paper.
Table 1 – Key Java security packages and classes
Package
com.sun.security.auth.modu le Class/Interface Name JndiLogin Module Usage
Performs username/password authentication using LDAP or NIS database
KeyStoreLoginModule Performs authentication based on key store login
Krb5LoginModu le Performs authentication using Kerberos protocols
java.lang SecurityException Indicates a security violation
SecurityManager Mediates all access control decisions
System Installs the SecurityManager
java.security AccessController Called by default implementation of SecurityManager to make access control decisions
Key Represents a cryptographic key
KeyStore Represents a repository of keys and trusted certificates
MessageDigest Represents a message digest
Permission Represents access to a particular resource
Policy Encapsulates the security policy
Provider Encapsulates security service implementations
Security Manages security providers and security properties
Signature Creates and verifies digital signatures
java.security.cert Certificate Represents a public key certificate
CertStore Represents a repository of unrelated and typically untrusted certificates
javax.crypto Cipher Performs encryption and decryption
KeyAgreement Performs a key exchange
javax.net.ssl
KeyManager Manages keys used to perform SSL/TLS authentication
SSLEngine Produces/consumes SSL/TLS packets, allowing the application freedom to choose a transport mechanism
SSLSocket Represents a network socket that encapsulates SSL/TLS support on top of a normal stream socket
TrustManager Makes decisions about who to trust in SSL/TLS interactions (for example, based on trusted certificates in key stores)


Package
javax.security.auth Class/Interface Name
Subject Usage
Represents a user
javax.security.auth.kerberos KerberosPrincipal Represents a Kerberos principal
KerberosTicket Represents a Kerberos ticket
javax.security.auth.login LoginContext Supports pluggable authentication
javax.security.auth.spi LoginModule Implements a specific authentication mechanism
javax.security.sasl Sasl Creates SaslClient and SaslServer objects
SaslClient Performs SASL authentication as a client
SaslServer Performs SASL authentication as a server
org.ietf.jgss GSSContext Encapsulates a GSS-API security context and provides the security services available via the context

Appendix B – Tools Summary
Table 2 summarizes the tools mentioned in this paper.
Table 2 – Java security tools
Tool Usage
jar Creates Java Archive (JAR) files
ja rsig ner Signs and verifies signatures on JAR files
keytool Creates and manages key stores
policytool Creates and edits policy files for use with default Policy implementation

There are also three Kerberos-related tools that are shipped with the Java platform for Windows. Equivalent functionality is provided in tools of the same name that are automatically part of the SolarisTM and Linux operating environments. Table 3 summarizes the Kerberos tools.
Table 3 – Kerberos-related tools
Tool Usage
kinit Obtains and caches Kerberos ticket-granting tickets
klist Lists entries in the local Kerberos credentials cache and key table
kta b Manages the names and service keys stored in the local Kerberos key table

Appendix C – Built-in Providers
The Java platform implementation from Sun Microsystems includes a number of built-in provider
packages. Table 4 summarizes some of the most important security services supplied by these providers. For details, see the documentation referenced in the “For More Information” chapter.
In the table, the providers are listed in default preference order, and the preference order is shown underneath each provider name, in parentheses. The final column lists the standard names that can be passed to relevant getInstance calls (for example, MessageDigest.getInstance).
Table 4 – Built-in providers and the services they implement
Provider Name Security Services Algorithms/Standards Supported
(and default preference order)
SUN Algorithm parameter generation DSA



Certificate store Collection (in-memory collection) LDAP
Certification path building PKIX
Certification path creation X509 (from PKCS#7 or PkiPath encoded bytes)



Key pair generation DSA
Key store JKS (Sun proprietary standard)
Message digest calculation MD2
MD5
S HA-1
SHA-256
SHA-384
SHA-512
Pseudorandom number generation SHA1PRNG (Sun proprietary algorithm)
Signature generation RawDSA SHA1withDSA
SunRsaSign (2) Key conversion (from raw bytes to Java objects and vice versa) RSA
Key pair generation RSA
Signature generation M D2with RSA
M D5with RSA
SHA1withRSA SHA256withRSA SHA384withRSA SHA512withRSA

Provider Name Security Services Algorithms/Standards Supported
(and default preference order)

SunJSSE (3) Key manager SunX509
Key store PKCS12
SSL/TLS protocols SSLv3
TLSv1

PKIX (alias: X509)
DiffieHellman
AES Blowfish
DES
DESede (Triple DES)
DiffieHellman
OAEP
PBE PBEWithMD5AndDES
PBEWith M D5AndTri pleDES PBEWithSHA1AndDESede PBEWithSHA1AndRC2_40
RC2
Modes provided for all block ciphers: CBC (Cipher Block Chaining)
CFB (Cipher Feedback)
CTR (Counter)
ECB (Electronic Codebook)
OFB (Output Feedback)
PCBC (Propagating Cipher Block Chaining)
For all block ciphers:
NOPADDING or PKCS5PADDING
For non-PKCS#5 block ciphers:
ISO10126PADDING (XML encryption padding)
AES ARCFOUR
Blowfish
DES
DESede (Triple DES)
PBEWithMD5AndDES
PBEWith M D5AndTri pleDES PBEWithSHA1AndDESede PBEWithSHA1AndRC2_40
RC2
RSA

Provider Name Security Services Algorithms/Standards Supported
(and default preference order)

Key generation AES
ARCFOUR
Blowfish
DES
DESede (Triple DES)
DiffieHellman H macM D5
HmacSHA1
HmacSHA256 HmacSHA384 HmacSHA512 RC2
Key store JCEKS (Sun proprietary standard)
Message authentication code H macM D5
(MAC) calculation HmacPBE SHA1 HmacSHA1
HmacSHA256
HmacSHA384
HmacSHA512
SunJGSS GSS-API security mechanism (built-in Kerberos v5 provider)
(5) SunSASL

Client authentication CRAM-M D5
DIGEST-M D5
EXTERNAL
GSSAPI (Kerberos v5) PLAIN
(6) mechanisms

Server authentication mechanisms CRAM-MD5
DIGEST-M D5
GSSAPI (Kerberos v5)
SunPKCS11
(1 on Solaris 10—other provider preferences
increased by 1—otherwise not configured by default) PKCS#11 token cryptography (Enables access to native PKCS#11 tokens via standard Java cryptography APIs)
Key store PKCS11

© 2005 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, CA 95054 USA All rights reserved.
This product or document is protected by copyright and distributed under licenses restricting its use, copying, distribution, and decompilation. No part of this product or document may be reproduced in any form by any means without prior written authorization of Sun and its licensors, if any. Third-party software, including font technology, is copyrighted and licensed from Sun suppliers.
Sun, Sun Microsystems, the Sun logo, Java, the Java Coffee Cup logo, Solaris, and J2SE are trademarks, registered trademarks or service marks of Sun Microsystems, Inc. in the United States and other countries.
UNIX is a registered trademark in the United States and other countries, exclusively licensed through X/Open Company, Ltd.
All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. in the U.S. and other countries. Products bearing SPARC trademarks are based upon an architecture developed by Sun Microsystems, Inc.
RESTRICTED RIGHTS: Use, duplication, or disclosure by the U.S. Government is subject to restrictions of FAR 52.227-14(g)(2)(6/87) and FAR 52.227-19(6/87),
or DFAR 252.227-7015(b)(6/95) and DFAR 227.7202-3(a). DOCUMENTATION IS PROVIDED “AS IS” AND ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH DISCLAIMERS HELD TO BE LEGALLY INVALID.


Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA 95054 USA Phone 1-650-960-1300 or 1-800-555-9SUN Web sun.com

SUNTM © 2005 Sun Microsystems, Inc. All rights reserved. Sun, Sun Microsystems, the Sun logo, Java, the Java Coffee Cup logo, Solaris, and J2SE are trademarks, registered trademarks or service marks of Sun Microsystems, Inc. in the United States and other countries.
UNIX is a registered trademark in the United States and other countries, exclusively licensed through X/Open Company, Ltd.
All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. in the U.S. and other countries. Products bearing SPARC trademarks are based upon an architecture developed by Sun Microsystems, Inc.