Saya dapat mengingat dengan jelas hari itu ketika saya tiba di tempat kerja - menjelang akhir tahun 2003 - mudah sebelum jam 6 pagi. Saya memimpin tim kecil yang bertugas membuat prototipe lingkungan pengujian untuk proposal NASA. Saya berdiri di sana dengan kagum ketika saya menyaksikan dua programmer saya mendemonstrasikan lingkungan simulasi satelit yang sepenuhnya direkayasa ulang. Tunggu - biarkan saya jelas - hanya dalam beberapa hari - mereka menulis ulang hampir 30.000 baris FORTRAN dan 4.000 baris kode perakitan lainnya. Bagaimana mereka melakukannya? Mereka menyebutnya :goop.: :Pembersih tangan?: Tanyaku - agak bingung. Tidak, mereka merujuk bahasa pengembangan baru oleh LabVIEW (Instrumen Nasional) yang disebut :GOOP: - kependekan dari Graphical Object Oriented Programming.
Perangkat Lunak Perkiraan Sipil
Itu adalah hari saya memutuskan untuk berhenti menjadi seorang programmer. Saya, pada usia saya, ”tidak lagi benar-benar tertarik untuk mengikuti paradigma pemrograman terbaru (dan bahasa daerah - seperti“ paradigma ”). Saya memutuskan untuk meninggalkan masa lalu dan merangkul peran saya sebagai manajer program. Tetapi sekarang, melihat ke belakang, saya berharap saya akan mengajukan beberapa pertanyaan lagi.
Kegagalan Pengukuran
Pada tahun 1995 perusahaan riset dan konsultasi manajemen proyek TI yang berbasis di Boston, The Standish Group merilis laporan Ringkasan CHAOS pertama mereka. Laporan tersebut dengan cepat menjadi kartu skor industri untuk mengukur keberhasilan atau kegagalan proyek TI; sebagian besar disebabkan oleh persentase mengejutkan dari proyek gagal yang diungkapkan dalam laporan. Laporan tersebut berfungsi sebagai panggilan bangun yang tampaknya telah didengar - laporan peringatan 10 tahun CHAOS mengumumkan bahwa persentase proyek yang gagal telah berkurang lebih dari setengahnya. Namun sayang, dalam lima tahun saja, jumlah proyek gagal kembali meningkat; laporan CHAOS Standish Group 2009 menunjukkan bahwa hampir 1 dari 4 proyek akan hancur. Tapi kenapa?
Menurut laporan CHAOS 1995 yang asli, untuk meningkatkan kemungkinan proyek yang berhasil harus dikurangi kompleksitasnya dan perangkat lunak :tumbuh.: Rekomendasi ini adalah untuk mengurangi perangkat lunak menjadi segmen yang lebih kecil, lebih mudah dikelola, dan mengembangkannya ke luar. Jika pengurangan yang dilaporkan dalam proyek gagal ini dapat dipercaya maka tampaknya industri perangkat lunak rajin dalam proyek :tumbuh: menggunakan elemen yang lebih kecil (1). Namun, apa yang juga harus dipahami adalah bahwa proyek-proyek itu terdiri dari banyak bagian-bagian kecil yang lebih mudah untuk :diukur.:
Pada tahun 1995 pendekatan yang paling umum untuk mengukur ukuran perangkat lunak adalah dengan menghitung baris sumber kode (SLOC) atau menghitung Poin Fungsi (meskipun kurang lazim). Ukuran perangkat lunak adalah metodologi yang mapan dan matang yang mencakup lebih dari dua puluh tahun - dengan segudang alat yang tersedia untuk mengotomatisasi proses dan metrik tambahan yang tersedia untuk mengukur kompleksitas perangkat lunak dan kemungkinan cacat (bug). Jika ukuran proyek dipahami, maka kemampuan untuk memperkirakan jadwal dan upaya dapat dengan mudah dimodelkan dengan menerapkan ukuran kinerja sebelumnya (dan banyak parameter lainnya). Dengan memperkirakan perkiraan realistis di awal siklus pengembangan ada kemungkinan secara signifikan lebih tinggi dari keberhasilan proyek (tepat waktu, sesuai anggaran, dengan fungsionalitas yang dijanjikan) - dan karenanya - lebih sedikit kegagalan.
Kembali ke masa depan
Ini tahun 2003 lagi, dan saya baru saja diberitahu tentang metodologi baru yang memungkinkan siapa saja untuk membangun perangkat lunak menggunakan komponen grafis. Ini tidak benar-benar baru; pada pertengahan 1990-an hingga awal 2000-an, bahasa :visual: dan :portabel: mendapat penerimaan industri dan mulai mendominasi lanskap pengembangan. Hanya dalam beberapa tahun, bahasa yang dapat :diproduksi: oleh suatu lingkungan menjadi lingua du jour. Lagi pula, siapa yang bisa berdebat dengan skala ekonomi besar bahwa perangkat pembuatan perangkat lunak dapat menghasilkan menggunakan pemrograman :Visual:? Dan bagi saya khususnya - setelah tiga hari menyaksikan tim saya mengeluarkan :GOOP: - saya adalah pahlawan bagi manajemen saya.
Tapi tunggu - perhatikan timeline dalam studi Chaos yang disebutkan di atas dan kebangkitan kegagalan perangkat lunak. Walaupun saya bukan pendukung kausalitas yang besar - mari setidaknya kita luangkan waktu dan jelajahi kontributor potensial ini pada tren kegagalan perangkat lunak. Pertama, gambar dari Komunitas Pemrograman TIOBE (2) - penjaga tidak resmi dari apa yang populer dalam bahasa pemrograman.
Bahasa dengan pertumbuhan paling populer selama lima tahun adalah: Java, diikuti oleh C #, JavaScript, dan kemudian Ruby. Beberapa bahasa yang lebih tua juga dalam mode adalah Perl, C, dan Visual Basic. Mengapa? Mungkin itu karena sebagian besar bahasa ini telah menjadi lebih canggih, dibungkus dalam lingkungan pengembangan terintegrasi, dan diposisikan dengan tujuan tunggal untuk meningkatkan produktivitas. Singkatnya - mereka telah menjadi lebih :visual.: Meskipun mungkin lebih mudah untuk membangun kode, ada sedikit pertimbangan tentang bagaimana kode yang dihasilkan harus :berukuran.: untuk bermain biola di bawah tenda; Gambar, klik, dan Poof - kode instan yang berjalan.
Ukuran diperhitungkan
Penggerak paling signifikan untuk berapa banyak waktu, biaya dan upaya yang diperlukan untuk membangun perangkat lunak adalah ruang lingkup (atau ukuran) dari apa yang akan dibangun dan oleh karena itu salah satu faktor terbesar dalam estimasi akurat. Seperti yang Godfather estimasi perangkat lunak telah memperingatkan kita (Barry W. Boehm) - :Kesulitan terbesar dalam menggunakan model biaya perangkat lunak algoritmik saat ini adalah masalah menyediakan estimasi ukuran suara: (3). Bagaimana cara pengukur mengukur :GOOP: dan berapa baris kode yang dimasukkan oleh pembuat kode benar-benar diperlukan? Berapa persentase templat C ++ yang dapat kita hapus (jika kita berani) dan jaga agar Kelas tetap stabil - namun ringkas. Seperti yang pernah dikatakan Mark Twain - :bagian tersulit tentang menulis adalah menghilangkan semua kata tambahan.:
Apakah mungkin menghitung lagi baris kode perangkat lunak? Bahkan menggunakan alat penghitungan kode terbaik yang tersedia - bukankah mereka hanya menghitung banyak baris kode yang mungkin tidak perlu? Atau terbalik - berapa lama waktu yang dibutuhkan programmer untuk menghapus semua kode yang seharusnya tidak dihitung - dan bukan? Kecurigaan saya adalah bahwa semua kode tetap ada (kecuali standar dengan kekakuan tinggi seperti FAA DO-178B memverifikasi sistem).
Karena saya pada topik penghitungan kode - apa yang terjadi pada Ada dan FORTRAN; bahasa-bahasa pendukung tahun 80-an dan 90-an yang mudah dihitung? Sayangnya, mereka sekarang berada di peringkat nomor 24 dan 25; sekali lagi, tidak ada asumsi kausalitas. (Tapi ya lidahku tertanam kuat di pipi). Perkiraan tampak jauh lebih mudah saat itu. Isyarat musiknya.
Hmm, ada sesuatu yang menjadi jelas dalam laporan Standish - dengan asumsi saya tidak membuat apa yang para ahli statistik sebut sebagai :kesalahan konfirmasi:; Saya akan mengusulkan bahwa mungkin industri telah membuat menangkap ukuran perangkat lunak terlalu rumit - dan sebagai akibatnya - kemampuan kita untuk secara akurat membuat perkiraan biaya yang baik. Pada akhirnya, jika industri ini beralih dari bahasa :yang dapat dihitung: dan bermigrasi ke representasi :visual: maka beberapa mekanisme perlu dibentuk yang dapat secara akurat menghubungkan upaya dengan ukuran atau sebaliknya..
Berikut ini pemikiran - ingat ribuan dolar yang digunakan untuk membeli persyaratan grafis dan alat desain - seperti IBM Rational Rose, RSA Integration, dan Rhapsody? Mengapa tidak menggunakan output model use case ini untuk menghitung Use Case Points (tidak disesuaikan) yang kemudian dapat dimasukkan ke dalam model parametrik. Apakah Anda sedang membangun :Pola Desain?: Mengapa tidak menghabiskan sedikit lebih banyak waktu dan menghitung Poin Fungsi COSMIC dan mempublikasikannya bersama dengan pola - sehingga biaya penerapan pola dapat dihitung. Minimal, sebelum pengisian maju dari persyaratan ke kode - cobalah untuk menghitung beberapa ukuran :fungsional: yang diterima dan dilanjutkan oleh model parametrik - kemudian kembali lagi untuk melihat apakah usaha Anda menurut asumsi fungsi sudah benar.
Komunitas perangkat lunak telah membuat kemajuan besar dalam menciptakan alat untuk meningkatkan produktivitas - tetapi perkiraan kami salah karena kami berhenti setengah jalan! Kita perlu menyusun kembali dan mengidentifikasi ukuran perangkat lunak yang terkait dengan biaya perangkat lunak dan melibatkan alat parametrik untuk menghitung perkiraan yang akurat. Sampai saat itu - itu murni dugaan bekerja untuk memperkirakan pengembangan produk baru dan kepercayaan buta pada pengetahuan suku ketika memodifikasi aplikasi yang ada. Setelah semua - hanya berapa lama untuk membuat GOOP?
1 - Jim Johnson, ketua The Standish Group, mengatakan dia sangat terkejut melihat penurunan dalam tingkat keberhasilan proyek TI sehingga dia menunggu empat bulan tambahan sebelum menerbitkan laporan CHAOS untuk memastikan temuannya akurat. Dia menghubungkan peningkatan kegagalan proyek TI dengan resesi, yang menurut para ekonom dimulai pada Desember 2007, dan pemotongan anggaran berikutnya.
2- http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
3- Rekayasa Perangkat Lunak - Kontribusi Seumur Hidup Barry W. Boehm untuk Pengembangan, Manajemen dan Penelitian Perangkat Lunak, Diedit oleh Richard W. Selby, Wiley-IEEE Computer Society Pr; Edisi cetak ulang (4 Juni 2007) Bagaimana Cara Memperkirakan Perangkat Lunak Beberapa pemilik rumah tidak memiliki masalah dengan visi dan rencana ketika datang ke renovasi dan renovasi. Sepertinya beberapa individu dapat menyusun rencana, setelah datang dengan ide renovasi umum, kemudian melihat rencana itu tanpa banyak bantuan. Tetapi ini tidak berlaku untuk sebagian besar pemilik rumah. Di situlah perangkat lunak perbaikan rumah dapat membantu.
Meskipun tidak ada program komputer yang sempurna untuk setiap situasi, sebagian besar pemilik rumah akan dapat menemukan beberapa program perencanaan dan perangkat lunak perkiraan biaya yang akan sangat membantu dalam membuat proyek renovasi / renovasi berjalan lebih lancar. Ini bisa berlaku bagi mereka yang berjenis do-it-yourself dan bagi mereka yang ingin mendapatkan gambaran tentang biaya sebelum menyerahkan proyek ke profesional.
Beberapa pemilik properti yang ingin melakukan tugas renovasi yang sangat mendasar atau sekadar memutakhirkan sesuatu di rumah dapat memilih program perencanaan dan perkiraan biaya paling sederhana. Ini dapat bekerja dengan baik dalam banyak situasi. Namun, ada versi profesional dari sebagian besar perangkat lunak renovasi rumah, baik untuk perencanaan maupun estimasi biaya. Ini mungkin sedikit lebih mahal pada awalnya, tetapi akan memberi pemilik rumah beberapa pilihan lagi (dan mungkin perkiraan biaya yang lebih rinci).
Tentu saja, jika pemilik rumah tidak berencana untuk melakukan pekerjaan apa pun dan tidak peduli dengan detail besar dalam biaya, perencanaan dan perangkat lunak keuangan mungkin tidak diperlukan. Sebagian besar profesional yang bekerja pada tugas renovasi memiliki perangkat lunak komputer untuk merencanakan dan memperkirakan. Mereka yang biasanya tidak memiliki pengalaman yang cukup untuk mengurus rencana semula, memperkirakan biaya tenaga kerja dan material, dan sebagainya.
Beberapa ide dasar tentang apa yang harus dicari dalam perangkat lunak renovasi rumah akan membantu membuat tahap awal proyek berjalan dengan lancar. Ingatlah bahwa perangkat lunak perencanaan / estimasi ini biasanya dirancang untuk digunakan dengan baik sebelum kayu dipotong atau paku dipalu. Ini akan menjadi penting ketika pemilik rumah atau orang lain yang membantu proyek mulai membeli bahan. Sebagian besar perangkat lunak perencanaan dan estimasi biaya memungkinkan untuk mencetak daftar bahan dan bahkan menyediakan laporan total proyek. Penting juga untuk memastikan bahwa rencana pendahuluan dan perkiraan biaya tersedia sebelum pemilik rumah kembali ke perangkat lunak untuk menggambar, denah lantai dan detail anggaran. Secara umum, proses perencanaan dan estimasi harus dilakukan secara perlahan dan dalam beberapa langkah.
Ada beberapa program perangkat lunak gratis yang cukup bagus. Beberapa di antaranya dapat diunduh dari situs Web. Beberapa kehati-hatian harus diambil untuk mendapatkan jenis perangkat lunak yang paling cocok dengan ide / visi asli untuk proyek renovasi. Bahkan dengan perencanaan yang paling hati-hati dan perangkat lunak terbaik, akan ada tantangan dan perubahan (beberapa bisa diantisipasi, yang lain tidak bisa). Dalam kebanyakan kasus, hanya menggunakan beberapa perangkat lunak akan membantu. Menggunakan perangkat lunak yang tepat untuk tugas itu, baik itu renovasi kamar mandi atau hanya membangun meja kerja bisa menjadi perbedaan antara proyek yang mengalir lancar dan yang dilanda masalah.