Sabtu, 25 Februari 2023
Minggu, 31 Januari 2010
Mengenal Logika Fuzzy
Logika Fuzzy, yang dalam bahasa Indonesia dapat diartikan sebagai Logika Kabur atau Logika Samar, dapat dikatakan sebagai “logika baru yang sudah lama”. Hal ini karena ilmu tentang logika fuzzy secara modern dan metodis ditemukan pada tahun 1965, namun konsep logika fuzzy sudah melekat pada diri manusia, sejak manusia ada. Konsep logika fuzzy dapat dengan mudah kita temukan pada perilaku manusia dalam kesehariannya, misalnya:
Jumat, 18 Desember 2009
Pengujian Perangkat Lunak
Abstrak
Untuk menghasilkan perangkat lunak yang terbaik, maka harus dilakukan pengujian terhadap perangkat lunak yang dibuat. Pengujian tidak dapat memastikan suatu perangkat lunak bebas dari kesalahan, namun memastikan bahwa tidak ada kesalahan yang ditemukan pada saat pengujian.
1. Pendahuluan
Perangkat lunak merupakan bagian yang tak terpisahkan dari suatu komputer. Sama halnya seperti perangkat keras, kesalahan ataupun kegagalan pada perangkat lunak, juga dapat mengakibatkan hal yang fatal [PAT09]. Oleh karena itu harus dilakukan pengujian pada sebuah perangkat lunak sebelum digunakan secara luas.
Hal utama yang perlu digarisbawahi adalah pengujian perangkat lunak tidak dapat memastikan perangkat lunak yang diuji sama sekali tidak memiliki kesalahan. Pengujian perangkat lunak hanya memastikan bahwa tidak ditemukan kekeliruan saat dilakukan pengujian terhadap perangkat lunak tersebut [ROG01].
2. Pembahasan
Pengujian perangkat lunak merupakan salah satu tahapan yang harus dilalui dalam sebuah siklus hidup pembuatan perangkat lunak (Software Development Life-Cycle: SDLC). Pengujian perangkat lunak adalah suatu cara menjalankan program atau bagian dari program dimana input dan output dari pengujian tersebut dapat diperkirakan dan diamati apakah terdapat kesalahan atau penyimpangan dari yang diharapkan atau disyaratkan [PHI07]. Hal ini akan meningkatkan kualitas perangkat lunak, karena kualitas perangkat lunak tidak dihasilkan hanya dengan suatu pemikiran atau pendugaan, namun harus ditingkatkan saat pembuatan serta dilakukan validasi setelah selesai dibuat [AND08].
Meskipun tidak dapat menjamin suatu perangkat lunak terbebas dari kesalahan, namun pengujian perangkat lunak dapat meningkatkan kepercayaan bahwa perangkat lunak tersebut sudah sesuai dengan yang dibutuhkan atau disyaratkan [PHI07]. Oleh karena itu sangat penting untuk menentukan metode pengujian perangkat lunak sehingga probabilitas diketemukannya kesalahan dalam perangkat lunak sangat tinggi.
Menurut Pressman [ROG01], terdapat beberapa prinsip yang harus diperhatikan dalam melakukan pengujian perangkat lunak, yaitu:
Ø Semua pengujian harus dapat ditelusuri hingga persyaratan pelanggan.
Ø Pengujian harus sudah direncanakan jauh sebelum pengujian tersebut dilakukan.
Ø Prinsip pareto (80/20) berlaku di dalam pengujian perangkat lunak.
Ø Pengujian dimulai dari yang “kecil” dikembangkan hingga yang “besar”.
Ø Tidak mungkin melakukan pengujian yang mendalam (detil).
Ø Untuk memperoleh hasil yang paling efektif, pengujian sebaiknya dilakukan oleh pihak ketiga.
Pengujian sebaiknya sudah dapat dilakukan sejak tahap awal pembuatan perangkat lunak, tanpa harus menunggu perangkat lunak selesai dibuat. Hal ini disebabkan karena biaya perbaikan kesalahan yang dilakukan setelah perangkat lunak selesai dibuat, dapat mencapai lebih dari 100 kali lipat seandainya kesalahan tersebut diketahui dan diperbaiki pada tahap-tahap awal [YUK06].
Seberapa mudah sebuah perangkat lunak diuji, dapat diketahui dari tingkat Operability, Observability, Controllability, Decomposability, Simplicity, Stability, dan Understandability perangkat lunak tersebut [ROG01].
Untuk perangkat lunak yang bukan dibuat dengan konsep object-oriented, fase pengujian dapat dibagi 2 [IAN01], yaitu:
Ø Component testing, yang dilakukan oleh developer perangkat lunak.
Ø Integration testing, yang dilakukan oleh independent testing team.
Pengujian komponen (component testing) atau pengujian kerusakan (defect testing) memiliki tujuan untuk memastikan setiap komponen sistem tidak menunjukkan kesalahan dan sudah sesuai dengan persyaratan yang diberikan. Secara umum, pengujian ini dapat dibagi menjadi Black-Box testing dan White-Box testing.
Pengujian Black-Box berfokus pada persyaratan fungsional perangkat lunak dan dilakukan untuk berusaha menemukan kesalahan dengan kategori:
Ø Fungsi-fungsi yang tidak benar atau bahkan tidak ada.
Ø Kesalahan interface.
Ø Kesalahan dalam struktur data atau akses basis data eksternal.
Ø Kesalahan kinerja.
Ø Kesalahan inisialisasi maupun terminasi.
Pengujian Black-Box sering disebut juga dengan pengujian behavioral atau pengujian partisi. Pengujian ini umumnya dilakukan pada tahap akhir pembuatan perangkat lunak atau setelah perangkat lunak selesai dibuat. Pengujian yang dilakukan:
Ø Graph-Based Testing Methods
Ø Equivalence Partitioning
Ø Boundary Value Analysis
Ø Comparison Testing
Ø Orthogonal Array Testing
Berbeda dengan pengujian White-Box yang sering juga disebut dengan Glass-Box testing atau Clear testing dilakukan untuk:
Ø Menjamin bahwa setiap jalur independen pada suatu modul telah digunakan setidaknya satu kali.
Ø Menggunakan semua keputusan logis pada sisi true maupun false.
Ø Mengeksekusi semua loop pada batas mereka serta batas operasional mereka.
Ø Menggunakan struktur data internal untuk menjamin validitasnya.
Pengujian white-box dapat dilakukan sejak tahap awal pembuatan perangkat lunak. Pengujian yang dapat dilakukan:
Ø Basis Path Testing
Ø Control Structure Testing
Setelah melakukan pengujian komponen, maka selanjutnya dapat dilakukan pengujian integrasi (intergration testing). Integration testing memiliki tujuan untuk memastikan setiap kompoen saat diintegrasikan tidak memberikan kesalahan. Pengujian sebaiknya dilakukan secara bertahap, yaitu setiap komponen ditambahkan satu-per-satu ke dalam sistem dan langsung dilakukan pengujian terhadapnya maupun terhadap sistem secara keseluruhan. Hal ini dilakukan berulang hingga seluruh komponen selesai diintegrasikan ke dalam sistem. Tahapan-tahapan ini dapat dilakukan secara top-down maupun bottom-up.
Pada metode top-down, pengujian dilakukan terlebih dahulu pada rutin umum/global lalu dilanjutkan ke rutin-rutin maupun sub-rutin ataupun modul-modul yang diakses dari rutin umum tersebut. Sebaliknya, pada metode bottom-up, dilakukan pengujian pada rutin-rutin atau modul-modul kecil, lalu dilanjut pada super-rutin atau super-modul atau super-menu hingga pada bagian utama.
Pengujian lain yang termasuk dalam integration testing adalah interface testing yang bertujuan untuk mencari kesalahan pada sisi interfacing antar komponen/modul program. Sering terjadi bahwa setiap modul maupun rutin telah berjalan dengan baik, namun ketika disatukan atau digabungkan, terjadi kegagalan akibat pemberian parameter yang salah atau perbedaan tipe parameter. Hal semacam inilah yang diuji pada integration testing.
Dengan berkembangnya pemrograman berorientasi obyek (object-oriented programming: OOP), maka harus pula dikembangkan pengujian perangkat lunak berbasis OOP. Hal ini karena OOP memiliki karakteristik yang berbeda dengan pemrograman terstruktur, dimana program terdiri dari kelas-kelas dan obyek-obyek yang memiliki state dan behaviour.
Pada sebuah sistem berbasis OOP, terdapat empat level pengujian [IAN01], yaitu:
Ø Pengujian operasi-operasi individual yang berasosiasi dengan obyek-obyek.
Ø Pengujian kelas-kelas obyek individual.
Ø Pengujian cluster-cluster dari obyek-obyek.
Ø Pengujian keseluruhan sistem berbasis OOP.
Untuk mempermudah proses pengujian, saat ini sudah terdapat tools yang dapat membantu proses pengujian perangkat lunak. Tools ini dapat dikategorikan [IAN01]:
Ø Test Manager
Ø Test Data Generator
Ø Oracle
Ø File Comparator
Ø Report Generator
Ø Dynamic Analyser
Ø Simulator
Namun demikian, karena tools tersebut dibuat untuk keperluan yang umum maka perlu penyesuaian yang harus dilakukan untuk setiap perangkat lunak yang akan diuji. Hal ini disebabkan karena setiap perangkat lunak yang dibuat, belum tentu sama dengan yang lain atau yang sudah ada. Penyesuaian yang perlu dilakukan umumnya adalah dengan menambahkan script-script tertentu agar tools tersebut dapat berfungsi dengan baik untuk menguji perangkat lunak yang dimaksud.
3. Kesimpulan
Ø Pengujian perangkat lunak merupakan salah satu tahapan dalam SDLC yang harus dilalui untuk memperoleh perangkat lunak yang berkualitas.
Ø Pengujian perangkat lunak tidak menjamin bahwa perangkat lunak tersebut bebas kesalahan, namun hanya memastikan tidak ada kesalahan yang terjadi saat pengujian, oleh karena itu pengujian harus dilakukan dengan cara yang sebaik-baiknya.
Ø Pengujian perangkat lunak dapat dilakukan dengan metode White-Box maupun Black-Box.
Ø Untuk mempermudah pengujian, saat ini sudah banyak dibuat tools yang membantu dalam proses pengujian perangkat lunak.
Referensi:
[AND08] Andrea De Lucia, et.al., Emerging Methods, Technologies and Process Management in Software Engineering, John Wiley & Sons, Inc., New Jersey, 2008.
[IAN01] Ian Sommerville, Software Engineering, 6th ed., Pearson Education Ltd., NY, 2001.
[PAT09] Patricia A McQuaid, Software Disasters: What Have We Learned?, Software Quality Professional; Jun 2009; 11, 3, p.28.
[PHI07] Phillip A.Laplante, What Every Engineer Should Know about Software Engineering, CRC Press, New York, 2007.
[ROG01] Roger S. Pressman, Software Engineering: A Practitioner’s Approach, 5th ed., McGraw-Hill Companies, Inc., NY, 2001.
[YUK06] Yu Kuen Wong, Modern Software Review: Techniques and Technologies, IRM Press, London, 2006.
Kamis, 17 Desember 2009
Selamat Tahun Baru 1431H
Tanpa terasa kita sudah memasuki tahun 1431H.
Semakin bertambah hari yang telah kita lalui,
Semakin sedikit sisa waktu yang kita miliki di kehidupan dunia ini.
Seberapa banyak dosa yang kita perbuat dalam setahun yang lalu?
Seberapa banyak pahala yang kita harapkan bisa kita dapatkan dalam setahun yang lalu?
Apakah kita sanggup merasakan neraka-Nya?
Apakah kita layak memasuki surga-Nya?
Ya, Allah.
Jadikanlah hari ini lebih baik dari hari kemarin.
Jadikanlah diriku lebih baik dari diriku yang kemarin.
Jadikanlah diriku sebagai hamba yang layak memperoleh syafa'at di hari akhir kelak.
Aamiin.
Selamat tahun baru 1431H
Semakin bertambah hari yang telah kita lalui,
Semakin sedikit sisa waktu yang kita miliki di kehidupan dunia ini.
Seberapa banyak dosa yang kita perbuat dalam setahun yang lalu?
Seberapa banyak pahala yang kita harapkan bisa kita dapatkan dalam setahun yang lalu?
Apakah kita sanggup merasakan neraka-Nya?
Apakah kita layak memasuki surga-Nya?
Ya, Allah.
Jadikanlah hari ini lebih baik dari hari kemarin.
Jadikanlah diriku lebih baik dari diriku yang kemarin.
Jadikanlah diriku sebagai hamba yang layak memperoleh syafa'at di hari akhir kelak.
Aamiin.
Selamat tahun baru 1431H
Minggu, 06 Desember 2009
Trend Kesalahan Software Saat Ini
Abstrak
Software merupakan hasil karya manusia yang tidak akan luput dari kesalahan. Software sudah banyak dipergunakan dalam berbagai keperluan hidup manusia sehingga manusia juga sering merasakan akibat yang ditimbulkan akibat kesalahan software. Apa penyebab utama kesalahan software pada saat ini?
1. Pendahuluan
Manusia merupakan makhluk yang tidak luput dari kesalahan, maka demikian pula hasil karya yang dihasilkan tidak akan luput dari kesalahan, termasuk software. Jika kita amati, hampir semua software yang berjalan pada Personal Computer (PC) memiliki kesalahan yang sering disebut bug. Tidak hanya pada software-software yang dibuat oleh perorangan, namun bug juga dapat ditemui pada software-software yang dibuat oleh perusahaan software yang besar bahkan terkenal.
Banyak pihak, termasuk pengguna software menganggap hal ini adalah hal yang wajar dan biasa. Umumnya pihak pengembang software akan memberikan perbaikan kepada pengguna segera setelah informasi bug tersebut disampaikan kepada mereka. Karena secara sepintas kesalahan/bug tersebut tidak memberikan kerugian yang berarti bagi pengguna, maka kesalahan software tersebut akan dianggap hal yang wajar dan biasa.
Namun kesalahan software bisa menyebabkan kejadian yang sangat merugikan pengguna. Bayangkan bila dalam suatu sistem perbankan, apa yang kita rasakan jika kita mendebet uang sejumlah 1000, maka yang tercatat dalam transaksi adalah kita melakukan debet sejumlah 10000? Hal semacam ini pernah terjadi secara nyata. Perlu diingat bahwa saat ini software tidak hanya digunakan untuk PC, namun pada seluruh intelligent electronic equipment.
Sebuah alat bantu medis untuk memberi terapi radiasi yang diberi nama Therac-25 didesain untuk membantu menyembuhkan kanker yang diderita pasien. Namun karena kesalahan software, penggunaan alat medis ini justru menyebabkan 6 pasien meninggal atau cidera fatal [PAT09].
Pada tahun 1991, di Dhahran, kesalahan software pada sistem pertahanan rudal Patriot mengakibatkan sebuah rudal Patriot gagal menangkis serangan sebuah rudal Scud sehingga mengenai barak prajurit dan menyebabkan 28 orang tewas serta 97 lainnya luka-luka [PAT09].
Masih banyak kejadian yang membuktikan bahwa kesalahan software dapat menyebabkan kerugian yang sangat besar bagi kehidupan manusia. Oleh karena di beberapa bidang, kesalahan ataupun kegagalan teknologi informasi, termasuk software, tidak boleh terjadi dan tidak ada toleransi [ROY09].
2. Pembahasan
Dalam proses rekayasa perangkat lunak (software engineering), terdapat 3 fase yang harus dilalui dalam pembuatan hingga penerapan proses, yaitu: fase definisi, fase pengembangan, dan fase pemeliharaan [ROG01]. Ketiga fase ini dapat lebih diperinci lagi menjadi 7 fase system engineering, yaitu: requirements definition, system design, sub-system development, system integration, system installation, system evolution, dan system decommissioning [IAN01].
Pada pelaksanaannya, fase-fase tersebut diterapkan dalam model-model rekayasa perangkat lunak. Model yang paling umum digunakan adalah linear sequential model, yaitu: Analysis, Design, Code, dan Test [ROG01].
Adanya fase-fase maupun model-model dalam rekayasa perangkat lunak adalah agar dapat dibuat sebuah perangkat lunak (software) yang berkualitas tinggi [ROG01]. Tidak hanya itu, dengan penggunaan metode-metode rekayasa perangkat lunak bertujuan untuk menghasilkan perangkat lunak berkualitas tinggi dan dengan biaya yang efektif [IAN01].
Sayangnya, semua software yang dibuat memiliki kesalahan (fault) dan tidak dapat dipungkiri bahwa kesalahan ini akan menyebabkan kegagalan (failure) [MAG09]. Saat ini, penyebab terjadinya kesalahan pada suatu software adalah akibat requirements/design (38,2%), coding (32,6%), interface/integration (16,0%), procedure/proses (3,9%), penyebab lain (1,9%), dan penyebab yang belum/tidak diketahui (7,4%) [MAG09].
Requirements/design menjadi faktor utama penyebab kesalahan pada suatu software. Hal ini telah diprediksi sejak lama, karena pada tahap ini kemungkinan terjadinya kesalahan interpretasi maupun kesalahan informasi sangat besar [ROG01]. Faktor lain yang dapat menyebabkan sebuah software memiliki kesalahan adalah programmer dengan pengetahuan formal tentang penulisan progam yang minim [PAT09]. Kurangnya pengetahuan formal dapat menyebabkan programmer tidak mengikuti tahapan-tahapan pembuatan sistem software yang seharusnya dilakukan. Padahal tahapan-tahapan dalam metode-metode tersebut sudah sempurna untuk digunakan pada sistem TI berbasis software [MAR09]. Selain itu kelemahan programmer juga menjadi hal utama yang menyebabkan kesalahan coding.
Sebenarnya sudah terdapat CASE (Computer Aided Software Engineering) tools untuk membantu setiap aktivitas pada tahapan rekayasa perangkat lunak. Namun demikian, CASE hanya berperan untuk membantu mempermudah pelaksanaan setiap aktivitas rekayasa perangkat lunak. Yang paling berperan untuk keberhasilannya tetap berada pada orang yang melaksanakan aktivitas-aktivitas tersebut.
3. Kesimpulan
- Kesalahan pada software pasti terjadi, namun terdapat beberapa bidang yang tidak dapat memberikan toleransi untuk kesalahan tersebut.
- Saat ini tren kesalahan software terjadi pada tahap requirements/design serta tahap coding.
- Hal yang paling menentukan adalah orang-orang yang berperan dalam proses rekayasa perangkat lunak. Tahap-tahap dalam rekayasa perangkat lunak harus dilaksanakan dengan baik, dan jika memungkinkan gunakan CASE tools untuk membantu tingkat keberhasilan dalam rekayasa perangkat lunak.
Referensi:
[IAN01]
Ian Sommerville, Software Engineering, 6th ed., Pearson Education Ltd., NY, 2001.
[MAG09]
Maggie Hamill and Katerina Goševa-Popstojanova, Common Trends in Software Fault and Failure Data, IEEE Transactions on Software Engineering, Vol.35, No.4, July/August 2009, pp.484-496.
[MAR09]
Martyn Thomas, Appliance of Science Could Change IT, Computer Weekly, Aug 11-Aug 17, 2009, p.5.
[PAT09]
Patricia A McQuaid, Software Disasters: What Have We Learned?, Software Quality Professional; Jun 2009; 11, 3, p.28.
[ROG01]
Roger S. Pressman, Software Engineering: A Practitioner’s Approach, 5th ed., McGraw-Hill Companies, Inc., NY, 2001.
[ROY09]
The Royal Academy of Engineering, Engineering Values in IT, The Royal Academy of Engineering, London, 2009.
Software merupakan hasil karya manusia yang tidak akan luput dari kesalahan. Software sudah banyak dipergunakan dalam berbagai keperluan hidup manusia sehingga manusia juga sering merasakan akibat yang ditimbulkan akibat kesalahan software. Apa penyebab utama kesalahan software pada saat ini?
1. Pendahuluan
Manusia merupakan makhluk yang tidak luput dari kesalahan, maka demikian pula hasil karya yang dihasilkan tidak akan luput dari kesalahan, termasuk software. Jika kita amati, hampir semua software yang berjalan pada Personal Computer (PC) memiliki kesalahan yang sering disebut bug. Tidak hanya pada software-software yang dibuat oleh perorangan, namun bug juga dapat ditemui pada software-software yang dibuat oleh perusahaan software yang besar bahkan terkenal.
Banyak pihak, termasuk pengguna software menganggap hal ini adalah hal yang wajar dan biasa. Umumnya pihak pengembang software akan memberikan perbaikan kepada pengguna segera setelah informasi bug tersebut disampaikan kepada mereka. Karena secara sepintas kesalahan/bug tersebut tidak memberikan kerugian yang berarti bagi pengguna, maka kesalahan software tersebut akan dianggap hal yang wajar dan biasa.
Namun kesalahan software bisa menyebabkan kejadian yang sangat merugikan pengguna. Bayangkan bila dalam suatu sistem perbankan, apa yang kita rasakan jika kita mendebet uang sejumlah 1000, maka yang tercatat dalam transaksi adalah kita melakukan debet sejumlah 10000? Hal semacam ini pernah terjadi secara nyata. Perlu diingat bahwa saat ini software tidak hanya digunakan untuk PC, namun pada seluruh intelligent electronic equipment.
Sebuah alat bantu medis untuk memberi terapi radiasi yang diberi nama Therac-25 didesain untuk membantu menyembuhkan kanker yang diderita pasien. Namun karena kesalahan software, penggunaan alat medis ini justru menyebabkan 6 pasien meninggal atau cidera fatal [PAT09].
Pada tahun 1991, di Dhahran, kesalahan software pada sistem pertahanan rudal Patriot mengakibatkan sebuah rudal Patriot gagal menangkis serangan sebuah rudal Scud sehingga mengenai barak prajurit dan menyebabkan 28 orang tewas serta 97 lainnya luka-luka [PAT09].
Masih banyak kejadian yang membuktikan bahwa kesalahan software dapat menyebabkan kerugian yang sangat besar bagi kehidupan manusia. Oleh karena di beberapa bidang, kesalahan ataupun kegagalan teknologi informasi, termasuk software, tidak boleh terjadi dan tidak ada toleransi [ROY09].
2. Pembahasan
Dalam proses rekayasa perangkat lunak (software engineering), terdapat 3 fase yang harus dilalui dalam pembuatan hingga penerapan proses, yaitu: fase definisi, fase pengembangan, dan fase pemeliharaan [ROG01]. Ketiga fase ini dapat lebih diperinci lagi menjadi 7 fase system engineering, yaitu: requirements definition, system design, sub-system development, system integration, system installation, system evolution, dan system decommissioning [IAN01].
Pada pelaksanaannya, fase-fase tersebut diterapkan dalam model-model rekayasa perangkat lunak. Model yang paling umum digunakan adalah linear sequential model, yaitu: Analysis, Design, Code, dan Test [ROG01].
Adanya fase-fase maupun model-model dalam rekayasa perangkat lunak adalah agar dapat dibuat sebuah perangkat lunak (software) yang berkualitas tinggi [ROG01]. Tidak hanya itu, dengan penggunaan metode-metode rekayasa perangkat lunak bertujuan untuk menghasilkan perangkat lunak berkualitas tinggi dan dengan biaya yang efektif [IAN01].
Sayangnya, semua software yang dibuat memiliki kesalahan (fault) dan tidak dapat dipungkiri bahwa kesalahan ini akan menyebabkan kegagalan (failure) [MAG09]. Saat ini, penyebab terjadinya kesalahan pada suatu software adalah akibat requirements/design (38,2%), coding (32,6%), interface/integration (16,0%), procedure/proses (3,9%), penyebab lain (1,9%), dan penyebab yang belum/tidak diketahui (7,4%) [MAG09].
Requirements/design menjadi faktor utama penyebab kesalahan pada suatu software. Hal ini telah diprediksi sejak lama, karena pada tahap ini kemungkinan terjadinya kesalahan interpretasi maupun kesalahan informasi sangat besar [ROG01]. Faktor lain yang dapat menyebabkan sebuah software memiliki kesalahan adalah programmer dengan pengetahuan formal tentang penulisan progam yang minim [PAT09]. Kurangnya pengetahuan formal dapat menyebabkan programmer tidak mengikuti tahapan-tahapan pembuatan sistem software yang seharusnya dilakukan. Padahal tahapan-tahapan dalam metode-metode tersebut sudah sempurna untuk digunakan pada sistem TI berbasis software [MAR09]. Selain itu kelemahan programmer juga menjadi hal utama yang menyebabkan kesalahan coding.
Sebenarnya sudah terdapat CASE (Computer Aided Software Engineering) tools untuk membantu setiap aktivitas pada tahapan rekayasa perangkat lunak. Namun demikian, CASE hanya berperan untuk membantu mempermudah pelaksanaan setiap aktivitas rekayasa perangkat lunak. Yang paling berperan untuk keberhasilannya tetap berada pada orang yang melaksanakan aktivitas-aktivitas tersebut.
3. Kesimpulan
- Kesalahan pada software pasti terjadi, namun terdapat beberapa bidang yang tidak dapat memberikan toleransi untuk kesalahan tersebut.
- Saat ini tren kesalahan software terjadi pada tahap requirements/design serta tahap coding.
- Hal yang paling menentukan adalah orang-orang yang berperan dalam proses rekayasa perangkat lunak. Tahap-tahap dalam rekayasa perangkat lunak harus dilaksanakan dengan baik, dan jika memungkinkan gunakan CASE tools untuk membantu tingkat keberhasilan dalam rekayasa perangkat lunak.
Referensi:
[IAN01]
Ian Sommerville, Software Engineering, 6th ed., Pearson Education Ltd., NY, 2001.
[MAG09]
Maggie Hamill and Katerina Goševa-Popstojanova, Common Trends in Software Fault and Failure Data, IEEE Transactions on Software Engineering, Vol.35, No.4, July/August 2009, pp.484-496.
[MAR09]
Martyn Thomas, Appliance of Science Could Change IT, Computer Weekly, Aug 11-Aug 17, 2009, p.5.
[PAT09]
Patricia A McQuaid, Software Disasters: What Have We Learned?, Software Quality Professional; Jun 2009; 11, 3, p.28.
[ROG01]
Roger S. Pressman, Software Engineering: A Practitioner’s Approach, 5th ed., McGraw-Hill Companies, Inc., NY, 2001.
[ROY09]
The Royal Academy of Engineering, Engineering Values in IT, The Royal Academy of Engineering, London, 2009.
Soft Computing
Apa sih Soft Computing ?
soft = halus/lembut/lunak
computing = komputasi
Apakah akan melakukan komputasi untuk benda-benda lunak atau makhlus halus?
Ternyata Soft Computing merupakan sekumpulan metodologi yang berkembang secara terus menerus yang tujuan utamanya adalah untuk menghasilkan mesin ber-IQ tinggi [SUY08]. Istilah Soft Computing sebagai ilmu multidispilin, pertama kali diusulkan oleh Prof. Lotfi Asker Zadeh [SUY08]. Pada salah satu papernya, Prof. Zadeh menyatakan bahwa Soft Computing adalah sebuah koleksi metodologi-metodologi yang memiliki tujuan untuk mengeksploitasi toleransi untuk ketidaktepatan dan ketidakpastian sehingga dapat memperoleh kemampuan sistem yang baik, kokoh, serta menjadi solusi yang rendah biaya [ZAD94].
Pada awalnya Prof. Zadeh menyatakan bahwa bidang-bidang yang termasuk dalam Soft Computing adalah fuzzy logic, neuro-computing, dan probabilistic reasoning [ZAD94]. Saat ini bidang-bidang tersebut lebih dipertajam, seperti yang tercantum pada wikipedia, yaitu:
- Neural networks (NN)
- Fuzzy systems (FS)
- Evolutionary computation (EC)
- Swarm intelligence
- Ideas about probability including Bayesian network
- Chaos theory
- Perceptron
Soft Computing memiliki keunggulan dibandingkan komputasi logika tegas (crisp logic), yaitu lebih "manusiawi". Sebagai contoh, dengan crisp logic kita hanya dapat menentukan kondisi "tinggi" atau "rendah", maka dengan Soft Computing kita dapat memperoleh hasil "agak tinggi" atau "agak rendah".
Nah, ternyata karena lebih manusiawi, maka sudah banyak aplikasi yang menerapkan konsep Soft Computing ini. Bidang-bidang yang telah mengaplikasikan soft computing, antara lain: sistem kendali (kontrol), optimasi, industri, bisnis dan keuangan, transpotasi, serta pengolahan citra (gambar) dan suara [SUY08].
Hmm, ternyata Soft Computing merupakan "makhluk" yang menarik untuk dipelajari.
Tertarik?
Referensi:
[SUY08] Suyanto, Soft Computing, Informatika Bandung, Bandung, 2008.
[ZAD94] Zadeh, Lotfi A., Soft Computing and Fuzzy Logic, IEEE Software, November 1994, pp. 48-56.
soft = halus/lembut/lunak
computing = komputasi
Apakah akan melakukan komputasi untuk benda-benda lunak atau makhlus halus?
Ternyata Soft Computing merupakan sekumpulan metodologi yang berkembang secara terus menerus yang tujuan utamanya adalah untuk menghasilkan mesin ber-IQ tinggi [SUY08]. Istilah Soft Computing sebagai ilmu multidispilin, pertama kali diusulkan oleh Prof. Lotfi Asker Zadeh [SUY08]. Pada salah satu papernya, Prof. Zadeh menyatakan bahwa Soft Computing adalah sebuah koleksi metodologi-metodologi yang memiliki tujuan untuk mengeksploitasi toleransi untuk ketidaktepatan dan ketidakpastian sehingga dapat memperoleh kemampuan sistem yang baik, kokoh, serta menjadi solusi yang rendah biaya [ZAD94].
Pada awalnya Prof. Zadeh menyatakan bahwa bidang-bidang yang termasuk dalam Soft Computing adalah fuzzy logic, neuro-computing, dan probabilistic reasoning [ZAD94]. Saat ini bidang-bidang tersebut lebih dipertajam, seperti yang tercantum pada wikipedia, yaitu:
- Neural networks (NN)
- Fuzzy systems (FS)
- Evolutionary computation (EC)
- Swarm intelligence
- Ideas about probability including Bayesian network
- Chaos theory
- Perceptron
Soft Computing memiliki keunggulan dibandingkan komputasi logika tegas (crisp logic), yaitu lebih "manusiawi". Sebagai contoh, dengan crisp logic kita hanya dapat menentukan kondisi "tinggi" atau "rendah", maka dengan Soft Computing kita dapat memperoleh hasil "agak tinggi" atau "agak rendah".
Nah, ternyata karena lebih manusiawi, maka sudah banyak aplikasi yang menerapkan konsep Soft Computing ini. Bidang-bidang yang telah mengaplikasikan soft computing, antara lain: sistem kendali (kontrol), optimasi, industri, bisnis dan keuangan, transpotasi, serta pengolahan citra (gambar) dan suara [SUY08].
Hmm, ternyata Soft Computing merupakan "makhluk" yang menarik untuk dipelajari.
Tertarik?
Referensi:
[SUY08] Suyanto, Soft Computing, Informatika Bandung, Bandung, 2008.
[ZAD94] Zadeh, Lotfi A., Soft Computing and Fuzzy Logic, IEEE Software, November 1994, pp. 48-56.
Label:
soft computing,
software engineering
Jumat, 02 Oktober 2009
Bencana
Innalillahi wa inna ilaihi roojiu'un.
Bencana besar kembali melanda Indonesia. Gempa bumi dengan kekuatan 7,6 SR mengguncang Sumatera Barat pada 30 September 2009 sekitar pukul 17.16 WIB.
Gempa ini memberikan dampak luar biasa pada kota Padang, Pariaman, dan sekitarnya. Hingga saat ini setidaknya 500 orang tewas. Bahkan PBB sempat melansir (mungkin dugaan mereka) korban tewas mencapai 1100 jiwa.
Memang posisi Indonesia berada pada pertemuan lempeng-lempeng besar yang bergerak dan saling mendesak sehingga menjadi daerah yang rawan terjadi gempa.
Selama bulan September 2009 saja, Badan Meteorologi Klimatologi dan Geofisika (BMKG) mencatat setidaknya terjadi lebih dari 30 kali gempa bumi di wilayah Indonesia dengan kekuatan di atas 5 SR. Beberapa yang terbesar di antaranya mengguncang Tasikmalaya (7,3 SR), Yogyakarta (6,8 SR), Tolitoli (6,0 SR), Nusa Dua (6,4 SR), Ternate (6,4 SR), dan Padang (7,6 SR). Data tersebut masih ditambah kejadian pada 1 Oktober 2009 yaitu di Jambi (7,0 SR).
Hampir seluruh wilayah Indonesia merupakan daerah rawan gempa. Hanya pulau Kalimantan yang memiliki potensi gempa paling sedikit sehingga masuk dalam kategori "aman" gempa.
Sudah saatnya kita kembali berpikir dan bertindak untuk menghindari efek samping yang menyebabkan korban banyak berjatuhan. Gempa tidak membunuh, efek dari gempa itulah yang memakan banyak korban. Banyak pakar yang sudah menyatakan struktur bangunan di Indonesia harus dikaji dan ditata ulang sehingga mampu bertahan terhadap gempa, setidaknya dapat meminimalkan korban jiwa.
Terlepas dari usaha yang harus dilakukan untuk menyelamatkan para korban, nampaknya kita masih belum banyak belajar dari musibah yang menimpa kita.
Semoga arwah para korban mendapatkan tempat terbaik di sisi Allah SWT, dan semoga keluarga yang ditinggalkan memiliki kekuatan untuk bangkit dan menghadapi hari esok dengan lebih baik lagi.
Aamiin.
Bencana besar kembali melanda Indonesia. Gempa bumi dengan kekuatan 7,6 SR mengguncang Sumatera Barat pada 30 September 2009 sekitar pukul 17.16 WIB.
Gempa ini memberikan dampak luar biasa pada kota Padang, Pariaman, dan sekitarnya. Hingga saat ini setidaknya 500 orang tewas. Bahkan PBB sempat melansir (mungkin dugaan mereka) korban tewas mencapai 1100 jiwa.
Memang posisi Indonesia berada pada pertemuan lempeng-lempeng besar yang bergerak dan saling mendesak sehingga menjadi daerah yang rawan terjadi gempa.
Selama bulan September 2009 saja, Badan Meteorologi Klimatologi dan Geofisika (BMKG) mencatat setidaknya terjadi lebih dari 30 kali gempa bumi di wilayah Indonesia dengan kekuatan di atas 5 SR. Beberapa yang terbesar di antaranya mengguncang Tasikmalaya (7,3 SR), Yogyakarta (6,8 SR), Tolitoli (6,0 SR), Nusa Dua (6,4 SR), Ternate (6,4 SR), dan Padang (7,6 SR). Data tersebut masih ditambah kejadian pada 1 Oktober 2009 yaitu di Jambi (7,0 SR).
Hampir seluruh wilayah Indonesia merupakan daerah rawan gempa. Hanya pulau Kalimantan yang memiliki potensi gempa paling sedikit sehingga masuk dalam kategori "aman" gempa.
Sudah saatnya kita kembali berpikir dan bertindak untuk menghindari efek samping yang menyebabkan korban banyak berjatuhan. Gempa tidak membunuh, efek dari gempa itulah yang memakan banyak korban. Banyak pakar yang sudah menyatakan struktur bangunan di Indonesia harus dikaji dan ditata ulang sehingga mampu bertahan terhadap gempa, setidaknya dapat meminimalkan korban jiwa.
Terlepas dari usaha yang harus dilakukan untuk menyelamatkan para korban, nampaknya kita masih belum banyak belajar dari musibah yang menimpa kita.
Semoga arwah para korban mendapatkan tempat terbaik di sisi Allah SWT, dan semoga keluarga yang ditinggalkan memiliki kekuatan untuk bangkit dan menghadapi hari esok dengan lebih baik lagi.
Aamiin.
Langganan:
Komentar (Atom)
