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:



Metode Formal

Mengapa seorang software engineers PERLU memiliki kemampuan matematika yang mumpuni? Pertanyaan ini seringkali ditanyakan oleh mahasiswa jurusan informatika dan masyarakat umum. Sepertinya telah terjadi salah-pemahaman mengenai keilmuan Informatika itu sendiri. Masyarakat awam "memiliki" pemahaman bahwa informatika terkait dengan Facebook, Twitter dan Internet Marketing, sedangkan mahasiswa informatika sering memahami keilmuan informatikan itu sebagai Gaming dengan berbagai bentuknya. Semua itu merupakan pandangan yang keliru.

Beberapa waktu lalu saya telah menulis tentang kemampuan matematika dasar yang harus dimiliki oleh seorang software engineer. Tulisan itu dapat dibaca pada link ini:

Pada bagian ini, saya akan menulis tentang Formal Methods atau Metode Formal. Sebagai pengantar, maka perlulah dikemukakan apa itu formal methods tersebut ...
Formal methods is the term applied to the analysis of software (and computer hardware) whose results are obtained purely through the use of rigorous mathematical methods. The mathematical techniques used include denotational semantics, axiomatic semantics, operational semantics, and abstract interpretation.

Jika diterjemahkan maka akan seperti ini:
Metode formal adalah istilah yang diterapkan pada analisis perangkat lunak (dan perangkat keras komputer) yang hasilnya diperoleh murni melalui penggunaan metode matematika ketat. Teknik-teknik matematika yang digunakan meliputi semantik denotational, semantik aksiomatik, semantik operasional, dan interpretasi abstrak.


Formal Methods merupakan bagian pembahasan pengembangan perangkat lunak yang makin berkembang sekarang ini. Mahasiswa jurusan informatika harus memahami konsep dan implementasi Formal Methods dalam pengembangan perangkat lunak, dan untuk itu dibutuhkan kemampuan matematika dasar dan lanjut yang menyeluruh.

Misalnya kita dapat melihat apa yang dimaksud dengan interpretasi abstrak:
Abstract interpretation models the effect that every statement has on the state of an abstract machine (i.e., it 'executes' the software based on the mathematical properties of each statement and declaration). This abstract machine over-approximates the behaviours of the system: the abstract system is thus made simpler to analyze, at the expense of incompleteness (not every property true of the original system is true of the abstract system).
Use of assertions in program code as first suggested by Hoare logic. There is tool support for some programming languages (e.g., the SPARK programming language (a subset of Ada) and the Java Modeling Language — JML — using ESC/Java and ESC/Java2, Frama-c WP (weakest precondition) plugin for the C language extended with ACSL (ANSI/ISO C Specification Language).

atau dalam terjemahannya ...
Interpretasi abstrak memodelkan efek dari setiap pernyataan pada keadaan mesin abstrak (yaitu, 'mengeksekusi' perangkat lunak berdasarkan sifat matematis dari setiap pernyataan dan deklarasi). Mesin abstrak memperkirakan perilaku sistem: sehingga dapat digunakan untuk menganalisis, dengan model sistem yang tidak lengkap (yakni tidak setiap properti dari sistem yang asli dimodelkan pada sistem abstrak). 
Penggunaan pernyataan dalam kode program sebagai pertama kali diusulkan oleh logika Hoare. Ada alat dukungan untuk beberapa bahasa pemrograman (misalnya, pemrograman SPARK bahasa (subset dari Ada) dan Modeling Language Jawa - JML - menggunakan ESC / Jawa dan ESC/Java2, Frama-c WP (prasyarat paling lemah) plugin untuk C bahasa diperpanjang dengan ACSL (ANSI / ISO C Language Specification)).

Matematika Diskrit adalah salah satu mata kuliah yang mendasari konsep-konsep metode formal. Sedangkan Kalkulus, Aljabar Linier, Probabilitas dan Statistik serta Metode Numerik memberikan latar belakang keteknikan untuk formulasi permasalahan, pemodelan masalah dan penyusunan algoritma penyelesaian masalah, untuk selanjutnya disalin dalam bahasa coding.

Berikut ini adalah slide kuliah tentang Formal Method:

Security and Privacy Requirements

Security dan Privacy Requirements sering diklasifikan sebagai non-fungsional requirements dalam pengembangan perangkat lunak. Namun, seiring dengan perkembangan perangkat lunak yang menuju pada tren Komputasi Awan, maka requirements yang berhubungan dengan security dan privacy menjadi kian diperhitungkan oleh user dan stakeholders pemilik perangkat lunak.

Berikut ini adalah non fungsional requirements terkait high-level security dan privacy dalam aplikasi e-voting (Pemilihan Online):

1) Eligibility (atau kelayakan); yang dimaksud dengan kelayakan dalam aplikasi e-voting adalah pemilih yang layak dapat diidentifikasi dengan akurat dan terdaftar dengan baik. Eligibility dalam aplikasi e-voting diartikan juga sebagai hanya pemilih yang terdaftar yang dapat mengeksekusi proses voting pada e;ection server.
2) Uniqeness (atau keunikan); yang dimaksud dengan keunikan disini adalah aktor pemilih hanya diberikan satu kali kesempatan mengeksekusi proses pemilihan, setelah "hak satu kali" dikonfirmasi, maka aktor pemilih tidak bisa lagi melakukan proses pemilihan. Tentu saja, akan terdapat skenario jika aktor pemilih, memilih beberapa kali, maka sistem hanya akan mendaftarkan pilihan voter yang terakhir saja.
3) Accuracy (atau keakuratan); yang dimaksud dengan persyaratan keakuratan adalah semua hasil pemilihan yang telah dilakukan harus dapat dihitung dengan tepat. Tidak ada yang dapat mengubah, menghapus, membatalkan, menggandakan semua hasil pemilihan.
4) Soundness (atau kukuh); yakni invalid votes (atau pemilih yang gagal melakukan prosedur pemilihan) tidak akan dihitung. Misalnya hasil pemilihan yang menunjukkan format yang keliru atau content yang keliru. Kasus yang dapat dicontohkan adalah hanya ada 1, 2 dan 3 kemungkinan pilih, tapi yang keluar angka selain dari 1, 2 dan 3.
5) Privacy (atau kerahasiaan); persyaratan non fungsional ini terkait dengan kerahasiaan identitas aktor pemilih dan ketidakmungkinan untuk menghubungkan identitas aktor pemilih dengan hasil pemilihan tertentu.
6) Fairness (atau keseragaman); yang dimaksud dengan fairness adalah semua aktor pemilih harus dapat melihat hasil akhir pemilihan pada waktu yang sama. Tidak boleh ada yang mendahului ataupun ketinggalan.
7) Transparency (atau keterbukaan); yakni data yang terkait dengan sistem informasi pemilihan dan content hasil pemilihan harus available untuk semua stakeholder. Termasuk source code aplikasi, yang harus dapat direview oleh siapa saja.
8) Robustness (atau kekuatan); yang dimaksud dengan robustness adalah tidak ada aktor stakeholders yang dapat mempengaruhi proses voting yang dilakukan aplikasi, dimulai pada proses masukan hingga keluaran dari sistem aplikasi.
9) Uncoercibility; yang dimaksud dengan requirement ini adalah seorang coercer tidak dimungkinkan untuk dapat mempengaruhi (memaksa) aktor voter untuk mengubah hasil pemilihan yang telah dihitung oleh sistem aplikasi
10) Receipt-freeness; untuk mencegah jual-beli suara, maka semua aktor voter tidak diizinkan untuk mendapatkan nota tercetak yang menunjukkan content hasil pemilihan aktor pemilih.
11) Verifiability; yakni setiap aktor pemilih dapat memeriksa bahwa infrastuktur sistem informasi telah menerima dengan tepat hasil pilihan dan telah menghitung pilihan aktor pemilih (ini yang disebut personal verifiability); dan pada saat yang bersamaan juga dapat mengkonfirmasi semua user tentang hasil perhitungan (ini disebut universal verifiability).

References:
1. M. Volkamer, Evaluation of Electronic Voting, Springer - 2009.
2. R. Celeste, D. Thornburgh and H. Lin, Asking the Right Questions about Electronic Voting, National Academies Press - 2006