Hanya ingin tahu apa perbedaan antara proyek ukuran kecil, sedang dan besar? Apakah diukur dengan baris kode atau kompleksitas atau apa?
Saya sedang membangun sistem barter dan sejauh ini memiliki sekitar 1000 baris kode untuk login / registrasi. Meskipun ada banyak LOC saya tidak akan menganggapnya sebagai proyek besar karena tidak rumit meskipun ini adalah proyek pertama saya jadi saya tidak yakin. Bagaimana cara mengukurnya?
Jawaban:
Kompleksitas.
Semakin kompleks, semakin sulit untuk mempelajari segala sesuatu dalam proyek.
sumber
Kira-kira bagaimana saya menyetujui sesuatu - ingatlah ini kurang lebih sewenang-wenang. "Ukuran" proyek dalam gabungan dari faktor-faktor lain seperti kompleksitas, baris sumber kode, jumlah fitur / nilai bisnis, dll. Produk yang sangat kecil dapat memberikan nilai yang besar, dll. Yang dikatakan:
2m + SLOC adalah besar untuk proyek besar. Ini umumnya sangat kompleks sehingga hanya sedikit jika ada orang yang 'lancar' di seluruh sistem; alih-alih tanggung jawab cenderung dimodulasi di sepanjang struktur kode. Proyek-proyek ini sering memberikan nilai bisnis yang sangat besar dan mungkin misi kritis. Mereka juga terkadang berada di bawah tekanan hutang teknis yang besar dan masalah warisan lainnya.
100k - 2m sloc adalah proyek berukuran sedang. Ini adalah jalan tengah saya: proyek ini cukup rumit untuk membutuhkan pengetahuan ahli, dan kemungkinan telah menimbulkan beberapa tingkat utang teknis; kemungkinan juga memberikan beberapa nilai bisnis.
10k - 100k adalah proyek kecil, tapi tidak terlalu kecil untuk memiliki cukup kompleksitas yang akan Anda ingin pertimbangan ahli; jika Anda open source, pertimbangkan untuk mendapatkan orang yang Anda percaya untuk meninjau komit Anda.
Apa pun yang kurang dari 10k sloc itu kecil, sungguh. Itu tidak berarti itu tidak dapat memberikan nilai sama sekali, dan banyak proyek yang sangat menarik memiliki jejak yang sangat kecil (misalnya Camping, yang sumbernya ~ 2 kb (!)). Non-ahli umumnya dapat mendorong kekhawatiran nilai - bug fix dan fitur add - tanpa harus tahu terlalu banyak tentang domain.
sumber
Ukuran proyek diukur dengan tingkat unmaintainability.
sumber
Kompleksitas yang dapat diperkirakan dalam beberapa cara:
Sementara persyaratan bisa terdengar seperti cara yang bagus untuk mengukur ini, seringkali ada lebih banyak persyaratan yang akan ditemukan ketika sebuah proyek dilakukan dengan asumsi metodologi non-Air Terjun saya percaya.
sumber
Ukuran proyek mungkin paling baik diukur dengan jumlah persyaratan yang dimiliki sistem, di mana persyaratan tidak dapat dikurangi lebih jauh.
Tentu saja, lebih banyak persyaratan sebagian besar berarti lebih banyak kompleksitas, tetapi tidak selalu demikian.
sumber
Saya akan mengukur ukuran proyek dengan seberapa sulitnya untuk melihat keseluruhan proyek sebagai satu gambaran besar. Sebagai contoh, saya memiliki basis kode eksplorasi / prototyping untuk masalah pembelajaran mesin yang sedang saya kerjakan. Ini hanya 5k baris kode, tetapi rasanya seperti proyek besar. Ada banyak opsi konfigurasi yang berinteraksi dengan cara yang tidak terduga. Anda dapat menemukan hampir setiap pola desain yang dikenal manusia di suatu tempat dalam basis kode untuk mengelola semua kerumitan itu. Desainnya sering suboptimal karena hal itu tumbuh banyak oleh evolusi dan tidak direactored sesering yang seharusnya. Saya satu-satunya yang bekerja pada basis kode ini, namun saya sering terkejut dengan bagaimana segala sesuatu berinteraksi.
Di sisi lain, salah satu proyek hobi saya memiliki sekitar 3-4x kode lebih banyak, namun rasanya jauh lebih kecil karena pada dasarnya merupakan perpustakaan fungsi matematika yang sebagian besar ortogonal satu sama lain. Hal-hal tidak berinteraksi dengan cara yang kompleks, dan cukup memahami setiap fungsi secara terpisah. Sangat mudah untuk melihat gambaran besarnya sejauh ada, karena tidak banyak yang bisa dilihat.
sumber
Jawaban sewenang-wenang: Seberapa besar proyek ini seberapa besar Anda berharap telah melakukannya dengan sumber-sumber acara dan SOA sejak awal. Atau bahwa penulis sistem telah membaca buku Evan "DDD: Menangani Kompleksitas di Jantung Perangkat Lunak";)
sumber
Compexity & Lingkup
Kompleksitas dan Cakupan Saya percaya adalah apa yang menentukan seberapa besar proyek sebenarnya. Namun, ada beberapa hal tak berwujud yang dapat mempengaruhi ukuran proyek juga.
Persyaratan
Kejatuhan terbesar yang saya hadapi adalah kurangnya persyaratan. Dalam situasi khusus saya, manajer penjualan menentukan persyaratan. Fokusnya adalah pada penjualan ... harus mendapatkan penjualan. Dalam benaknya apa yang diminta oleh pelanggan tampaknya tidak terlalu rumit karena kami telah membangun sesuatu yang serupa. Persyaratan yang tidak jelas menyebabkan pekerjaan yang tidak terlalu mahal dan ekspektasi yang berlebihan.
Kurangnya CCMU
CCMU adalah apa yang saya sebut " Coo Ca Moo " (Hapus Pemahaman Saling Lengkap). Anda harus memiliki CCMU dengan pelanggan Anda.
Jika Anda memiliki proyek kecil dengan CCMU yang buruk maka Anda dapat menyelesaikan proyek tersebut sebanyak 2,3,4 kali atau lebih. Jadi, pekerjaan sederhana selama 20 jam berubah menjadi proyek 60 jam dengan staf yang stres dan pelanggan yang sangat tidak puas.
Cakupan Creep
Ini terjadi lebih sering daripada yang Anda pikirkan. Pelanggan memutuskan bahwa karena Anda sudah melakukan A, B & C seharusnya tidak terlalu sulit untuk menambahkan D atau bahkan F. Jika perilaku ini tidak dicentang, itu juga dapat mengubah proyek kecil menjadi proyek ukuran sedang. Dan tergantung pada bagaimana manajer penjualan menjual pekerjaan, ekspektasi creep lingkup ini mungkin tampak "GRATIS" kepada pelanggan.
sumber
Aneh, membaca banyak jawaban ini saya menemukan saya melihat ukuran proyek yang sangat berbeda. Mungkin ini pekerjaan saya di sebuah perusahaan besar, tetapi saya cenderung memandang ukuran proyek sebagai lebih dari skala visibilitas / keinginannya kepada kliennya (tergantung pada area kerja Anda, ini bisa menjadi rekan kerja atau pelanggan yang membayar sebenarnya).
sumber
Kompleksitas adalah jawaban yang tepat, tetapi bagaimana cara memperkirakannya?
Faktor-faktor tersebut adalah:
Semakin banyak yang Anda miliki, semakin kompleks proyeknya.
sumber
LOC adalah sangat tidak akurat untuk banyak pengukuran, tapi saya pikir Anda mencoba untuk mengukur sesuatu yang sebenarnya tidak ada cara yang akurat untuk mengukur. Mungkin alternatifnya mungkin kompleksitas siklomatik .
Namun pada akhirnya, saya pikir "besar" suatu proyek sulit untuk diukur. Ini hampir seperti menanyakan bagaimana Anda menentukan apakah seekor anjing besar atau tidak. Tidak hanya ada beberapa cara untuk mengukurnya (massa, volume, dll), tetapi saya pribadi tidak merasa sangat berguna. Kenyataannya adalah bahwa kriteria saya mungkin akan seperti "Seberapa besar kemungkinan saya lari dari anjing ini jika saya melihatnya di lorong yang gelap?"
Dan sebagai catatan, saya umumnya tidak akan menganggap 1k baris kode menjadi banyak. Ini akan menjadi sepotong yang cukup besar dari kode, tetapi itu tidak akan yang banyak dalam skema besar hal. Tentu saja, saya kira itu tergantung pada bahasa. Misalnya, 1k baris kode adalah kode yang jauh lebih sedikit dalam bahasa seperti C daripada dalam bahasa seperti Pyhon.
sumber