Về năng suất và SLOC
Vấn đề với SLOC
Vấn đề với số liệu SLOC là nó đo gần đúng số lượng mã được viết mà không tính đến:
- chất lượng của mã (nghĩa là nếu cứ 100 SLOC thì bạn phải thêm 90 SLOC khác vì lỗi, nhưng bạn không biết tại thời điểm mã của mình được gửi?)
- các mục tiêu đạt được với mã (tức là SLOC 10K có xử lý tất cả các trường hợp sử dụng dự kiến hoặc câu chuyện người dùng không? hoặc chỉ một tập hợp nhỏ?)
- khả năng duy trì của mã (tức là bạn sẽ phải thêm 1% hoặc 50% mã nữa để điều chỉnh mã theo các yêu cầu phát triển dự kiến?).
Nói cách khác, việc sản xuất mã spaghetti dễ bị lỗi không thể nhầm lẫn với nhiều phần được sao chép sẽ được coi là hiệu quả hơn so với mã tái sử dụng được thiết kế cẩn thận.
Vì vậy, SLOC chắc chắn không phải là cách tốt nhất để đo năng suất.
Năng suất nào chúng ta đang xem xét?
Năng suất được đo lường cho một quá trình. Vì vậy, SLOC có thể là một chỉ số hoàn toàn hợp lệ cho riêng quá trình mã hóa.
Ví dụ, nếu bạn hiểu sai các yêu cầu kém, dành năm tháng để sản xuất phần mềm, hiển thị cho người dùng, phát hiện ra rằng nó hoàn toàn sai và mất thêm 5 tháng để viết lại cho tốt từ đầu, bạn sẽ có năng suất tương tự trong SLOC / tháng, ví dụ, một nhóm viết mã ngay lần đầu tiên, chẳng hạn vì họ đã sử dụng một quy trình nhanh để giảm hiểu lầm thông qua phản hồi thường xuyên. Năng suất tương đương rõ ràng này ẩn giấu những vấn đề lớn.
Vì vậy, đo lường năng suất phát triển phần mềm cần phải tính đến toàn bộ quá trình, bao gồm phân tích các yêu cầu, thiết kế mã gì, mã hóa, kiểm tra, gỡ lỗi và xác minh rằng đáp ứng mong đợi của người dùng. Vì tất cả các hoạt động này rất khác nhau, điều tốt nhất là đo lường suy nghĩ duy nhất quan trọng: phần mềm làm việc, tức là phần mềm được sản xuất có ý nghĩa gì với người dùng .
Làm thế nào để đo lường phần mềm giao hàng?
Một số cách tiếp cận tồn tại:
- Cách tiếp cận điển hình trong công nghệ phần mềm cổ điển là Function Points (FP). Các điểm chức năng được đo lường dựa trên các yêu cầu cần thực hiện (ví dụ: số lượng biểu mẫu, số lượng trường trong mỗi biểu mẫu, v.v ...). Năng suất sau đó được đo bằng FP trên mỗi đơn vị thời gian và mỗi người. Một số công ty thậm chí có dữ liệu cho biết có bao nhiêu điểm chức năng mà nhà phát triển có thể tạo ra trên mỗi đơn vị thời gian trong một ngôn ngữ nhất định cho một miền nhất định. Vấn đề với FP là nó đòi hỏi các yêu cầu rất chi tiết trả trước và nó tốn thời gian.
- Một cách tiếp cận hiện đại và thực dụng hơn là điểm câu chuyện (SP). Chúng được sử dụng để đánh giá độ phức tạp của mã được tạo ra và được sử dụng thường xuyên để đánh giá vận tốc của các nhóm phát triển. Tuy nhiên, SP là thước đo ước tính cho công việc được thực hiện trước khi biết tất cả các chi tiết. Đây không phải là thước đo cuối cùng cho những gì thực sự đã xảy ra. Vì vậy, một số lưu ý phải được thực hiện khi sử dụng nó như một thước đo năng suất vì nó có thể phản tác dụng trong quá trình ước tính .
Về năng suất của kiểu gõ tĩnh so với động
Tôi phải thú nhận rằng cá nhân tôi là một fan hâm mộ của các ngôn ngữ được gõ tĩnh, bởi vì trong nội tâm của tôi, tôi biết rằng nó đáng tin cậy hơn (nhiều năm mã hóa đã chứng minh cho tôi điều đó).
Vì vậy, một điều mà tôi chắc chắn là ngôn ngữ gõ tĩnh có thể ngăn ngừa nhiều lỗi / lỗi hơn trong thời gian biên dịch (ví dụ: lỗi chính tả, không khớp trong các loại dự kiến, v.v ...) so với các ngôn ngữ không được gõ tĩnh. Nhưng trong tất cả các khách quan, tôi sẽ không dám khái quát hóa điều này như một năng suất cao hơn.
Là kiến trúc sư của bạn phải không?
Co le không.
Nhưng các đối số của ông dường như không hợp lệ: mức tăng năng suất của ngôn ngữ gõ tĩnh xuất phát từ một số lỗi đáng kể được trình biên dịch bắt trước.
Do đó, không thể tìm ra mức tăng năng suất "cao hơn" này bằng cách chỉ nhìn vào SLOC mà không cần nhìn vào công việc cần thiết cho các ngôn ngữ được gõ động. Vì vậy, so sánh của anh ta không thể công bằng.
Đối số của hoàn cảnh so sánh cũng không giữ được. Một số ngôn ngữ được gõ động cho phép một số cấu trúc cấp cao hơn yêu cầu ít mã hơn so với thực hiện cùng một trong các ngôn ngữ được nhập tĩnh cổ điển. Vì vậy, bạn có thể cần ít thời gian hơn, viết ít mã hơn, nhưng thêm chi phí phân tích, kiểm tra và xác minh tương tự. Vì vậy, đo lường năng suất bằng SLOC sẽ làm loãng năng suất tăng năng suất, do đó tạo ra sự thiên vị đối với ngôn ngữ được gõ động.
Bất kỳ nghiên cứu để hỗ trợ yêu cầu đó?
Một số nghiên cứu học thuật gần đây tồn tại về chủ đề này. Mặc dù một số người trong số họ nhìn thấy một lợi thế của việc gõ tĩnh, nhưng nói chung, nó bị giới hạn trong một mục đích cụ thể (tài liệu, sử dụng lại mã hoặc tài liệu kém, v.v.). Từ ngữ thận trọng cũng được sử dụng vì IDE hiện đại đã giảm đáng kể các rủi ro liên quan đến gõ động: