Senin, 26 Oktober 2009

Hukum Moore

“Setiap dua tahun jumlah transistor dalam sebuah chip akan bertambah dua kali lipat.”

Pemikiran Moore
Usulan Dr. Moore yang pernah dibuat menyatakan, sistem akan jadi makin rumit dibanding sebelumnya. Dan integrasi sirkuit adalah cara untuk memangkas biaya elektronik.
“Sirkuit yang terintegrasi” adalah istilah yang merujuk pada sekumpulan transistor yang saling terkoneksi, dioda-dioda, dan sirkuit pada selembar chip silikon - sejenis material semikonduksi.
Ketika Dr. Moore menulis artikelnya, sirkuit terintegrasi ini punya 30 komponen. Sementara laboratorium tempat dia bekerja punya satu yang memiliki 60 komponen.
Dr. Moore menuturkan, ada gejala penggandaan setiap tahunnya untuk jumlah komponen per sirkuit yang terintegrasi. Dan jika dihitung-hitung selama 10 tahun ke depan, jumlahnya akan menjadi 60.000 dalam setiap chip.
Menurutnya, hal itu merupakan ekstrapolasi yang cukup berani. Tapi dia berharap prediksinya cukup akurat dan ada kondisi yang memungkinkan biayanya bisa lebih murah.

Chip dalam Dunia Digital
Tanpa kehadiran chip - yang terus-menerus berkembang dan mengecil secara ukuran - perangkat bergerak, PDA (personal digital assistants), game, laptop, dan pemutar musik digital, tidak akan secanggih sekarang.
Tetapi ada batasan untuk seberapa banyak komponen bisa dimasukkan ke dalam sebuah chip. Hukum Moore telah meramalkan hal ini 10 sampai 20 tahun sebelum batas maksimum dicapai.
Sementara itu, ada keinginan untuk meningkatkan performa sekaligus menurunkan resiko kebocoran energi dan pengurangan panas pada sebuah chip. Yang mana, hal ini menjadi masalah ketika ada kebutuhan untuk memasukkan lebih banyak sirkuit ke dalam ruangan chip yang semakin sempit.
Para peneliti di seluruh dunia, mencari altenatif quantum computing dan nanotechnologies untuk menggantikan teknologi chip berbasis silikon.
Walaupun begitu, Dr. Moore masih tidak yakin akan usaha mengganti komponen tersebut dengan teknologi dan material yang dikembangkan dalam skala nano. Dr. Moore menambahkan, “Kami sudah beroperasi dengan baik pada level dibawah 100nm - bisa dibilang batas konvensional untuk nanotechnology. Tetapi untuk membangun sesuatu yang lebih kecil, saya masih ragu.” ujarnya.

Source : http://mbro.belajar.net/2005/04/24/hukum-moore/
http://www.detikinet.com/read/2005/04/19/134217/389128/409/hukum-moore-masih-kinclong

Komunikasi Data

Universal Serial Bus
Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
(Dialihkan dari USB)
Langsung ke: navigasi, cari

Konektor USB (Tipe A dan B)

Konektor USB Tipe A
Universal Serial Bus (USB) adalah standar bus serial untuk perangkat penghubung, biasanya kepada komputer namun juga digunakan di peralatan lainnya seperti konsol permainan, ponsel dan PDA.
Sistem USB mempunyai desain yang asimetris, yang terdiri dari pengontrol host dan beberapa peralatan terhubung yang berbentuk pohon dengan menggunakan peralatan hub yang khusus.
Desain USB ditujukan untuk menghilangkan perlunya penambahan expansion card ke ISA komputer atau bus PCI, dan memperbaiki kemampuan plug-and-play (pasang-dan-mainkan) dengan memperbolehkan peralatan-peralatan ditukar atau ditambah ke sistem tanpa perlu mereboot komputer. Ketika USB dipasang, ia langsung dikenal sistem komputer dan memroses device driver yang diperlukan untuk menjalankannya.
USB dapat menghubungkan peralatan tambahan komputer seperti mouse, keyboard, pemindai gambar, kamera digital, printer, hard disk, dan komponen networking. USB kini telah menjadi standar bagi peralatan multimedia seperti pemindai gambar dan kamera digital.
Versi terbaru (hingga Januari 2005) USB adalah versi 2.0. Perbedaan paling mencolok antara versi baru dan lama adalah kecepatan transfer yang jauh meningkat. Kecepatan transfer data USB dibagi menjadi tiga, antara lain:
• High speed data dengan frekuensi clock 480.00Mb/s dan tolerasi pensinyalan data pada ± 500ppm.
• Full speed data dengan frekuensi clock 12.000Mb/s dan tolerasi pensinyalan data pada ±0.25% atau 2,500ppm.
• Low speed data dengan frekuensi clock 1.50Mb/s dan tolerasi pensinyalan data pada ±1.5% atau 15,000ppm.
Protokol USB
Persinyalan USB
USB adalah host-centric bus di mana host/terminal induk memulai semua transaksi. Paket pertama/penanda (token) awal dihasilkan oleh host untuk menjelaskan apakah paket yang mengikutinya akan dibaca atau ditulis dan apa tujuan dari perangkat dan titik akhir. Paket berikutnya adalah data paket yang diikuti oleh handshaking packet yang melaporkan apakah data atau penanda sudah diterima dengan baik atau pun titik akhir gagal menerima data dengan baik.
Setiap proses transaksi pada USB terdiri atas:
• Paket token/sinyal penanda (Header yang menjelaskan data yang mengikutinya)
• Pilihan paket data (termasuk tingkat muatan) dan
• Status paket (untuk acknowledge/pemberitahuan hasil transaksi dan untuk koreksi kesalahan)
Nomor kaki (dilihat pada soket):

Penetapan kaki
Kaki Fungsi
1 VBUS (4.75–5.25 V)
2 D−
3 D+
4 GND

Shell Shield

Paket data umum USB
Data di bus USB disalurkan dengan cara mendahulukan Least Significant Bit(LSB). Paket-paket USB terdiri dari data-data berikut ini:
• Sync
Semua paket harus diawali dengan data sync. Sync adalah data 8 bit untuk low dan full speed atau data 32 bit untuk high speed yang digunakan untuk mensinkronkan clock dari penerima dengan pemancar. Dua bit terakhir mengindikasikan dimana data PID dimulai.
• PID (Packet Identity/Identitas paket)
Adalah field untuk menandakan tipe dari paket yang sedang dikirim. Tabel dibawah ini menunjukkan nilai-nilai PID:
Group Nilai PID Identitas Paket
Token 0001 OUT Token
Token 1001 IN Token
Token 0101 SOF Token
Token 1101 SETUP Token
Data 0011 DATA0
Data 1011 DATA1
Data 0111 DATA2
Data 1111 MDATA
Handshake 0010 ACK Handshake
Handshake 1010 NAK Handshake
Handshake 1110 STALL Handshake
Handshake 0110 NYET (No Response Yet)
Special 1100 PREamble
Special 1100 ERR
Special 1000 Split
Special 0100 Ping
Ada 4 bit PID data, supaya yakin diterima dengan benar, 4 bit di komplementasikan dan diulang, menjadikan 8 bit data PID. Hasil dari pengaturan tersebut adalah sebagai berikut.
PID0 PID1 PID2 PID3 nPID0 nPID1 nPID2 nPID3
• ADDR (address)
Bagian alamat dari peralatan dimana paket digunakan. Dengan lebar 7 bit, 127 peralatan dapat disambungkan. Alamat 0 tidak sah, peralatan yang belum terdaftar harus merespon paket yang dikirim ke alamat 0.
• ENDP (End point)
Titik akhir dari field yang terdiri dari 4 bit, menjadikan 16 kemungkinan titik akhir. Low speed devices, hanya dapat mempunyai 2 tambahan end point pada puncak dari pipe default. (maksimal 4 endpoints)
• CRC
Cyclic Redundancy Check dijalankan pada data didalam paket yang dikirim. Semua penanda (token) paket mempunyai sebuah 5 bit CRC ketika paket data mempunyai sebuah 16 bit CRC.
• EOP (End of packet)
Akhir dari paket yang disinyalkan dengan satu angka akhir 0 (Single Ended Zero/SEO) untuk kira-kira 2 kali bit diikuti oleh sebuah J 1 kali.
Data yang dikirim dalam bus USB adalah salah satu dari 4 bentuk, yaitu control, interrupt, bulk, atau isochronous.
Perancangan peralatan yang menggunakan USB
Untuk membuat suatu peralatan yang dapat berkomunikasi dengan protokol USB tidak perlu harus mengetahui secara rinci protokol USB. Bahkan kadang tidak perlu pengetahuan tentang USB protokol sama sekali. Pengetahuan tentang USB protokol hanya diperlukan untuk mengetahui spesifikasi yang dibutuhkan untuk alat kita. Pada kenyataannya untuk mengimplemetasikan USB protokol di FPGA ataupun perangkat bantu lain sangat tidak efisien dan banyak waktu terbuang untuk merancangnya. Menggunakan kontroler USB sangat lebih dianjurkan dalam membuat alat yang dapat berkomunikasi melalui protokol ini. Kontroler USB mempunyai banyak macam bentuk, dari microcontroller berbasis 8051 yang mempunyai input output USB secara langsung sampai pengubah protocol dari serial seperti I2C bus ke USB.
USB controller biasanya dijual dengan disertai berbagai fasilitas yang mempermudah pengembangan alat, diantaranya manual yang lengkap, driver untuk windows, contoh code aplikasi untuk mengakses USB, contoh code untuk USB controller, dan skema rangkaian elektronikanya.
Dalam sisi pengembangan software aplikasi dalam personal computer, komunikasi antar hardware didalam perangkat keras USB tidak terlalu diperhatikan karena Windows ataupun sistem operasi lain yang akan mengurusnya. Pengembang perangkat lunak hanya memberikan data yang akan dikirim ke alat USB di buffer penyimpan dan membaca data dari alat USB dari buffer pembaca. Untuk driver pun kadang-kadang Windows sudah menyediakannya, kecuali untuk peralatan yang mempunyai spesifikasi khusus kita harus membuatnya sendiri.
Bluetooth
Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
Langsung ke: navigasi, cari

Logo Bluetooth
Bluetooth adalah spesifikasi industri untuk jaringan kawasan pribadi (personal area networks atau PAN) tanpa kabel. Bluetooth menghubungkan dan dapat dipakai untuk melakukan tukar-menukar informasi di antara peralatan-peralatan. Spesifiksi dari peralatan Bluetooth ini dikembangkan dan didistribusikan oleh kelompok Bluetooth Special Interest Group. Bluetooth beroperasi dalam pita frekuensi 2,4 Ghz dengan menggunakan sebuah frequency hopping traceiver yang mampu menyediakan layanan komunikasi data dan suara secara real time antara host-host bluetooth dengan jarak terbatas.Kelemahan teknologi ini adalah jangkauannya yang pendek dan kemampuan transfer data yang rendah.
Asal nama bluetooth dan lambangnya
Nama "bluetooth" berasal dari nama raja di akhir abad sepuluh, Harald Blatand yang di Inggris juga dijuluki Harald Bluetooth kemungkinan karena memang giginya berwarna gelap. Ia adalah raja Denmark yang telah berhasil menyatukan suku-suku yang sebelumnya berperang, termasuk suku dari wilayah yang sekarang bernama Norwegia dan Swedia. Bahkan wilayah Scania di Swedia, tempat teknologi bluetooth ini ditemukan juga termasuk daerah kekuasaannya. Kemampuan raja itu sebagai pemersatu juga mirip dengan teknologi bluetooth sekarang yang bisa menghubungkan berbagai peralatan seperti komputer personal dan telepon genggam.
Sedangkan logo bluetooth berasal dari penyatuan dua huruf Jerman yang analog dengan huruf H dan B (singkatan dari Harald Bluetooth), yaitu (Hagall) dan (Berkanan) yang kemudian digabungkan.
Sejarah
Awal mula dari Bluetooth adalah sebagai teknologi komunikasi wireless (tanpa kabel) yang beroperasi dalam pita frekuensi 2,4 GHz unlicensed ISM (Industrial, Scientific and Medical) dengan menggunakan sebuah frequency hopping tranceiver yang mampu menyediakan layanan komunikasi data dan suara secara real-time antara host-host bluetooth dengan jarak jangkauan layanan yang terbatas (sekitar 10 meter). Bluetooth berupa card yang menggunakan frekuensi radio standar IEEE 802.11 dengan jarak layanan yang terbatas dan kemampuan data transfer lebih rendah dari card untuk Wireless Local Area Network (WLAN).
Pembentukan Bluetooth dipromotori oleh 5 perusahaan besar Ericsson, IBM, Intel, Nokia dan Toshiba membentuk sebuah Special Interest Group (SIG) yang meluncurkan proyek ini. Pada bulan Juli 1999 dokumen spesifikasi bluetooth versi 1.0 mulai diluncurkan. Pada bulan Desember 1999 dimulai lagi pembuatan dokumen spesifikasi bluetooth versi 2.0 dengan tambahan 4 promotor baru yaitu 3Com, Lucent Technologies, Microsoft dan Motorola. Saat ini, lebih dari 1800 perusahaan di berbagai bidang bergabung dalam sebuah konsorsium sebagai adopter teknologi bluetooth. Walaupun standar Bluetooth SIG saat ini ‘dimiliki’ oleh grup promotor tetapi ia diharapkan akan menjadi sebuah standar IEEE (802.15)
Sistem Operasi
Berupa radio transceiver, baseband link controller dan link manager. Berikut beberapa karaketristik radio bluetooth sesuai dengan dokumen Bluetooth SIG dalam tabel 1
Parameter Spesifikasi
Transmiter
Frekuensi ISM band, 2400 - 2483.5 MHz (mayoritas), untuk beberapa negara mempunyai batasan frekuensi sendiri (lihat tabel 2), spasi kanal 1 MHz.
Maksimum Output Power Power class 1 : 100 mW (20 dBm)Power class 2 : 2.5 mW (4 dBm)Power class 3 : 1 mW (0 dBm)
Modulasi GFSK (Gaussian Frequency Shift Keying), Bandwidth Time : 0,5; Modulation Index : 0.28 sampai dengan 0.35.
Out of band Spurious Emission 30 MHz - 1 GHz : -36 dBm (operation mode), -57 dBm (idle mode)1 GHz – 12.75 GHz: -30 dBm (operation mode), -47 dBm (idle mode)1.8 GHz – 1.9 GHz: -47 dBm (operation mode), -47 dBm (idle mode)5.15 GHz –5.3 GHz: -47 dBm (operation mode), -47 dBm (idle mode)
Receiver
Actual Sensitivity Level -70 dBm pada BER 0,1%.
Spurious Emission 30 MHz - 1 GHz : -57 dBm1 GHz – 12.75 GHz : -47 dBm
Max. usable level -20 dBm, BER : 0,1%
Time Slot
Kanal dibagi dalam time slot-time slot, masing-masing mempunyai panjang 625 ms. Time slot-time slot tersebut dinomori sesuai dengan clock bluetooth dari master piconet. Batas penomoran slot dari 0 sampai dengan 227-1 dengan panjang siklus 227. Di dalam time slot, master dan slave dapat mentransmisikan paket-paket dengan menggunakan skema TDD (Time-Division Duplex). Master hanya memulai melakukan pentransmisiannya pada nomor time slot genap saja sedangkan slave hanya memulai melakukan pentransmisiannya pada nomor time slot ganjil saja.
Protokol
Maksud dari protokol adalah untuk mempercepat pengembangan aplikasi-aplikasi dengan menggunakan teknologi Bluetooth. Layer-layer bawah pada stack protokol bluetooth dirancang untuk menyediakan suatu dasar yang fleksibel untuk pengembangan protokol yang lebih lanjut. Protokol-protokol yang lain seperti RFCOMM diambil dari protokol-protokol yang sudah ada dan protokol ini hanya dimodifikasi sedikit untuk disesuaikan dengan kepentingan bluetooth. Stack protokol bluetooth dapat dibagi ke dalam empat layer sesuai dengan tujuannya.
Protocol Layer Protocol In The Stack
Bluetooth Core Protocols, Baseband, LMP, L2CAP, SDP Cable Replacement Protocol, RFCOMM
Cable Replacement Protocol RFCOMM
Telephony Control Protocols TCS Binary, AT-commands
Adopted Protocols PPP, UDP/TCP/IP, OBEX, WAP, vCard, vCal, IrMC, WAE
Pengukuran
Ada tiga aspek dalam melakukan pengukuran Bluetooth: pengukuran RF (Radio Frequency), protokol dan profile. Pengukuran radio dilakukan untuk menyediakan compatibility perangkat radio yang digunakan di dalam sistem dan untuk menentukan kualitas sistem serta dapat menggunakan perangkat alat ukur RF standar seperti spectrum analyzer, transmitter analyzer, power meter, digital signal generator dan bit-error-rate tester (BERT). Hasil pengukuran harus sesuai dengan spesifikasi dan memenuhi parameter yang tercantum dalam Tabel 1.
Dari informasi Test & Measurement World, untuk pengukuran protokol, dapat menggunakan protocol sniffer yang dapat memonitor dan menampilkan pergerakan data antar perangkat bluetooth. Pengukuran profile dilakukan untuk meyakinkan interoperability antar perangkat dari berbagai macam vendor.
Fitur Keamanan
Bluetooth dirancang untuk memiliki fitur-fitur keamanan sehingga dapat digunakan secara aman baik dalam lingkungan bisnis maupun rumah tangga. Fitur-fitur yang disediakan bluetooth antara lain sebagai berikut:
• Enkripsi data.
• Autentikasi user
• Fast frekuensi-hopping (1600 hops/sec)
• Output power control
Fitur-fitur tersebut menyediakan fungsi-fungsi keamanan dari tingkat keamanan layer fisik/ radio yaitu gangguan dari penyadapan sampai dengan tingkat keamanan layer yang lebih tinggi seperti password dan PIN. Tetapi dari sebuah artikel internet, menurut penelitian dua mahasiswa Tel Aviv University, mengenai adanya kemungkinan Bluetooth bisa disadap dengan proses pairing berpasangan.
Caranya adalah dengan menyiapkan sebuah kunci rahasia pada proses pairing. Selama ini dua perangkat bluetooth menyiapkan kunci digital 128 bit. Ini adalah kunci rahasia yang kemudian disimpan dan dipakai dalam proses enkripsi pada komunikasi selanjutnya. Langkah pertama ini mengharuskan pengguna yang sah untuk menginputkan kunci rahasia yang sesuai, PIN empat digit ke perangkat. Pesan lalu dikirim ke perangkat lainnya, dan ketika ditanyai kunci rahasia, dia berpura-pura lupa. Hal ini memacu perangkat lain untuk memutus kunci dan keduanya lalu mulai proses pairing baru. Kesempatan ini kemudian bisa dimanfaatkan oleh hacker untuk mengetahui kunci rahasia yang baru. Selain mengirim ini ke perangkat Bluetooth yang dituju, semua perangkat Bluetooth yang ada dalam jangkauan itu juga tetap dapat disadap.
Bluetooth FHSS vs WLAN DSSS
Bluetooth lebih memilih metode FHSS (Frequency Hopping Spread Spectrum) dibandingkan dengan DSSS (Direct Sequence Spread Spectrum). Alasan bluetooth tidak menggunakan DSSS antara lain sebagai berikut :
1. FHSS membutuhkan konsumsi daya dan kompleksitas yang lebih rendah dibandingkan DSSS hal ini disebabkan karena DSSS menggunakan kecepatan chip (chip rate) dibandingkan dengan kecepatan simbol (symbol rate) yang digunakan oleh FHSS, sehingga cost yang dibutuhkan untuk menggunakan DSSS akan lebih tinggi.
2. FHSS menggunakan FSK dimana ketahanan terhadap gangguan noise relatif lebih bagus dibandingkan dengan DSSS yang biasanya menggunakan OPSK ( untuk IEEE 802.11 2 Mbps) atau CCK ( IEEE 802.11b 11 Mbps).
Walaupun FHSS mempunyai jarak jangkauan dan transfer data yang lebih rendah dibandingkan dengan DSSS tetapi untuk layanan dibawah 2 Mbps FHSS dapat memberikan solusi cost-efektif yang lebih baik.
Aplikasi dan Layanan
Protokol bluetooth menggunakan sebuah kombinasi antara circuit switching dan packet switching. Bluetooth dapat mendukung sebuah kanal data asinkron, tiga kanal suara sinkron simultan atau sebuah kanal dimana secara bersamaan mendukung layanan data asinkron dan suara sinkron. Setiap kanal suara mendukung sebuah kanal suara sinkron 64 kb/s. Kanal asinkron dapat mendukung kecepatan maksimal 723,2 kb/s asimetris, dimana untuk arah sebaliknya dapat mendukung sampai dengan kecepatan 57,6 kb/s. Sedangkan untuk mode simetris dapat mendukung sampai dengan kecepatan 433,9 kb/s.


Headset yang menggunakan bluetooth
Range yang dapat dijangkau oleh Bluetooth adalah 10 meter atau 30 feet. Sistem Bluetooth juga menyediakan layanan komunikasi point to point maupun komunikasi point to multipoint. Produk bluetooth dapat berupa PC card atau USB adapter yang dimasukkan ke dalam perangkat. Sedangkan perangkat yang dapat dikombinasikan dengan Bluetooth diantaranya: handphone, kamera, personal computer (PC), printer, headset, Personal Digital Assistant (PDA), dan lainnya. Aplikasi-aplikasi yang dapat disediakan oleh layanan bluetooth ini antara lain : PC to PC file transfer, PC to PC file synch ( notebook to desktop), PC to mobile phone, PC to PDA, wireless headset, LAN connection via ethernet access point dan sebagainya.
Kelebihan
Kelebihan yang dimiliki oleh sistem Bluetooth adalah:
• Bluetooth dapat menembus dinding, kotak, dan berbagai rintangan lain walaupun jarak transmisinya hanya sekitar 30 kaki atau 10 meter
• Bluetooth tidak memerlukan kabel ataupun kawat
• Bluetooth dapat mensinkronisasi database dari handphone ke komputer
• Dapat digunakan sebagai perantara modem
• Di Indonesia, perkembangan bluetooth mengacu pada negara-negara maju dan sudah banyak sekali perangkat yang dilengkapi dengan sistem bluetooth sehingga memudahkan berbagai proses transfer data
Kekurangan
Kekurangan dari sistem Bluetooth adalah:
• Sistem ini menggunakan frekuensi yang sama dengan gelombang LAN standar
• Apabila dalam suatu ruangan terlalu banyak koneksi Bluetooth yang digunakan, akan menyulitkan pengguna untuk menemukan penerima yang diharapkan
• Banyak mekanisme keamanan Bluetooth yang harus diperhatikan untuk mencegah kegagalan pengiriman atau penerimaan informasi.
• Di Indonesia, sudah banyak beredar virus-virus yang disebarkan melalui bluetooth dari handphone
Protokol USB
Persinyalan USB
USB adalah host-centric bus di mana host/terminal induk memulai semua transaksi. Paket pertama/penanda (token) awal dihasilkan oleh host untuk menjelaskan apakah paket yang mengikutinya akan dibaca atau ditulis dan apa tujuan dari perangkat dan titik akhir. Paket berikutnya adalah data paket yang diikuti oleh handshaking packet yang melaporkan apakah data atau penanda sudah diterima dengan baik atau pun titik akhir gagal menerima data dengan baik.
Setiap proses transaksi pada USB terdiri atas:
• Paket token/sinyal penanda (Header yang menjelaskan data yang mengikutinya)
• Pilihan paket data (termasuk tingkat muatan) dan
• Status paket (untuk acknowledge/pemberitahuan hasil transaksi dan untuk koreksi kesalahan)
Nomor kaki (dilihat pada soket):

Penetapan kaki
Kaki Fungsi
1 VBUS (4.75–5.25 V)
2 D−
3 D+
4 GND

Shell Shield

Paket data umum USB
Data di bus USB disalurkan dengan cara mendahulukan Least Significant Bit(LSB). Paket-paket USB terdiri dari data-data berikut ini:
• Sync
Semua paket harus diawali dengan data sync. Sync adalah data 8 bit untuk low dan full speed atau data 32 bit untuk high speed yang digunakan untuk mensinkronkan clock dari penerima dengan pemancar. Dua bit terakhir mengindikasikan dimana data PID dimulai.
• PID (Packet Identity/Identitas paket)
Adalah field untuk menandakan tipe dari paket yang sedang dikirim. Tabel dibawah ini menunjukkan nilai-nilai PID:
Group Nilai PID Identitas Paket
Token 0001 OUT Token
Token 1001 IN Token
Token 0101 SOF Token
Token 1101 SETUP Token
Data 0011 DATA0
Data 1011 DATA1
Data 0111 DATA2
Data 1111 MDATA
Handshake 0010 ACK Handshake
Handshake 1010 NAK Handshake
Handshake 1110 STALL Handshake
Handshake 0110 NYET (No Response Yet)
Special 1100 PREamble
Special 1100 ERR
Special 1000 Split
Special 0100 Ping
Ada 4 bit PID data, supaya yakin diterima dengan benar, 4 bit di komplementasikan dan diulang, menjadikan 8 bit data PID. Hasil dari pengaturan tersebut adalah sebagai berikut.
PID0 PID1 PID2 PID3 nPID0 nPID1 nPID2 nPID3
• ADDR (address)
Bagian alamat dari peralatan dimana paket digunakan. Dengan lebar 7 bit, 127 peralatan dapat disambungkan. Alamat 0 tidak sah, peralatan yang belum terdaftar harus merespon paket yang dikirim ke alamat 0.
• ENDP (End point)
Titik akhir dari field yang terdiri dari 4 bit, menjadikan 16 kemungkinan titik akhir. Low speed devices, hanya dapat mempunyai 2 tambahan end point pada puncak dari pipe default. (maksimal 4 endpoints)
• CRC
Cyclic Redundancy Check dijalankan pada data didalam paket yang dikirim. Semua penanda (token) paket mempunyai sebuah 5 bit CRC ketika paket data mempunyai sebuah 16 bit CRC.
• EOP (End of packet)
Akhir dari paket yang disinyalkan dengan satu angka akhir 0 (Single Ended Zero/SEO) untuk kira-kira 2 kali bit diikuti oleh sebuah J 1 kali.
Data yang dikirim dalam bus USB adalah salah satu dari 4 bentuk, yaitu control, interrupt, bulk, atau isochronous.
Perancangan peralatan yang menggunakan USB
Untuk membuat suatu peralatan yang dapat berkomunikasi dengan protokol USB tidak perlu harus mengetahui secara rinci protokol USB. Bahkan kadang tidak perlu pengetahuan tentang USB protokol sama sekali. Pengetahuan tentang USB protokol hanya diperlukan untuk mengetahui spesifikasi yang dibutuhkan untuk alat kita. Pada kenyataannya untuk mengimplemetasikan USB protokol di FPGA ataupun perangkat bantu lain sangat tidak efisien dan banyak waktu terbuang untuk merancangnya. Menggunakan kontroler USB sangat lebih dianjurkan dalam membuat alat yang dapat berkomunikasi melalui protokol ini. Kontroler USB mempunyai banyak macam bentuk, dari microcontroller berbasis 8051 yang mempunyai input output USB secara langsung sampai pengubah protocol dari serial seperti I2C bus ke USB.
USB controller biasanya dijual dengan disertai berbagai fasilitas yang mempermudah pengembangan alat, diantaranya manual yang lengkap, driver untuk windows, contoh code aplikasi untuk mengakses USB, contoh code untuk USB controller, dan skema rangkaian elektronikanya.
Dalam sisi pengembangan software aplikasi dalam personal computer, komunikasi antar hardware didalam perangkat keras USB tidak terlalu diperhatikan karena Windows ataupun sistem operasi lain yang akan mengurusnya. Pengembang perangkat lunak hanya memberikan data yang akan dikirim ke alat USB di buffer penyimpan dan membaca data dari alat USB dari buffer pembaca. Untuk driver pun kadang-kadang Windows sudah menyediakannya, kecuali untuk peralatan yang mempunyai spesifikasi khusus kita harus membuatnya sendiri.

FireWire
Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
(Dialihkan dari Firewire)
Langsung ke: navigasi, cari
FireWire adalah adalah merek dagang Apple sekaligus nama yang paling populer untuk standar kabel data antar-muka berseri IEEE 1394. Sony memperkenalkan IEEE 1394 dengan nama i.Link. Meski namanya berbeda-beda, ketiganya (FireWire, IEEE 1394 dan i.Link) sama-sama menunjuk pada jenis kabel data yang mampu mengirim data dengan kecepatan sangat cepat, sampai pada rata-rata 400 megabit per detik (Mbps). FireWire diklaim sebagai saluran penghantar data yang paling cepat dan stabil diantara saluran lain seperti USB.
Perkembangan FireWire
Generasi baru FireWire lahir dengan munculnya FireWire 800 (IEEE 1394b) yang Apple perkenalkan tahun 2003. FireWire 800 ini memiliki kecepatan dua kali lipat dari IEEE 1394 pendahulunya (disebut IEEE 1934a atau FireWire 400), dan mampu menghantar kan data sampai pada kecepatan rata-rata 800 Mbps. Selain bertambah cepat, IEEE 1394b juga mampu digunakan dengan jarak yang lebih jauh dibandingkan pendahulunya. Sebuah kabel FireWire 800 dapat menyediakan panjangan kabel antara komputer-dengan-alat maupun alat-dengan-alat sampai maksimal sejauh 100 meter, sedangkan optical repeater FireWire 800 bahkan bisa menyambungkan sejauh 1000 meter. Tetapi walau bagaimanapun, kecepatan dan jarak yang bisa diupayakan tetap tergantung pada jenis kabel yang digunakan.
FireWire telah digunakan sebagai salah satu standar koneksi antar-muka antara alat audio-visual digital dengan komputer, seperti kamera digital maupun kamera video digital. Produk-produk yang menggunakan teknologi FireWire biasanya menyediakan proses yang membutuhkan kecepatan koneksi tinggi. Contohnya misalnya dalam pemakaian hard drive eksternal, printer dan scanner, webcam (untuk video-conferencing), pembakar DVD eksternal, transfer film dari kamera video digital kedalam hard drive komputer, sampai ke rekaman suara melalui kartu suara eksternal berbasis FireWire. Semuanya tanpa harus mengalami penurunan kinerja atau hang.
Hampir semua produk komputer dan Laptop keluaran terbaru, sekarang telah dilengkapi fasilitas port FireWire built-in'. kamera video digital kontemporer juga menggunakan FireWire sebagai salah satu standar alat input-outputnya sejak tahun 1995.
Keunggulan
• Kecepatan pertukaran datanya sangat tinggi dan bersifat real-time
• Bersifat “colok-dan-pakai” (plug-and-play). Artinya, sistem operasi muktahir (seperti misalnya Windows XP) akan langsung mendeteksi alat berbasis FireWire yang tersambung dan langsung siap diberdayakan / digunakan.
• Dalam kinerjanya, FireWire tidak melibatkan memori prosesor komputer sehingga sifatnya jadi stabil dan tidak mudah hang.
• Kabel penyambungnya bisa dilepas-copot tanpa harus mematikan alat ataupun mengganggu kinerja komputer inang (hot swapping).
• Mampu menyambung dan mengenali sampai 63 alat berbasis FireWire secara serentak,tanpa mengganggu kinerja satu-sama lain.
• Dapat digunakan bahkan tanpa harus tersambung pada komputer –sebagai mediator- sekalipun, misalnya ketika menggunakan scanner dan printer (peer-to-peer).
• Kabelnya bisa membawa energi listrik sampai 45 watt hingga bisa meringkas penggunaan kabel.
• Menangkap gambar dari camcorder dengan sempurna serta
• Salurannya bebas suara bising (noise-free), sehingga dipakai sebagai saalh satu standar alat studio rekaman modern.
FireWire 800 Vs. USB 2.0
Keduanya kini muncul sebagai saluran pertukaran data termuktahir. Namun, ternyata ada banyak keunggulan yang dimiliki FireWire 800 dibanding USB 2.0
• FireWire 800 memiliki kecepatan sampai pada 800 Mbps, USB 2.0 hanya 480 mbps
• FireWire tidak menggunakan memori prosesor dan bekerja secara independen, USB 2.0 menggunakan memori prosessor (karenanya, FireWire bekerja lebih stabil dan sulit untuk hang).
• FireWire bisa digunakan tanpa harus disambung dengan komputer sekalipun (peer-to peer), USB 2.0 hanya bisa bekerja bila disambung dengan komputer (hot based)
• FireWire dapat menyambungkan Jarak yang jauh lebih panjang dari apa yang USB 2.0 mampu fasilitasi

Di masa depan, FireWire diharapkan mampu mencapai kecepatan sampai 3.2 gigabit per detik (Gbps).
Inframerah
Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
(Dialihkan dari Infrared)
Langsung ke: navigasi, cari


Gambar dari seekor anjing kecil diambil dalam cahaya inframerah-tengah (warna salah)
Inframerah adalah radiasi elektromagnetik dari panjang gelombang lebih panjang dari cahaya tampak, tetapi lebih pendek dari radiasi gelombang radio. Namanya berarti "bawah merah" (dari bahasa Latin infra, "bawah"), merah merupakan warna dari cahaya tampak dengan gelombang terpanjang. Radiasi inframerah memiliki jangkauan tiga "order" dan memiliki panjang gelombang antara 700 nm dan 1 mm. Inframerah ditemukan secara tidak sengaja oleh Sir William Herschell, astronom kerajaan Inggris ketika ia sedang mengadakan penelitian mencari bahan penyaring optik yang akan digunakan untuk mengurangi kecerahan gambar matahari dalam tata surya teleskop
Karakteristik
• tidak dapat dilihat oleh manusia
• tidak dapat menembus materi yang tidak tembus pandang
• dapat ditimbulkan oleh komponen yang menghasilkan panas
• Panjang gelombang pada inframerah memiliki hubungan yang berlawanan atau berbanding terbalik dengan suhu. Ketika suhu mengalami kenaikan, maka panjang gelombang mengalami penurunan.

Jenis-jenis inframerah berdasarkan panjang gelombang
• Inframerah jarak dekat dengan panjang gelombang 0.75 – 1.5 µm
• Inframerah jarak menengah dengan panjang gelombang 1.50 – 10 µm
• Inframerah jarak jauh dengan panjang gelombang 10 – 100 µm

Bidang komunikasi
• Adanya sistem sensor infra merah. Sistem sensor ini pada dasarnya menggunakan inframerah sebagai media komunikasi yang menghubungkan antara dua perangkat. Penerapan sistem sensor infra ini sangat bermanfaat sebagai pengendali jarak jauh, alarm keamanan, dan otomatisasi pada sistem. Adapun pemancar pada sistem ini terdiri atas sebuah LED (Lightemitting Diode)infra merah yang telah dilengkapi dengan rangkaian yang mampu membangkitkan data untuk dikirimkan melalui sinar inframerah, sedangkan pada bagian penerima biasanya terdapat foto transistor, fotodioda, atau modulasi]] infra merah yang berfungsi untuk menerima sinar inframerah yang dikirimkan oleh pemancar.
• Adanya kamera tembus pandang yang memanfaatkan sinar inframerah. Sinar inframerah memang tidak dapat ditangkap oleh mata telanjang manusia, namun sinar inframerah tersebut dapat ditangkap oleh kamera digital atau video handycam. Dengan adanya suatu teknologi yang berupa filter iR PF yang berfungi sebagai penerus cahaya infra merah, maka kemampuan kamera atau video tersebut menjadi meningkat. Teknologi ini juga telah diaplikasikan ke kamera handphone
• Untuk pencitraan pandangan seperti nightscoop
• Inframerah digunakan untuk komunikasi jarak dekat, seperti pada remote TV. Gelombang inframerah itu mudah untuk dibuat, harganya relatif murah, tidak dapat menembus tembok atau benda gelap, serta memiliki fluktuasi daya tinggi dan dapat diinterfensi oleh cahaya matahari.
• Sebagai alat komunikasi pengontrol jarak jauh. Inframerah dapat bekerja dengan jarak yang tidak terlalu jauh (kurang lebih 10 meter dan tidak ada penghalang)
• Sebagai salah satu standardisasi komunikasi tanpa kabel. Jadi, inframerah dapat dikatakan sebagai salah satu konektivitas yang berupa perangkat nirkabel yang digunakan untuk mengubungkan atau transfer data dari suatu perangkat ke parangkat lain. Penggunaan inframerah yang seperti ini dapat kita lihat pada handphone dan laptop yang memiliki aplikasi inframerah. Ketika kita ingin mengirim file ke handphone, maka bagian infra harus dihadapkan dengan modul infra merah pada PC. Selama proses pengiriman berlangsung, tidak boleh ada benda lain yang menghalangi. Fungsi inframerah pada handphone dan laptop dijalankan melalui teknologi IrDA (Infra red Data Acquition). IrDA dibentuk dengan tujuan untuk mengembangkan sistem komunikasi via inframerah.
Kelebihan inframerah dalam pengiriman data
• Pengiriman data dengan infra merah dapat dilakukan kapan saja, karena pengiriman dengan inframerah tidak membutuhkan sinyal.
• Pengiriman data dengan infra merah dapat dikatakan mudah karena termasuk alat yang sederhana.
• Pengiriman data dari ponsel tidak memakan biaya (gratis)
Kelemahan inframerah dalam pengiriman data
• Pada pengiriman data dengan inframerah, kedua lubang infra merah harus berhadapan satu sama lain. Hal ini agak menyulitkan kita dalam mentransfer data karena caranya yang merepotkan.
• Inframerah sangat berbahaya bagi mata, sehingga jangan sekalipun sorotan infra merah mengenai mata
• Pengiriman data dengan inframerah dapat dikatakan lebih lambat dibandingkan dengan rekannya Bluetooth.
Component Object Model
From Wikipedia, the free encyclopedia
Jump to: navigation, search
Component Object Model (COM) is a binary-interface standard for software componentry introduced by Microsoft in 1993. It is used to enable interprocess communication and dynamic object creation in a large range of programming languages. The term COM is often used in the software development industry as an umbrella term that encompasses the OLE, OLE Automation, ActiveX, COM+ and DCOM technologies.
The essence of COM is a language-neutral way of implementing objects that can be used in environments different from the one they were created in, even across machine boundaries. For well-authored components, COM allows reuse of objects with no knowledge of their internal implementation, as it forces component implementers to provide well-defined interfaces that are separate from the implementation. The different allocation semantics of languages are accommodated by making objects responsible for their own creation and destruction through reference-counting. Casting between different interfaces of an object is achieved through the QueryInterface() function. The preferred method of inheritance within COM is the creation of sub-objects to which method calls are delegated.
Although the interface standard has been implemented on several platforms, COM is primarily used with Microsoft Windows. For some applications, COM has been replaced at least to some extent by the Microsoft .NET framework, and support for Web Services through the Windows Communication Foundation (WCF). However, COM objects can still be used with all .NET languages without problems. Networked DCOM uses binary proprietary formats, while WCF encourages the use of XML-based SOAP messaging. COM is very similar to other component software interface standards, such as CORBA and Java Beans, although each has its own strengths and weaknesses. It is likely that the characteristics of COM make it most suitable for the development and deployment of desktop applications, for which it was originally designed.
History
One of the first methods of interprocess communication in Windows was DDE that allowed sending and receiving messages in so-called "conversations" between applications. This technology was the base of OLE (Object Linking and Embedding) that in turn was one of the leading technologies introduced with Windows 3.0. Text conversations and Windows messages proved not to be as flexible as to allow sharing application features in a robust and extensible way. By the time version 3.1 of Windows was released, COM was created as a new foundation, and OLE changed to OLE2.
Visual Basic introduced the VBX (packaged extensions in the form of dynamically linked libraries) that allowed the creation of objects to be graphically placed in a form and manipulated by properties and methods. These were later adapted for use by other languages such as Visual C++. OLE custom controls (OCXs) would be the replacement for the widely popular VBX.
Antony Williams, one of the more notable thinkers involved in the creation of the COM architecture, distributed a couple of internal papers in Microsoft that embraced the concept of software components; Object Architecture: Dealing With the Unknown – or – Type Safety in a Dynamically Extensible Class Library in 1988 and On Inheritance: What It Means and How To Use It in 1990. These provided the foundation of many, if not all, of the ideas behind the basics of COM.
From many of these ideas spawned Microsoft's first object-based framework, OLE, which is the abbreviation of Object Linking and Embedding. OLE was built on top of dynamic data exchange (DDE) and designed specifically for compound documents. It was introduced with Word for Windows and Excel in 1991, and was later included with Windows, starting with version 3.1 in 1992. An example of a compound document is a spreadsheet embedded in a Word for Windows document; as changes are made to the spreadsheet within Excel, they appear automatically inside the Word document.
In 1991, Microsoft introduced Visual Basic Extensions (VBX) with Visual Basic 1.0.
In 1993, Microsoft released OLE 2 with its underlying object model, although the COM Application binary interface (ABI) was the same as the MAPI ABI, which was released in 1992. While OLE 1 was focused on compound documents, COM and OLE 2 were designed to address software components in general. In 1994 OLE controls (OCX) were introduced as the successor to VBX controls. At the same time, Microsoft stated that OLE 2 would just be known as "OLE", and that OLE was no longer an acronym, but a name for all of the company's component technologies.
In early 1996, Microsoft found a new use for OLE Custom Controls, expanding their Web browser's capability to present content, renamed some parts of OLE relating to the Internet ActiveX, and gradually renamed all OLE technologies to ActiveX, except the compound document technology that was used in Microsoft Office. Later that year, DCOM was introduced as an answer to CORBA.
Related technologies
COM was the major software development platform for Windows and, as such, influenced development of a number of supporting technologies.
COM+
In order to provide developers with support for distributed transactions, resource pooling, disconnected applications, event publication and subscription, better memory and processor (thread) management, as well as to position Windows as an alternative to other enterprise-level operating systems, Microsoft introduced a technology called Microsoft Transaction Server on Windows NT 4.
With Windows 2000, that significant extension to COM was incorporated into the operating system (as opposed to the series of external tools provided by MTS) and renamed COM+. At the same time, Microsoft deemphasized DCOM as a separate entity. Components that made use of COM+ services were handled more directly by the added layer of COM+, in particular by operating system support for interception. In the first release of MTS, interception was tacked on - installing an MTS component would modify the Windows Registry to call the MTS software, and not the component directly.
Windows 2000 also revised the Component Services control panel application used to configure COM+ components.
An advantage of COM+ was that it could be run in "component farms". Instances of a component, if coded properly, could be pooled and reused by new calls to its initializing routine without unloading it from memory. Components could also be distributed (called from another machine). COM+ and Microsoft Visual Studio provided tools to make it easy to generate client-side proxies, so although DCOM was used to actually make the remote call, it was easy to do for developers.
COM+ also introduced a subscriber/publisher event mechanism called COM+ Events, and provided a new way of leveraging MSMQ (inter-application asynchronous messaging) with components called Queued Components. COM+ events extend the COM+ programming model to support late-bound events or method calls between the publisher or subscriber and the event system.
.NET
Main article: .NET Framework
The COM platform has largely been superseded by the Microsoft .NET initiative, and Microsoft now focuses its marketing efforts on .NET. COM was often used to hook up complex, high performance code to front end code implemented in Visual Basic or ASP.
To some extent, COM is now deprecated in favor of .NET. Since .NET provides rapid development tools similar to Visual Basic for both Windows Forms and Web Forms with just-in-time compilation, back-end code can be implemented in any .NET Language including C#, Visual Basic and C++/CLI.
Despite this, COM remains a viable technology with an important software base. As of 2009, Microsoft has no plans for discontinuing either COM or support for COM. It is also ideal for script control of applications such as Office or Internet Explorer since it provides an interface for calling COM object methods from a script rather than requiring knowing the API at compile time. The GUID system used by COM has wide uses any time a unique ID is needed.
Several of the services that COM+ provides have been largely replaced by recent releases of .NET. For example, the System.Transactions namespace in .NET provides the TransactionScope class, which provides transaction management without resorting to COM+. Similarly, queued components can be replaced by Windows Communication Foundation with an MSMQ transport.
There is limited support for backward compatibility. A COM object may be used in .NET by implementing a runtime callable wrapper (RCW). .NET objects that conform to certain interface restrictions may be used in COM objects by calling a COM callable wrapper (CCW). From both the COM and .NET sides, objects using the other technology appear as native objects. See COM Interop.
WCF solves a number of COM's remote execution shortcomings, allowing objects to be transparently marshalled by value across process or machine boundaries.
Internet security
Microsoft's idea of embedding active content on web pages as COM/ActiveX components (rather than e.g. Java applets) created a combination of problems in the Internet Explorer web browser that has led to an explosion of computer virus, trojan and spyware infections. These malware attacks mostly depend on ActiveX for their activation and propagation to other computers. Microsoft recognized the problem with ActiveX as far back as 1996 when Charles Fitzgerald, program manager of Microsoft's Java team said "If you want security on the 'Net', unplug your computer. … We never made the claim up front that ActiveX is intrinsically secure." As COM and ActiveX components are run as native code on the user's machine, there are fewer restrictions on what the code can do. Many of these problems have been addressed by the introduction of "Authenticode" code signing (based on digital signatures), and later by the .NET platform as well. Also, before an ActiveX control is installed, the user is prompted whether to allow the installation or not, enabling the user to disallow the installation of controls from sites that the user doesn't trust. Additionally, it is possible to disable ActiveX controls altogether, or to only allow a selected few.
Technical details
COM programmers build their software using COM-aware components. Different component types are identified by class IDs (CLSIDs), which are Globally Unique Identifiers (GUIDs). Each COM component exposes its functionality through one or more interfaces. The different interfaces supported by a component are distinguished from each other using interface IDs (IIDs), which are GUIDs too.
COM interfaces have bindings in several languages, such as C, C++, Visual Basic, Delphi, and several of the scripting languages implemented on the Windows platform. All access to components is done through the methods of the interfaces. This allows techniques such as inter-process, or even inter-computer programming (the latter using the support of DCOM).
Interfaces
All COM components must (at the very least) implement the standard IUnknown interface, and thus all COM interfaces are derived from IUnknown. The IUnknown interface consists of three methods: AddRef() and Release(), which implement reference counting and controls the lifetime of interfaces; and QueryInterface(), which by specifying an IID allows a caller to retrieve references to the different interfaces the component implements. The effect of QueryInterface() is similar to dynamic_cast<> in C++ or casts in Java and C#.
A COM component's interfaces are required to exhibit the reflexive, symmetric, and transitive properties. The reflexive property refers to the ability for the QueryInterface() call on a given interface with the interface's ID to return the same instance of the interface. The symmetric property requires that when interface B is retrieved from interface A via QueryInterface(), interface A is retrievable from interface B as well. The transitive property requires that if interface B is obtainable from interface A and interface C is obtainable from interface B, then interface C should be retrievable from interface A.
An interface consists of a pointer to a virtual function table that contains a list of pointers to the functions that implement the functions declared in the interface, in the same order that they are declared in the interface. This technique of passing structures of function pointers is very similar to the one used by OLE 1.0 to communicate with its system libraries.
COM specifies many other standard interfaces used to allow inter-component communication. For example, one such interface is IStream, which is exposed by components that have data stream semantics (e.g. a FileStream component used to read or write files). It has the expected Read and Write methods to perform stream reads and writes. Another standard interface is IOleObject, which is exposed by components that expect to be linked or embedded into a container. IOleObject contains methods that allow callers to determine the size of the component's bounding rectangle, whether the component supports operations like 'Open', 'Save' and so on.
Classes
A class is COM's language-independent way of defining a class in the object-oriented sense.
A class can be a group of similar objects or a class is simply a representation of a type of object; think of it as a blueprint that describes the object.
A coclass supplies concrete implementation(s) of one or more interfaces. In COM, such concrete implementations can be written in any programming language that supports COM component development, e.g. Delphi, C++, Visual Basic, etc.
One of COM's major contributions to the world of Windows development is the awareness of the concept of separation of interface from implementation. An extension of this fundamental concept is the notion of one interface, multiple implementations. This means that at runtime, an application can choose to instantiate an interface from one of many different concrete implementations.
Interface Definition Language and type libraries
Type libraries contain metadata that represent COM types. However, these types must first be described using Microsoft Interface Definition Language.
This is the common practice in the development of a COM component, i.e. to start with the definition of types using IDL. An IDL file is what COM provides that allows developers to define object-oriented classes, interfaces, structures, enumerations and other user-defined types in a language independent manner. COM IDL is similar in appearance to C/C++ declarations with the addition of keywords such as "interface" and "library" for defining interfaces and collections of classes, respectively. IDL also requires the use of bracketed attributes before declarations to provide additional information, such as the GUIDs of interfaces and the relationships between pointer parameters and length fields.
The IDL file is compiled by the MIDL compiler into a pair of forms for consumption from various languages. For C/C++, the MIDL compiler generates a compiler-independent header file containing struct definitions to match the vtbls of the declared interfaces and a C file containing declarations of the interface GUIDs. C++ source code for a proxy module can also be generated by the MIDL compiler. This proxy contains method stubs for converting COM calls into Remote Procedure Calls, thus enabling DCOM.
An IDL file may also be compiled by the MIDL compiler into a type library (.TLB file). The binary metadata contained within the type library is meant to be processed by language compilers and runtime environments (e.g. VB, Delphi, the .NET CLR etc). The end result of such TLB processing is that language-specific constructs are produced that represent the COM class defined in the .TLB (and ultimately that which was defined in the originating IDL file).
COM as an object framework
The fundamental principles of COM have their roots in Object-Oriented philosophies. It is a platform for the realization of Object-Oriented Development and Deployment.
Because COM is a runtime framework, types have to be individually identifiable and specifiable at runtime. To achieve this, globally unique identifiers (GUIDs) are used. Each COM type is designated its own GUID for identification at runtime (versus compile time).
In order for information on COM types to be accessible at both compile time and runtime, COM uses type libraries. It is through the effective use of type libraries that COM achieves its capabilities as a dynamic framework for the interaction of objects.
Consider the following example coclass definition in an IDL :
coclass MyObject
{
[default] interface IMyObject;
[default, source] dispinterface _IMyObjectEvents;
};
The above code fragment declares a COM class named MyObject which must implement an interface named IMyObject and which supports (not implements) the event interface _IMyObjectEvents.
Ignoring the event interface bit, this is conceptually equivalent to defining a C++ class like this:
class CSomeObject : public ISomeInterface
{
...
...
...
};
where ISomeInterface is a C++ pure virtual class.
Referring once again to the MyObject COM class: once a coclass definition for it has been formalized in an IDL, and a Type Library compiled from it, the onus is on the individual language compiler to read and appropriately interpret this Type Library and then produce whatever code (in the specific compiler's language) necessary for a developer to implement and ultimately produce the binary executable code which can be deemed by COM to be of coclass MyObject.
Once an implementation of a COM coclass is built and is available in the system, next comes the question of how to instantiate it. In languages like C++, we can use the CoCreateInstance() API in which we specify the CLSID (CLSID_MyObject) of the coclass as well as the interface (specified by the IID IID_IMyObject) from that coclass that we want to use to interact with that coclass. Calling CoCreateInstance() like this:
CoCreateInstance(CLSID_MyObject,
NULL,
CLSCTX_INPROC_SERVER,
IID_IMyObject,
(void**)&m_pIMyObject);
is conceptually equivalent to the following C++ code:
ISomeInterface* pISomeInterface = new CSomeObject();
In the first case, we are saying to the COM sub-system that we want to obtain a pointer to an object that implements the IMyObject interface and we want coclass CLSID_MyObject's particular implementation of this interface. In the second case, we are saying that we want to create an instance of a C++ class that implements the interface ISomeInterface and we are using CSomeObject as that C++ class.
A coclass, then, is an object-oriented class in the COM world. The main feature of the coclass is that it is (1) binary in nature and consequently (2) programming language-independent.
Registry
Main article: windows registry
In Windows, COM classes, interfaces and type libraries are listed by GUIDs in the registry, under HKEY_CLASSES_ROOT\CLSID for classes and HKEY_CLASSES_ROOT\Interface for interfaces. The COM libraries use the registry to locate either the correct local libraries for each COM object or the network location for a remote service.
Reference counting
The most fundamental COM interface of all, i.e. IUnknown (from which all COM interfaces must be derived), supports two main concepts: feature exploration through the QueryInterface method, and object lifetime management by including AddRef() and Release(). Reference counts and feature exploration apply to objects (not to each interface on an object) and thus must have a centralized implementation.
The COM specifications require a technique called reference counting to ensure that individual objects remain alive as long as there are clients which have acquired access to one or more of its interfaces and, conversely, that the same object is properly disposed of when all code that used the object have finished with it and no longer require it. A COM object is responsible for freeing its own memory once its reference count drops to zero.
For its implementation, a COM Object usually maintains an integer value that is used for reference counting. When AddRef() is called via any of object's interfaces, this integer value gets incremented. When Release() is called, this integer gets decremented. AddRef() and Release() are the only means by which a client of a COM object is able to influence its lifetime. The internal integer value remains a private member of the COM object and will never be directly accessible.
The purpose of AddRef() is to indicate to the COM object that an additional reference to itself has been affected and hence it is necessary to remain alive as long as this reference is still valid. Conversely, the purpose of Release() is to indicate to the COM object that a client (or a part of the client's code) has no further need for it and hence if this reference count has dropped to zero, it may be time to destroy itself.
Certain languages (e.g. Visual Basic) provide automatic reference counting so that COM object developers need not explicitly maintain any internal reference counter in their source codes. Using COM in C, explicit reference counting is needed. In C++ you can do it by yourself or choose to use a smart pointer that will manage all the reference counting for you.
The following is a general guideline calling AddRef() and Release() to facilitate proper reference counting in COM object:
• Functions (whether object methods or global functions) that return interface references (via return value or via "out" parameter) should increment the reference count of the underlying object before returning. Hence internally within the function or method, AddRef() is called on the interface reference (to be returned). An example of this is the QueryInterface() method of the IUnknown interface. Hence it is imperative that developers be aware that the returned interface reference has already been reference count incremented and not call AddRef() on the returned interface reference yet another time.
• Release() must be called on an interface reference before that interface's pointer is overwritten or goes out of scope.
• If a copy is made on an interface reference pointer, AddRef() should be called on that pointer. After all, in this case, we are actually creating another reference on the underlying object.
• AddRef() and Release() must be called on the specific interface which is being referenced since an object may implement per-interface reference counts in order to allocate internal resources only for the interfaces which are being referenced.
• Extra calls to these functions are not sent out to remote objects over the wire; a proxy keeps only one reference on the remote object and maintains its own local reference count.
To facilitate and promote COM development, Microsoft introduced ATL (Active Template Library) for C++ developers. ATL provides for a higher-level COM development paradigm. It also shields COM client application developers from the need to directly maintain reference counting by providing smart pointer objects.
Other libraries and languages that are COM-aware include the Microsoft Foundation Classes, the Compiler COM Support, VBScript, Visual Basic, ECMAScript (JavaScript) and Borland Delphi.
Instantiation
COM standardizes the instantiation (i.e. creation) process of COM objects by requiring the use of Class Factories. In order for a COM object to be created, two associated items must exist:
• A Class ID.
• A Class Factory.
Each COM Class or CoClass must be associated with a unique Class ID (a GUID). It must also be associated with its own Class Factory (that is achieved by using a centralized registry). A Class Factory is itself a COM object. It is an object that must expose the IClassFactory or IClassFactory2 (the latter with licensing support) interface. The responsibility of such an object is to create other objects.
A class factory object is usually contained within the same executable code (i.e. the server code) as the COM object itself. When a class factory is called upon to create a target object, this target object's class id must be provided. This is how the class factory knows which class of object to instantiate.
A single class factory object may create objects of more than one class. That is, two objects of different class ids may be created by the same class factory object. However, this is transparent to the COM system.
By delegating the responsibility of object creation into a separate object, a greater level of abstraction is promoted, and the developer is given greater flexibility. For example, implementation of the Singleton and other creation patterns is facilitated. Also, the calling application is shielded from the COM object's memory allocation semantics by the factory object.
In order for client applications to be able to acquire class factory objects, COM servers must properly expose them. A class factory is exposed differently, depending on the nature of the server code. A server which is DLL-based must export a DllGetClassObject() global function. A server which is EXE-based registers the class factory at runtime via the CoRegisterClassObject() Windows API function.
The following is a general outline of the sequence of object creation via its class factory:
1. The object's class factory is obtained via the CoGetClassObject() API (a standard Windows API).
As part of the call to CoGetClassObject(), the Class ID of the object (to be created) must be supplied. The following C++ code demonstrates this:
2. IClassFactory* pIClassFactory = NULL;
3.
4. CoGetClassObject(CLSID_SomeObject,
5. CLSCTX_ALL,
6. NULL,
7. IID_IClassFactory,
8. (LPVOID*)&pIClassFactory);
The above code indicates that the Class Factory object of a COM object, which is identified by the class id CLSID_SomeObject, is required. This class factory object is returned by way of its IClassFactory interface.
9. The returned class factory object is then requested to create an instance of the originally intended COM object. The following C++ code demonstrates this:
10. ISomeObject* pISomeObject = NULL;
11.
12. if (pIClassFactory)
13. {
14. pIClassFactory->CreateInstance (NULL,
15. IID_ISomeObject,
16. (LPVOID*)&pISomeObject);
17.
18. pIClassFactory->Release();
19.
20. pIClassFactory = NULL;
21. }
The above code indicates the use of the Class Factory object's CreateInstance() method to create an object which exposes an interface identified by the IID_ISomeObject GUID. A pointer to the ISomeObject interface of this object is returned. Also note that because the class factory object is itself a COM object, it needs to be released when it is no longer required (i.e. its Release() method must be called).
The above demonstrates, at the most basic level, the use of a class factory to instantiate an object. Higher level constructs are also available, some of which do not even involve direct use of the Windows APIs.
For example, the CoCreateInstance() API can be used by an application to directly create a COM object without acquiring the object's class factory. However, internally, the CoCreateInstance() API itself will invoke the CoGetClassObject() API to obtain the object's class factory and then use the class factory's CreateInstance() method to create the COM object.
VBScript supplies the New keyword as well as the CreateObject() global function for object instantiation. These language constructs encapsulate the acquisition of the class factory object of the target object (via the CoGetClassObject() API) followed by the invocation of the IClassFactory::CreateInstance() method.
Other languages, e.g. PowerBuilder's PowerScript may also provide their own high-level object creation constructs. However, CoGetClassObject() and the IClassFactory interface remain the most fundamental object creation technique.
Reflection
See also: reflection (computer science)
At the time of the inception of COM technologies, the only way for a client to find out what features an object would offer, was to actually create one instance and call into its QueryInterface method (part of the required IUnknown interface). This way of exploration became awkward for many applications, including the selection of appropriate components for a certain task, and tools to help a developer understand how to use methods provided by an object.
As a result, COM Type Libraries were introduced, through which components can describe themselves. A type library contains information such as the CLSID of a component, the IIDs of the interfaces the component implements, and descriptions of each of the methods of those interfaces. Type libraries are typically used by Rapid Application Development (RAD) environments such as Visual Basic or Visual Studio to assist developers of client applications.
Programming
COM is a binary standard (also said to be language agnostic) and may be developed in any programming language capable of understanding and implementing its binary defined data types and interfaces.
Runtime libraries (in extreme situations, the programmers) are responsible for entering and leaving the COM environment, instantiating and reference counting COM objects, querying objects for version information, coding to take advantage of advanced object versions, and coding graceful degradation of function when newer versions aren't available.
Application and network transparency
COM objects may be instantiated and referenced from within a process, across process boundaries within a computer, and across a network, using the DCOM technology. Out-of-process and remote objects may use marshalling to send method calls and return values back and forth. The marshalling is invisible to the object and the code using the object.
Threading in COM
In COM, threading issues are addressed by a concept known as "apartment models". Here the term "apartment" refers to an execution context wherein a single thread or a group of threads is associated with one or more COM objects.
Apartments stipulate the following general guidelines for participating threads and objects:
• Each COM object is associated with one and only one apartment. This is decided at the time the object is created at runtime. After this initial setup, the object remains in that apartment throughout its lifetime.
• A COM thread (i.e., a thread in which COM objects are created or COM method calls are made) is also associated with an apartment. Like COM objects, the apartment with which a thread is associated is also decided at initialization time. Each COM thread also remains in its designated apartment until it terminates.
• Threads and objects which belong to the same apartment are said to follow the same thread access rules. Method calls which are made inside the same apartment are performed directly without any assistance from COM.
• Threads and objects from different apartments are said to play by different thread access rules. Method calls made across apartments are achieved via marshalling. This requires the use of proxies and stubs.
There are three types of Apartment Models in the COM world: Single-Threaded Apartment (STA), Multi-Threaded Apartment (MTA), and Neutral Apartment. Each apartment represents one mechanism whereby an object's internal state may be synchronized across multiple threads.
The Single-Threaded Apartment (STA) model is a very commonly used model. Here, a COM object stands in a position similar to a desktop application's user interface. In an STA model, a single thread is dedicated to drive an object's methods, i.e. a single thread is always used to execute the methods of the object. In such an arrangement, method calls from threads outside of the apartment are marshalled and automatically queued by the system (via a standard Windows message queue). Thus, there is no worry about race conditions or lack of synchronicity because each method call of an object is always executed to completion before another is invoked.
If the COM object's methods perform their own synchronization, multiple threads dedicated to calling methods on the COM object are permitted. This is termed the Multiple Threaded Apartment (MTA). Calls to an MTA object from a thread in an STA are also marshaled. A process can consist of multiple COM objects, some of which may use STA and others of which may use MTA. The Thread Neutral Apartment allows different threads, none of which is necessarily dedicated to calling methods on the object, to make such calls. The only provision is that all methods on the object must be serially reentrant.
Criticisms
Since COM has a fairly complex implementation, programmers can be distracted by some of the "plumbing" issues.
Message pumping
When an STA is initialized it creates a hidden window that is used for inter-apartment and inter-process message routing. This window must have its message queue regularly pumped. This construct is known as a message pump. On earlier versions of Windows, failure to do so could cause system-wide deadlocks. This problem is especially nasty because some Windows APIs initialize COM as part of their implementation, which causes a leak of implementation details.
Reference counting
Reference counting within COM may cause problems if two or more objects are circularly referenced. The design of an application must take this into account so that objects are not left orphaned.
Objects may also be left with active reference counts if the COM "event sink" model is used. Since the object that fires the event needs a reference to the object reacting to the event, the object's reference count will never reach zero.
Reference cycles are typically broken using either out-of-band termination or split identities. In the out of band termination technique, an object exposes a method which, when called, forces it to drop its references to other objects, thereby breaking the cycle. In the split identity technique, a single implementation exposes two separate COM objects (also known as identities). This creates a weak reference between the COM objects, preventing a reference cycle.
DLL hell
Main article: DLL hell
Because the location of each component is stored in a system-wide location (the Windows registry), there can be only one version of a certain component installed. This limitation can seriously complicate the deployment of COM-based applications, due to the possibility that different programs, or different versions of the same program, might require two or more different versions of the same COM component. This condition is known as DLL hell. While this condition has been known to occur with OS components, it is generally a condition created by application developers in the use of their own components. The problem can be reduced or eliminated completely by careful software versioning and regression testing.
Windows XP introduced a new mode of COM object registration called "Registration-free COM". This facility makes it possible for applications that need to install COM objects to store all the required COM registry information in the application's directory, instead of in the global registry, where, strictly speaking only a single application will ever use it. DLL hell can be substantially avoided using Registration-free COM, the only limitation being it requires at least Windows XP or later Windows versions and that it must not be used for EXE COM servers or system-wide components such as MDAC, MSXML, DirectX or Internet Explorer.
RegFree COM
RegFree COM (or Registration-Free COM) is a technology introduced with Windows XP that allows Component Object Model (COM) components without using the registry to store activation metadata and CLSID (Class ID) for the component. Instead, the metadata and CLSIDs of the classes implemented in the component are stored in a separate .manifest file (described using XML) in the same directory as the component. This allows multiple versions of the same component to be installed in different directories, described by their own manifests, as well as XCOPY deployment.
During application loading, the COM runtime looks for the presence of the manifest file. If it is present, the COM runtime creates an in-memory table relating the CLSIDs and the component that provides an implementation of the class. When a COM class is instantiated, the in-memory table is first checked if the corresponding implementation for the CLSID can be found. Only if the lookup fails is the registry scanned.

Beberapa Motto di Dunia IT

WORA : Write Once, Read Anywhere
WORE : Write Once, Read Everywhere
WYSIWYG : What You See Is What You Get
"Byte into an Apple" (Late 1970s)
"Soon there will be 2 kinds of people. Those who use computers, and those who use Apples." (Early 1980s)
"The Power to Be Your Best" (1990)[1]
"Think different." (1990s)
"The Computer for the rest of us"

Product advertising slogans

Apple 1
• "Apple introduces the first low cost microcomputer system with a video terminal and 8K bytes of RAM on a single PC card!"

Apple II
• "Introducing Apple II"
• "Original Apple II"
• "What every educator should know about desktop computers."
• "The home computer that's ready to work, play and grow with you."
• "We're looking for the most original use of an Apple since Adam" Promoting a user-submission essay contest
• "A is for Apple"
• "How to buy a Personal Computer"
• "Welcome IBM. Seriously." Apple II ad recognizing the introduction of the original IBM PC as a milestone for the industry as a whole
• "What's the 'e' stand for?" Ad for the Apple IIe
• "What kind of man owns his own computer?"

Macintosh
• "It takes minutes of practice to make Macintosh do this."
• "Introducing Macintosh. What makes it tick. And talk." - technically oriented ad featuring a cutaway drawing of the Macintosh 128k
• "It does more, It costs less. It's that simple"
• "Of the 235 million people in America, only a fraction can use a computer... Introducing Macintosh. For the rest of us." - headline from a 20 page brochure published in Newsweek[2]

iMac, iBook, and Mac mini
• "iThink, therefore iMac." (1998) based on René Descartes famous line, "I think, therefore I am" (Cogito ergo sum).
• "Hello. Again." (1998) iMac slogan based on original "Hello." Macintosh brochure.
• "The iMac to Go." (1999) used to market the introduction of the iBooks.
• "Where did the computer go?" (2004) used to market the introduction of the new iMac G5
• "From the creators of iPod." (2004) used to market the introduction of the iMac G5
• "The most affordable Mac ever." (2005) used to market the introduction of the Mac mini.
• "Now showing. The new iMac G5" (2005) used to market the new iMac G5 released in October 2005.
• "Small is Beautiful" (2006) used to market the new Intel Mac mini
• "The new, all-in-one iMac" replaced the previous
• "You can't be too thin, Or too powerful." (2007) slogan used to market the new iMac released in August 2007 [3]
• "A little Mini. A lot of Leopard"(2007) used to market the Mac Mini shipping with Mac OS X Leopard
• "The ultimate all-in-one. Now shipping with Leopard" (2007) used to market the iMac shipping with Mac OS X Leopard
• "More Power. Thinly disguised." used to market the iMac revision of early 2008
• "Beauty. Brains. And now more brawn." used to market the iMac revision of early 2008
• "The all-in-one for everyone." used to market the iMac revision of early 2009
• "Faster. Greener. Still mini." used to market the new Mac mini revision of early 2009
• "Brilliance, squared." used to promote the design of the new Mac mini revision of early 2009
• "Small is huge." used to promote the features of the new Mac mini revision of early 2009
• "It’s a good time to be a desk." used to promote accessories of Mac mini revision of early 2009

Power Mac, PowerBook, MacBook, MacBook Air, and MacBook Pro
• "The plot thins" (1999) -- used to market "thinner" PowerBook G3 models code-named "Lombard", introduced May 1999
• "Two Brains are better than one" (2000) used to market the introduction of the dual processor Power Mac G4s
• "Rips through digital video faster than Pentiums can say "uncle"." PowerMac Dual G4 1.42Ghz
• "Less is more" (2003) used to market the introduction of the PowerBook G4s
• "The world's fastest computer" (2003) used to market the introduction of the Power Mac G5s, somewhat controversial as many in the PC world disputed the benchmarks
• "Sends other UNIX boxes to /dev/null" (2003) used to advertise Mac OS X-equipped PowerBooks
• "Higher Resolution. Better Mileage" (2005) used to describe the higher resolution and better battery life on the new PowerBooks (October 2005)
• "Meet the family. Now complete." (2006) used to market the new MacBook family
• "Power Mac G5. The power of four." (2006) used to market the Power Mac G5.
• "Everything2" (2006) used to advertise the MacBook with Intel Core 2 Duo
• "Same lovable MacBook. New lovable speed." (2007) used to advertise the MacBook with faster Intel Core 2 Duo processors than the previous model
• "Vroom with a View" (2007) used to advertise the MacBook Pro with new 1920x1200 displays.
• "State-of-the-art meets state-of-the-art. MacBook Pro now shipping with Leopard" used to advertise the MacBook Pro with Mac OS X Leopard
• "Same lovable MacBook. New amazing OS. MacBook now shipping with Leopard" (2007) used to advertise the MacBook with Mac OS X Leopard
• "There's something in the air" (2008) To promote the release of the MacBook Air
• "Thinnovation" (2008) used to market the original MacBook Air, as well as the late 2008 revision
• "Book smart" (2008) used to market the new MacBook released in February 2008.
• "Nimble, meet quick." (2008) used to market the new MacBook Pro released in February 2008.
• "Rapid transit" (2008) used to market the new MacBook and MacBook Pro
• "Meet the next generation of notebooks." (2008) used to market the new Aluminum MacBook and Macbook Pro
• "Redesigned. Reengineered, Re-everythinged." (2008) used to market the new aluminum MacBook
• "The new MacBook Air. Better graphics. More storage. Yet still the world’s thinnest notebook." (2009) Used to promote the new MacBook Air with NVIDIA GeForce 9400M integrated graphics.
• "Thin as always. Faster than ever." (2009) used on apple.com to promote the new Macbook Air introduced during the WWDC 2009
• "An even quicker study." (2009) used on apple.com to promote the new white polycarbonate MacBook with better specifications and a bigger hard drive
• "The new MacBook Pro family." (2009) used on apple.com to promote the new 13- 15- and 17-inch MacBook Pros

iPod
• "1,000 songs in your pocket." (2001) used to promote the first generation iPod's large storage capacity and compact design
• "Mini. The next big thing." (2004) used to market iPod mini Maria
• "Teeny doesn't mean weeny." (2004) used to market iPod mini
• "The best keeps getting better" (2004) used to market iPod fourth generation
• "10,000 songs in your pocket." (2004) used to market iPod fourth generation
• "Paint it black." (2004) used to market iPod U2 Special Edition fourth generation
• "Life is random." (2005) used to market iPod shuffle
• "*Do not eat iPod shuffle" (2005) Easter egg slogan attached as a footnote to claim that the shuffle was about the size of a pack of gum.
• "Give chance a chance." (2005) used to market iPod shuffle pro.
• "Random is the new order." (2005) used to market iPod shuffle
• "Enjoy uncertainty." (2005) used to market iPod shuffle
• "1,000 songs. Impossibly small." (2005) used to market iPod nano
• "One more thing..." (2005) used to market iPod fifth generation with video
• "Watch your music" (2005) used to market iPod fifth generation with video
• "15,000 songs. 25,000 photos. 80 hours of video." (2005) used to market iPod fifth generation with video
• "Give music." (2005) used to market iTunes Music Cards
• "The best digital jukebox and #1 music download store. Now with video." (2005) used to market iTunes 6
• "Which iPod are you?" (2006) used to market iPod family
• "Home stereo. Reinvented." (2006) used to market iPod Hi-Fi
• "Back for an encore." (2006) used to market iPod U2 Special Edition fifth generation with video
• "Tune your run." (2006) used to market Nike+iPod
• "Completely remastered." (2006) used to market the second generation iPod nano
• "Clip and go." (2006) used to market the second generation iPod shuffle
• "Put some music on." (2006) used to market the second generation iPod shuffle
• "Movies, TV shows, games, and music. Now playing on an iPod near you." (2006) used to market enhanced iPod fifth generation
• "Put a different kind of change in your pocket." (2006) used to market iPod nano (PRODUCT) RED
• "Put a thousand thanks in their pocket." (2006) used to market iPod Corporate Gifting Program
• "Put some color on." (2006) used to market the 4 new colors for the second generation iPod shuffle
• "Give the gift of iPod." (2006) used to market the iPod for Valentine's Day.
• "Meet the best iPods ever." (2007) used to market the redesigned iPod line.
• "A little video for everyone." (2007) used to market the third generation iPod nano
• "Hold everything." (2007) used to market the sixth generation iPod, the iPod classic
• "A new gig for iPod shuffle" (2008) used to market iPod shuffle 2GB
• "Now there's even more to touch." (2008) used to market the iPod touch firmware 1.1.3
• "Play more than music. Play a part." (2008) used to market the iPod (PRODUCT)RED
• "Everybody Touch" (2008) used in the new iPod Touch commercial
• "What's new to touch" (2008) used in the January '08 software update of the iPod Touch
• "Tap into what's new" (2008) also used in the January '08 software update of the iPod Touch
• "Now there's even more to touch" (2008) used for advertising the new iPod Touch software update
• "Pump up the volume. iPod Touch Now in 32GB" used to market the 32GB iPod Touch
• "So much to touch." (2008) used to advertise 8GB, 16GB, and 32GB models.
• "Get your groove on. In four new colors" (2008) used on the website to advertise the refresh of the iPod shuffle
• "nano-chromatic" and "Rockalicious" (2008) used on the website to advertise the new fourth generation iPod nano's colors as well as new features
• "One size fits all."(2009) used on their website to promote the new single sized iPod classic
• "The funnest iPod ever"(2009) used on their website to promote the second generation iPod touch
• "Millions of songs. Thousands of videos. Hundreds of games." used on their website to promote the second generation iPod touch
• "Small Talk."(2009) used on their website to promote the new iPod shuffle
• "Next level fun."(2009) used to market the iPod Touch
• "Nano Shoots Video."(2009) used on UK ads promoting the new iPod nano 5th Generation with Video

iTunes
• "Rip. Mix. Burn." (2001) used to promote iTunes desktop CD burning capability, somewhat controversial as it was seen by some as advocating piracy.
• "Rock and Roll will never die. It is, however, being reborn." (2003) used to promote the iTunes Store
• "The best Windows app ever." (2003) used to promote iTunes on Windows.
• "Hell Froze Over." (2003) used to promote iTunes on Windows
• "Welcome to the digital music revolution." (2004) used to promote iTunes
• "Drink. Win. Play." (2005) used during the 2005 Pepsi-iTunes promotion.
• "Welcome to the entertainment center of your world." (2006) used to promote iTunes 7
• "Give the gift of music for the holidays." (Fall 2006) used to promote iTunes Gift Cards
• "The entertainment center of your world." (2007) currently used to promote iTunes 7
• "American Idol on iTunes." (2008) used to promote American Idol performances on iTunes.
• "Discover iTunes 8. Rediscover your music." presumably used to promote the new Genius feature.
• "iTunes 8. The entertainment capital of your world" Used on apple.com to show that iTunes is a program designed for multimedia.
• "That's entertainment." Used on apple.com to promote better features for iTunes.

Intel
• "What's an Intel chip doing in a Mac? A whole lot more than it's ever done in a PC." used on Apple's website to promote the MacBook Pro and iMac featuring Intel processors.
• "Rosetta. The most amazing software you'll never see." Used to advertise the Rosetta translation engine, used to run PowerPC Mac OS X applications on Intel Macs.
• "Imagine the Possibilities." The tag-line used for the TV commercial which introduced the use of the Intel chip in the new Macintosh computer line.
• "Faster now comes standard." (2006) used on Apple's website to promote the faster processor speeds on the MacBook Pro
• "Better than ever" (2008) used to market the Intel Core 2 Duo 45nm Penryn processor in the MacBook

iPhone
• "The internet in your pocket."
• "Touching is believing" as seen in print ads
• The word "hello" used in the iPhone's ad.
• "iPhone Apple reinvents the phone" used at apple.com
• "Say Hello to iPhone" used at apple.com
• "Talk about big. iPhone now in 16GB. More music. More video. More iPhone." (2008) used to market the new iPhone in 16GB
• "The iPhone you've been waiting for." (2008) Used to promote the iPhone 3G
• "The first phone to beat the iPhone." (2008) Used in their advert for the iPhone 3G
• "Twice as fast, for half the price" (2008) Used in their ad for the iPhone 3G
• "The most advanced mobile OS. Now even more advanced." (2009) Used for the presentation of the blueprint for iPhone OS 3.0.
• "25,000 apps. And counting." (2009) used to market the iPhone 3G.
• "The fastest, most powerful iPhone yet." (2009) used to advertise the new iPhone 3GS.

App Store
• "There's an app for just about anything" used to market the App Store on iPhone and iPod touch
• "Applications unlike anything you’ve seen on a phone before." used at apple.com to market the App Store on iPhone and iPod touch
• "Your iPhone gets better with every new app." Used at apple.com to tell that the iPhone is better with more applications and games.
Apple TV
• "YouTube, Meet Apple TV" (2007) Used currently on the iPod+iTunes homepage.
• "If it's on iTunes, it's on your widescreen TV." (2007).
• "Movie rentals and much more." used to market the Apple TV.
• "Now Playing: HDTV shows and more." used to market the Apple TV.

Mac OS X
• "It's the biggest thing to happen to Macintosh since the Macintosh" (2001) Initial OS X release.
• "The future is here" (2001) used to tell that Mac OS X is the most advanced operating system.
• "Wildly innovative" Mac OS X v10.2
• "The evolution of the species" Mac OS X v10.3
• "Change your stripes" Prerelease slogan for Mac OS X v10.4
• "Redmond, start your photocopiers." (2006) used to market Mac OS X Tiger, Redmond referring to Microsoft.
• "Redmond, we have a problem." (2006) used to market Mac OS X Tiger, Redmond referring to Microsoft.
• "This should keep Redmond busy." (2006) used to market Mac OS X Tiger, Redmond referring to Microsoft.
• "Introducing Longhorn." (2006) used to market Mac OS X Tiger. Longhorn was the codename of Windows Vista.
• "Add a new Mac to your Mac" (2007) Used to promote Mac OS X Leopard on Apple.com.
• "Hello, Tomorrow" (2007) Used on apple.com for Leopard introduction.
• "Beyond Vista" (2007) Universal line to promote Leopard.
• "The Next Big Things" Used currently on apple.com for Leopard's features introduction.
• "Rock Solid Foundations" Promotes the core technologies that power Leopard.
• "It's Here. It's Real. It's Amazing." Mac OS X Tiger runs on Intel.
• "Leopard, Every One's an Ultimate." Used on the release of Mac OS X Leopard, as a reference to Windows Vista's multiple versions.
• "Core innovation" Used to emphasize that Mac OS X Snow Leopard will focus on improving performance, efficiency and reducing its overall footprint, rather than adding new end-user features.
• "The world's most advanced operating system. Finely tuned." Used to tell that Mac OS X 10.6 "Snow Leopard" is a refined version of Mac OS X 10.5 "Leopard"

Mac OS X Server
• "Leopard Server. Simply Powerful." (2007) Used on apple.com to promote the software
• "Connecting your business." Used to promote Mac OS X Server Snow Leopard before its release.
• "New features. New ways to collaborate. Simpler than ever." Used on apple.com to promote the new advances and technologies of Mac OS X 10.6 "Snow Leopard" Server

Mac Pro
• "Room to grow. Introducing Mac Pro" (2006) used to promote the new Mac Pro
• "64-bit Quad Xeon. Introducing Mac Pro"(2008) used to promote the new Mac Pro
• "The new Mac Pro. Tower of 8-core power." (2008) used to promote the new 8-core Mac Pro
• "Start your engines. All eight of them"(2008) used to market the 8-core Mac Pro
• "Expand at will." (2008) used to market the 8-core Mac Pro
• "Beauty outside. Beast inside." (2009) used to market the new Mac Pro with Intel Xeon “Nehalem” processor.

MobileMe
• "Exchange for the rest of us" (2008) used to promote the migration from .Mac to MobileMe
• "The simple way to keep everything in sync." (2008) used to market MobileMe
• "Push email, push contacts, push calendar. Everything in sync. Anywhere you are" (2009) Used on apple.com as an example to show the convenience of MobileMe to store and retrieve data from the MobileMe service from a Macintosh, Personal Computer, or iPhone

Source : http://en.wikipedia.org/wiki/List_of_Apple_Inc._slogans

perkembangan software

Software Development and Release Stages


Pre-Alpha
In contrast to alpha and beta versions, the pre-alpha is not feature complete. When it is used, it refers to all activities performed during the software project prior to software testing. These activities can include requirements analysis, software design, software development and unit testing.
In typical open source development, there are several types of pre-alpha versions. Milestone versions include specific sets of functions and are released as soon as the functionality is complete. Nightly builds are versions that are usually automatically checked out from the revision control system and built, typically overnight; these versions allow the testers to test the recently implemented functionality immediately, and find the new bugs.

Alpha
The alpha build of the software is the build to the internal software testers, that is, people different from the software engineers, sometimes to the public, but usually internal to the organization or community that develops the software. In a rush to market, more and more companies are engaging external customers or value-chain partners in their alpha testing phase. This allows more extensive usability testing during the alpha phase.
In the first phase of testing, developers generally test the software using white box techniques. Additional validation is then performed using black box or gray box techniques, by another dedicated testing team, sometimes concurrently. Moving to black box testing inside the organization is known as alpha release.
In software testing terminology alpha testing is done by the client in the presence of the tester or developers and the test environment is not open for the end user.

Beta
"Beta" is a nickname for software which has passed the alpha testing stage of development and has been released to users for software testing before its official release. It is the prototype of the software that is released to the public. Beta testing allows the software to undergo usability testing with users who provide feedback, so that any malfunctions these users find in the software can be reported to the developers and fixed. Beta software can be unstable and could cause crashes or data loss.
A "beta version" is the first version released outside the organization or community that develops the software, for the purpose of evaluation or real-world black/grey-box testing. The process of delivering a beta version to the users is called beta release. Beta level software generally includes all features, but may also include known issues and bugs of a less serious variety.
The users of a beta version are called beta testers. They are usually customers or prospective customers of the organization that develops the software. They receive the software for free or for a reduced price, but act as free testers.
Beta versions test the supportability of the product, the go-to-market messaging (while recruiting Beta customers), the manufacturability of the product, and the overall channel flow or channel reach.
Beta version software is likely to be useful for internal demonstrations and previews to select customers, but unstable and not yet ready for release. Some developers refer to this stage as a preview, a prototype, a technical preview (TP) or as an early access. As the second major stage in the release life cycle, following the alpha stage, it is named after the Greek letter beta, the second letter in the Greek alphabet.
Often this stage begins when the developers announce a feature freeze on the product, indicating that no more feature requirements will be accepted for this version of the product. Only software issues, or bugs and unimplemented features will be addressed.
Developers release either a closed beta or an open beta; closed beta versions are released to a select group of individuals for a user test, while open betas are to a larger community group, usually the general public. The testers report any bugs that they found and sometimes minor features they would like to see in the final version.
An example of a major public beta test was when Microsoft started releasing regular Windows Vista community technology previews (CTPs) to beta testers in January 2005. The first of these was build 5219. Subsequent CTPs introduced most of the planned features, as well as a number of changes to the user interface, based in large part on feedback from beta testers. Windows Vista was deemed feature complete with the release of build 5308 CTP, released on February 22, 2006, and much of the remainder of work between that build and the final release of the product focused on stability, performance, application and driver compatibility, and documentation.
When a beta becomes available to the general public it is often widely used by the technologically savvy and those familiar with previous versions as though it were the finished product. Usually developers of freeware or open-source betas release them to the general public while proprietary betas go to a relatively small group of testers. Recipients of highly proprietary betas may have to sign a non-disclosure agreement. A release is called feature complete when the product team agrees that functional requirements of the system are met and no new features will be put into the release, but significant software bugs may still exist. Companies with a formal software process will tend to enter the beta period with a list of known bugs that must be fixed to exit the beta period, and some companies make this list available to customers and testers.
As the Internet has allowed for rapid and inexpensive distribution of software, companies have begun to take a more flexible approach to use of the word "beta". [1] Netscape Communications was infamous for releasing alpha level versions of its Netscape web browser to the public and calling them "beta" releases. In February 2005, ZDNet published an article about the recent phenomenon of a beta version often staying for years and being used as if it were in production-level [2]. It noted that Gmail and Google News, for example, had been in beta for a long period of time and were not expected to drop the beta status despite the fact that they were widely used; however, Google News did leave beta in January 2006, followed by Google Apps, including Gmail, in July 2009.[3]. This technique may also allow a developer to delay offering full support and/or responsibility for remaining issues. In the context of Web 2.0, people even talk of perpetual betas to signify that some software is meant to stay in beta state. Also, "beta" is sometimes used to indicate something more like a release candidate such as the Halo 3 public beta.

Release candidate
The term release candidate (RC) refers to a version with potential to be a final product, ready to release unless fatal bugs emerge. In this stage of product stabilization (read QA cycle), all product features have been designed, coded and tested through one or more Beta cycles with no known showstopper-class bug.
During the 1990s, Apple Inc. used the term "golden master" for its release candidates, and the final golden master was the general availability release. Other terms include gamma (and occasionally also delta, and perhaps other Greek letters) for versions that are substantially complete, but still under test, and omega or zenith for final testing of versions that are believed to be bug-free, and may go into production at any time. (gamma, delta, and omega are, respectively, the third, fourth, and last letters of the Greek alphabet.) Some users disparagingly refer to release candidates and even final "point oh" releases as "gamma test" software, suggesting that the developer has chosen to use its customers to test software that is not truly ready for general release. Often beta testers, if privately selected, will be billed for using the release candidate as though it were a finished product.
A release is called code complete when the development team agrees that no entirely new source code will be added to this release. There may still be source code changes to fix defects. There may still be changes to documentation and data files, and to the code for test cases or utilities. New code may be added in a future release.

RTM
The term "release to manufacturing" or "release to marketing" (both abbreviated RTM)—also known as "going gold"—is used to indicate that the software has met a defined quality level and is ready for mass distribution either by electronic means or by physical media. RTM usually does not mean the software is actually released; it would in most cases mean that the software is being released to manufacturers, for pre-installation on ready machines, or for the manufacturer to adjust the software for their manufactured hardware and settings. The term does not define the delivery mechanism, it only states that the quality is sufficient for mass distribution. The deliverable from the engineering organization is frequently in the form of a gold master CD used for duplication or to produce the image for the web.
RTM happens prior to general availability (GA) when the product is released to the public.



General availability (GA)
General availability (GA) is the point where all necessary commercialization activities have been completed and the software has been made available to the general market either via the web or physical media.
Commercialization activities could include but are not limited to the availability of media world wide via dispersed distribution centers, marketing collateral is completed and available in as many languages as deemed necessary for the target market, etc. The time between RTM and GA can be from a week to months in some cases before a generally available release can be declared because of the time needed to complete all commercialization activities required by GA.
Another term with a meaning almost identical to GA is FCS, for First Customer Shipment. Some companies (such as Sun Microsystems and Cisco) use FCS to describe a software version that has been shipped for revenue.
It is also at this stage that the software is considered to have "gone live". The production, live version is the final version of a particular product. A live release is considered to be very stable and relatively bug-free with a quality suitable for wide distribution and use by end users. In commercial software releases, this version may also be signed (used to allow end-users to verify that code has not been modified since the release). The expression that a software product "has gone live" means that the code has been completed and is ready for distribution. Other terms for the live version include: live master, live release, or live build.
In some areas of software development it is at this stage that the release is referred to as a gold release; this seems to be confined mainly to game software.


Boxed copy
A boxed copy is a physical version of the final product, printed on a disc that is complete with disc graphic art. This term is used mostly by reviewers to differentiate from other forms of the released product (e.g., a downloaded copy, or a gold master burned on a generic disc). A boxed copy does not necessarily come enclosed in a box; it refers to the disc itself. In other words, we can say we get something tangible.


Web release
A web release is a means of software delivery that utilizes the Internet for distribution. No physical media are produced in this type of release mechanism by the manufacturer. This is sometimes also referred to as Release To Web (RTW).



Stable or unstable
In open source programming, version numbers or the terms stable and unstable commonly distinguish the stage of development. The term stable refers to a version of software that is substantially identical to a version that has been through enough real-world testing to reasonably assume there are no significant problems, or at least that any problems are known and documented. On the other hand, the term unstable does not necessarily mean that there are problems—rather, that enhancements or changes have been made to the software that have not undergone thorough testing and that more changes are expected to be imminent. Users of such software are advised to use the stable version if it meets their needs, and to only use the unstable version if the new functionality is of interest that exceeds the risk that something might simply not work right.
In the Linux kernel, version numbers are composed of three numbers, separated by a period. Between versions 1.0.0 and 2.6.x, stable releases had an even second number and unstable release an odd one. As of Linux 2.6.x, the even or odd status of the second number no longer holds any significance. The practice of using even and odd numbers to indicate the stability of a release has been used by other open and closed source projects.
Service release
During its supported lifetime, software is sometime subjected to service releases, or service packs. As a well used example, Microsoft's Windows XP has currently had 3 major Service Packs.
Such service releases contain a collection of updates, fixes and/or enhancements, delivered in the form of a single installable package. They may also contain entirely new features.


End of life
End-of-life (EOL). Sometimes software companies stop selling or supporting their software products (e.g., not releasing new patches). At this point the product will be said to be in the status of "legacy", "vintage" or "

Source : http://en.wikipedia.org/wiki/Software_release_life_cycle