Npm : 43A87007150334
Kelas : S1/SI/3/B P
BAB 1
PERMASALAHAN PERANGKAT LUNAK
Mengapa ini menjadi perbedaan selisih produktivitas dalam dua skenario? Mengapa siswa yang sama yang dapat menghasilkan software pada produktivitas beberapa ribu LOC per bulan saat kuliah berakhir hanya memproduksi sekitar seribu LOC per bulan ketika bekerja di sebuah perusahaan?
Jawabannya, tentu saja, adalah bahwa dua hal perbedaan sedang dibangun dalam dua skenario. Pada bagian pertama, sistem mahasiswa sedang dibangun yang terutama dimaksudkan untuk tujuan demonstrasi, dan tidak diharapkan untuk digunakan kemudian. Karena tidak digunakan, tidak ada signifikansi tergantung pada perangkat lunak dan adanya bug dan kurangnya kualitas tidak menjadi perhatian utama. Tidak adalah masalah kualitas lainnya seperti kegunaan, pemeliharaan, portabilitas dll.
Di sisi lain, sistem perangkat lunak industri-kekuatan dibangun untuk memecahkan beberapa masalah klien dan digunakan oleh organisasi klien untuk operasi beberapa bagian dari bisnis, dan kerusakan sistem tersebut dapat memiliki dampak besar dalam hal keuangan atau kerugian 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
Kebutuhan ini untuk kualitas tinggi dan untuk memenuhi pengguna akhir memiliki dampak yang besar pada perangkat lunak cara dikembangkan dan biaya. Aturan praktis Brooks memberikan menunjukkan bahwa perangkat lunak kekuatan industri mungkin biaya sekitar 10 kali perangkat lunak siswa.
Industri perangkat lunak sebagian besar tertarik untuk mengembangkan perangkat lunak industri-kekuatan, dan bidang rekayasa perangkat lunak berfokus pada bagaimana membangun sistem tersebut. Artinya, masalah domain untuk rekayasa perangkat lunak adalah perangkat lunak kekuatan industri. Di sisa lain, ketika kita menggunakan software jangka, kita berarti perangkat lunak kekuatan industri. Dalam sisa bab ini, kita akan belajar:
- Bahwa kualitas, biaya, dan jadwal adalah kekuatan utama yang mendorong (kekuatan industri) proyek perangkat lunak.
- Bagaimana biaya dan produktivitas didefinisikan dan diukur untuk proyek semacam itu, dan bagaimana kualitas software ditandai dan diukur.
- Bahwa skala besar dan perubahan adalah atribut penting dari masalah domain dan solusi pendekatan harus menangani mereka.
1.1. Biaya, Jadwal, dan Kualitas
Software industri-kekuatan sangat mahal terutama karena fakta bahwa pengembangan perangkat lunak sangat padat karya. Untuk mendapatkan ide dari biaya yang terlibat, mari kita perhatikan keadaan saat praktik di industri. Baris kode (LOC) atau ribuan baris kode (KLOC) disampaikan adalah yang palingumum digunakan ukuran ukuran software di industri. Karena biaya utama memproduksi perangkat lunak adalah tenaga yang digunakan, biaya pengembangan perangkat lunak biasanya diukur dalam hal orang-bulan dari usaha menghabiskan dalam pembangunan. Dan produktivitas sering diukur dalam industri dalam hal LOC (atau KLOC) per orang per bulan.
Produktivitas di industri perangkat lunak untuk menulis kode segar biasanya berkisar antara beberapa ratus sampai sekitar 1000 + LOC per orang bulan. Ini produktivity adalah atas seluruh siklus pengembangan, bukan hanya tugas coding. perusahaan perangkat lunak sering mengeluarkan biaya kepada klien untuk siapa mereka yang sedang mengembangkan perangkat lunak menjadi $ 3000 - $ 15.000 per orang per bulan. Dengan produktivitas 1000 LOC per orang per bulan, itu berarti bahwa setiap baris dari biaya kode disampaikan antara $ 3 dan $ 15! Dan bahkan proyek-proyek kecil dapat dengan mudah berakhir dengan software dari 50.000 LOC. Dengan produktivitas ini, seperti proyek software akan biaya antara $ 150.000 dan $ 750.000!
Jadwal merupakan faktor penting dalam banyak proyek. tren bisnis mendikte bahwa waktu ke pasar dari produk harus dikurangi; yaitu, waktu siklus dari konsep untuk pengiriman harus kecil. Untuk software ini berarti bahwa perlu dikembangkan lebih cepat, dan dalam waktu yang ditentukan. Sayangnya, sejarah perangkat lunak ini penuh dengan kasus di mana proyek telah secara substansial terlambat.
Jelas, oleh karena itu, mengurangi biaya dan waktu siklus untuk perangkat lunak de-Pembangunan adalah tujuan utama dari rekayasa perangkat lunak. Produktivitas dalam hal output (KLOC) satu orang perbulan memadai dapat menangkap biaya dan kekhawatiran schedule. Jika produktivitas lebih tinggi, itu harus jelas bahwa biaya dalam hal satu orang perbulan akan lebih rendah (kerjasama dapatdilakukan dengan lebih sedikit satu orang per bulan). Demikian pula, jika produktivitas lebih tinggi, potensi pengembangan perangkat lunak dalam waktu kurang meningkatkan-tim produktivitas yang lebih tinggi akan menyelesaikan pekerjaan dalam waktu kurang dari tim ukuran yang sama dengan produktivitas rendah. (Waktu yang sebenarnya proyek ini akan mengambil, tentu saja, tergantung juga pada jumlah orang al-terletak proyek.) Oleh karena itu, mengejar produktivitas yang lebih tinggi adalah kekuatan pendorong dasar di balik rekayasa perangkat lunak dan alasan utama untuk menggunakan alat yang berbeda dan teknik.
Selain biaya dan jadwal, yang lain software faktor utama pendorong insinyur-neering adalah kualitas. Hari ini, kualitas adalah salah satu mantra utama, dan strategi bisnis yang dirancang di sekitar itu. Sayangnya, sejumlah besar kasus terjadi mengenai tidak dapat diandalkan perangkat lunak-perangkat lunak sering tidak melakukan apa yang seharusnya dilakukan atau melakukan sesuatu tidak seharusnya dilakukan. Jelas, mengembangkan perangkat lunak berkualitas tinggi adalah tujuan mendasar lain dari rekayasa soft-ware. Namun, sementara biaya umumnya dipahami, konsep kualitas dalam konteks perangkat lunak perlu penjelasan lebih lanjut.
Kualitas perangkat lunak terdiri dari enam atribut utama, Atribut ini dapat didefinisikan sebagai berikut:
- Fungsi. kemampuan untuk menyediakan fungsi yang memenuhi dinyatakan dan tersirat kebutuhan ketika perangkat lunak yang digunakan.
- Keandalan. kemampuan untuk menyediakan layanan kegagalan bebas.
- Usability. kemampuan untuk dipahami, dipelajari, dan digunakan.
- Efisiensi. kemampuan untuk memberikan kinerja yang relatif sesuai dengan jumlah sumber daya yang digunakan.
- Rawatan. kemampuan yang akan dimodifikasi untuk keperluan membuat cor-rections, perbaikan, atau adaptasi.
- Portabilitas. kemampuan yang akan disesuaikan untuk menetapkan perbedaan lingkungan tanpa menerapkan aksi atau cara lain dengan syarat untuk tujuan di dalam produk.
1.2. Skala dan Perubahan 5
Pendekatan yang digunakan, maka diharapkan proyek ini akan memiliki kerapatan cacat yang sama sebagai proyek masa lalu.
Perlu menunjukkan bahwa menggunakan definisi kualitas, apa cacat yang harus didefinisikan secara jelas. Sebuah cacat bisa ada beberapa masalah dalam perangkat lunak yang menyebabkan perangkat lunak untuk crash atau masalah yang menyebabkan output untuk tidak selaras dengan benar atau yang salah mengeja beberapa kata, dll yang tepat definisi apa yang dianggap cacat jelas akan tergantung pada proyek atau standar organisasi mengembangkan penggunaan proyek (biasanya itu adalah yang terakhir).
Selain kehandalan, atribut kualitas lain yang sangat menarik adalah menjaga-kemampuan. Setelah perangkat lunak disampaikan dan disebarkan, memasuki tahap pemeliharaan. Mengapa pemeliharaan diperlukan untuk perangkat lunak, ketika perangkat lunak tidak memiliki komponen fisik yang dapat menurunkan dengan usia? Software perlu dipertahankan be-penyebab cacat sisa yang tersisa dalam sistem. Hal ini umumnya percaya bahwa keadaan seni saat ini adalah terbatas dan mengembangkan perangkat lunak dengan nol de-fect density tidak mungkin. cacat ini, sekali ditemukan, perlu dihapus, yang mengarah ke apa yang disebut pemeliharaan korektif. Pemeliharaan juga diperlukan untuk mengubah perangkat lunak yang dikirimkan untuk memenuhi kebutuhan disempurnakan pengguna dan lingkungan, yang mengarah ke adaptif pemeliharaan. Selama hidup dari sistem perangkat lunak, biaya pemeliharaan jauh dapat melebihi biaya pengembangan asli.
Setiap proyek software melibatkan penggunaan teknik dan proyek mengelola-ment. Dalam proyek-proyek kecil, metode informal bagi pengembangan dan pengelolaan dapat digunakan. Namun, untuk proyek-proyek besar, keduanya harus jauh lebih ketat, seperti yang diilustrasikan pada Gambar 1.2. Dengan kata lain, untuk berhasil melaksanakan proyek, metode yang tepat untuk rekayasa sistem harus bekerja dan proyek harus dikelola ketat untuk memastikan bahwa biaya, jadwal, dan kualitas berada di bawah kontrol. skala besar adalah karakteristik kunci dari domain masalah dan pendekatan solusi harus menggunakan alat dan teknik yang memiliki kemampuan untuk membangun sistem perangkat lunak besar.
Perubahan adalah karakteristik lain dari domain masalah yang ap-proaches untuk pembangunan harus menangani. Sebagai set lengkap persyaratan untuk sistem ini umumnya tidak diketahui (sering tidak bisa diketahui pada awal proyek) atau menyatakan, sebagai hasil pengembangan dan waktu berlalu, persyaratan tambahan diidentifikasi, yang perlu dimasukkan dalam perangkat lunak menjadi- ing dikembangkan. Hal ini perlu untuk perubahan mengharuskan metode untuk pengembangan merangkul perubahan dan mengakomodasi efisien. permintaan perubahan bisa sangat mengganggu proyek, dan jika tidak ditangani dengan baik, dapat mengkonsumsi sampai 30 sampai 40% dari biaya pembangunan.
Seperti dibahas di atas, software harus berubah bahkan setelah dikerahkan. Meskipun secara tradisional perubahan software selama pemeliharaan telah dibedakan dari perubahan yang terjadi saat pembangunan berlangsung, garis ini kabur, sebagai fundamental perubahan kedua skenario tersebut.
Secara keseluruhan, karena dunia berubah lebih cepat, software harus berubah lebih cepat, bahkan saat dalam pengembangan. Oleh karena itu perubahan kebutuhan adalah characteris-tic dari domain masalah. Dalam dunia sekarang ini, pendekatan yang tidak dapat menerima dan mengakomodasi perubahan yang sedikit digunakan-mereka dapat memecahkan hanya mereka beberapa masalah yang tahan perubahan.
1.3. Ringkasan
- Masalah domain untuk rekayasa perangkat lunak adalah perangkat lunak kekuatan 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 domain ini harus memastikan produktivitas yang tinggi dan kualitas tinggi.
- Produktivitas diukur sebagai jumlah output per unit dari sumber daya input. Dalam perangkat lunak, output dapat diukur dalam hal baris kode disampaikan, dan sebagai waktu manusia adalah sumber daya utama, input dapat diukur sebagai orang-bulan. Produktivitas sehingga dapat diukur sebagai baris kode disampaikan per orang bulan.
- Kualitas Software memiliki banyak atribut yang meliputi fungsi, reliabil-ity, kegunaan, e FFI efisiensi, maintainability, dan portabilitas. Keandalan sering
1.4. Masalah Perangkat Lunak
- Dianggap sebagai atribut kualitas utama, dan seperti tidak dapat diandalkan dalam perangkat lunak adalah disebabkan oleh cacat pada perangkat lunak, kualitas dapat ditandai dengan jumlah cacat per seribu baris kode.
- Masalah dalam domain ini sering cenderung sangat besar dan di mana kebutuhan pelanggan berubah cepat. Oleh karena itu teknik yang digunakan untuk mengembangkan perangkat lunak industri-kekuatan harus sedemikian rupa sehingga mereka mampu membangun sistem perangkat lunak besar, dan memiliki kemampuan untuk menangani perubahan.