Selasa, 21 Juni 2011

Data Mining - Klassifikasi


Klassifikasi adalah proses penentuan objek-objek baru pada satu set kategori atau klas yang telah didefinisikan sebelumnya
Diberikan satu set records berlabel sebagai masukan
Bangun semuah model (misal, decision tree)
Memprediksi label untuk records tidak berlabel setelah model dibangun


Pembelajaran Klassifikasi

* Supervised learning (label diketahui)

* Contoh dijelaskan dalam bentuk attributes
- Kategorikal (nilai-nilai simbolik tidak terurut)
- Numerik (integer, real)

* Klas (attribute luaran/yang diprediksi):
- Kategorikal untuk klassifikasi, numerik untuk regresi\

* Training set:
- Satu set contoh, dimana setiap contoh adalah sebuah vektor fitur (satu set passangan (attribute, nilai)) disertai dengan klas yang diasosiasikan dengan contoh tersebut. Model dibangun dengan menggunakan training set

* Test set:
- Satu set contoh yang terpisah (disjoint) dari training set, yang digunakan untuk melakukan pengujian keakuratan dari model


Model-Model Klassifikasi

* Beberapa model lebih baik dari lainnya
- Keakuratan
- Kemudahan untuk dimengerti

* Model-model yang ada tersedia mulai dari yang mudah dimengerti hingga yang sulit dimengerti
- Decision trees
- Rule induction
- Regression models
- Neural networks


From Tree to Rules
1. IF Age > 43 THEN Life Insurance Promotion = No
2. F Age <=43 & Sex = Femal THEN Life Insurance Promotion = Yes
3. IF Age <=43 & Sex = Male & Credit Card Insurance = No THEN Life Insurance Promotion = No
4.IF Age <=43 & Sex = Male & Credit Card Insurance = Yes THEN Life Insurance Promotion = Yes


Algoritma Klassifikasi

* Bangun Tree
- Mulai dengan data pada simpul root
- Pilih sebuah attribut dan formulasikan sebuah logical test pada attribut tersebut
- Lakukan pencabangan pada setiap hasil dari test, dan terus bergerak ke subset dari contoh yang memenuhi hasil dari simpul anak cabang yang bersesuaian
- Lakukan proses rekursi pada setiap simpul anak cabang
- Ulangi hingga dahan-dahan dari tree memiliki contoh dari satu klas tertentu (“pure leaves”), atau memiliki contoh-contoh yang mewakili mayoritas dari klas yang sama (“nearly pure leaves”)

* Lakukan pemotongan pada tree (tree prunning)
- Hapus subtress yang tidak meningkatkan akurasi klassifikasi


Keuntungan Decision Tree
- Mudah dimengerti
- Dapat dipetakan secara baik ke satu set production rules
- Dapat diaplikasikan pada persoalan-persoalan nyata
- Tidak diperlukan asumsi awal mengenai data
- Data memproses baik data numerik maupun data kategorikal

Kekurangan Decision Tree
- Attribut luaran harus berupa data kategorikal
- Terbatas hanya untuk satu attribut luaran
- Algoritma-algoritma decision tree tidak stabil
- Tree yang dibangun dari dataset numerik dapat menjadi komplek

Teknik-Teknik Data Mining

* Kaidah asosiasi (Association rules)
- Mendeteksi kumpulan-kumpulan attribut yang muncul bersamaan (co-occur) dalam frekuensi yang sering, dan membentuk sejumlah kaidah dari kumpulan-kumpulan tersebut.
- Contoh, 90% dari orang yang berbelanja di suatu supermarket yang membeli roti juga memberli selai, dan 60% dari semua orang yang berbelanja membeli keduanya.

* Pencarian pola sekuensial (Sequence Mining)
- Mencari urutan sejumlah events yang secara umum terjadi bersama-sama.
- Contoh, dalam satu set urutan-urutan DNA, ACGTC diikuti oleh GTCA setelah suatu celah selebar 9 dengan probabilitas sebesar 30%.

* Klassifikasi dan Regresi

- Menentukan sebuah record data baru ke salah satu dari beberapa kategori (atau klas) yang telah didefinisikan sebelumnya.
- Regresi berkaitan dengan prediksi fields bernilai real.
- Disebut juga “supervised learning”.


* Klasterisasi (Clustering)

- Mempartisi dataset menjadi beberapa subset atau kelompok sedemikian rupa sehingga elemen-elemen dari suatu kelompok tertentu memiliki set properti yang dishare bersama, dengan tingkat similaritas yang tinggi dalam satu kelompok dan tingkat similaritas antar-kelompok yang rendah.
- Disebut juga “unsupervised leraning”.

* Pelacakan similaritas

- Untuk suatu database dari sejumlah objek dan sebuah “query” terhadap objek yang diberikan, dapatkan objek-objek yang berada dalam jarak yang ditentukan pengguna dari objek yang dilakukan query.

* Deteksi deviasi
- Dapatkan record(s) yang yang paling berbeda dari records lainnya; atau dengan kata lain dapatkan semua “ouliers”. Outliers ini dapat diabaikan sebagai derau atau mungkin merupakan informasi yang “menarik”.

* Terdapat beberapa metode lainnya, seperti
- Neural networks
- Genetic algorithms
- Hidden Markov models
- Time series
- Bayesian networks
- Fuzzy sets

Memilih Teknik Data Mining

- Apakah pembelajarannya supervised atau unsupervised ?
- Apakah diperlukan penjelasan yang jelas mengenai keterkaitan yang ada dalam data ?
- Apakah terdapat satu set input attributes dan sayu set output attributes, atau dapatkah terjadi interaksi antar attributes ?
- Apakah input data bersifat kategorikal, numeric, atau kombinasi dari keduanya ?
- Jika pembelajarannya adalah supervised, apakah output terdiri satu attribute atau beberapa attribute ? Juga apakah output attibutes bersifat kategorikal atau numeric atau keduanya ?
- Apakah kita tahu distribusi dari data ?
- Apakah kita tahu attribut yang mana yang terbaik untuk digunakan mendefinisikan data yang akan dimodelkan ?
- Apakah data berisikan beberapa “missing values” ?
- Apakah waktu komputasi merupakan issue penting ?
- Teknik data mining yang mana yang sebaiknya digunakan untuk memberikan hasil klassifikasi akurasi yang tinggi ?

Mengapa Melakukan Data Mining

Sudut Pandang Komersial …..

* Meledaknya volume data yang dihimpun dan disimpan dalam data warehouse
* Proses komputasi yang dapat diupayakan
* Kuatnya tekanan kompetitif
- Dapat menyediakan yang lebih baik, layanan-layanan kastemisasi
- Informasi sedang menjadi produk yang berarti

Sudut Pandang Keilmuan …..

* Kecepatan data yang dihimpun dan disimpan (Gbyte/hour)
- Remote sensor yang ditempatkan pada suatu satelit
- Telescope yang digunakan untuk men-scan langit
- Simulasi saintifik yang membangkitkan data dlm ukuran terabytes

* Teknik-teknik tradisional tidak fisibel untuk mengolah data mentah

* Data mining untuk reduksi data …
- Catalogging, klassifikasi, segmentasi data
- Membantu ilmuwan dalam melakukan formasi hipotesis

Aplikasi Metode Saintifik dalam Data Mining

Proses Data Mining

Memahami domain aplikasi
-Pengetahuan awal, sasaran penguna

Membuat target dataset
- Pemilihan data, fokus pada subset data

Pembersihan dan transformasi data

-Eliminasi derau, outliers, missing values
-Pemilihan fitur, reduksi dimensi

Penggunaan algoritma data mining
- Asosiasi, sekuensial, klassifikasi, klaterisasi, dll.

Interpretasi, evaluasi dan visualisasi pola
- Ada sesuatu yang baru dan menarik?
- Lakukan iterasi jika diperlukan

P e n g a n t a r D a t a M i n i n g


Data Mining adalah Proses yang mempekerjakan satu atau lebih teknik-teknik pembelajaran komputer (machine learning) untuk menganalisis dan menfekstraksi pengetahuan (knowledge) secara otomatis

Beberapa definisi terkait lainnya:

Pembelajaran berbasis Induksi (Induction-based Learning) adalah proses pembentukan definisi-definisi konsep yang umum yang dilakukan dengan cara mengobservasi contoh-contoh spesifik dari konsep-konsep yang akan dipelajari

Knowledge Discovery in Databases (
KDD) adalah penerapan metode saintifik pada data mining. Dalam konteks ini, data mining merupakan satu langkah dari proses KDD

Data Mining merupakan proses iteratif dan interaktif untuk menemukan pola atau model yang sahih, baru, bermanfaat, dan dapat dimengerti dalam suatu database yang sangat besar (massive databases)

Sahih: dapat digeneralisasi untuk masa yang akan datang
Baru: apa yang tidak sedang diketahui
Bermanfaat: dapat digunakan untuk melakukan suatu tindakan
Iteratif: memerlukan sejumlah proses yang diulang
Interaktif: memerlukan interaksi manusia dalam prosesnya

Goals dari Data Mining
Prediksi
- Apa ?
- Bersifat remang-remang (tidak transparan)

Deskripsi
- Mengapa ?
- Bersifat transparan

Operasi Data Mining
Prediksi (prediction driven)
- Validasi hipotesis
- Querying dan pelaporan (misal, spreadsheet dan pivot tables)
- Analisis multidimensi (dimensional summaries); OLAP
- Analsis statistik

Penemuan (discovery driven)
- Analisis data eksplorasi
- Pemodelan prediktif
- Segmentasi database
- Analisis keterkaitan (link analysis)
- Deteksi deviasi

Asal-Muasal Data Mining

* Mengambil ide dari machine learning/AI, pengenalan pola, statistik, dayabase systems, dan visualisasi data

* Teknik-teknik tradisional mungkin tidak sesuai
- Membludaknya data (enormity of data)
- Dimensi data yang tinggi (high dimensionality of data)
- Heterogenitas dan sifat data yang tersebar (heterogeneous, distributed nature of data)

Tantangan Utama dari KDD

* Skalabilitas
- Sampling yang efisien dan memadai
- Pemrosesan “in-memory” v.s. “disk-based”
- Komputasi berkinerja tinggi (komputasi paralel)

* Otomasi

- Mudah digunakan
- Penggunaan pengetahuan awal (prior knowledge)

Selasa, 13 April 2010

ETIKA SOFTWARE ENGINEERING

By : ZAKIA

Etika Software engineering dapat digambarkan dengan tiga macam cara:

• Aktivitas Software engineering yang membuat pilihan praktis lain sehingga mempengaruhi orang lain secara signifikan.

• Sebuah kumpulan prinsip-prinsip pedoman atau etika yang harus dipatuhi atau tindakan sesuai aturan yang ada.

• Nama sebuah disiplin ilmu yang mempelajari hubungan antara dua hal yang berbeda dalam suatu etika.

Etika Software engineering dapat dijelaskan sebagai kegiatan-kegiatan dan hal yang prinsip dimana disiplin ilmu etika Software engineering mempelajari kegiatan ini dan memformalisasikannya meskipun baru pada tahap awal.

Etika Kegiatan Software Engineering
- Etika di sini adalah : apapun tindakan yang disengaja dan memberikan dampak negatif / positif dalam hidup dan nilai-nilai kehidupan orang lain.
- Fokus kegiatan software engineering terutama adalah pada hal teknis produk yang dikembangkan.
- Etika Software Engineering terjadi ketika keputusan dibuat oleh profesional komputasi sejak dari desain, pengembangan, pembanguan dan memaintain alat-alat terkomputerisasi yang berpengaruh terhadap orang lain.

Barry Boehm (1981) "… sebuah kesempatan memberikan dampat positif pada masyarakat adalah dengan menjadi sensitif pada implikasi hubungan manusia jangka panjang pada pekerjaan kita dan menggabungkannya ke dalam desain software and produk." (Boehm, 1981)

Prinsip Etika Software Engineering
1. Harus mempertimbangkan dampak dengan memperhatikan aspek teknis dan aspek nilai etikanya
2. Aspek nilai itu adalah kode etik profesi, kode etik tingkah laku dan kode etik penerapannya (Codes of Ethics, Codes of Conduct and Codes of Practice )
3. Tujuan kode-kode etik di atas adalah untuk memastikan kegiatan seorang profesional baik sebagai perorangan, tim, perusahaan / organisasi, menjadi lebih handal dan menjaga nilai-nilai kemanusiaan dan tidak memberikan dampak buruk

Disiplin Ilmu Etika Software Engineering
Etika yang dipelajari adalah bagaimana interaksi prinsip-prinsip etika dan teknologi untuk menguji dampak interaksi tersebut pada masyarakat, warga negara dan produk yang dihasilkan oleh software engineering atau dengan kata lain menggambarkan, menyaring dan mengekplorasi hubungan lebih lanjut antara prinsip-prinsip ini dan pengembangan teknis prakteknya

Pengembangan Etika Software Engineering

- Software engineering adalah profesi yang menyadari dampaknya terhadap masyarakat luas, maka sejak tahun 1990 banyak aturan yang dibuat tentang kode etik profesi ini.
- Contohnya aturan yang dibuat oleh the Association for Computing Machinery (ACM), the Australian Computer Society, the British Computer Society (BCS) , the IEEE Computer Society (IEEE-CS) , yang kemudian bergabung dengan the ACM and the New Zealand Computer Society.

Tujuan dibuatnya adalah (Gotterbarn b, 1996):
1. Mengadopsi defenisi standar
2. Mendefinisikan struktur ilmu pengetahuan dan rekomendasi praktek ( Contoh di electrical engineering, teori electromagnetik adalah bagian dari struktur ilmu pengetahuan sedangkan Peraturan Nasional Keamanan Kelistrikan adalah Rekomendasi praktek.)
3. Mendefenisikan standar-standar etika
4. Mendefenisikan Kurikulum pendidikan untuk mahasiwa, sarjana, dan pendidikan tingkat lanjut

Institute Riset Etika SE

- Tujuannya : pengakuan adanya pertanggungjawaban secara moral dan etika pada klien, masyarakat dan profesi itu sendiri dan hal tersebut dituangkan dalam bentuk kode etik

- Contoh : IEEE-CS Certification sebagai dasar kepatuhan profesional Software Engineering mengenai kode etiknya dan Praktek kerjanya

- Pada kenyataan masalah etika tidak selalu menjadi hal penting. Software engineering mengartikannya sebagai “Pembentukan dan penggunan prinsip-prinsip tersebut dalam menghasilkan software bernilai ekonomi yang yang dapat diandalkan dan bisa digunakan pada mesin yang nyata “(Bauer, 1972)

Software Engineering
(1) Aplikasi sistematis, disiplin ilmu, pendekatan yang bisa dihitung dalam pengembangannya, operasional, dan maintain software yang merupakan penerapan rekayasa software.

(2) Pendekatan nya adalah sebagai disiplin ilmu profesi dan dampak produknya. Deskripsi disiplin ilmu ini dimulai dari munculnya isu tentang etika dimana software engineering menjelaskannya sebagai suatu hal yang memerlukan pemahaman dan penerapan prinsip-prinsip teknik, keterampilan desain, praktek manajemen yang baik, ilmu komputer, dan matematika dasar.(BCS, 1989)",

Definisi The BCS’s lebih komplit daripada Bauer dimana didalamnya terdapat beberapa referensi tentang tanggung jawab profesi seorang software engineer dan telah dituangkan dalam the Software Engineering Code of Ethics and Professional Conduct (SECODE 1999)

SECODE 1999
- Menyatakan bahwa : Software engineers harus berkomitmen untuk membuat analisa, spesifikasi, desain, pengembangan, menguji dan memaintain software yang memiliki nilai keuntungan dan penghargaan terhadap profesi.

- Berhubungan dengan komitmen tersebut pada kesehatan, keamanan dan kesejahteraan publik harus mematuhi delapan prinsip yakni :
1. PUBLIK
2. KLIEN & PEMBERI KERJA
3. PRODUK
4. PENGAMBILAN KEPUTUSAN
5. MANAJEMEN
6. PROFESI
7. KOLEGA
8. DIRI SENDIRI

PRINSIP-PRINSIP SE
1. PUBLIK : konsisten pada kepentingan umum
2. KLIEN & PEMBERI KERJA : bersikap terbaik pada kepentingan klien dan pemberi kerjanya dan itu tetap konsisten pada kepentingan umum.
3. PRODUK : harus meyakinkan bahwa produk yang dihasilkan dan modifikasinya sesuai standar profesi
4. NILAI : harus memaintain integritas dan ketidakberpihakan dalam memberikan penilaian profesionalnya
5. MANAGEMENT : mengatur dan menjadi pemimpin yang menjadikan dan mempromosikan pendekatan etika pada manajemen pengembangangan software dan pemreliharaannya
6. PROFESSION : memajukan integritas dan reputasi konsistensi profesi dengan kepentingan umum
7. KOLEGA : adil dan membantu kolega mereka
8. SELF : berpartisipasi dalam pembelajaran jangka panjang profesi mereka dan mempromosikan pendekatan etika pada praktek profesinya.

PROFESIONALISME

- Profesionalisme dari cabang ilmu manapun melibatkan kesadaran bahwa menjadi seorang profesional lebih dari sekedar aplikasi teknologi yang kaku kepada karya ilmu itu sendiri (Ford, 1996).

- Yang termasuk dalam profesionalisme adalah :
1. Kesadaran akan dampak pada masyarakat atas aplikasi dari kemampuan khususnya.
2. Ilmu Pengetahuan para praktisi sesuai standar profesi
3. Kesadaran akan tanggung jawab sehubungan hak istimewa dalam aplikasi keahlian tersebut.

Software Engineering Institute : software engineering sebagai sebuah bentuk rekayasa yang mengaplikasikan prinsip-prinsip ilmu komputer dan matematika untuk menghasilkan solusi biaya yang efektif pada masalah software (Ford, 1990)." tetapi software engineering, sebagai bagian rekayasa adalah membentuk dan membangun solusi biaya yang efektif untuk masalah praktek pada pelayanan pada kebutuhan manusianya (Ford, 1990). Termasuk didalamnya nilai kualitas yang bagus pada sumber daya yang diinvestasikan (Ford, 1990).


ETIKA SOFTWARE ENGINEERING


- Software engineering diartikan sebagai aplikasi disiplin ilmu pengetahuan rekayasa, dan prinsip-prinsip matematika, metode-metode dan alat-alat untuk produksi bernilai ekonomis dari kualitas suatu software. (Humphrey, 1989)

- Software engineer memiliki hak terhadap pengguna produknysa dimana tidak hanya termasuk imolemestasi sistim, tetapi juga termasuk di dalamnya produk-produk lain seperti persyaratan, rencana manajemen proyek software, desain spesifikasi, dokumentasi, tes kecocokan, program-program, petunjuk penggunaan, dan materi pelatihan

- Membangun sebuah karya software engineering dipengaruhi oleh antara lain anggaran yang tersedia, kebutuhan klien, keadaan software yang tersedia, pertimbangan lingkungan, dampak sosial, dan bahkan kondisi politik. Untuk itu dibutuhkanlah the Code of Ethics and Professional Practice .

- Etika Software engineering berhubungan dengan dua aspek dasar ; sebagai pegawai yang dibayar oleh klien, harus melayani kebutuhan mereka, dan berpartisipasi dalam fungsi sosial yang penting. Etika Software engineering melingkupi umum, profesi, dan etika teknis nya.

- Pendekatan pemakaiannya berdasarkan etika software engineering dan berkomitmen pada keduanya kualitas teknik dan keselamatan kesehatan dan kesejahteraan publik

MODEL UNTUK ETIKA SE

- Etika adalah “ sebuah sistim kemasyarakatn yang terapkan pada orang-orang rasional dalam membangun kebiasaan yang mempengaruhi orang lain dan meminimalkan keburukan (Gert, 1998).

- Kebiasan profesi software engineers, juga mempengaruhi orang lain, sehingga memicu dibuatnya prinsip-prinsip etikanya yang lebih mengikat pada orangnya bukan mesinnya. Dan seringkali terjadi dalam pekerjaan bersama-sama dalam team termasuk aktivitas etika dan prinsip-prinsip yang berkaitan dengan tindakan manajemen .

- Hubungan antara etika software engineering bisa dimengerti dengan membangun taksonomy parsial etika.

ETIKA & ETIKA PROFESI

- Kategori pertama, etika software engineering berpartispasi pada banyak hal tentang etika, yang termasuk didalamnya interaksi manusia. Konsep ini maksudnya memfasilitasi interaksi hidup manusia dalam bermasyarakat dengan menempatkan hak untuk mengambil tindakan dan menghindari akibat tindakannya.

- Etika ada di dalam masyarakat dimana tidak atau belum diatur oleh perundang-undangan. Etika tergantung pada penerimaan sukarela akan aturan itu tanpa paksaan oleh negara. Pada kategori ini, tujuan utamanya adalah etika sebagai manusia.

Beberapa prinsip termasuk tidak menyakiti siapapun, jujur, adil, dan tepat janji. Ini merupakan dasar hak untuk mencukupi perjanjian dan hak kita untuk perduli dengan pengguna karya kita. Ini memyeimbangkan manajemen hak ke “5.02. menyakinkan bahwa software engineers memberikan standar informasi sebelum digunakan oleh pengguna.” (SE Code 1999)

ETIKA PROFESI & ETIKA UMUM

- Profesional adalah orang yang memberikan dampak secara signifikan pada manusia, memiliki tingkat keilmuan khusus yang tinggi, untuk memproduksi atau memberikan pelayanan.

- Kode etik Profesi adalah salah satu kategori etika yang disyaratkan bagi semua profesional, sesuai bidangnya masing-masing, seperti arsitek, dokter, insinyur, dan pengacara. Secara umum selain keahlian khusus atau ilmu pengetahuan untuk membuat sebuah produk atau layanan, sebuah komitmen untuk tidak menyebabkan bahaya, keanggotan dalam organisasi yang representatif, kepatuhan pada kode etik, yang dilisensi oleh organisasi yang ditunjuk, dan otonom berdasarkan pengetahuan khusus tersebut. (Ford, 1996).

- Sebuah profesi merupakan tanggung jawab untuk melayani masyarakat (Bayles, 1981). Kewajiban ini dituangkan dalam bentuk kode etik profesi

- Prinsip tanggung jawab pada satu profesu dan satu klien profesi tidak berubah pada profesi yang lainnya. Kategori ini berlaku pada semua profesiteknis, pada beberapa aturan kode profesional mengartikan hubungan antara konsultan dan klien dan perhatian utamanya kewajiban pada klien dan profesi secara keseluruhan. Penekanannya langsung pada etika terhadap isu-isu yang berkembang dalam kesetiaan grup (jangan mengkritik tenaga ahli lainnya), paternalism (dokter akan menentukan yang terbaik buat pasiennya), dan periklanan (jangan bersaing dengan ahli lainnya melalui iklan) (Martin 1989).

- Perlu adanya konsekuensi sosial pada pengambilan keputusan profesional suatu profesi. Banyak kode etik termasuk komitmen untuk bekerja keras untuk level terbaik dalam praktek profesinya. Software engineers diingatkan hanya untuk mementingkan profesi dalam cara yang konsisten dengan kepentingan umum dan melaporkannya dan kesalahan-kesalahan dalam melakukannya. ”6.08. Bertanggung jawab untuk mendeteksi, mengkoreksi dan melaporkan kesalahan pada software dan dokumen yang berhubungan dengan pekerjaan mereka.” (SE Code, 1999)

- Kode etik tenaga ahli teknik sipil, dalam the IEEE dam berbagai macam kelompok komputasi menekankan pada : “ martabat dan nilai orang lain, integritas pribadi dan kejujuran, tanggung jawab pekerjaan.. keselamatan publik dan kesejahteraan" (Martin, 1989).

- Butuh kemampuan khusus dan [elatihan untuk mengembangkan produk ini yang mana langsung berpengaruh terhadap kehidupan, dan cara aplikasi software digunakan di masyarakat dan kebajikan pelatihan tersebut dan berdasarkan kekuatan satu keuntungan bahwa pelatihan memiliki pengaruh signifikan pada masyarakat

- Ini membuktikan bahwa etika software engineering sebagai suatu etika profesional, memiliki ilmu yang tidak dimiliki oleh orang diluar profesinya, memiliki kewajiban khusus kepada klien, yang bisa bertentangan dengan kepentingan umum. Bedanya disini software engineers memiliki kewajiban utama uterhadap masyarakat daripada terhadap kliennya.

- “Semua Nilai lebih terfokus pada kesehatan, keamanan dan kesejahteraan umum adalah hal paling utama” (SE Code, 1999). Etika Software engineering meskipun terfokus pada detail teknis komputasi, secara umum dasarnya sama dengan etika profesi lainnya.

TEKNIKAL & ETIKA PROFESI

- Etika teknis berbeda setiap profesinya yakni pada implementasi etikanya . Setiap operasi beroperasi dalam konteks yang berbeda dengan alat yang berbeda dan diperuntukkan untuk masalah yang berbeda pula. Meskipun ada beberapa prinsip yang sama, pada kategori ini berbedanya profesi maka akan berbeda prinsip-prinsip etikanya dan prioritasnya.

- Standar teknis dan nilai-nilai ditentukan oleh konsensus pada profesi (Gotterbarn,1991;Collins,1994).

- Masyarakat mempercayai bahwa profesional yang berpendidikan adalah yang paling siap menentukan prinsip-prinsip ini karena ilmu mereka yang khusus. Ini adalah dasar pengaturan profesi

- Profesional Software memiliki standar yang bisa mereka ikuti dan saat sekarang bisa dilihat bahwa terdapat kesepakatan yang signifikan tentang teknis dan standar etika sebagai seorang profesional. Secara alami terdapat tingkatan kesepakatan dalam etika profesional (Leventhal et. al., 1992).

ETIKA TEKNIKAL & NILAI-NILAI

- Meskipun ada standarisasi teknis, ada bermacam solusi yang tersedia dalam menyelesaikan masalah software engineering yang pemilihan solusinya berdasarkan nilia-nilai profesional. Konsekuensi, nilai-nilai profesional memiliki dampak langsung pada cara pengembangan aplikasi dan kualitas dari hasil karya

- Ada dua unsur utama etika Software engineering yakni :
* melakukan pekerjaan teknis (proses pengembangan software)
* mengunakan aturan nilai moral untuk mengambil keputusan teknis
- Dalam profesi, kemampuan teknis membimbing proses yang melibatkan beberapa isu etika. Keoutusan teknis dalam software engineering adalah memilih dalam siklus hidup untuk menggunakan produk yang sangat berbeda, meskipun dua-duanya sesuai persayaratan yang ditentukan.
- Secara umum, semua kode etik profesi hanya dibedakan oleh konteks di mana mereka menerapkan aturan-aturan moral.

- Meskipun tanggung jawab teknis adalah tanggung jawab individu tapi tidak selalu langsung bisa dipertanggungjawabkan secara hukum karena masih ada beberapa solusi teknis untuk mengatasi masalah tersebut kecuali apabila sudah menimbulkan kerusakan.

- Dasar pertimbangan hingga bisa diberlakukan aturan hukum adalah ."(West 1991) :
1. kewajiban utang
2. Tugas dilanggar
3. Kerusakan yang disebabkan oleh pelanggaran kewajiban
- Upaya untuk mendefenisikan tanggung jawab hukum profesi teknis tidak berhasil. Salah sisi mungkin tidak etis dan tidak menciderai hukum. Perbedaan nilai dan aturan diterapkan pada tahapan yang berbeda dalama pengembangan software dan aplikasi nilai –nilai dalam membuat keputusan yang tidak melanggar hukum. Dalam fase desain, aturan-aturan moral lainnya mungkin akan diterapkan terlebih dahulu.
- Etika Profesi teknis adalah unik.
- Tanggung jawab teknis berkaitan dengan pendekatan yang diambil oleh para profesional dalam memecahkan masalah-masalah teknis yang melibatkan konsekuensi pengetahuan dan mengikuti standar profesional yang baik.
- inti tanggung jawab yang perlu dibahas dalam software engineering mencakup tanggung jawab sosial dan teknis. Tanggung jawab teknis melibatkan komitmen moral untuk standar produksi software, sedangkan untuk proses tanggung jawab sosialnya melibatkan komitmen untuk menggunakan keterampilan khusus ini melayani masyarakat.
- Software engineers memiliki kewajiban untuk mempertimbangkan keselamatan, kesehatan, dan kesejahteraan pengguna mereka. Pengembangan Software adalah proses sosial dan software engineer memiliki dua kewajiban untuk berhasil :
* Berdasarkan pada standar teknis
* kewajiban tanggung jawab sosial kepada mereka yang akan bekerja sama produknya.
- Kedua pendekatan etika ini memeberikan arahan positif pada sikap praktisi software, dimana aktivitasnya diatur oleh prinsip-prinsip etika profesial software engineering.

TREN KE DEPAN
- Pergerakan profesionalisme industri komputer dan software engineeringterus berjalan. Ada pembaruan perhatian pada masalah etika antara engineering dan profesional komputasi dengan perhatian khususnya memberikan yang terbaik untuk klien dan pengguna hasil karya software engineering.
- The ACM and the IEEE Computer Society mengadopsi the Software Engineering Code of Ethics and Professional Practice in 1998, sejak itu diadopsi oleh organisasi profesional komputasi lainnya perusahaan besar maupun kecil sebagai suatu standar pekerjaan, termasuk lisensi dan standarisasi pengembangannya.
- Selanjutnya ada perubahan budaya dimana muncul pemahaman dan harapan akan sikap beretika software engineers dan pihak-pihak yang terpengaruh produk mereka.

REFERENSI
- R. E. Anderson, et al, "ACM Proposed Code of Ethics and Professional Conduct," Communications of the ACM, May 1992.
- BCS, A Report on Undergraduate Curricula for Software Engineering Curricula, The British Computer Society and The Institution for Electrical Engineers, June 1989.
- M.D. Bayles, Professional Ethics, Wadsworth Publishing Company, California, 1982.
- B.W. Boehm, Software Engineering Economics, Prentice Hall, NJ. 1981
- B.H. Bauer, "Software Engineering," Information Processing, 71. North Holland, Amsterdam 1972.
- W.R. Collins & K.W. Miller, "Paramedic Ethics for Computer Professionals," The Journal of Systems and Software, 1992.
- W.R. Collins, K.W. Miller & Bethany Spielman," How Good Is Good Enough? An Ethical Analysis of Software Construction and Use," in Communications of the ACM, Vol. 37, No. 1 (January 1994), 81-91.
- R. DeGeorge, Business Ethics, New York, 1982.
- G. Ford and N. Gibbs, “A Mature Profession of Software Engineering,” Carnegie Mellon University CMU/SEI-96-tr-004)
- G. Ford, 1990 SEI Report on Undergraduate Software Engineering Education, Technical Report CMU/SEI-90-TR-3, Carnegie Mellon University, 1990.
- B. Gert, Morality, New York, Oxford University Press, 1998.
- D.W. Gotterbarn, "Computer Ethics: Responsibility Regained," in Computers, Ethics, and Social Values, Deborah G. Johnson and Helen Nissenbaum (eds.) Prentice Hall,1994.
- D.W. Gotterbarn “How the new Software Engineering Code of Ethics Affects You", IEEE Software, November/December, 1999 58-64.
- D.W. Gotterbarn (a) “Software Engineering: The New Professionalism," The Responsible Software Engineer, ed. Colin Meyer, Springer Verlag 1996
- D.W. Gotterbarn (b) "Establishing Standards of Professional Practice," chapter 3 in The Responsible Software Engineer, ed. Colin Meyer, Springer Verlag 1996
- W.S. Humphrey, Managing the Software Process, Addison Wesley, Reading 1989.

Senin, 12 Oktober 2009

Meningkatkan Performa Database MySQL

Langkah berikut bisa digunakan untuk meningkatkan kecepatan akses terhadap database MySQL, terutama jika akses dilakukan dari komputer dengan sistem non Linux.

1. Memperbaiki DNS setting dan memasukkan ip address / nama host client yang mengakses mysql kedalam file /etc/hosts di server mysql.
Proses edit file /etc/hosts ini bisa dilakukan menggunakan webmin ataupun diedit langsung. Berdasarkan ujicoba langsung, tips ini meningkatkan kecepatan koneksi hingga 10X

2. Memperbaiki / meningkatkan setting konfigurasi MySQL pada file my.cnf.

Secara default, setting mysql menggunakan setting normal dengan memori kecil.
# This is for a system with little memory (32M – 64M) where MySQL plays
# an important part, or systems up to 128M where MySQL is used together with
# other programs (such as a web server)
Dengan memori yang ada pada server (misalnya sebesar 1 GB), kemampuan MySQL dapat lebih ditingkatkan dengan menaikkan key_buffer_Size (untuk model tabel MYISAM) dan innodb_buffer_pool_size (untuk tipe table Inno-db) dan table_cache. Jangan lupa, angka yang diisikan adalah angka dalam bentuk umum memory (kelipatan dari 2n), misalnya 128 MB, 256 MB, 512 MB dll.
Dalam beberapa proses instalasi, biasanya ada juga file konfigurasi untuk mysql yang dijalankan pada komputer dengan memori besar. Nama file konfigurasinya : my-large.cnf. Pelajari file konfigurasi tersebut agar bisa diujicoba pada file konfigurasi my.cnf.

Sebelum melakukan perubahan setting, backup terlebih dahulu konfigurasi yang lama, untuk berjaga-jaga jika setting yang baru justru memunculkan masalah. Berdasarkan pengalaman, setting yang tidak tepat-terlalu tinggi misalnya-membuat MySQL tidak bisa dijalankan.

Jangan lupa, perubahan konfigurasi MySQL sebaiknya dilakukan dalam posisi MySQL off sehingga setelah selesai dire-konfigurasi bisa langsung ditest.

3. Meningkatkan kapasitas memori server

Memori yang lebih tinggi akan membuat server leluasa dalam melayani trafik yang tinggi. Jika memori mencukupi, server tidak akan menggunakan memori cadangan dari swap file yang biasanya berimplikasi pada kecepatan akses data.

4. Pada aplikasi, hindari query SELECT yang tidak spesifik seperti SELECT * …
Pastikan memilih kolom yang akan diambil dan sedapat mungkin hindari model Select *

5. Gunakan indeks pada key table yang sering digunakan.

Misalnya pada tabel karyawan yang menggunakan NIK (Nomor Induk Karyawan) sebagai primary key, indeks table menggunakan key ini. Jika ada proses query yang sering menggunakan nama field lainnya, buat indeks juga untuk field tersebut.
Referensi tuning dari Linux Magazine bisa didownload disini.
Referensi :

1. MySQL Amazing Tips to Improve, Tuning and Increase MySQL Performance
2. http://dev.mysql.com/books/hpmysql-excerpts/ch06.html
3. http://dev.mysql.com/doc/refman/5.0/en/server-parameters.html
4. http://www.linux-mag.com/index.php?option=com_content&task=view&id=911&Itemid=2035