Rabu, 06 Juni 2012

Software Implementation dan Testing


Hasil Rancangan detil yang ditranslasikan ke dalam suatu bahasa pemrograman, proses translasi dilanjutkan bila suatu kompiler menerima source code sebagai masukan dan mengkasilkan object code yang akan diterjemahkan menjadi machine code.

Software testing  adalah aktivitas-aktivitas yang bertujuan untuk mengevaluasi atribut-atribut atau kemampuan sebuah program atau sistem dan penentuan apakah sesuai dengan hasil yang diharapkan
Testing adalah proses pemeriksaan program dengan tujuan tertentu dalam menemukan kesalahan sebelum diserahkan ke pengguna.Software testing adalah bertujuan menjalankan dan mengevaluasi sebuah perangkat lunak secara manual maupun otomatis untuk menguji apakah perangkat lunak sudah memenuhi  persyaratan atau belum  untuk menentukan perbedaan  antara hasil yang diharapkan dengan hasil sebenarnya

•       Verification:
–      “Apakah kita membangun produk dengan benar?”
–      Software seharusnya sesuai dengan spesifikasinya. Gunakan proses software yang bagus.
•       Validation:
–      “Apakah kita membangun produk yang benar?”
–      Software seharusnya melakukan apa yang pengguna benar-benar butuhkan

Program testing

             Dapat menunjukan keberadaan kesalahan tapi BUKAN ketidakadaan kesalahan yang lain
Test yang sukses adalah sebuah test yang menemukan satu atau lebih kesalahan, Seharusnya digunakan bersama dengan verification statik untuk memberikan V&V sepenuhnya

Tujuan dari dilakukan testing pada software
  • Menilai apakah perangkat lunak yang dikembangkan telah memenuhi kebutuhan pemakai.
  • Menilai apakah tahap pengembangan perangkat lunak telah sesuai  dengan metodologi yang digunakan.
  • Membuat dokumentasi hasil pengujian yang menginformasikan kesesuaian perangkat lunak yang diuji dengan spesifikasi  yang telah ditentukan
  • Untuk meningkatkan kualitas
  • Untuk Verification & Validation (V&V) 
  • Untuk estimasi reliability

Strategi yang digunakan


1. Pengujian unit  program

         Pengujian difokuskan pada unit terkecil dari suatu modul program. Dilaksanakan dengan menggunakan driver dan stub. Driver adalah suatu program utama  yang berfungsi mengirim  atau menerima data  kasus uji dan mencetak hasil dari modul yang diuji. Stub adalah modul yang menggantikan  modul sub-ordinat dari modul yang diuji


          2.Pengujian integrasi

        Pengujian terhadap unit-unit program  yang saling berhubungan (terintegrasi) dengan fokus  pada masalah interfacing. Dapat dilaksanakan secara top-down integration atau bottom-up integration

         3.Pengujian validasi

        Pengujian ini dimulai jika pada tahap integrasi tidak ditemukan kesalahan. Suatu validasi dikatakan sukses  jika perangkat lunak berfungsi pada suatu cara yang diharapkan oleh pemakai


        4.Pengujian sistem

Pengujian yang dilakukan sepenuhnya pada sistem berbasis komputer.
–        Recovery testing
Pengujian dilakukan dimana sistem diusahakan untuk gagal, kemudian diuji normalisasinya.
–        Security testing
Dilakukan untuk menguji mekanisme proteksi
–        Stess testing     
Pengujian yang dirancang untuk menghadapkan suatu perangkat lunak kepada situasi Yang tidak normal.

Teknik Pengujian

Ada banyak teknik pengujian yang dapat digunakan untuk menguji perangkat lunak,seperti :

  1. Pengujian Black Box
  2. Pengujian White Box
Pengujian dengan black Box
                   Digunakan untuk menguji fungsi-fungsi khusus dari perangkat lunak yang dirancang
Kebenaran perangkat lunak yang diuji hanya dilihat berdasarkan keluaran yang dihasilkan dari data atau kondisi masukan yang diberikan untuk fungsi yang ada tanpa melihat bagaimana proses untuk mendapatkan keluaran tersebut.
                             Dari keluaran yang dihasilkan, kemampuan program dalam memenuhi kebutuhan pemakai dapat diukur sekaligus dapat diiketahui kesalahan-kesalahannya
Beberapa jenis kesalahan yang dapat diidentifikasi :
  • Fungsi tidak benar atau hilang
  • Kesalahan antar muka
  • Kesalahan pada struktur data (pengaksesan basis data)
  • Kesalahan inisialisasi dan akhir program
  • Kesalahan performasi.
Pengujian white box
                 digunakan untuk mengetahui cara kerja suatu perangkat lunak secara internal.
Pengujian dilakukan untuk menjamin operasi-operasi internal sesuai dengan spesifikasi yang telah ditetapkan dengan menggunakan struktur kendali dari prosedur yang dirancang
     
       Pelaksanaan pengujian white box :
  •  Menjamim seluruh independent path dieksekusi paling sedikit satu kali. Independent path adalah jalur dalam program yang menunjukkan paling sedikit satu kumpulan proses ataupun kondisi baru
  • Menjalani logical decision pada sisi dan false
  •  Mengeksekusi pengulangan (looping) dalam batas-batas yang ditentukan
  • Menguji struktur data internal 





Software  Quality faktor


Faktor-faktor yang dapat mempengaruhi kualitas software dibagi menjadi 2kategori:
            1.Faktor-faktor yang dapat diukur secara langsung(misalkan:error)
            2.Faktor  yang dapat diukur secara tidak langsung (misalkan: usability dan maintainability)

Menurut McCall terdapat 3 aspek penting dari suatu produk software ,yaitu: karakteristik operasional,kemampuan perubahan ketika software sudah berjalan,dan kemampuan beradaptasi terhadap lingkungan baru.

Ada beberapa macam faktor yang mempengaruhi kualitas software menurut McCall yaitu ,
  • Correctness (kebenaran)
  •  Reliability (Keandalan)
  •  Efficiency (efisiensi)
  •  Integrity (Integritas)
  •  Usability
  •  Maintainability
  •  Flexibility
  •  Testability
  • Portability
  •  Reusability
  •  Interoperability





Minggu, 03 Juni 2012


Software Quality Assurance 


Tujuan  (SQA) adalah untuk menghasilkan suatu produk perangkat lunak (software) yang berkualitas tinggi. SQA merupakan salah satu aktivitas yang harus dijalani dalam suatu proses pengembangan software.

SQA meliputi beberapa konsep sebagai berikut:

1. Pendekatan kualitas manajemen,
2. Teknologi rekayasa perangkat lunak yang efektif (metode dan tools yang digunakan),
3. Tinjauan teknis secara formal yang diaplikasikan melalui proses pengembangan software,
4. Strategi uji coba software yang multitier,
5. Kontrol terhadap dokumentasi software dan perubahannya,
6. Prosedur untuk memastikan pemenuhan standar pengembangan software, jika software tersebut diaplikasikan, dan
7. Mekanisme pengukuran dan laporan.

Faktor Kualitas
  • Correctness : besarnya program dapat memuaskan spesifikasi & objektivitas dari misi pelanggan
  • Reliability : besarnya program dapat diharapkan memenuhi fungsi2 yg dikehendaki
  • Efficiency : jumlah sumber2 & kode yg dibutuhkan program utk menjalankan fungsi2
  • Integrity : besarnya pengontrolan pengaksesan oleh seseorang yg tidak mempunyai otorisasi terhadap perangkat lunak atau data
  • Usability : effort (usaha) yg dibutuhkan utk mempelajari, mengoperasikan, menyiapkan input & mengintepretasi kan output program
  • Maintainability : usaha yg dibutuhkan utk menempatkan & menetapkan suatu kesalahan pada program
  • Flexibility : usaha yg dibutuhkan utk memodifikasi program yg dioperasikan
  • Testability : usaha yg dibutuhkan utk menguji program utk menjamin tlh dijalankannya program yg diharapkan
  • Portability : usaha yg dibutuhkan utk mentransfer program dari lingkungan sistem perangkat lunak dan perangkat keras ke lingkungan lain
  • Reusability : besarnya program dpt digunakan oleh aplikasi lain
  • Interoperability : usaha yg dibutuhkan utk memasang-kan satu sistem dgn yg lain

Pengukuran Kualitas Perangkat Lunak
  • Auditability : mudah utk dicek mengenai konfirmansi standar
  • Accuracy : presisi komputasi & pengontrolan
  • Communication commonality : derajat pengunaan interface, protokol & bandwidth yg standar
  • Completeness : derajat pencapaian implementasi full dari fungsi2 yg dibutuhkan
  • Conciseness : kepadatan program dalam lines of code
  • Consistency : penggunaan teknik dokumentasi & perancangan yg seragam
  • Data commonality : penggunaan struktur & tipe data standar
  • Error tolerance : akibat yg timbul pada saat program menemui kesalahan
  • Execution efficiency : kinerja waktu eksekusi pada program
  • Expandability : derajat dimana perancangan terprosedur, data & arsitektur dapat diperluas
  • Generality : kelonggaran aplikasi dari komponen program
  • Hardware independence : derajat dimana per. Lunak dipisahkan dari per. keras atau yg mengoperasikannya
  • Instrumentation : derajat dimana program memonitor operasinya sendiri & mengindentifikasikan kesalahan2 yg timbul
  • Modularity : kemandirian fungsional dari komponen program
  • Operability : kemudahan pengoperasian program
  • Security : ketersediaan mekanisme yg mengontrol atau memproteksi program & data
  • Self-documentation : derajat dimana source code menyediakan dokumentasi yg berarti
  • Simplicity : derajat dimana program dapat dimengerti dengan mudah
  • Software system independence : derajat dimana program berdiri sendiri dari fitur bhs pemrograman, karakteristik sistem pengoperasian & batasan lainnya yg tdk standar
  • Traceability : kemampuan utk menelusuri representasi perancangan atau komponen program aktual, kembali ke kebutuhan
  • Training : derajat dimana per. lunak dapat membantu pengguna yg baru dalam mengaplikasikan sistem

Rabu, 22 Februari 2012

Task 2.2: Analisa TA dengan Software Quality Factor

[gigya src="http://prezi.com/bin/preziloader.swf" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="550" height="400" bgcolor="#ffffff" flashvars="prezi_id=ockcqc4cnmbl&lock_to_path=0&color=ffffff&autoplay=no&autohide_ctrls=0"]

Task 2.1: The 9 Causes of Software Errors: Coding Errors


Ada dua cara untuk menyediakan perangkat lunak bebas dari kesalahan. Yang pertama adalah untuk mencegah masuknya kesalahan di tempat pertama. Dan yang kedua adalah untuk mengidentifikasi bug mengintai dalam kode Anda, mencari mereka, dan menghancurkan mereka. Jelas, metode pertama lebih unggul. Sebagian besar dari kualitas perangkat lunak berasal dari melakukan pekerjaan yang baik untuk mendefinisikan persyaratan untuk sistem Anda sedang membangun dan merancang solusi perangkat lunak yang akan memenuhi kebutuhan tersebut. Pengujian berkonsentrasi pada mendeteksi kesalahan-kesalahan yang menyelinap masuk meskipun upaya terbaik Anda untuk menjaga mereka.

Tapi apa sebenarnya yang menyebabkan sehingga dapat terjadi error pada software?

Menurut Buku Galin, ada sembilan penyembab terjadinya error pada software. Salah satunya akan kami bahas disini, yaitu kesalahan yang disebabkan oleh “Coding Error” atau kesalahan dalam pengkodean/ngoding.

Coding error dapat terjadi bila :

1. Terjadi salah paham dengan dokumen desain.
Dalam mengerjakan sofware, para programmer pastinya telah melakukan tahap-tahapan seperti menggali kebutuhan klien dan membuat desain softwarenya sebelum langsung melakukan koding. Dalam dokumen desain sudah ada seperti diagram-diagram yang akan menjadi tuntunan kita dalam mengkonversikan kebutuhan tadi kedalam koding. Biasanya salah memahami apa yang dimaksud dalam dokumen desain akan menimbulkan kesalahan dalam software, yang terjadi awalnya error dalam melakukan logika kode, lalu menjadi sebuah kesalahan software yang mengakibatkan salahnya fungsi yang diinginkan, dan akhirnya jika fungsinya sudah salah maka software tersebut dikatakan gagal.

2. Kesalahan bahasa dalam bahasa pemogramman
 Setiap bahasa pemogramman memiliki strukturnya sendiri dan juga cara penulisannya pun berbeda untuk tiap bahasa pemogramman. biasanya terjadi error, jika kita belum sepenuhnya mengerti tata cara penulisan bahasa pemogramman tertentu. seperti misalnya dalam java, setiap kita mengakhiri suatu koding, akan diakhiri dengan tanda semicolon (;), jika kita lupa memakai tanda semicolon maka akan terjadi error.

3. Kesalahan dalam memilih data
Database juga dapat menjadi salah satu penyebab error dalam mengkode, misalnya kita ingin membuat database pelanggan, dalam tabel pelanggan ada atribut nama dan tanggal lahir. jika dalam atribut nama kita menggunakan data tipe yang kurang tepat seperti misalnya integer, tentu saja kita tidak dapat menuliskan huruf didalam database tersebut.

Cara mengatasi error:
·     Pastikan bahwa kode berikut standar yang ditetapkan gaya, struktur, dan dokumentasi. Meskipun bahasa seperti C membiarkan Anda menjadi super-kompak dan karenanya super jelas dalam coding Anda, jangan lupa bahwa manusia (bahkan mungkin Anda) mungkin harus bekerja dengan kode itu lagi suatu hari. Kejelasan kode biasanya lebih disukai daripada keringkasan.

·   Pastikan bahwa kode sedang benar diuji dan terintegrasi, dan bahwa revisi yang dibuat di modul kode diidentifikasi dengan benar.
·   Lihat bahwa menulis kode mengikuti jadwal yang ditentukan. Mungkin tidak akan; pelanggan berhak mengetahui hal ini dan untuk mengetahui dampak pada waktu pengiriman.
·         Pastikan bahwa tinjauan kode ditahan sesuai jadwal.

Contoh Studi Kasus:
Pada tahun 2010, perusahaan automobile toyota menarik produknya Toyota Prius Hybrid dari pasar sebanyak 160.000 unit, ini terjadi karena lampu peringatan yang ada pada mobil tersebut menyala sendiri. dan juga mesin bensinnya terulur secara tidak terduga. awalnya mereka mengira bahwa itu adalah kesalahan hardware atau mesinnya. Akan tetapi ternya kesalahan tersebut disebabkan oleh Bug pada softwarenya, yang terjadi karena kesalahan programming pada kodenya.
Dan karena error tersebut sudah terjadi, maka dengan terpaksa langkah awal yang dilakukan adalah menarik produk-produknya yang telah beredar di pasar. Lalu memperbaiki bug yang ada.

Referensi :
1. The 9 Causes of Software Error, Galin

Oleh :
Putu Bagus Sugosha (5209100149)
Made Yudi Pradita (5209100018)

Minggu, 19 Februari 2012