Jumat, 31 Mei 2013

Development and Quality Plans

Sebuah Proyek yang baik akan diawali dengan perencanaan yang mana tanpa adanya perencanaan proyek tidak akan berjalan dengan sesuai harapan. Dan juga ketika implementasi proyek, biasanya terjadi hal-hal yang tidak diharapakan. Beberapa tujuan lain dari Development and Quality Plan, berikut di bawah ini:
  1. Menjadwalkan aktifitas pengembangan seperti waktu , budget dan pekerja ada berapa. supaya nantinya tidak mengakibatkan over-budget dan over-time.
  2. Mengatasi resiko yang kiranya akan terjadi dalam proyek
  3. Merekrut anggota tim dan mengalokasikan sumber daya pengembangan.
  4. Mengontrol proyek
Dalam Perencanaan pengembangan proyek terdapat elemen-elemen yang mempengaruhinya. Berikut di bawah ini penjabaran singakt mengenai Develompment plan . 
  1. Project products, berisikan hal-hal dalam proyek seperti rancangan proyek akan seperti apa penggunanya siapa, serta waktu penyelesaiannya proyek kapan.
  2. Project interfaces, meliputi  desain interface software, interface dengan software dan hardware.
  3. Project methodology and development tools 
  4. SW development standards and procedures
  5. The mapping of the development process seperti sumber daya yang diperlukan dalam proyek.
  6. Project milestones ( documents , code , report ) merupakan laporan atau urutan rencana waktu pengerjaan proyek
  7. Project staff organization ( organisasi  profesional requirement, number of team member, names of team leaders)
  8. Development facilities ( SW, HW tools, space, period req. for each use )
  9. Development risks
  10. Control methods
  11. Project cost estimation 
Setelah penjabaran di atas mengenai develompment plan, setelah melakukan pengembangan proyek tentunya terdapat faktor-faktor atau element yang mendukung qualitas dari proyek tersebut baik atau tidak berikut penjabarannya:
  1. Quality goals diperlukan sebagai bahan untuk pengendalian dalam proyek. yang mana perhitungannya dengan penilaian terhadap kinerja selama proses pengembangan dan pengujian sistem.
  2. Planned Review Activities berisikan daftar dari seluruh yang akan dilakukan riview yang direncakan sebelumnya. Seperti siapa yang bertanggung jawab, jenis kegiatan, jadwal kegiatan review, prosedur yang diterapkan secara specifik.
  3. Planned software tests berisikan daftar rencan testing software. Seperti software  bagian apa yang dilkukan testing, tipe testing yang digunakan serta kapan terjadinya testing, siapa yang bertanggung jawab pada testing.
  4. Planned acceptance tests for externally developed software merupakan daftar ddilakukan nya testing penerimaan terhadap kualitas barang. Seperti perangkat lunaknya seperti apa, dikembangkan dll
  5. Configuration Management merupakan rencana mutu yang menentukan kualitas software dan juga prosedur perubahan kontrol yang diterapkan dalam proyek.

Pihak Ketiga yang Suka Membantu


Dalam mengerjakan sebuah proyek IT ataupun itu membangun sebuah software banyak juga yang membutuhkan External Participants. Jadi tidak hanya tim developer itu sendiri, kadang juga perlu ada bantuan dari pihak luar. Lalu siapa saja pihak luar atau external participants tersebut?
  • Yang pertama adalah subcontractors, untuk membantu dalam pengerjaan sering tim developer internal butuh pihak lain yang memiliki kemampuan lebih spesifik salah satunya untuk memenuhi hal tersebut adalah dengan outsourcingkan terhadap subcontractors. Keuntungannya adalah sudah pasti stafnya ada, punya kemampuan yang spesifik, harganya bisa rendah.
  • Selain subcontractors pihak luar yang lainnya adalah supplier, jadi kita butuh supplier untuk lebih mengerti apa yang mereka butuhkan. Misalnya mengembangkan sebuah software yang sebelumnya sudah ada daripada membuatnya lagi dari nol. Ini akan mengurangi waktu dan biaya.
  • Yang terakhir adalah customer itu sendiri, mengapa kita perlu mereka menjadi bagian dalam pengembangan? Tentu saja untuk mengembangkan sesuai apa yang mereka inginkan agar software tersebut bisa mereka pakai.

Ini adalah bagan tipe-tipe external participants


Lalu ada keuntungan dan kerugiannya nggak sih?

Lalu ada beberapa cara untuk menjaga kualitas dari pihak luar tersebut
  1. Membuat dokumen review untuk setiap kebutuhan/requirement
  2. Berpartisipasi dalam mendesain review dan testing software
  3. Ikut menyiapkan laporan progres untuk setiap aktivitas
  4. Mereview dokumen dan acceptance tests
  5. Membentuk koordinasi proyek dan pengontrolan secara bersama
  6. Mengevaluasi pilihan yang dilakukan oleh pihak luar

Jadi memang perlu adanya kolaborasi untuk membuat sebuah software yang berkualitas. Bukan lagi superman tapi super team!

What is Contract?

Kontrak dalam kaitan kali ini sangatlah penting digunakan ketika dalam menjalin kerja sama proyek. Yang mana kotrak dapat  digunakan sebagai acuan dalam pertimbangan pengambilan keputusan oleh tim perusahaan klien . Pengambilan biasanya dilakukan yang dilakukan oleh tim perusahaan klien biasanya dibuat oleh tim pengembang untuk digunakan dalam tender. Atau dapat juga kontrak digunakan sebagai acuan oleh klien sebagai bukti permintaan (requirement) proyek. Sehingga apabila terjadi ketidak sesuaian hasil dengan kontrak dapat dipertanggung jawabkan.

Dalam kontrak terdapat 2 fase yaitu:
  1.  Review dari proposal draf yang dilakukan sebelum pengumpulan proposal ke pelanggan. Yang mana di dalamnya meliputi dokumen permintaan pelanggan, dokumen tambahan permintaan, dan biaya
  2. Review rancangan sebelum melakukan penandatanganan kontrak proyek. Yang mana di dalamnya berisi ulasan dari draft kontrak yang mana berasal dari usulan serta perubahan yang disepakati ketika negosiasi kontrak

PEMELIHARAAN SOFTWARE (MAINTENANCE)

Dalam hidup kita sudah sering dan dekat dengan kata memelihara. Memelihara binatang, tumbuhan, hubungan, tuyul dan sebagainya. Namun bagaimana dengan sofwtare? Mengapa software perlu dipelihara?
Menurut Wikipedia
"Software maintenance in software engineering is the modification of a software product after delivery to correct faults, to improve performance or other attributes"
Dari tulisan itu kita tahu, kalau software maintenance itu untuk memodifikasi produk untuk diperiksa kesalahannya dan diperbaiki atau diimprove lagi performanya. Ada lagi disebutkan disana,
"Key findings of his research include that maintenance is really evolutionary development and that maintenance decisions are aided by understanding what happens to systems (and software) over time."
Jadi kita harus mengerti apa yang ada di sistem. Lalu bagaimana kita bisa mengerti apa yang ada di sistem?
Caranya adalah dengan membuat dokumentasi. Yap! dokumentasi agar kita tahu apa saja "dalemannya". Dari situ akhirnya kita bisa tahu juga keluhan software tersebut ada dimana sehingga memudahkan untuk diperiksa.



Ada 4 part untuk memelihara kualitas software, yaitu:
  1. Corrective maintenance, memperbaiki atau memodifikasi setelah masalah ditemukan, sperti memperbaiki bug
  2. Addaptive maintenance, jadi software dilakukan modifikasi agar bisa diadaptasi dilingkungan yang lain
  3. Perfective maintenance, dengan ini kita akan memutakhirkan atau lebih mencanggihkan lagi agar sesuai dengan kebutuhan pengguna
  4. Perventive maintenance, kalau ini yaitu mencegah sebelum efektif terjadi kesalahan. Yang kita lakukan apa? Seperti yang disebut diatas, yaitu dengan dokumentasi yang baik sehingga lebih maintainable

Pemeliharaan software sering dilakukan oleh banyak perusahaan, lhah? Tujuannya apa sih? Ini dia :
•Memastikan kesesuaian dengan kebutuhan fungsionalitas teknis software
•Memastikan kesesuaian kebutuhan pihak manajerial mengenai jadwal dan budget
•Meningkatkan efisiensi software berikut juga aktivitas pemeliharaannya

Jadi kita bisa mengkoreksi kesalahan software kita, lalu mengimprovenya atau mengimplementasi perangkat tambahan, mengadaptasikan dengan software, hardware, dan sistem yang lain. Begitulah perusahaan yang ingin IT nya dapat membantu proses bisnisnya.

Rabu, 29 Mei 2013

Black Box Testing

Pengujian black-box yaitu melakukan pemeriksaan atau testing mengenai fungsionalitas dari perangkat lunak tanpa mengetahui keadaan dari kondisi internal sistem (seperti code) atau komponen dan hanya berfokus pada output yang dihasilkan. Pengujian blackbox bertujuan untuk menguji fungsionalitas perangkat lunak sesuai dengan persyaratan dan kebutuhan dalam pengembangan perangkat lunak. Dan ujicoba blackbox bukanlah alternatif dari ujicoba whitebox, yang mana uji coba blackbox melakukan pendekatan dengan cara melengkapi untuk menemukan kesalahan lainnya ketika tidak mmenggunakan metode whitebox. Serta hasil dari testing dengan metode blackbox dapat menghasilkan fungsional dari perangkat lunak yang diuji.

Keuntungan menggunakan uji blackbox adalah:
1. Tidak diperlukan pengetahuan dalam pemrogaman untuk melakukan uji kualitas dengan metode tersebut.
2. Hal ini memungkinkan tester untuk melakukan hampir semua kelas tes atau use case.
3. Membutuhkan sumber daya jauh lebih sedikit.

Ada keuntungan, ada juga kerugiannya, yaitu kita tidak memiliki kemungkinan untuk menguji kualitas codingnya.

Dengan ujicoba blackbox kita dapat menemukan kesalahan dalam beberapa kategori, diantaranya:
1. Fungsi-fungsi yang salah atau hilang
2. Kesalahan interface
3. Kesalahan dalam struktur data atau akses database eksternal
4. Kesalahan performa
5. kesalahan inisialisasi dan terminasi

Melakukan Pengujian Perangkat Lunak/Software

Dalam membangun sebuah perangkat lunak ada saat dimana kita harus melakukan pengujian. Tujuan software testing adalah untuk memberikan stakeholder mengenai informasi tentang kualitas dari produk atau jasa yang diuji. Serta dengan adanya pengujian terhadap perangkat lunak, stakeholder dapat memahami serta mengetahui risiko yang terdapat dalam perangkat lunak yang dilakukan pengujian.

Pengujian disini termasuk dalam UAT (User Acceptance Test), yaitu untuk menguji apakah software yang dibangun melalui proses SDLC telah dapat dikatakan layak digunakan. Lalu kapan sebenarnya kita harus melakukan pengujian/testing? Pengujian sebuah perangkat lunak idealnya dilakukan tersebar sejak awal.

Software testing dapat juga sebagai proses memvalidasi dan memverifikasi bahwa sebuah program komputer / aplikasi / produk:

  • Sesuai dengan requirement yang ditentukan untuk design dan pengembangannya.
  • Bekerja sesuai dengan yang diharapkan.
  • Memenuhi kebutuhan stakeholder.

Pengujian perangkat lunak bergantung pada metode pengujian yang digunakan serta dapat diterapkan pada setiap saat dalam proses pembangunan. Secara tradisional sebagian besar upaya uji terjadi setelah persyaratan telah ditetapkan dan proses pengkodean telah selesai. Dengan begitu, metodologi tes diatur oleh metodologi pengembangan perangkat lunak yang dipilih.

Definisi testing menurut IEEE
1. Proses mengoperasikan sistem atau komponen pada kondisi tertentu, mengamati hasil, dan membuat evaluasi terhadap beberapa aspek dari sistem atau komponen.
2. Proses analisis item perangkat lunak untuk mendeteksi perbedaan antara yang ada dan kondisi yang diperlukan dan mengevaluasi fiturfitur dari item perangkat lunak

Sedangkan menurut Galin :
Pengujian atau testing perangkat lunak adalah proses yang dilakukan oleh tim khusus pengujian yang mana beberapa unit perangkat lunak tersebut terintegrasi atau paket perangkat lunak yang diperiksa secara keseluruhan dengan menjalankan program pada komputer.

nb : Kalian bisa membaca blog post ini untuk mengetahui kenapa kita harus melakukan pengujian sejak awal

Apa Pentingnya Menjaga Kualitas Software?

Dalam sebuah pekerjaan, baik itu pekerjaan sekolah, kuliah maupun dalam dunia kerja setiap apa yang dikerjakan selalu ada tuntutan dalam pengerjaannya agar sesuai dengan yang diharapkan. Nah, agar pekerjaan dapat sesuai dengan apa yang diharapkan maka ada pengukuran kualitas yang menjadi pegangan atau referensi. Lalu bagaimana dengan software? Dalam pembuatan software ada yang namanya proses dan alur untuk pembuatannya, yaitu software development life cycle (SDLC). Seperti namanya Development Life Cycle, artinya ada siklus hidup dalam pengembangan software. Ada banyak metode dalam SDLC, kita dapat memilihnya sesuai kebutuhan software yang akan dibuat. Tentu saja, dalam siklus itu ada banyak hal yang tergabung dan berpengaruh untuk hasil akhir sebuah software, mulai dari tim developer, klien dan lain sebagainya yang berkaitan baik langsung dan tidak langsung untuk pembuatan software.
Oke, jadi kalau dalam bayangan kalian untuk membuat sebuah software hanya diperlukan seorang yang dewa yang menguasai banyak bahasa untuk melakukan coding dan buzzz lahirlah sebuah software, maka buang jauh-jauh bayangan tersebut.
Nah, dalam life cycle pembuatan software itulah yang akan menentukan apakah software tersebut bisa dikatakan berkualitas atau tidak.

Dari posting di sini kita bisa tahu penyebab jika sebuah software tidak dimanage dengan baik sehingga menghasilkan kualitas yang buruk. Lalu apa saja dampak jika kita tidak dapat menjaga kualitas dalam life cycle pembuatan sebuah software?
-product fail
-tidak sesuai dengan yang dijanjikan
-terlambat
-kesulitan dan frustasi dalam mengimplementasikannya

Tidak hanya itu saja, ada lagi dampak lanjutannya jika sebuah perusahaan tidak menjaga kualitas softwarenya
-reputasi perusahaan
-kehilangan pelanggan, ini akan sangat buruk terutama jika pelanggan tersebut menyebarkan kepada teman-temannya
-biaya yang membengkak untuk kembali membuat dan memperbaiki software
-selain biaya, waktu juga akhirnya terbuang dan butuh waktu lebih lama

Jadi sekarang kita sama-sama tahu, pentingnya menjaga kualitas software

Selasa, 28 Mei 2013

Quality of Software

Apabila kita memiliki suatu software yang mana guna untuk dipasang di dalam hardware tentunya membutuhkan software yang berkualitas. Guna nantinya apabila memakai software yg berkualitas maka akan berpengaruh pada kinerja dari software itu sendiri kedepannya. Tentunya dalam suatu perusahaan ketika menggunakan software, diharapkan nantinya tidak menggangu proses bisnis. Dalam pembahasan kali ini, kami akan memaparkan bagaimana software yang berkualitas.

Di dalam software terdapat 4 komponen yang mana meliputi program komputer, prosedur, dokumentasi dan data yang sesuai yang mendukung sistem dalam software. Dan 4 komponen tersebut sangat dibutuhkan guna memastikan kualitas dari sebuah software development maupun ketika maintenance-nya. Suatu software yang berkualitas adalah software yang dapat memenuhi permintaan dari pelanggan yang mana nantinya akan menghasilkan kepuasaan dari pelanggan (Juran,1998), dan tentunya software yang berkualitas akan jauh dari software error, software yang cacat atau memiliki kekurangan dan juga software yang gagal.

Asal-usul  dari kegagalan  suatu perangkat lunak yaitu kesalahan yang dibuat oleh programmer yang mana, sebuah kesalahan bisa menjadi kesalahan tata bahasa dalam satu atau lebih dari baris kode, atau kesalahan logika dalam memenuhi kebutuhan pelanggan. Namun, tidak semua error yang terjadi dalam  perangkat lunak berasal dari kesalahan yang terdapat dalam perangkat lunak. Seperti terdapat kesalahan pada baris kode yang tidak cocok dengan fungsi tertentu sehingga menyebabnya perangkat lunak menjadi gagal. Menurtu buku Galin terdapat 9 penyebab kesalahan perangkat lunak yang mana diklasifikasikan sesuai dengan tahapan proses pengembangan perangkat lunak :
  1.  Kesalahan dalam mendefinisikan kebutuhan, yang mana  biasanya klien atau pelanggan lupa dalam mendefinisikan kebutuhannya secara mendetail, sehingga terdapat kebutuhan yang tertinggal untuk didefinisikan dan membuat programmer dalam implementasinya kurang memenuhi permintaan dari pelanggan.
  2.  Kesalah pahaman komunikasi antara pengembang (programer) dengan customer dalam mengubah permintaan menjadi software yang diinginkan. 
  3. Penyipangan yang terjadi karena suatu hal yang disengaja. Seperti ketika pelanggan tidak memiliki dana yang mencukupi untuk menghasilkan perangkat lunak sehingga menyebabkan kebutuhannya dikurangi tanpa adanya analisa terlebih dahulu, kesengajaan yang dilakukan oleh tim pengembang perangkat lunak seperti tidak melakukan persetujuan kepada klien terhadap hasil yang dikerjakan dll. Hal tersebut dapat menyebabkan perangkat lunak tidak stabil.
  4. Design logika salah yang mana biasanya dilakukan oleh arsitek, analis dan programer perangkat lunak. Hal ini terjadi karena kode yang salah dimasukkan untuk memunculkan permintaan pelanggan, kelalaian dalam memperhitungkan kode operasi yang ilegal dll.
  5. Kesalahan dalam bahasa pemrograman
  6. Ketidak sesuaian antara dokumentasi dengan instruksi koding, biasanya terjadi karena kesulitan dalam berkoordinasi dengan tim, memahami posisi masing-masing yang dierjakan di dalam suatu tim. 
  7. Ketika proses testing kurang, yang dimaksud dengan kurang yaitu kurang dalam rencana testing, kurang lengkap dalam mengoreki eror yang menyebabkan gagal dalam dokumentasi dan laporan.
  8. Eror dalam menjalankan prosedur dalam pengembangan maupun pembuatan
  9. Eror dalam dokumentasi
Hal tersebut di atas merupakan mengapa software dapat terjadi error ketika sudah digunakan atau diimplementasikan dalam oleh pelanggan. Sehingga untuk meghasilkan software yang berkualitas tentunya harus melewati hal-hal yang menyebabkan perangkat lunak terjadi error seperti di atas ini.


 

Minggu, 26 Mei 2013

SQA Context-Between Industrial product and Software

Di dalam post ini kami akan menjelaskan mengenai SQA yang mana di dasari dengan perbedaan dari produk ndustrial dan pengembangan software.
 
Dalam pengembangan maupun pembuatan software tidak ada yang jauh dari kecacatan. Namun kecacatan atau kekurangan yang didapat dalam pengembangan software maupun pembuatannya tidak mudah dideteksi jika dibandingkan dengan pembuatan produk industri. Jika dalam produk idustri kecacatan nya dapat dengan mudah dideteksi dan juga terlihat. Berikut di bawah merupakan penjabaran mengapa  software lebih sulit untuk dideteksi kekurangan:

  1. Software merupakan produk yang kompleks karena software memiliki operational mode yang lebih kompleks seperti koding yang berhubungan dengan berbagai macam fungsi didalamnya sehingga lebih rumit untuk dideteksi kekurangannya.
  2. Bentuk dari software itu sendiri tidak terlihat dengan jelas yang mana software merupakan suatu aplikasi yang ditanamkan di dalam hardware. Lain halnya dengan LCD komputer bentuknya terlihat dengan jelas. Apabila terjadi kecacatan maka akan terlihat dengan jelas kekurangannya
Sehingga dengan begitu dengan adanya kekurangan yang sering terjadi ketika pembuatan dan pengembangan maka dibutuhkan SQA (Software Quality Assurance) . Yang mana SQA merupakan suatu cara atau alat untuk melakukan pemantauan proses rekayasa perangkat lunak dan metode yang digunakan untuk memastikan kualitas dari software itu sendiri. Hal ini dilakukan dengan cara audit sistem manajemen mutu di dalam sistem perangkat lunak yang dibuat. Pemantauan dimulai dari pengembangan perangkat lunak, yang mencakup proses seperti perancangan perangkat lunak, coding, kontrol kode sumber, review kode, manajemen perubahan, manajemen konfigurasi, dan manajemen rilis.
Karakteriktik dari SQA yaitu sebagai berikut:
  • Adanya kontrak antara pengembang software dengan klien, yang mana kontrak merupakan komitmen yang digunakan dalam pengembangan software dan maintenance. 
  • Mengutamakan hubungam pelanggan dengan supplier, hal tersebut digunakan untuk kelanjutan dalam hubungan kerja, agar nantinya apabila dibuthkan pertimbangan perubahan, diskusi perubahan dan penerimaan perubahan akan lebih mudah untuk di bicarakan dan dikerjakan.
  • Bekerja sama guna untuk pencapaian target waktu kerja, penggabungan dari macam-macam keahlian yang dimiliki karyawan. Sehingga antar karyawan tim dapat saling membatu dengan keahlian masing-masing.
  • Kooperatif dan koordinasi dengan antar team pengembang software dan hardware yang terdapat di dalam organisasi.