Senin, 09 Juli 2012

Kelas di Abad ke-21

Implementasi Teknologi Informasi untuk mendukung proses belajar mengajar semakin meluas. Menurut hemat saya, salah satu peranan penting berbagai produk Web 2.0 dalam mendukung proses belajar mengajar adalah mendorong suasana kolaborasi antar mahasiswa/siswa dengan mahasiswa/siswa, dan antar mahasiswa/siswa dengan guru/dosen.

Penelitian yang serius mengenai memanfaatkan Web 2.0 untuk kepentingan pendidikan mulai marak dilakukan. Tantangannya adalah bagaimana mengklasifikasikan produk Web 2.0 sesuai manfaat masing-masing dengan kurikulum terkini. Untuk area program studi Teknik Informatika sendiri, sudah "terlebih" dahulu hadir secara nyata, misalnya yang ditunjukkan oleh Khan Academy ataupun EdX.

Berikut adalah sebuah ilustrasi suasana ruangan kelas abad ke-21:


Meskipun banyak pihak yang menyambut baik perkembangan ini, studi lebih lanjut tentang manfaat yang dapat diperoleh harus digencarkan. Riset-riset terkini mengenai topik ini akan berkisar pada "pengukuran" besar manfaat yang diperoleh pada setiap stakeholders pendidikan. Apakah manfaatnya hanya akan berkisar pada efisiensi, efektivitas ataupun hingga strategic competitive value. Terlebih, apakah manfaatnya bisa menciptakan sumber daya manusia yang lebih superior dibandingkan generasi sebelumnya?


Jumat, 06 Juli 2012

UML di IDE Netbeans


(Gambar diambar dari javastudy.wordpress.com)


Setelah sedikit mengutak-atik Netbeans Community, akhirnya saya mendapat kabar kalo UML sudah bisa digunakan di IDE Netbeans 6.9.1. Biasanya saya menggunakan Rational Rose untuk membuat model diagram UML, tapi akhirnya saya "tergoda" juga untuk menggunakan IDE Netbeans.

Sedikit perbedaan adalah, pada Rational Rose, disediakan fitur untuk menggambar diagram2 UML yang lebih lengkap, sedangkan untuk IDE Netbeans hanya disediakan Class Diagram, Activity Diagram, Use Case Diagram, Sequence Diagran dan State Diagram. Dari sudut pandang seorang dosen, maka saya mengatakan bahwa diagram2 tersebut sudah cukup untuk digunakan dalam perkuliahan maupun sebagai bagian dari Laporan Tugas Proyek dan Tugas Akhir.

Fitur click-and-drag yang disediakan Netbeans dalam menggambar UML Diagram, tentu saja memberikan kemudahan tersendiri bagi para pengguna IDE ini. Ditambah dengan fitur "reverse engineering" yang akan memudahkan kita untuk men-generate code dari diagram2 yang telah kita gambar.

Berikut ini adalah petunjuk instalasi Plug In UML:

Berikut ini adalah Petunjuk Pemakaian UML di Netbeans:

Berikut ini adalah Video Petunjuk Penggunaan UML di Netbeans:

Untuk yang ingin mengetahui UML secara lebih mendalam melalui Video, dapat melihat link ini:


Kamis, 05 Juli 2012

Internetware

Hong Mei, Gang Huang dan Tao Xie dari Peking University - Cina mengusulkan sebuah paradigma baru dalam pengembangan perangkat lunak berbasis web; yakni INTERNETWARE. Trio peneliti dari Peking University tersebut mengemukakan paradigma Internetware di Majalah Computer (June 2012 (Vol. 45, No. 6) pp. 26-310018-9162/12/$31.00 © 2012 IEEE; Published by the IEEE Computer Society)

Apa yang dimaksud dengan Internetware menurut Hong Mei, Gang Huang dan Tao Xie dari Peking University tersebut? Internetware adalah software paradigm (atau disebut juga programming paradigm) yang menyediakan sekumpulan teknologi dalam mengembangkan aplikasi untuk memenuhi persyaratan-persyaratan dalam lingkungan implementasi berupa internet.

Argumentasi mereka adalah ...
Software on the Internet differs from traditional software in terms of its form, structure, and behavior. Consequently, software applications (including software entities and their interactions) for Internet computing should be autonomous, cooperative, situational, evolvable, emergent, and trustworthy

Jadi, dari sudut pandang bentuk, struktur dan perilaku perangkat lunak di internet (misalnya web services) jika dibandingkan dengan aplikasi tunggal ataupun clien-server (LAN) memiliki perbedaan yang cukup tajam. 
Internetware harus memenuhi beberapa aspek terkait:
1) Software Model (what to be)
2) Software Operating Platform (how to run)
3) Engineering Approach (how to do)
4) Quality Assessment (how well)


Gambar diatas menunjukkan bagaimana para peneliti di China mengembangkan teknologi untuk mendukung internetware.

Yang diusulkan oleh rekan-rekan peneliti di China merupakan suatu terobosan dalam perkembangan keilmuan teknologi informasi. Tentu saja, perkembangan internet yang sedemikian pesat, membuat paradigma internetware mulai keliatan masuk akal. Kesediaan infrastruktur "keras" seperti konektivitas kabel maupun broadband, merupakan prasyarat mutlak dalam mengimplementasikan paradigma internetware.
Mungkin pada level universitas, seperti Universitas Sam Ratulangi, sudah dapat mengimplementasikan paradigma internetware dalam blue print pengembangan infrastruktur yang mendukung sistem penyelenggaraan universitas.

Catatan:
Tulisan ini adalah adaptasi dari Majalah Computer Edisi Juni 2012, yang berjudul Internetware: A Software Paradigm for Internet Computing.

Tentang para penulis dapat dilihat dibawah ini:
Hong Mei is a professor in the School of Electronics Engineering and Computer Science, Peking University, China. His research interests include software engineering, software reuse, distributed object technology and middleware, and programming languages. Mei received a PhD in computer science from Shanghai Jiaotong University. He is a senior member of IEEE. Contact him at meih@pku.edu.cn.
Gang Huang is a professor in the School of Electronics Engineering and Computer Science, Peking University. His research interests include software engineering, particularly software architecture and middleware. Huang received a PhD in computer science from Peking University. He is a member of IEEE. Contact him at hg@pku.edu.cn.
Tao Xie is a visiting professor in the School of Electronics Engineering and Computer Science, Peking University, and an associate professor in the Department of Computer Science at North Carolina State University. His research interests include software engineering, particularly software testing, program analysis, and software analytics. Xie received a PhD in computer science from the University of Washington, Seattle. He is a member of IEEE and a senior member of ACM. Contact him at xie@csc.ncsu.edu.

Tata Kelola TI

Pada dasarnya, Tata Kelola TI (diterjemahkan dari IT Governance) adalah bagaimana melakukan pengelolaan yang optimal bagi sumber daya SI/TI yang dimiliki organisasi. Pengelolaan yang optimal ini berkaitan dengan peranan SI/TI yang memberikan manfaat bagi organisasi termasuk mengendalikan setiap resiko yang ada. Implementasi tata kelola TI diharapkan dapat memberikan manfaat bagi organisasi.

Menurut Grembergen[1] tata kelola TI adalah kapasitas organisasi sebagai tanggung jawab direksi, manajemen eksekutif, dan manajemen teknologi informasi untuk mengendalikan rumusan dan implementasi strategi SI/TI untuk memastikan selarasnya sumber daya SI/TI dengan bisnis organisasi. Grembergen menekankan pengertian tata kelola TI pada bagaimana organisasi memandang, mengelola dan mengoptimalkan sumber daya SI/TI yang dimilikinya dalam mendukung tujuan organisasi.


Menurut Weill dan Ross[2], tata kelola TI adalah mengenai pengelolaan hak-hak dalam pengambilan keputusan dan kerangka kerja yang dapat dipertanggungjawabkan untuk mendorong terwujudnya hal-hal yang diharapkan dalam penggunaan SI/TI. Weill dan Ross[2] mengusulkan lima pilar utama dari tata kelola TI yang perlu untuk dikelola oleh seluruh stakeholders organisasi. Kelima pilar tata kelola TI tersebut adalah IT Principles, IT architecture, IT Infrastructure, IT Business Application Needs,  IT Investment. (Lihat Gambar 1).

Grembergen[1] mengatakan bahwa tantangan krusial tata kelola TI sekarang ini adalah bagaimana memastikan bahwa penerapan tata kelola TI pada suatu organisasi dapat memberikan manfaat bisnis yang optimal dari setiap investasi SI/TI yang dilakukan. Manfaat bisnis ini harus dapat terukur dengan jelas.

Rabu, 04 Juli 2012

Source Code Review

Yang namanya seorang software engineer pastinya sudah kenal dengan source code review. Terlebih bagi mereka yang berkecimpung dalam dunia software testing. Software testing, sebagai bagian dari daur hidup pengembangan perangkat lunak, sebenarnya adalah "kunci" dari dihasilkannya perangkat lunak yang berkualitas.

Tren yang saya amati sekarang ini, hampir semua hasil tugas project, laporan kerja praktek dan bahkan karya akhir mahasiswa yang mengambil topik software development, sering "mengabaikan" tahap software testing. Beberapa laporan bahkan tidak mencantumkan sama sekali kalau pernah melakukan prosedur pengujian perangkat lunak. Sebagian hanya mencantumkan pengujian fitur antar muka. Jarang, bahkan hampir tidak ada yang melampirkan dokumen, telah melakukan source code review. Hal ini tentu saja, sangat memprihatinkan.


Memang harus diakui, diperlukan ketrampilan khusus dalam melakukan source code review. Dan untuk level pengguna, biasanya tidak ada yang dapat melakukan source code review. Bahkan untuk level profesional TI sekalipun, tugas melakukan source code review itu sangat melelahkan. Tentu saja, secara ideal, diperlukan tim khusus untuk melakukan source code review.

Secara umum, source code review dapat dilakukan secara otomatis dan manual. Static Code Analysis, dapat dilakukan dengan penekanan pada me-review source code menurut predefined rules tertentu. Static Code Analysis adalah contoh dari source code review secara otomatis. Tujuan utamanya adalah untuk menemukan bugs dan security flaws sedini mungkin pada aplikasi yang akan di-released. Melakukan static code analysis merupakan suatu keharusan dalam pengujian aplikasi sebelum di-released. Sayangnya, static code analysis tidak dapat mendeteksi malicious code yang ditambahkan/diselipkan oleh attacker.

Manual Code Review, memiliki kemampuan untuk mendeteksi malicioius code atau perilaku sistem aplikasi yang tidak diinginkan. Kelemahnnya adalah merupakan suatu pekerjaan yang sangat memakan waktu apabila baris code yang harus diperiksa sangat panjang dan banyak.

Teknik source code review yang baik adalah yang sesuai dengan target pengembangan sistem perangkat lunak yang akan dikembangkan. Dengan perkembangan IDE yang semakin handal, maka pekerjaan melakukan software testing menjadi relatif lebih ringan. Meskipun demikian, esensi kompetensi dasar seorang software tester tidak berubah: ketahanan, ketajaman dan ketepatan.

Berikut ini adalah link terkait tools yang dapat digunakan untuk melakukan static code analysis:

Dibawah ini, dapat dilihat perbandingan IDE pengembangan aplikasi:

Sedangkan dibawah ini, terdapat link menuju Portal Software Testing: