Logo Widyatama

Label: ,

Virtual Machine

Label: ,


Virtual Machine(VM) adalah sebuah mesin yang mempunyai dasar logika yang menggunakan pendekatan lapisan-lapisan (layers) dari sistem komputer. Sehingga sistem komputer dengan tersendiri dibangun atas lapisan-lapisan tersebut, dengan urutan lapisannya mulai dari lapisan terendah sampai lapisan teratas adalah sebagai berikut:
  • Perangkat keras (semua bagian fisik komputer).
  • Kernel (program untuk mengontrol disk dan sistem file, multi-tasking, load-balancing, networking dan security).
  • Sistem program (program yang membantu general user).

Kernel yang berada pada lapisan kedua ini, menggunakan instruksi perangkat keras untuk menciptakan seperangkat system call yang dapat digunakan oleh komponen-komponen pada level sistem program.
Sistem program kemudian dapat menggunakan system call dan perangkat keras lainnya seolah-olah pada level yang sama. Meskipun sistem program berada di level tertinggi , namun program aplikasi bisa melihat segala sesuatu pada tingkatan dibawahnya seakan-akan mereka adalah bagian dari mesin.
Pendekatan dengan lapisan-lapisan inilah yang kemudian menjadi kesimpulan logis pada konsep Virtual Machine(VM).

Saat ini, teknologi terbaru sistem operasi yang cukup populer adalah virtualisasi. Secara harfiah, virtual berarti tidak nyata tapi seolah-olah nyata. Jadi pengertian virtualisasi adalah sebuah teknik atau cara untuk membuat sistem operasi dalam bentuk virtual, tidak seperti kenyataan yang ada. Virtualisasi juga digunakan untuk mengemulasikan perangkat fisik komputer, dengan cara membuatnya seolah-olah perangkat tersebut tidak ada (disembunyikan) atau bahkan menciptakan perangkat yang tidak ada menjadi ada. Kita bisa menggunakan beberapa sistem operasi yang berbeda dalam satu komputer dengan teknologi ini. Misal saat ini kita menggunakan komputer dengan sistem operasi Windows 7.
Dengan virtualisasi, kita dapat menggunakan sistem operasi yang lain (misalnya : Linux, Windows XP, dll) dalam komputer yang sama. Untuk melakukan virtualisasi, membutuhkan perangkat lunak yang memiliki kemampuan untuk membuat sebuah komputer secara virtual. Salah satunya dengan menggunakan virtual machine (mesin virtual). Virtual Machine atau mesin virtual adalah sistem operasi yang bersifat interaktif dan multiuser. Yang dimaksud dengan interaktif adalah bahwa antara pengguna dan VM terdapat komunikasi dua arah, sedangkan yang dimaksud dengan multiuser adalah bahwa beberapa orang pengguna dapat memakai VM pada saat yang bersamaan. Ini menunjukkan bahwa penggunaan VM secara efektif dapat memberikan keuntungan bagi user karena dengan demikian sistem komputasi menjadi lebih produktif. Ide dasar dari virtual machine adalah mengabtraksi perangkat keras dari satu komputer (CPU, memori, disk, dst) ke beberapa environment eksekusi, sehingga menciptakan illusi bahwa masing-masing environment menjalankan komputernya (terpisah) sendiri. VM muncul karena pada satu komputer. Virtual Machine (VM) sendiri mulai dikenalkan oleh IBM ketika meluncurkansistem operasi mainframenya pada tahun 1965-an. Diperkenalkan untuk sistem S/370 dan S/390 dan disebut sebagai sistem operasi VM/ESA (Enterprise System Architecture). Keunggulannya bagi desainer sistem operasi atau arsitektur virtual machine adalah karena sistem ini mudah untuk debug, dan masalah keamanan yang mudah untuk dipecahkan. Mesin virtual juga menyediakan platform yang

baik untuk operasi penelitian sistem karena banyak sistem operasi yang berbeda dapat berjalan pada satu sistem fisik.


Kekurangan Virtual Machine(VM)
Ada beberapa kesulitan utama dari konsep VM, diantaranya adalah:
  • Dalam sistem penyimpanan. Sebagai contoh kesulitan dalam sistem penyimpanan adalah sebagai berikut: Andaikan kita mempunyai suatu mesin yang memiliki 3 disk drive namun ingin mendukung 7 VM. Keadaan ini jelas tidak memungkinkan bagi kita untuk dapat mengalokasikan setiap disk drive untuk tiap VM, karena perangkat lunak untuk mesin virtual sendiri akan membutuhkan ruang disk secara substansi untuk menyediakan memori virtual dan spooling.Solusinya adalah dengan menyediakan disk virtual atau yang dikenal pula dengan minidisk, dimana ukuran daya penyimpanannya identik dengan ukuran sebenarnya. Dengan demikian, pendekatan VM juga menyediakan sebuah antarmuka yang identik dengan underlying bare hardware.
  • Dalam hal pengimplementasian. Meski konsep VM cukup baik, namun VM sulit diimplementasikan.

Kelebihan Virtual Machine(VM)
Terlepas dari segala kekurangannya, VM memiliki beberapa keunggulan, antara lain :
  • Dalam hal keamanan. VM memiliki perlindungan yang lengkap pada berbagai sistem sumber daya, yaitu dengan meniadakan pembagian resources secara langsung, sehingga tidak ada masalah proteksi dalam VM. Sistem VM adalah kendaraan yang sempurna untuk penelitian dan pengembangan sistem operasi. Dengan VM, jika terdapat suatu perubahan pada satu bagian dari mesin, maka dijamin tidak akan mengubah komponen lainnya.
  • Memungkinkan untuk mendefinisikan suatu jaringan dari Virtual Machine(VM). Tiap-tiap bagian mengirim informasi melalui jaringan komunikasi virtual. Sekali lagi, jaringan dimodelkan setelah komunikasi fisik jaringan diimplementasikan pada perangkat lunak.
   Contoh Virtual Machine
   IBM VM
Istilah Virtual Machine(VM) sendiri mulai dikenalkan oleh IBM ketika meluncurkan sistem operasi mainframenya pada tahun 1965-an. Diperkenalkan untuk sistem S/370 dan S/390 dan disebut sebagai sistem operasi VM/ESA (Enterprise System Architecture). Sehingga sering menimbulkan kebingungan antara penamaan produk atau penamaan mekanisme. Banyak orang yang menyebut, walau memiliki mekanisme Virtual Machine(VM) tetapi bila bukan dari sistem IBM tersebut, maka tidak disebut dengan Virtual Machine.

Pada penjelasan ini, istilah Virtual Machine(VM) adalah suatu jenis mekanisme virtualisasi suatu mesin di atas mesin lainnya. Jadi bukan jenis produk dari salah satu vendor dengan nama Virtual Machine. Terdapat beberapa kegunaan dari Virtual Machine(VM), pada umumnya tampak untuk
menggambarkan program yang bertindak selayaknya mesin.

VMware
Pada GNU/Linux salah satu virtual machine yang terkenal adalah VMware http://www.vmware.com. VMware memungkinkan beberapa sistem operasi dijalankan pada satu mesin PC tunggal secara bersamaan. Hal ini dapat dilakukan tanpa melakukan partisi ulang dan boot ulang. Pada Virtual Machine(VM) yang disediakan akan dijalankan sistem operasi sesuai dengan yang diinginkan. Dengan cara ini maka pengguna dapat memboot suatu sistem operasi (misal Linux) sebagai sistem operasi tuan rumah (host) dan lalu menjalankan sistem operasi lainnya misal MS Windows. Sistem operasi yang
dijalankan di dalam sistem operasi tuan rumah dikenal dengan istilah sistem operasi tamu ( guest).

Gambar 8.1. Contoh skema penggunaan pada VMware versi ESX Servers



Kebanyakan orang berpikir bahwa secara logisnya VMware diibaratkan sebagai software yang sering digunakan untuk keperluan percobaan game, aplikasi, untuk meng-install dua sistem operasi dan menjalankannya (misalnya Windows maupun Linux) pada harddisk yang sama tanpa memerlukan
logout dari sistem operasi yang lainnya, secara gampang kita hanya tinggal menekan Alt + Tab untuk mengganti SO.
Akan tetapi pada dasarnya VMware bukanlah emulator, karena tidak mengemulasikan CPU dan perangkat keras di dalam suatu Virtual Machine(VM), tetapi hanya membolehkan sistem operasi lainnya dijalankan secara paralel dengan sistem operasi yang telah berjalan. Setiap Virtual
Machine(VM) dapat memiliki alamat IP sendiri (jika mesin tersebut di suatu jaringan), dan pengguna dapat menganggapnya sebagai mesin terpisah.

Xen VMM
Xen adalah open source virtual machine monitor, dikembangkan di University of Cambridge. Dibuat dengan tujuan untuk menjalankan sampai dengan seratus sistem operasi ber-fitur penuh ( full featured OSs) di hanya satu komputer. Virtualisasi Xen menggunakan teknologi paravirtualisasi menyediakan isolasi yang aman, pengatur sumberdaya, garansi untuk quality-of-services dan live migration untuk sebuah mesin virtual. 
Untuk menjalankan Xen, sistem operasi dasar harus dimodifikasi secara khusus untuk kebutuhan tersendiri dan dengan cara ini dicapai kinerja virtualisasi sangat tinggi tanpa hardware khusus.


Java VM
Program Java yang telah dikompilasi adalah platform-neutral bytecodes yang dieksekusi oleh Java Virtual Machine(JVM). JVM sendiri terdiri dari: class loader, class verification, runtime interpreter, Just In-Time(JIT) untuk meningkatkan kinerja kompilator.

Bahasa mesin terdiri dari sekumpulan instruksi yang sangat sederhana dan dapat dijalankan secara langsung oleh CPU dari suatu komputer. Sebuah program yang dibuat dengan bahasa tingkat tinggi tidak dapat dijalankan secara langsung pada komputer. Untuk dapat dijalankan, program tersebut harus ditranslasikan kedalam bahasa mesin. Proses translasi dilakukan oleh sebuah program yang disebut compiler.

Setelah proses translasi selesai, program bahasa-mesin tersebut dapat dijalankan, tetapi hanya dapat dijalankan pada satu jenis komputer. Hal ini disebabkan oleh setiap jenis komputer memiliki bahasa mesin yang berbeda-beda. Alternatif lain untuk mengkompilasi program bahasa tingkat
tinggi selain menggunakan compiler, yaitu menggunakan interpreter. Perbedaan antara compiler dan interpreter adalah compiler mentranslasi program secara keseluruhan sekaligus, sedangkan interpreter menstranslasi program secara instruksi per instruksi. Java dibuat dengan mengkombinasikan antara compiler dan interpreter.

Program yang ditulis dengan java di-compile menjadi bahasa mesin. Tetapi bahasa mesin untuk komputer tersebut tidak benar-benar ada. Oleh karena itu disebut "Virtual" komputer, yang dikenal dengan Java Virtual Machine (JVM). Bahasa mesin untuk JVM disebut Java bytecode. Salah satu keunggulan dari Java adalah dapat digunakan atau dijalankan pada semua jenis komputer. Untuk menjalankan program Java, komputer membutuhkan sebuah interpreter untuk Java bytecode.

Interpreter berfungsi untuk mensimulasikan JVM sama seperti virtual computer mensimulasikan PC komputer. Java bytecode yang dihasilkan oleh setiap jenis komputer berbeda-beda, sehingga diperlukan interpreter yang berbeda pula untuk setiap jenis komputer. Tetapi program Java bytecode yang sama dapat dijalankan pada semua jenis komputer yang memiliki Java bytecode.

.NET Framework
.NET Framework merupakan suatu komponen Windows yang terintegrasi yang dibuat dengan tujuan pengembangan berbagai macam aplikasi serta menjalankan aplikasi generasi mendatang termasuk pengembangan aplikasi XML Web Services.

Keuntungan Menggunakan .NET Framework
  • Mudah. Yang dimaksud mudah di sini adalah kemudahan developer untuk membuat aplikasi yang dijalankan di .NET Framework. Mendukung lebih dari 20 bahasa pemrograman : VB.NET, C#, J#, C++, Pascal, Phyton (IronPhyton), PHP (PhLager.
  • Efisien. Kemudahan pada saat proses pembuatan aplikasi, akan berimplikasi terhadap efisiensi dari suatu proses produktivitas, baik efisien dalam hal waktu pembuatan aplikasi atau juga efisien dalam hal lain, seperti biaya (cost.
  • Konsisten. Kemudahan-kemudahan pada saat proses pembuatan aplikasi, juga bisa berimplikasi terhadap konsistensi pada aplikasi yang kita buat. Misalnya, dengan adanya Base Class Library, maka kita bisa menggunakan objek atau Class yang dibuat untuk aplikasi berbasis windows pada aplikasi berbasis web. Dengan adanya kode yang bisa dintegrasikan ke dalam berbagai macam aplikasi ini, maka konsistensi kode-kode aplikasi kita dapat terjaga.
  • Produktivitas. Semua kemudahan-kemudahan di atas, pada akhirnya akan membuat produktivitas menjadi lebih baik. Produktivitas naik, terutama produktivitas para developer, akan berdampak pada meningkatnya produktivitas suatu perusahaan atau project.




Paradigma Pengembangan Software

Label: ,


Assalamu'laikum para sahabat semua :D 



Alhamdulillah saya masih diberikan kesempatan dan kenikmatan hidup di malam terakhir bulan Ramadhan 1434 H  ini. Insya Allah saya akan menulis tentang PARADIGMA PENGEMBANGAN SOFTWARE. Judul tersebut merupakan salah satu tugas dari mata kuliah Rekayasa Perangkat Lunak yang sedang saya tempuh pada semester pendek tahun ajaran 2012/2013. Berbicara tentang paradigma memang sangat berat sekali menganai kata tersebut. Oke deh saya sederhanakan kata tersebut hehe. Sebetulnya paradigma bisa disebut juga sebagai sebuah metode. Ya mungkin metode lebih umum dikenal daripada paradigma hehe. Jadi, Paradigma = Metode. Dengan kalimat lain, judul tulisan ini bisa disebut juga Metode Pengembangan Software. 




Metode Pengembangan Software sangat banyak sekali, diantaranya ialah Model Sekuensial Linier, Model Prototype, Model RAD (Rapid Application Development),  Model Proses Perangkat Lunak Evolusioner,  Model Formal, Fourth Generation Techniques (4GT). Yang akan saya perjelas yaitu Metode Fourth Generation Techniques (4GT). 



Istilah generasi ke empat, mengarah ke perangkat lunak yang umum yaitu tiap pengembang perangkat lunak menentukan beberapa karakteristik perangkat lunak pada level tinggi.  Saat ini pengembangan perangkat lunak yang mendukung 4GT, berisi tool-tool berikut : i) Bahasa non prosedural untuk query basis data; ii)  Report generation; iii) Data manipulation ; iv) Interaksi layar ; v) Kemampuan grafik level tinggi ; vi) Kemampuan spreadsheet . Tiap tool ini ada tapi hanya untuk sauatu aplikasi khusus. 
Menggunakan perangkat bantu (tools) yang akan membuat kode sumber secara otomatis berdasarkan spesifikasi dari pengembang perangkat lunak. Hanya digunakan untuk menggunakan perangkat lunak yang menggunakan bahasa khusus atau notasi grafik yang diselesaikan dengan syarat yang dimengerti pemakai. Cakupan aktivitas 4GT : 
1. Pengumpulan kebutuhan, idealnya pelanggan akan menjelaskan kebutuhan yang akan ditranslasikan ke prototype operasional.
2. Translasi kebutuhan menjadi prototype operasional, atau langsung melakukan implementasi secara langsung dengan menggunakan bahasa generasi keempat (4GL) jika aplikasi relatif kecil.
3.  Untuk aplikasi yang cukup besar, dibutuhkan strategi perancangan sistem walaupun 4GL akan digunakan.
4.    Pengujian.
5.    Membuat dokumentasi.
6.  Melaksanakan seluruh aktivitas untuk mengintegrasikan solusi-solusi yang membutuhkan paradigma rekayasa perangkat lunak lainnya.
Salah satu keuntungan penggunaan model 4GT adalah pengurangan waktu dan peningkatan produktivitas secara besar, sementara kekurangannya terletak pada kesulitan penggunaan perangkat bantu (tools) dibandingkan dengan bahsa pemrograman, dan juga kode sumber yang dihasilkannya tidak efisien.
Untuk aplikasi yang yang kecil, adalah mungkin untuk langsung berpindah dari pengumpulan kebutuhan ke implementasi dengan menggunakan 4GL. Tapi untuk aplikasi yang besar, dibutuhkan pengembangan strategi desain untuk sistem, walau digunakan 4GL. Penggunaan 4GT tanpa perencanaan yang matang (untuk proyek skala besar) akan meyebabkan kesulitan yang sama (kualitas dan pemeliharaan yang jelek, ketidakpuasan pelanggan) seperti dengan metode konvensional.
Model ini diaplikasikan untuk mengembangkan perangkat lunak yang memakai bentuk bahasas khusus atau notasi grafik  yang dieksekusi atau diselesaikan dengan syarat atau ketentuan yang dipahami oleh pemakai/user/costumer.





Sumber :
Jauhari, Jaidan. ___.“Modul Rekayasa Perangkat Lunak.”__:__.pdf.
http://heckerlaye.files.wordpress.com/2009/11/modul-rekayasa-perangkat-lunak.pdf
Pressman, Roger S. 2002.”Rekayasa Perangkat Lunak (Pendekatan Praktis).” Yogyakarta : Andi. 





Pemeliharaan Perangkat Lunak

Label: , , ,

Assalamu'alaikum para sahabat semua :D 

Alhamdulillah kita semua masih diberikan kesehatan dan masih diberikan kesempatan dalam menjalankan ibadah shaum yang menginjak hari ke 29. Ayo semangat mau lebaran :D haha
Sebelum lebaran, saya ingin memposting dulu tentang pemeliharaan sebuah perangkat lunak. Waahh rajin amat yah ? bukan rajin para sahabat, tapi melawan rasa malas yang tidak kunjung habis-habisnya. Sebenernya ni postingan untuk tugas RPL Semester Pendek saya. Daripada ngerjainnya sesudah lebaran, mendingan sekarang aja sambil ngabuburit :) hehe, oke langsung aja yah ke titik permasalahan yang di tulis pada judulnya :D

Dilihat dari judulnya "Pemeliharaan Perangkat Lunak", kalau diartikan secara kasar yaitu tahapan terakhir dalam proses pembuatan software, ya memang sangat sederhana sekali artinya. Namun pada prakteknya sangat rumit sekali, katanya hehe. Kita contohkan saja kasus yang lain, misalnya saja pada pembuatan rumah. Setelah selesai membuat atau membangun rumahnya, ya pastilah si pemilik rumah tersebut memelihara rumahya, memperbaiki genting yang bocor, membersihkan lantai, dsb. Itu semua merupakan bagian dari pemeliharaan. Sama halnya dengan pemeliharaan pada software, itu semua pasti dilakukan demi menghasilkan software yang sangat berkualitas. 
Definisi lain dari pemeliharaan software : 1) Suatu kombinasi dari berbagai tindakan yang dilakukan untuk menjaga sistem dalam atau memeperbaikinya sampai suati kondisi yang bisa diterima.  Pada bulan April 1970 didefinisikan sebuah istilah untuk Teknolgi Pemeliharaan yang mencakup pengertian yang lebih luas dari pengertian Pemeliharaan diatas. Istilah ini adalah Teroteknoloogi, yang artinya ialah siklus terkahir dari SDLC yaitu dengan pemeriksaan periodik, audit, dan permintaan pengguna akan menjadi sumber untuk melakukan perawatan diseluruh masa hidup software.

TUJUAN PEMELIHARAAN PERANGKAT LUNAK
Sistem perlu dipelihara karena beberapa hal, yaitu :
1.    Sistem memiliki kesalahan yang dulunya belum terdeteksi, sehingga kesalahan-kesalahan sistem perlu diperbaiki.
2.    Sistem mengalami perubahan-perubahan karena permintaan baru dari pemakai sistem.
3.    Sistem mengalami perubahan karena perubahan lingkungan luar (perubahan bisnis).
4.    Sistem perlu ditingkatkan.

Biaya pemeliharaan sistem sering diabaikan. Kenyataannya biaya pemeliharaan sistem merupakan biaya yang cukup besar. Biaya pemeliharaan perangkat lunak telah terus menerus naik selama 25 tahun terakhir. Beberapa perusahaan membelanjakan 80% atau lebih dari anggaran sistem mereka pada pemeliharaan perangkat lunak. 

JENIS-JENIS PEMELIHARAAN

Pemeliharaan Korektif

Pemeliharaan korektif adalah bagian pemeliharaan sistem yang tidak begitu tinggi nilainya dan lebih membebani, karena pemeliharaan ini mengkoreksi kesalahan-kesahan yang ditemukan pada saat sistem berjalan.

Umumnya pemeliharaan korektif ini mencakup kondisi penting atau bahaya yang memerlukan tindakan segera. Kemampuan untuk mendiagnosa atau memperbaiki kesalahan atau malfungsi dengan cepat sangatlah berharga bagi perusahaan.

Pemeliharaan Adaptif
Pemeliharaan adaptif dilakukan untuk menyesuaikan perubahan dalam lingkungan data atau pemrosesan dan memenuhi persyaratan pemakai baru.

Lingkungan tempat sistem beroperasi adalah dinamik, dengan demikian, sistem harus terus merespon perubahan persyaratan pemakai. Misalnya, Undang-Undang Perpajakan yang baru mungkin memerlukan suatu perubahan dalam kalkulasi pembayaran bersih.

Umumnya pemeliharaan adatif ini baik dan tidak dapat dihindari.

Pemeliharaan Penyempurnaan
Pemeliharaan penyempurnaan mempertinggi cara kerja atau maintainabilitas (kemampuan untuk dipelihara). Tindakan ini juga memungkinkan sistem untuk memenuhi persyaratan pemakai yang sebelumnya tidak dikenal.

Ketika membuat perubahan substansial modul apapun, petugas pemeliharaan juga menggunakan kesempatan untuk mengupgrade kode, mengganti cabang-cabang yang kadaluwarsa, memperbaiki kecerobohan, dan mengembangkan dokumentasi. 

Sebagai contoh, kegiatan pemeliharaan ini dapat berbentuk perekayasaan ulang atau restrukturisasi perangkat lunak, penulisan ulang dokumentasi, pengubahan format dan isi laporan, penentuan logika pemrosesan yang lebih efisien, dan pengembangan efisiensi pengoperasian perangkat.

Pemeliharaan Preventif
Pemeliharaan Preventif terdiri atas inspeksi periodik dan pemeriksaan sistem untuk mengungkap dan mengantisipasi permasalahan.

Karena personil pemeliharaan sistem bekerja dalam sistem ini, mereka seringkali menemukan cacat-cacat (bukan kesalahan yang sebenarnya) yang menandakan permasalahan potensial. Sementara tidak memerlukan tindakan segera, cacat ini bila tidak dikoreksi di tingkat awal, jelas sekali akan mempengaruhi baik fungsi sistem maupun kemampuan untuk memeliharanya dalam waktu dekat.    

MANFAAT PEMELIHARAAN SOFTWARE

Ada beberapa manfaat dari pemeliharaan software, yaitu sebagai berikut :
1. Dapat memastikan kesesuaian dengan kebutuhan fungsionalitas teknis software.
2. Dapat memastikan kesesuaian kebutuhan pihak manajerial mengenai jadwal dan budget.
3. Dapat meningkatkan efisiensi software berikut juga aktifitas pemeliharaannya.