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)

No comments:

Post a Comment