Knowledge Management dalam Software Development

Knowledge merupakan kemampuan manusia untuk melakukan aksi secara efektif pada kondisi yang bervariasi dan situasi tak menentu. Sedangkan knowledge management merupakan sebuah proses sistematis dalam membuat, merawat serta mengelola aset intelektual dan aset berbasis knowledge hasil kerja  oleh sebuah organisasi, guna menciptakan business value dan keunggulan kompetitif. Knowledge management difokuskan untuk mentransformasikan sebuah institusi guna memenangkan kompetisi. Untuk itu, pengetahuan yang dimiliki harus unggul dibanding pesaingnya. Jadi, isu utama di knowledge management adalah keunggulan kompetitif yang diperoleh dengan cara mengelola pengetahuan yang dimiliki secara lebih baik dan efisien. Dalam konsep knowledge management baru, sebuah institusi secara sadar dan komperehensif akan mengumpulkan, mengelola, mendistribusikan dan menganalisa pengetahuan yang dimilikinya untuk tujuan-tujuan di masa mendatang.
Software development adalah suatu kegiatan yang sangat kompleks dan melibatkan sekumpulan orang yang melakukan sejumlah kegiatan berbeda, pada beberapa fase yang berbeda pula. Perubahan teknologi yang semakin cepat mengharuskan pekerjaan dalam pengembangan software dilakukan secara dinamis dan mengikuti perubahan yang ada. Perubahan yang terus berjalan tersebut memicu penciptaan pengetahuan baru setiap harinya. Software house yang terkait langsung dengan kegiatan software development bertanggung jawab penuh untuk memastikan bahwa knowledge yang sudah ada tetap terjaga sehingga tetap dapat dirunut di mana dan siapa yang mempunyai knowledge. Untuk itu, diperlukan knowledge management agar knowledge dapat dikelola dan dimanfaatkan untuk menciptakan keunggulan kompetitif dan business value bagi perusahaan.
Dalam software engineering, yang merupakan sebuah disiplin ilmu pengembangan software, dapat diidentifikasi dua tipe knowledge, yaitu:

  1. Knowledge yang melekat pada produk, di mana produk tersebut merupakan hasil karya intelektual dan aktivitas kreatif.
  2. Meta-knowledge, yaitu knowledge tentang produk dan proses itu sendiri.

Pertanyaan paling penting adalah, bagaimana dan di mana knowledge dalam software engineering terletak? Sangat jelas bahwa software engineering melibatkan banyak pekerjaan yang sangat knowledge-intensive, yaitu melakukan analisa kebutuhan user, melakukan identifikasi dan menetapkan metode pengembangan terbaik, membuat perencanaan proyek, analisa dan manajemen risiko serta beberapa kegiatan lainya.
Kegiatan utama dalam software engineering dapat dikelompokkan menjadi tiga kategori, yaitu:

  1. Kegiatan/pekerjaan yang dilakukan oleh tim pengembangan, mengikuti permintaan pelanggan.
    Kegiatan tersebut merepresentasikan kegiatan utama (core tasks) dalam organisasi software. Pemimpin tim bertanggung jawab untuk memastikan bahwa pekerjaan yang dilakukan selesai tepat waktu dan berkualitas, meskipun ada keterbatasan biaya dan waktu.
  2. Kegiatan yang bertujuan untuk meningkatkan kemampuan tim untuk mengembangkan produk software.
    Kegiatan dalam kategori ini merupakan upaya untuk mengumpulkan dan menciptakan knowledge dari beberapa proyek yang pernah ditangani. Hasil dari aktivitas tersebut digunakan untuk pembelajaran pada proses selanjutnya.
  3. Kegiatan yang fokusnya untuk meningkatkan kemampuan organisasi  atau perusahaan untuk mengembangkan software.
    Kategori ini mewakili kegiatan analisis terhadap hasil dari proyek-proyek sebelumnya untuk melihat kesesuaian dan perbedaan yang ada. Hasilnya dapat digunakan sebagai knowledge yang kualitatif maupun kuantitatif.

Berdasarkan tiga perspektif di atas, terdapat beberapa peranan knowledge management dalam software engineering, yaitu:

  1. Knowledge management mendukung proses inti aktivitas software engineering.
    Dalam hal ini, knowledge management bertindak sebagai pendukung kegiatan inti (core task), yaitu pengembangan software. Kegiatan-kegiatan yang dilakukan dalam pengembangan software, tidak lepas dari dokumentasi dan bahkan hampir semua hasil kerjanya adalah dokumen, baik berupa code, manual, dokumen bantuan, atau yang lain. Karena itu, aktivitas yang selalu dilakukan adalah pembuatan dokumen, penyuntingan, koreksi dan aplikasi dokumen tersebut. Untuk mengatur dokumen tersebut, diperlukan sebuah tool yang dikenal dengan document management. Tool ini digunakan sebagai fondasi dasar knowledge management dalam software engineering. Kebanyakan organisasi yang melakukan software engineering mempunyai beberapa lokasi workshop (software house) yang terletak pada lokasi yang berbeda. Oleh karena itu, pasti terjadi proses distribusi dokumen yang telah dibuat di masing-masing workshop. Proses distribusi informasi tersebut juga memerlukan penanganan khusus yang dikenal dengan istilah manajemen informasi, yang dapat dilakukan dengan berbagai tool seperti email, kalender, groupware dan lain-lain.
  2. Manajemen dan distribusi dokumen.
    Knowledge management mendukung proses dokumentasi yang biasanya dilakukan menggunakan aplikasi document management. Makanya, dokumen dapat dengan mudah dirunut mengacu pada versinya. Selain itu, beberapa aplikasi document management juga dapat memberikan versi secara otomatis atau memungkinkan sebuah dokumen disunting secara simultan. Dalam software engineering yang melibatkan tim yang cukup besar, mungkin diperlukan juga mekanisme workflow untuk beberapa proses di dalamnya, seperti review atau uji coba software.
  3. Manajemen kompetensi.
    Manajemen kompetensi ini dilakukan untuk tetap menjaga semua aset knowledge tacit sehingga bisa diketahui dan tercatat, “siapa yang mengetahui apa”. Pada software house skala kecil, biasanya dengan mudah seseorang dapat mengetahui knowledge yang dimiliki oleh rekannya. Jadi, “siapa yang mengetahui apa” dalam organisasi tersebut dapat dengan mudah diingat. Tetapi, semakin besar organisasi yang berarti juga semakin melibatkan banyak orang, “siapa yang mengetahui apa” semakin sulit dilakukan (not knowing what other people know). Untuk mengatasinya, diperlukan manajemen kompetensi. Manajemen kompetensi dilakukan untuk membantu menempatkan seseorang yang mempunyai skill yang sesuai dengan proyek yang akan ditangani. Saat ini, manajemen kompetensi digunakan oleh beberapa perusahaan sebagai acuan untuk mengembangkan kompetensi pegawainya.
  4. Pendekatan secara perlahan ke arah knowledge management.
    Pendekatan perlahan ini dimaksudkan agar dapat melakukan knowledge management dengan lebih baik, bersamaan dengan waktu kerja, tidak mengubah cara bekerja, namun bisa menjadi bagian dari aktivitas harian.
    Contohnya adalah perubahan pada helpdesk ke seeking help, di mana pada awalnya setiap ada permasalahan selalu langsung diselesaikan oleh helpdesk. Ketika diubah, permasalahan tidak lagi langsung ke helpdesk, tetapi terlebih dulu mencari jawabannya pada dokumen FAQ yang sudah disediakan. Jika jawaban tidak ditemukan, baru kemudian melakukan request ke helpdesk.
  5. Daya ingat organisasi (Organizational Memory).
    Belajar dari pengalaman, perlu memori yang kuat untuk mengingatnya kembali. Karena daya ingat individu mustahil mampu mengingat semuanya, maka yang harus dilakukan adalah menjadikannya sebagai explicit knowledge. Dengan demikian, setiap kegiatan dapat tercatat dan dirunut dengan mudah dan cepat. Terdapat minimal tiga bentuk organizational memory, yaitu;
    • Memori terdiri dari kegiatan dokumentasi dan kegiatan lain yang mendukung pengembangan program.
    • Memori terdiri dari entitas yang dikembangkan khusus untuk mendukung daya ingat organisasi:
    • Gabungan keduanya.
  6. Paket pendukung aplikasi knowledge management.
    Paket Knowledge yang mendukung aplikasi knowledge, kebanyakan berupa aplikasi yang digunakan dalam software engineering. Aplikasi knowledge management dalam software engineering biasanya adalah hasil pengalaman dari kegiatan dalam beberapa proyek yang pernah digarap.
  7. Tool berbasis knowledge management berdasarkan aktivitas software engineering yang didukungnya:
    • Interactive Domain Understanding Tools
    Tool ini bertujuan membantu menyamakan persepsi antara user dengan desainer aplikasi, atau dengan kata lain melakukan transfer knowledge tentang sistem yang akan dibangun dari user ke desainer/developer. Seringkali hal tersebut dianggap remeh, sehingga ketika sebuah aplikasi dideliver, aplikasi tersebut berbeda jauh dari harapan user sehingga harus dilakukan pembongkaran total atau malah dibuang begitu saja. Dengan adanya understanding tools ini, diharapkan akan membantu memahami kondisi user atau aplikasi yang akan dikembangkan.
    • Intelligent Requirements Assistants
    Digunakan untuk membantu memperoleh gambaran dan melakukan analisis kebutuhan user atas aplikasi yang sedang dikembangkan dalam bentuk yang formal.
    • Knowledge-based Program Designers
    Tool dalam kategori ini digunakan untuk melakukan konversi dari fase requirement ke fase desain, termasuk di dalamnya obyek-obyek yang akan digunakan dalam pengembangan.
    • Knowledge-based Code Generators
    Membantu membuat code program dari desain tingkat tinggi (high-level design) sehingga akan sangat membantu pembuatan program. Code program yang dihasilkan akan sangat bergantung terhadap desain yang dijadikan sebagai input pada saat membuat code-nya.
    • Smart Code Analysis Tools
    Untuk melakukan analisa code program, diperlukan kemampuan pemrograman yang cukup tinggi dan pengetahuan tentang manajemen kualitas software. Tool ini akan membantu melakukan analisa, testing dan pengujian kualitas program, dengan membandingkan style program yang diuji dengan style program yang diset sebagai acuan standar yang dianggap mempunyai good structure berdasarkan pengalaman sebelumnya.
    • Documentation Generators
    Untuk membantu melakukan dokumentasi semua aktivitas dalam software engineering, seperti spesifikasi dan desain aplikasi. Documentation generator ini membantu mengubah tacit knowledge ke explicit knowledge.
    • Software Maintenance Tools
    Tool ini membantu melakukan transfer knowledge dari desainer dan developer ke seseorang yang akan melakukan maintenance aplikasi. Salah satu contohnya adalah dengan membuat code yang konsisten antara aplikasi yang sudah dideliver dan update-nya.
    • Predictive Models and Best Practices
    Dalam setiap proyek yang ditanganinya, Project Leader dapat dipastikan akan melakukan berbagai aktivitas seperti memberikan perencanaan dan berbagai keputusan. Selain itu, pengalaman juga dapat berupa situasi-situasi yang pernah dialami, cerita kesuksesan dan kegagalan, serta berbagai masalah yang dihadapi dan solusi yang dilakukan. Apabila pengalaman tersebut terdokumentasi dengan baik, maka akan sangat bermanfaat dalam proyek-proyek selanjutnya, terutama membantu mengambil keputusan dan memprediksi kemungkinan-kemungkinan yang terjadi jika sebuah keputusan telah diambil. Dokumentasi tersebut bisa dalam format teks, indexed cases, semantic networks, matriks, flowchart atau bentuk-bentuk lain yang disesuaikan dengan informasinya.
    • Process Design
    Process design yang dimaksud adalah melakukan desain sebuah proses standar dalam pengembangan aplikasi berdasarkan pengalaman yang pernah dialami. Kemudian, proses standar tersebut akan digunakan dalam pengembangan aplikasi yang terus mengalami perbaikan.
  8. Tool berbasis knowledge management berdasarkan fase life cycle knowledge yang didukungnya:
    • Knowledge Deployment/Application Tools
    Dimaksudkan untuk membagi knowledge dalam sebuah organisasi ke setiap pegawai yang membutuhkan, pada saat proses software engineering dilakukan. Knowledge dalam sebuah organisasi dipisahkan dan didistribusikan sesuai dengan domain dari setiap task dalam software engineering, seperti desain, pengembangan dan dokumentasi.
    • Knowledge Organization Tools
    Organization tools digunakan untuk memelihara knowledge, menambahkan hubungan pada setiap item knowledge ke item knowledge lainnya yang digunakan selama pengembangan aplikasi berbasis knowledge, menambahkan meta data dalam knowledge item, dan menggambarkan hubungan antara generalisasi dan spesialisasinya.
    • Knowledge Acquisition Tools
    Membantu mentransfer dan mengubah pengalaman dari sumber knowledge yang bersifat tacit ke dalam gambaran knowledge yang explicit sehingga knowledge dapat digunakan secara lebih efektif.

Sumber :

http://dev.sda-asia.com/sda/article/psecom,id,18,nodeid,5,_language,Indonesia.html

This entry was posted in Ilmu Pengetahuan. Bookmark the permalink.

Comments are closed.