Sabtu, 01 Juni 2013

Qualty Metrics

Oke sekarang akan belajar metrics dalam kualitas. Pertama kita harus tahu apa itu metrics, metrics adalah pengukuran sehingga kita akan mengukur bagaimana sebuah software dapat diukur.

"You can't control what you can't measure" ~ Tom DeMarco (1982)

Ada dua alternatif untuk mendeskripsikan quality metrics sebagai SQA tools
  1. Suatu ukuran kuantitatif untuk sebuah atribut yang sebenarnya bersifat kualitatif
  2. Sebuah fungsi input dari software dan outputnya sebagai nilai numerik yang bisa kita lihat dari nilai tersebut sejauh mana software memiliki kualitas

Quality metrics ini harus dimasukkan dalam manajemen pembuatan software untuk mengontrol development proyek dan maintenancenya, selain itu juga membantu dalam mengambil keputusan dan inisiasi dari tindakan korektif. Metrics digunakan untuk memahami penyimpangan apa saja yang terjadi dari rencana awal.

•functional (quality) performance from planned performance
•timetable and budget performance from planned performance

Selain itu metrics digunakan untuk mengidentifikasi situasi yang memerlukan pengembangan atau perbaikan proses perawatan dalam bentuk tindakan preventif dan korektif.

Process metrics : terkait dengan proses pengembangan software
Prodcut metrics : terkait dengan proses pemeliharaan/maintenance software

Cost of Software Quality

Sering kita bertanya,"Ini nentukan harga software gimana ya?" Kadang hanya melakukan benchmarking dengan harga software pihak lain atau bahkan sering dengan menggunakan feeling,"rasa-rasanya harganya segini nih.."
Untuk sebuah software yang berkualitas kita perlu melihat bagaimana software itu dibuat, life cycle, siapa saja yang terlibat dan lain sebagainya. Maka itu ada yang namanya Cost of Software Quality. Dengan ini dapat memungkinkan manajemen mengontrol setiap kegiatan dalam menjaga kualitas software dan mengukur kesesuaian untuk menjumlahkan biaya.

Ada beberapa model klasik untuk Cost of Software Quality
  • Prevention costs
Investasi dalam infrastruktur mutu dan kualitas kegiatan yang tidak diarahkan ke proyek atau sistem tertentu yang umum untuk organisasi
  • Appraisal costs
Biaya kegiatan yang dilakukan untuk proyek tertentu atau sistem software untuk mendeteksi kesalahan software
  • Internal failure costs
Biaya untuk mengoreksi kesalahan yang telah terdeteksi oleh tinjauan desain, testing software dan juga acceptence test
  • External failure costs
Mencakup biaya mengoreksi kegagalan yang dilakukan oleh costumer atau tim maintenance setelah software diinstall
Selain itu ada extended modelnya untuk Cost of Software Quality
  • Managerial preparation and control costs
Biaya melakukan review kontrak, lalu mempersiapkan rencana proyek dan bagaimana menjaga kualitasnya, lalu biaya yang dikeluarkan secara periodik ini semua dibahas dalam tingkatan manajerial untuk melakuak kontrol biaya.
  • Managerial failure costs
Ini adalah biaya untuk menjaga biaya kegagalan yang mungkin terjadi, mulai dari tahap pra proyek. contohnya, tidak direncanakan biaya untuk profesiona dan resource lainnya. Biasanya kerugian ini dibayarkan kepada pelanggan untuk kompensasi dimana jika penyelesaian proyek terlambat. Jadi ada efek domino jika gagal dalam melakukan manajemen cost.

Jadi dengan ini kita tahu apa saja yang berpengaruh untuk memberi harga sebuah software, terutama dalam Cost of Software Quality.

What is Requirement Traceability Matrix


Apa itu Requirement Traceability Matrix?
Merupakan sebuah dokumen yang biasanya berbentuk tabel,yang saling berhubungan, berbentuk seperti baseline. Yang memiliki hubungan many to many dengan requirement software sebagai bahan kelengkapan dari proses pengerjaan proyek yang mana requirement traceability matrix digunakan dari awal dibentuk proses lifecycle dari proses pembuatan software.
 
Fungsinya adalah..
Requirement traceability Matrix dapat digunakan untuk memeriksa serta  melihat apakah persyaratan proyek telah terpenuhi, dan untuk membantu dalam menghasilkan proposal permintaan, persyaratan spesifikasi perangkat lunak, dan rencana proyek tugas .

Kapan digunakannya? 
Requirement traceability matrix digunakan dari awal dibentuk hingga proses lifecycle dari proses pembuatan software 

Siapa yang menggunakannya?
  • Manager proyek untuk mengontrol apakah  persyaratan proyek seluruhnya telah terpenuhi.
  • Customer atau client untuk mengecek apakah requirement yang diminta telah telah terpenuhi 

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.