Wednesday, April 13, 2011

Karakteristik Kualitas Code (Software Engineering, dll.)


Software Quality Assurance 

Quality assurance (QA) merupakan hal yang biasa dan ada di segala bidang industri; mulai dari industri besar seperti industri pesawat terbang, sampai industri kecil seperti industri pakaian. Tak kalah dengannya,  software engineering, bahkan quality assurance menjadi hal pokok dan penting dalam software engineering. Buku "Code Complete: A Handbook of Software Construction" membahas mendetail mengenai bagaimana membuat software yang berkualitas, bukan bagaimana membuat software dengan bahasa ini, teknik itu, dan sebagainya. Quality bisa dipandang dalam dua sisi: eksternal dan internal. Berikut beberapa cuplikan yang diambil dari buku tersebut, mengenai karakteristik kualitas software baik dari sisi eksternal maupun internal.

Karakteristik Kualitas Eksternal

Correctness. The degree to which a system is free from faults in its specification, design, and implementation.

Usability. The ease with which users can learn and use a system.

Efficiency. Minimal use of system resources, including memory and execution time.

Reliability. The ability of a system to perform its required functions under stated conditions whenever required—having a long mean time between failures.

Integrity. The degree to which a system prevents unauthorized or improper access to its programs and its data. The idea of integrity includes restricting unauthorized user accesses as well as ensuring that data is accessed properly—that is, that tables with parallel data are modified in parallel, that date fields contain only valid dates, and so on.

Adaptability. The extent to which a system can be used, without modification, in applications or environments other than those for which it was specifically designed.

Accuracy. The degree to which a system, as built, is free from error, especially with respect to quantitative outputs. Accuracy differs from correctness; it is a determination of how well a system does the job it’s built for rather than whether it was built correctly.

Robustness. The degree to which a system continues to function in the presence of invalid inputs or stressful environmental conditions. 

Karakteristik Kualitas Internal

Maintainability. The ease with which you can modify a software system to change or add capabilities, improve performance, or correct defects.

Flexibility. The extent to which you can modify a system for uses or environments other than those for which it was specifically designed.

Portability. The ease with which you can modify a system to operate in an environment different from that for which it was specifically designed.

Reusability. The extent to which and the ease with which you can use parts of a system in other systems.

Readability. The ease with which you can read and understand the source code of a system, especially at the detailed-statement level.

Testability. The degree to which you can unit-test and system-test a system; the degree to which you can verify that the system meets its requirements.

Understandability. The ease with which you can comprehend a system at both the system-organizational and detailed-statement levels. Understandability has to do with the coherence of the system at a more general level than readability does.

Dari beberapa karakteristik tersebut, terdapat beberapa point yang mirip-mirip tetapi berbeda makna dan tujuannya. Pada beberapa kasus, point yang satu lebih tepat dari point selainnya, begitu juga sebaliknya. Bahkan mungkin ada beberapa karakteristik internal yang sepertinya overlap dengan karakteristik eksternal, namun berbeda aplikasinya.

Secara umum, pengguna (user) hanya peduli dengan karakteristik eksternal saja, apakah code tersebut mudah digunakan, apakah mudah dimodifkasi, dan sebagainya. Mereka tidak peduli apakah struktur code sudah baik, atau mudah dibaca. Sebaliknya, bagi programmer, yang penting adalah bagaimana proses development mereka berjalan mulus, yaitu dengan membuat code yang berkualitas dari sisi struktur yang baik, kemudahan dibaca, kemudahan didebug, dan sebagainya. 

Quality assurance memandang keduanya penting, namun pada aplikasinya, tentu harus dilihat dulu mana yang lebih prioritas, karena project yang satu dengan yang lain berbeda kebutuhannya. Namum daftar karakteristik diatas bisa jadi rujukan dan entry point, bagaimana membuat rencana dan arahan quality yang akan dibangung pada project tersebut. Oh iya, satu lagi, karakteristik kualitas ini juga bisa diapllikasikan dalam development model dan hardware, karena pada prinspinya, keduanya juga menggunakan bahasa pemrograman (code). (Ya2n)

Thursday, April 7, 2011

Plugin Eclipse IDE untuk Desain dan Verifikasi (DVT)



Salah satu IDE (Integrated Development Environment) favorit saya adalah Eclipse, karena support untuk banyak bahasa, banyak plugin yang bisa diinstall dan developmentnya masih berjalan terus. Fitur yang dimiliki Eclipse diantaranya: syntax highlighting, code completing, automatic indention, dan tentunya debugging environment. Bahasa pemrograman yang disupport mulai dari  mulai dari Java, C/C++, SystemC, Python, sampai bahasa spesifik untuk Desain dan Verifikasi Chip seperti Verilog, VHDL, SystemVerilog, bahkan OVMUVM, dan Cadence e. Untuk memulai memakai Eclipse, install dulu Eclipse-basic package-nya, bisa pakai Eclipse biasa (Java) atau Eclipse CDT (C/C++). Saya memakai Eclipse CDT karena untuk development, saya membutuhkan C/C++, bukan Java.

Tak hanya bahasa pemrograman yang disupport, kelengkapan tools development lainnya seperti SCM (Source Code Management), CVS, SVN, Git, dan segudang tools lainnya (mereka mengklaim ada lebih dari 1000-an tools) yang bisa ditambahkan di Eclipse. Semua ini bisa didapatkan dengan menginstall plugin Eclipse dari website mereka, mereka menyebutnya Eclipse Marketplace. Secara umum, untuk instalasi Plugin Eclipse, tinggal buka Eclipse, klik Help > Install New Software, lalu bubuhkan alamat repository plugin yang ingin diinstall.

Untuk menginstall plugin DVT (Design and Verification) di Eclipse, berikut langkah-langkahnya:
1. Buka Eclipse
2. Klik Help > Install New Software
3. Pada form Work With, tulis: http://dvteclipse.com/update
4. Klik Add
5. Pada form Name, tulis: DVT
6. Klik OK, lalu akan muncul pilihan plugin yaitu: Design and Verification Tools dan Help Plugin.
7. Check-box semua pilihan lalu klik Next, lalu akan mucul summary dari plugin yang akan diinstal (seperti pada gambar diatas).
8. Klik Next, untuk membaca License Agreement, dan pilihkan I accept the term and license agreement
9. Klik Finish dan tunggu proses intalasi selesai. 
10. Restart Eclipse untuk mulai memakai tools DVT. 

Referensi selengkapnya bisa dilihat di Eclipse Marketplace atau DVT Eclipse.
Selamat mencoba! =) (ya2n)