The Software Problem
Tanyakan pada setiap mahasiswa yang telah
memiliki beberapa pengalaman membuat program, berikut pertanyaannya :
Pertanyaan: Anda diberi masalah dimana anda
harus membuat sebuah program yang sebagian besar siswa akan membuat sekitar
10.000 baris (katakanlah bahasa pemograman C atau Java) kode. Jika Anda
membuatnya, berapa lama akan menyelesaikannya?
Jawaban dari mahasiswa umumnya 1 sampai 3
bulan. Dan, mengingat programming yang menjadi keahlian mahasiswa, ada
kesempatan mereka dapat membuat program dan demo ke profesor/dosen dalam waktu
2 bulan. Dengan 2 bulan sebagai waktu penyelesaian, produktivitas mahasiswa akan
membuat 5000 baris kode (LOC) per bulan. Meskipun tidak ada angka standar
produktivitas dan itu bervariasi , wajar untuk mengatakan angka produktivitas
1000 LOC per bulan cukup baik (Meskipun terendah 100 LOC per bulan untuk
embedded system).
Dengan produktivitas ini, tim profesional di
organisasi perangkat lunak akan mengambil 10 orang untuk membuat program.
Mengapa perbedaan ini dengan produktivitas dalam dua skenario? Mengapa bahwa
mahasiswa yang sama yang dapat menghasilkan software pada produktivitas
beberapa ribu LOC per bulan saat kuliah berakhir dan hanya memproduksi sekitar 1000 LOC per bulan ketika
bekerja di sebuah perusahaan?
Jawabannya tentu saja, bahwa ada dua hal yang berbeda yang
sedang dibuat dalam dua skenario. Pada bagian pertama, sistem mahasiswa sedang
dibuat dan tidak digunakan. Karena, tidak ada signifikansi
tergantung pada perangkat lunak dan kehadiran bug dan kurangnya kualitas tidak
menjadi perhatian utama. Baik kualitas lain seperti kegunaan, pemeliharaan,
portabilitas dll. Di sisi lain, sistem perangkat lunak industri dibuat untuk memecahkan beberapa masalah
klien dan digunakan oleh organisasi klien untuk operasi beberapa bagian bisnis,
dan jika ada kerusakan sistem , dapat memiliki dampak besar dalam hal kerugian
keuangan atau bisnis, ketidaknyamanan kepada pengguna, atau kerugian harta
benda dan kehidupan. Akibatnya, sistem
perangkat lunak harus berkualitas tinggi sehubungan dengan sifat seperti
keandalan, kegunaan, portabilitas, dll.
Industri perangkat lunak sebagian besar
tertarik untuk mengembangkan industri software, dan bidang rekayasa perangkat
lunak yang berfokus pada bagaimana membuat sistem. Artinya, masalah domain
untuk rekayasa perangkat lunak adalah industrial software. Dalam sisa bab ini,
kita akan belajar :
- Bahwa kualitas, biaya dan jadwal adalah kekuatan utama yang mendorong industrial project perangkat lunak.
- Bagaimana biaya dan produktivitas didefinisikan dan diukur untuk project tersebut, dan bagaimana kualitas dari software akan ditandai dan diukur.
- Bahwa skala besar dan perubahan adalah atribut penting dari domain masalah dan pendekatan solusi harus menangani mereka.
1.1 Cost, Schedule, and Quality
Kualitas
tinggi membedakan software industri dari yang lain, biaya dan jadwal yang
menjadi kekuatan pendorong utama lainnya untuk perangkat lunak tersebut. Dalam
kekuatan industri domain software, ada tiga kekuatan yang dasar yaitu biaya,
jadwal, dan kualitas. Perangkat lunak ini harus diproduksi dengan biaya murah,
diwaktu yang wajar, dan harus berkualitas baik.
Software industri sangat mahal karena faktanya bahwa
pengembangan perangkat lunak sangat rumit. Untuk mendapatkan ide dari biaya
yang terlibat, kita bisa perhatikan keadaannya saat praktik di industri. Baris kode (LOC) atau ribuan baris kode
(KLOC) yang paling umum digunakan ukuran-ukuran
software di industri. Produktivitas di industri perangkat lunak, untuk menulis kode umumnya berkisar dari
beberapa ratus hingga sekitar 1000 LOC per bulan. Jadwal merupakan faktor
penting dalam banyak project. Untuk software ini berarti perlu dikembangkan
lebih cepat, dan dalam waktu yang ditentukan.
Produktivitas dalam hal Output (KLOC)
per bulan dapat memadai biaya dan schedule. Jika produktivitas lebih tinggi,
itu harus jelas bahwa biaya dari orang akan lebih rendah (pekerjaan yang sama
kini dapat dilakukan dengan lebih sedikit per bulan).
Faktor
utama lainnya adalah kualitas. Kualitas
yaitu salah satu pokok
utama, dan bisnis strategi yang dirancang sesuai dengan prosedur yang ada.
Sayangnya, sejumlah kasus besar telah terjadi mengenai tidak dapat diandalkan
perangkat lunak. Perangkat
lunak sering tidak melakukan apa yang seharusnya dilakukan atau melakukan
sesuatu tidak seharusnya dilakukan. Mengembangkan perangkat lunak yang berkualitas
tinggi adalah tujuan dasar dari gudang rekayasa perangkat lunak. sementara
biaya umumnya dipahami, konsep kualitas dalam konteks perangkat lunak perlu
penjelasan lebih lanjut. Standar internasional tentang kualitas produk software
menunjukkan bahwa kualitas perangkat lunak terdiri dari enam atribut utama.
Atribut dapat didefinisikan sebagai
berikut:
- Functionality, kemampuan untuk menyediakan fungsi untuk memenuhi kebutuhan yang software gunakan.
- Reability, kemampuan untuk memperbaiki kegagalan.
- Usability, kemampuan untuk dipahami, dipelajari, dan digunakan.
- Efficiency, kemampuan untuk memberikan kinerja yang relatif dan tepat untuk jumlah sumber daya yang digunakan.
- Maintainability., kemampuan untuk memodifikasi keperluan membuat perbaikan atau adaptasi.
- Portability, kemampuan untuk menyesuaikan dengan lingkungan tertentu yang berbeda tanpa menerapkan tindakan selain yang disediakan untuk tujuan dalam produk.
Untuk menentukan kualitas dari produk
software, kita perlu menentukan jumlah bug dalam perangkat lunak yang akan
disampaikan. Perlu
dijelaskan jika menggunakan definisi kualitas, apa yang cacat pada sebuah
software harus didefinisikan secara jelas. Sebuah cacat bisa menjadi masalah
dalam perangkat lunak yang menyebabkan software crash atau menjadi masalah yang
menyebabkan output menjadi tidak benar, salah mengeja beberapa kata, dll. Selain kehandalan, atribut kualitas lain
yang sangat menarik adalah pemelihara kemampuan. Pemeliharaan diperlukan
untuk mengubah perangkat lunak yang dikirimkan untuk memenuhi kebutuhan
pengguna dan lingkungan, yang mengarah ke pemeliharaan adaptif. Selama sistem
perangkat lunak hidup, biaya pemeliharaan dapat jauh melebihi biaya
pengembangan asli. Karena biaya yang tinggi ini, atribut maintainability yang
disampaikan software harus menarik dan jelas untuk memiliki
sistem perangkat lunak yang lebih mudah untuk mempertahankan.
Kebanyakan sistem perangkat lunak
industri cenderung besar dan kompleks, membutuhkan puluhan ribu baris kode. Seperti
yang diharapkan, pengembangan sistem besar membutuhkan satu set yang berbeda
dari metode pengembangan sistem kecil, seperti metode yang digunakan untuk
mengembangkan sistem yang kecil sering tidak meningkatkan ke sistem yang besar.
Sebuah contoh yang akan menggambarkan hal ini. Mempertimbangkan masalah,
menghitung orang di sebuah ruangan dan membandingkannya dengan mengambil sensus
suatu negara. Keduanya dasarnya sama-sama menghitung masalah. Namun metode yang
digunakan untuk menghitung orang di sebuah ruangan akan tidak bekerja.
Setiap project software melibatkan
penggunaan teknik dan management project. Dalam project kecil, metode informal
bagi pengembangan dan pengelolaan dapat digunakan. Namun, untuk project-project
besar harus jauh lebih ketat seperti yang diilustrasikan pada Gambar 1.2.
Dengan kata lain, untuk berhasil melaksanakan proyek, sebuah metode yang tepat
untuk rekayasa sistem harus bekerja dan proyek telah dikelola ketat untuk
memastikan biaya, jadwal, dan kualitas tetap dapat terkontrol. Skala besar
adalah karakteristik kunci dari domain masalah dan pendekatan solusi yang harus
menggunakan alat dan teknik yang memiliki kemampuan untuk membangun sistem
perangkat lunak besar.
Seperti yang dibahas diatas, software
harus berubah bahkan setelah itu diserahkan. Meskipun secara perubahan
tradisional dalam perangkat lunak, selama pemeliharaan telah dibedakan dari
perubahan yan terjadi pada saat pembuatan berlangsung.
Seperti kode sumber, perlu diubah karena
beberapa perubahan persyaratan atau karena beberapa hal cacat yang perlu
dihapus. Secara keseluruhan, karena dunia berubah lebih cepat, software harus
berubah lebih cepat. Oleh karena itu, perubahan kebutuhan adalah karateristik dari domain masalah.
Dalam dunia sekarang ini, pendekatan yang tidak dapat menerima dan
mengakomodasi perubahan jarang digunakan, mereka dapat memecahkan hanya
beberapa masalah yang tahan perubahan.
1.3 Summary
- Masalah domain untuk rekayasa perangkat lunak adalah perangkat lunak industri. Perangkat lunak ini dimaksudkan untuk memecahkan beberapa masalah, beberapa set pengguna, dan diharapkan menjadi berkualitas tinggi.
- Dalam domain masalah ini, biaya, jadwal, dan kualitas kekuatan pendorong dasar. Oleh karena itu, metode dan alat-alat yang akan digunakan untuk memecahkan masalah dalam hal ini domain harus memastikan produktivitas yang tinggi dan kualitas tinggi.
- Produktivitas diukur sebagai jumlah output per unit dari sumber daya input. Di software, output dapat diukur dalam hal baris kode yang disampaikan, dan sebagai waktu, manusia adalah sumber daya utama, input dapat diukur sebagai orang.
- Kualitas Software memiliki banyak atribut yang meliputi fungsi, reliabilitas, kegunaan, efisiensi, pemeliharaan, dan portabilitas. Keandalan sering dianggap sebagai atribut kualitas utama, dan seperti tidak dapat diandalkan dalam perangkat lunak adalah karena cacat dalam perangkat lunak, kualitas dapat dicirikan oleh jumlah cacat per seribu baris kode.
- Masalah dalam domain ini sering cenderung sangat besar dan dimana kebutuhan pelanggan berubah cepat. Oleh karena itu teknik yang digunakan untuk mengembangkan software kekuatan industri harus sedemikian rupa sehingga mereka mampu membangun sistem perangkat lunak yang besar, dan memiliki kemampuan untuk menangani perubahan.
Self-Assessment Exercises
- Apa perbedaan antara perangkat lunak utama mahasiswa dan industri perangkat lunak
- Jika mengembangkan program untuk memecahkan masalah membutuhkan usaha E, diperkirakan bahwa perangkat lunak industri untuk memecahkan masalah yang akan membutuhkan 10E upaya. Darimana anda pikir biaya usaha ekstra ini dihabiskan?
- Pengukuran Apa yang akan anda ambil dalam sebuah proyek untuk mengukur produktivitas, dan bagaimana anda akan menentukan produktivitas dari langkah-langkah ini?
- Apa atribut yang berbeda dari kualitas perangkat lunak? Jika untuk sistem akuntansi, kita paling tertarik untuk memastikan bahwa perangkat lunak tidak membuat kesalahan perhitungan, maka yang dari atribut kualitas mana yang harus kita paling dahulukan
- Apa beberapa tugas manajemen proyek yang akan anda lakukan secara berbeda untuk proyek besar dibandingkan dengan proyek kecil? Bagaimana eksekusi ini dapat berubah.
- Perubahan, misalkan harus membuat untuk perangkat lunak sistem yang beroperasi. Mengapa akan perubahan sistem seperti biaya lebih banyak daripada hanya membuat perubahan pada file kode?