Senin, 06 April 2009

LISENSI-LISENSI SOFTWERE

Ketika mendownload sebuah software dari Internet, salah satu hal yang diperhatikan orang selain ukuran file fungsi dari software tersebut adalah lisensi (license). Software yang bisa didownload dari Internet belum tentu sebuah freeware, Setidaknya ada 7 jenis tipe lisensi yang dipakai oleh kebanyakan software yang beredar saat ini yaitu: trialware, shareware, demo, freeware,commercial, non commercial use, royalty-free binaries

Freeware sesuai dengan namanya adalah software yang benar-benar gratis atau bebas untuk digunakan, developer software tidak pernah meminta Anda untuk membayar apapun kepadanya. Dalam beberapa kasus kemampuan freeware malah lebih bagus ketimbang software berbayar. Beberapa freeware memberikan persyaratan bahwa software tersebut hanya boleh digunakan untuk penggunaan pribadi (personal) bukan untuk digunakan untuk keperluan komersil.

Trialware adalah software yang dapat Anda gunakan tapi ada batasan waktu atau jumlah pengguna, atau ada trialware yang menonaktifkan beberapa fungsi dari software tersebut. Sebagai contoh, Anda diperbolehkan menggunakan trialware selama 30 hari, atau hanya dapat menggunakannya sebanyak 15 kali. Setelah periode masa percobaan (trial) sudah habis jika Anda ingin melanjutkan penggunaan software tersebut Anda harus membayarnya.

Shareware sama seperti halnya trialware, bebas digunakan untuk sementara waktu. Tidak seperti trialware, semua fungsi software dapat digunakan sebelum batasan waktu coba-coba selesai. Setelah masa percobaan selesai Anda dapat mempertimbangkan untuk membelinya jika ingin menggunakannya lagi.

Demo adalah program yang digunakan hanya sebagai demonstrasi tentang fitur atau versi software dengan fitur yang terbatas dan tidak digunakan untuk bekerja. Demo hanya digunakan untuk ‘pamer’ kepada Anda sebelum membeli versi penuh dari software tersebut.

Open Source
Adalah software yang bersifat gratis dan kita boleh memodifikasinya. Hak cipta boleh kita rubah menjadi milik kita, kita boleh merubah / merombak software tersebut, bahkan kita boleh menjualnya ke orang lain. Contoh dari aplikasi open source adalah sistem operasi Linux, CMS Joomla dan sebagainya.

Lisensi Commercial

adalah jenis lisensi yang biasa ditemui pada perangkat lunak seperti Microsoft dengan Windows dan Officenya, Lotus, Oracle dan lain sebagainya. Software yang diciptakan dengan lisensi ini memang dibuat untuk kepentingan komersial sehingga user yang ingin menggunakannya harus membeli atau mendapatkan izin penggunaan dari pemegang hak cipta.

Lisensi Non Commercial Use

biasanya diperuntukkan untuk kalangan pendidikan atau yayasan tertentu dibidang sosial. Sifatnya yang tidak komersial, biasanya gratis tetapi dengan batasan penggunaan tertentu.

Lisensi Royalty-Free Binaries

serupa dengan lisensi freeware, hanya saja produk yang ditawarkan adalah library yang berfungsi melengkapi software yang sudah ada dan bukan merupakan suatu software yang berdiri sendiri.

Minggu, 22 Maret 2009

extrem programmer

Extreme Programming (XP) merupakan salah satu metodologi dalam rekayasa perangkat lunak dan juga merupakan satu dari beberapa agile software development methodologies yang berfokus pada coding sebagai aktivitas utama di semua tahap pada siklus pengembangan perangkat lunak (software development lifecycle). Metodologi ini mengedepankan proses pengembangan yang lebih responsive terhadap kebutuhan customer (”agile”) dibandingkan dengan metode-metode tradisional sambil membangun suatu software dengan kualitas yang lebih baik.

Extreme Programming muncul menawarkan sebuah disiplin baru dalam pengembangan software secara agile. Nilai dasar yang terkandung di dalam Extreme Programming adalah: Komunikasi (Communication), Kesederhanaan (Simplicity), Umpan balik (Feedback) Keberanian (Courage) dan menghormati (Respect).

Kata Kunci: Extreme Programming, agile, coding, komunikasi, kesederhanaan, umpan balik, keberanian, menghormati.

Latar Belakang XP

Requirement yang berubah dengan cepat menuntut lifecycles yang lebih pendek, dan tidak selaras dengan metoda pengembangan tradisional, yang pada umumnya memerlukan disain luas di awal dan mengakibatkan perubahan desain yang terjadi kemudian memerlukan biaya yang lebih tinggi atau kehilangan milestones.

Berdasarkan hal ini kemudian dilahirkan konsep XP yang digagas oleh Kent Beck dan Ward Cunningham pada Maret 1996. Metode XP merupakan yang terpopuler dari beberapa metodologi pengembangan software yang dipakai untuk mengimplementasikan proyek pengembangan perangkat lunak.

Tujuan XP

Tujuan utama XP adalah menurunkan biaya dari adanya perubahan software. Dalam metodologi pengembangan sistem tradisional, kebutuhan sistem ditentukan pada tahap awal pengembangan proyek dan bersifat fixed. Hal ini berarti biaya terhadap adanya perubahan kebutuhan yang terjadi pada tahap selanjutnya akan menjadi mahal. XP diarahkan untuk menurunkan biaya dari adanya perubahan dengan memperkenalkan nilai-nilai basis dasar, prinsip dan praktis. Dengan menerapkan XP, pengembangan suatu sistem haruslah lebih fleksibel terhadap perubahan.

Kunci Utama XP

Menurut penggagas dari metode XP, Kent Beck mendefinisikan empat kunci utama (inti) dari XP yaitu:

1. Communication (Komunikasi)

Tugas utama developer dalam membangun suatu sistem perangkat lunak adalah mengkomunikasikan kebutuhan sistem kepada pengembang perangkat lunak. Komunikasi dalam XP dibangun dengan melakukan pemrograman berpasangan (pair programming). Developer didampingi oleh pihak klien dalam melakukan coding dan unit testing sehingga klien bisa terlibat langsung dalam pemrograman sambil berkomunikasi dengan developer. Tujuannya untuk memberikan pandangan pengembang sesuai dengan pandangan pengguna sistem.

2. Simplicity (Kesederhanaan)

XP mencoba untuk mencari solusi paling sederhana dan praktis. Perbedaan metode ini dengan metodologi pengembangan sistem konvensional lainnya terletak pada proses desain dan coding yang terfokus pada kebutuhan saat ini daripada kebutuhan besok, seminggu lagi atau sebulan lagi. Lebih baik melakukan hal yang sederhana dan mengembangkannya besok jika diperlukan.

3. Feedback (Masukan)

Hal ini diperlukan untuk mengetahui kemajuan dari proses dan kualitas dari aplikasi yang dibangun. Informasi ini harus dikumpulkan setiap interval waktu yang singkat secara konsisten. Ini dimaksudkan agar hal-hal yang menjadi masalah dalam proses pengembangan dapat diketahui sedini mungkin. Setiap feed back ditanggapi dengan melakukan tes, unit test atau system integration dan jangan menunda karena biaya akan membengkak (uang, tenaga, waktu).

4. Courage (Keberanian)

Berani mencoba ide baru. Berani mengerjakan kembali dan setiap kali kesalahan ditemukan, langsung diperbaiki. Contoh dari courage adalah komitmen untuk selalu melakukan design dan coding untuk saat ini dan bukan untuk esok. Ketika ada kode yang terlalu rumit, sulit dibaca dan dipahami, tidak sesuai dengan kemauan pelanggan, dll maka seharusnya kode program seperti itu di refactor (kalau perlu dibangun ulang). Hal ini menjadikan pengembang merasa nyaman dengan refactoring program ketika diperlukan.

5. Respect (Menghormati)

Pentingnya respect terhadap anggota team lainnya karena dengan siklus pendek dan integrasi continue, programmer tidak boleh melakukan perubahan yang dapat merusak kompilasi dan menyebabkan keberadaan unit uji gagal atau memperlambat kerja team. Respects tiap individu akan selalu menghasilkan kualitas tinggi.

Penerapan XP

Beberapa hal yang harus dipertimbangkan sebelum seseorang masuk dalam dunia XP adalah sebagai berikut:

1. User harus memahami konteks bisnis yang akan dikembangkan sistemnya, sehingga developer dapat menangkap sistem secara aplikatif dan dapat mengusulkan teknologi apa yang dapat dikembangkan dalam sistem barunya.

2. Akan lebih efektif apabila developer pernah menangani proyek pengembangan sistem yang sejenis sehingga dapat memberikan usulan model sistem baru, di samping alasan bahwa developer telah memiliki template aplikasi sistem tersebut untuk dijadikan prototype sistem baru. Hal ini akan berimplikasi kepada kemudahan dalam konstruksi sistem karena dikembangkan berdasarkan template yang sudah ada.

3. Extreme programming menuntut komunikasi antar developer dan user secara intensif dan komunikasi internal antar developer secara komprehensif, sehingga akan lebih representatif apabila tahap pengembangan sistem dilakukan di lokal yang mendukung proses komunikasi tersebut.

XP adalah suatu bentuk pembangunan perangkat lunak yang berbasis nilai kemudahan, komunikasi, umpan balik, dan keberanian. Bekerja dalam whole team bersama-sama dengan praktek yang mudah. Adapun inti penerapannya adalah:

  1. Planning Game
  2. Small, frequent releases
  3. System metaphors
  4. Simple design
  5. Testing (unit testing & TDD)
  6. Frequent refactoring
  7. Pair programming
  8. Collective code ownership
  9. Continuous integration
  10. Sustainable pace
  11. Whole team together
  12. Coding standards

XP Practices

Kesimpulan

Keuntungan XP:

  • Menjalin komunikasi yang baik dengan client.
  • Meningkatkan komunikasi dan sifat saling menghargai antar developer.

Kerugian XP:

  • Developer harus selalu siap dengan perubahan karena perubahan akan selalu diterima.
  • Tidak bisa membuat kode yang detail di awal (prinsip simplicity dan juga anjuran untuk melakukan apa yang diperlukan hari itu juga).

Senin, 09 Maret 2009

Agile programming

Kata Agile berarti bersifat cepat, ringan, bebas bergerak, waspada. Kata ini digunakan sebagai kata yang mengambarkan konsep model proses yang berbeda dari konsep model-model proses yang sudah ada. Konsep Agile Software Development dicetuskan oleh Kent Beck dan 16 rekannya dengan menyatakan bahwa Agile Software Development adalah cara membangun software dengan melakukannya dan membantu orang lain membangunnya sekaligus.

Dalam Agile Software Development interaksi dan personel lebih penting dari pada proses dan alat, software yang berfungsi lebih penting daripada dokumentasi yang lengkap, kolaborasi dengan klien lebih penting dari pada negosiasi kontrak, dan sikap tanggap terhadap perubahan lebih penting daripada mengikuti rencana. Namun demikian, sama seperti model proses yang lain, Agile Software Development memiliki kelebihan dan tidak cocok untuk semua jenis proyek, produk, orang dan situasi.

Agile Software Development memungkinkan model proses yang toleransi terhadap perubahan kebutuhan sehingga perubahan dapat cepat ditanggapi. Namun di sisi lain menyebabkan produktifitas menurun.

Prinsip Agile Software Development

Salah satu ciri dari Agile Software Development adalah tim yang tanggap terhadap perubahan. Mengapa? Karena perubahan adalah hal yang utama dalam pembangunan software: perubahan kebutuhan software, perubahan anggota tim, perubahan teknologi dll. Selain itu Agile Software
Development juga melihat pentingnya komunikasi antara anggota tim, antara orang-orang teknis dan businessmen, antara developer dan managernya. Ciri lain adalah klien menjadi bagian dari tim pembangun software. Ciri-ciri ini didukung oleh 12 prinsip yang ditetapkan oleh Agile Alliance.

Menurut Agile Alliance, 12 prinsip ini adalah bagi mereka yang ingin berhasil dalam penerapan Agile Software Development:
  1. kepuasan klien adalah prioritas utama dengan menghasilkan produk lebih awal dan terus menerus
  2. menerima perubahan kebutuhan, sekalipun diakhir pengembangan.
  3. Penyerahan hasil/software dalam hitungan waktu dua minggu sampai dua bulan.
  4. Bagian bisnis dan pembangun kerja sama tiap hari selama proyek berlangsung
  5. Membangun proyek dilingkungan orang-orang yang bermotivasi tinggi yang bekerja dalam lingkungan yang mendukun dan yang dipercaya untuk dapat menyelesaikan proyek.
  6. Komunikasi dengan berhadapan langsung adalah komunikasi yang efektif dan efisien
  7. Software yang berfungsi adalah ukuran utama dari kemajuan proyek
  8. dukungan yang stabil dari sponsor, pembangun, dan pengguna diperlukan untuk menjaga perkembangan yang berkesinambungan
  9. perhatian kepada kehebatan teknis dan desain yang bagus meningkatkan sifat agile
  10. kesederhanaan penting
  11. arsitektur, kebutuhan dan desain yang bagus muncuk dari tim yang mengatur dirinya sendiri
  12. secara periodik tim evaluasi diri dan mencari cara untuk lebih efektif dan segera melakukannya.
Kedua belas prinsip tersebut menjadi suatu dasar bagi model-model proses yang punya sifat agile. Dengan prinsip-prinsip tersebur Agile Process Model berusaha untuk menyiasati 3 asumsi penting tentang proyek software pada umumnya:
  1. kebutuhan software sulit diprediksi dari awal dan selalu akan berubah. Selain itu, prioritas klien juga sering berubah seiring berjalannya proyek.
  2. Desain dan pembangunan sering tumpang tindih. Sulit diperkirakan seberapa jauh desain yang diperlukan sebelum pembangunan.
  3. Analisis, desain, pembangunan dan testing tidak dapat diperkirakan seperti yang diinginkan.
Agile Process Model
Berikut ini adalah model-model proses yang termasuk agile process model :
  1. XP(Extreme Programming)
  2. ADAPTIVE SOFTWARE DEVELOPMENT (ASD)
  3. DYNAMIC SYSTEMS DEVELOPMENT METHOD
  4. SCRUM
  5. Agile Modelling
Diakses di http://www.agilemodeling.com/essays/introductionToAM.htm 07/09/08.
Pressman, Roger S. Software Engineering : A Practitioner's Approach. 6th Ed. McGraw-Hall. NY. 2005.

teori antologi semut


Algoritma semut diperkenalkan oleh Moyson dan Manderick dan secara meluas dikembangkan oleh Marco Dorigo, merupakan teknik probabilistik untuk menyelesaikan masalah komputasi dengan menemukan jalur terbaik melalui grafik. Algoritma ini terinspirasi oleh perilaku semut dalam menemukan jalur dari koloninya menuju makanan.
Pada dunia nyata, semut berkeliling secara acak, dan ketika menemukan makanan mereka kembali ke koloninya sambil memberikan tanda dengan jejak feromon. Jika semut-semut lain menemukan jalur tersebut, mereka tidak akan bepergian dengan acak lagi, melainkan akan mengikuti jejak tersebut, kembali dan menguatkannya jika pada akhirnya merekapun menemukan makanan.
Seiring waktu, bagaimanapun juga jejak feromon akan menguap dan akan mengurangi kekuatan daya tariknya. Lebih lama seekor semut pulang pergi melalui jalur tersebut, lebih lama jugalah feromon menguap. Sebagai perbandingan, sebuah jalur yang pendek akan berbaris lebih cepat, dan dengan demikian kerapatan feromon akan tetap tinggi karena terletak pada jalur secepat penguapannya. Penguapan feromon juga mempunyai keuntungan untuk mencegah konvergensi pada penyelesaian optimal secara lokal. Jika tidak ada penguapan sama sekali, jalur yang dipilih semut pertama akan cenderung menarik secara berlebihan terhadap semut-semut yang mengikutinya. Pada kasus yang demikian, eksplorasi ruang penyelesaian akan terbatasi.
Oleh karena itu, ketika seekor semut menemukan jalur yang bagus (jalur yang pendek) dari koloni ke sumber makanan, semut lainnya akan mengikuti jalur tersebut, dan akhirnya semua semut akan mengikuti sebuah jalur tunggal. Ide algoritma koloni semut adalah untuk meniru perilaku ini melalui 'semut tiruan' berjalan seputar grafik yang menunjukkan masalah yang harus diselesaikan.

Teori Hexagonal


Lebih Hebat dari Ahli Matematika

Lebah madu hidup sebagai koloni dalam sarang yang mereka bangun dengan sangat teliti. Dalam tiap sarang terdapat ribuan kantung berbentuk heksagonal atau segi enam yang dibuat untuk menyimpan madu. Tapi, pernahkah kita berpikir, mengapa mereka membuat kantung-kantung dengan bentuk heksagonal?. Para ahli matematika mencari jawaban atas pertanyaan ini, dan setelah melakukan perhitungan yang panjang dihasilkanlah jawaban yang menarik! Cara terbaik membangun gudang simpanan dengan kapasitas terbesar dan menggunakan bahan bangunan sesedikit mungkin adalah dengan membuat dinding berbentuk heksagonal.

Mari kita bandingkan dengan bentuk-bentuk yang lain. Andaikan lebah membangun kantung-kantung penyimpan tersebut dalam bentuk tabung, atau seperti prisma segitiga, maka akan terbentuk celah kosong di antara kantung satu dan lainnya, dan lebih sedikit madu tersimpan di dalamnya. Kantung madu berbentuk segitiga atau persegi bisa saja dibuat tanpa meninggalkan celah kosong. Tapi di sini, ahli matematika menyadari satu hal terpenting. Dari semua bentuk geometris tersebut, yang memiliki keliling paling kecil adalah heksagonal. Karena alasan inilah, walaupun bentuk-bentuk tersebut menutupi luasan areal yang sama, material yang diperlukan untuk membangun bentuk heksagonal lebih sedikit dibandingkan dengan persegi atau segitiga. Singkatnya, suatu kantung heksagonal adalah bentuk terbaik untuk memperoleh kapasitas simpan terbesar, dengan bahan baku lilin dalam jumlah paling sedikit.

Berkomunikasi dengan Menari

Untuk mengisi kantung-kantung ini dengan madu, lebah harus mengumpulkan nektar, yakni cairan manis pada bunga. Ini adalah tugas yang sangat berat. Penelitian ilmiah terkini mengungkapkan bahwa untuk memproduksi setengah kilogram madu, lebah harus mengunjungi sekitar empat juta kuntum bunga. Mendapatkan bunga-bunga ini pun adalah pekerjaan berat tersendiri. Oleh karenanya, koloni lebah memiliki sejumlah lebah pemandu dan lebah pencari makan.