đặt vấn đề tương tự cho một công ty đang kinh doanh phát triển phần mềm cho khách hàng. Mặc dù không có con số năng suất tiêu chuẩn và nó thay đổi rất nhiều, nhưng công bằng mà nói con số năng suất 1000 LOC mỗi người-tháng là khá đáng nể (mặc dù nó có thể thấp tới 100 LOC mỗi người-tháng đối với các hệ thống nhúng). Với năng suất này, một nhóm chuyên gia trong một tổ chức phần mềm sẽ mất 10 người-tháng để xây dựng hệ thống phần mềm này. Tại sao có sự khác biệt về năng suất trong hai kịch bản? Tại sao cùng một sinh viên có thể sản xuất phần mềm với năng suất vài nghìn LỘC mỗi tháng khi còn học đại học lại chỉ sản xuất được khoảng nghìn LỘC mỗi tháng khi làm việc trong một công ty? Tất nhiên, câu trả lời là hai thứ khác nhau đang được xây dựng trong hai kịch bản.
Đầu tiên, một hệ thống sinh viên đang được xây dựng, chủ yếu dành cho mục đích trình diễn và dự kiến sẽ không được sử dụng sau này. Jalote, A Concise Introduction to Software Engineering, DOI: 10.1007/978-1-84800-302-6 1, c Springer-Verlag London Limited 2008 Machine Translated by Google 2 1. Vấn đề phần mềm không được sử dụng, không có gì quan trọng phụ thuộc vào phần mềm và sự hiện diện của lỗi và thiếu chất lượng không phải là mối quan tâm chính. Các vấn đề chất lượng khác như khả năng sử dụng, khả năng bảo trì, tính di động, v.
Mặt khác, một hệ thống phần mềm có sức mạnh công nghiệp được xây dựng để giải quyết một số vấn đề của khách hàng và được tổ chức của khách hàng sử dụng để vận hành một số bộ phận của doanh nghiệp và sự cố của một hệ thống như vậy có thể ảnh hưởng rất lớn về mặt tài chính hoặc tổn thất kinh doanh, sự bất tiện cho người dùng hoặc mất mát tài sản và tính mạng. Do đó, hệ thống phần mềm cần phải có chất lượng cao đối với các thuộc tính như độ tin cậy, khả năng sử dụng, tính di động, v. Nhu cầu về chất lượng cao và để đáp ứng người dùng cuối có tác động lớn đến cách phát triển phần mềm và giá thành của nó. Quy tắc ngón tay cái mà Brooks đưa ra gợi ý rằng phần mềm sức mạnh công nghiệp có thể có giá gấp khoảng 10 lần phần mềm sinh viên [16].
Ngành công nghiệp phần mềm chủ yếu quan tâm đến việc phát triển phần mềm có sức mạnh công nghiệp và lĩnh vực công nghệ phần mềm tập trung vào cách xây dựng các hệ thống như vậy. Đó là, lĩnh vực vấn đề cho công nghệ phần mềm là phần mềm sức mạnh công nghiệp. Trong phần còn lại của cuốn sách, khi chúng tôi sử dụng thuật ngữ phần mềm, chúng tôi muốn nói đến phần mềm sức mạnh công nghiệp. Trong phần còn lại của chương này, chúng ta sẽ học – Chất lượng, chi phí và tiến độ là những lực lượng chính thúc đẩy một (công nghiệp sức mạnh) dự án phần mềm.
– Làm thế nào chi phí và năng suất được xác định và đo lường cho một dự án như vậy, và chất lượng của phần mềm được mô tả và đo lường như thế nào. – Quy mô và sự thay đổi lớn đó là những thuộc tính quan trọng của miền vấn đề và cách tiếp cận giải pháp phải xử lý chúng.1 Chi phí, Lịch trình và Chất lượng Mặc dù nhu cầu về chất lượng cao giúp phân biệt phần mềm sức mạnh công nghiệp với các phần mềm khác, nhưng chi phí và tiến độ là những động lực chính khác cho phần mềm đó. Trong lĩnh vực phần mềm sức mạnh công nghiệp, có ba yếu tố cơ bản đang diễn ra—chi phí, tiến độ và chất lượng. Phần mềm nên được sản xuất với chi phí hợp lý, trong thời gian hợp lý và phải có chất lượng tốt.
Ba tham số này thường thúc đẩy và xác định một dự án phần mềm. Phần mềm sức mạnh công nghiệp rất đắt tiền chủ yếu là do việc phát triển phần mềm cực kỳ tốn nhiều công sức. Để có được ý tưởng về các chi phí liên quan, chúng ta hãy xem xét tình trạng thực hành hiện tại trong ngành. Các dòng mã (LOC) hoặc hàng nghìn dòng mã (KLOC) được phân phối cho đến nay là nhiều nhất Machine Translated by Google 1.1 Chi phí, Lịch trình và Chất lượng 3 phép đo kích thước phần mềm thường được sử dụng trong ngành.
Vì chi phí chính của việc sản xuất phần mềm là nhân lực được tuyển dụng, nên chi phí phát triển phần mềm thường được đo bằng số tháng công sức dành cho người phát triển. Và năng suất thường được đo lường trong ngành theo LOC (hoặc KLOC) mỗi người-tháng. Năng suất trong ngành công nghiệp phần mềm để viết mã mới thường dao động từ vài trăm đến khoảng hơn 1000 LỘC mỗi người-tháng. Tính năng sản xuất này nằm trong toàn bộ chu kỳ phát triển, không chỉ nhiệm vụ viết mã.
Các công ty phần mềm thường tính phí khách hàng mà họ đang phát triển phần mềm từ $3000 - $15.000 mỗi người-tháng. Với năng suất 1000 LOC mỗi người-tháng, điều đó có nghĩa là mỗi dòng mã được phân phối có giá từ 3 đến 15 đô la! Và ngay cả những dự án nhỏ cũng có thể dễ dàng kết thúc với phần mềm 50. Với năng suất này, một dự án phần mềm như vậy sẽ có giá từ 150.000 USD! Lịch trình là một yếu tố quan trọng khác trong nhiều dự án. Xu hướng kinh doanh đang chỉ ra rằng thời gian đưa sản phẩm ra thị trường phải giảm xuống; nghĩa là thời gian chu kỳ từ ý tưởng đến giao hàng phải nhỏ.
Đối với phần mềm, điều này có nghĩa là nó cần được phát triển nhanh hơn và trong thời gian quy định. Thật không may, lịch sử của phần mềm đầy rẫy những trường hợp các dự án về cơ bản bị trễ. Rõ ràng, do đó, việc giảm chi phí và thời gian chu kỳ phát triển phần mềm là mục tiêu trọng tâm của công nghệ phần mềm. Năng suất tính theo đầu ra (KLOC) mỗi người- tháng có thể phản ánh đầy đủ cả mối quan tâm về chi phí và lịch trình.
Nếu năng suất cao hơn, rõ ràng là chi phí tính theo tháng người sẽ thấp hơn (hiện tại công việc tương tự có thể được thực hiện với ít người-tháng hơn). Tương tự, nếu năng suất cao hơn, tiềm năng phát triển phần mềm trong thời gian ngắn hơn sẽ cải thiện—một nhóm có năng suất cao hơn sẽ hoàn thành công việc trong thời gian ngắn hơn so với nhóm cùng quy mô có năng suất thấp hơn. (Dĩ nhiên, thời gian thực tế mà dự án sẽ mất cũng phụ thuộc vào số lượng người được phân bổ cho dự án.) Do đó, việc theo đuổi năng suất cao hơn là động lực cơ bản đằng sau công nghệ phần mềm và là lý do chính để sử dụng các công cụ và phần mềm khác nhau. Bên cạnh chi phí và lịch trình, yếu tố chính khác thúc đẩy kỹ thuật phần mềm là chất lượng.
Ngày nay, chất lượng là một trong những câu thần chú chính và các chiến lược kinh doanh được thiết kế xung quanh nó. Thật không may, một số lượng lớn các trường hợp đã xảy ra liên quan đến tính không đáng tin cậy của phần mềm—phần mềm thường không thực hiện những gì nó phải làm hoặc thực hiện một số việc mà nó không được phép thực hiện. Rõ ràng, phát triển phần mềm chất lượng cao là một mục tiêu cơ bản khác của công nghệ phần mềm. Tuy nhiên, trong khi chi phí nhìn chung đã được hiểu rõ, khái niệm về chất lượng trong bối cảnh phần mềm cần được giải thích thêm.
Tiêu chuẩn quốc tế về chất lượng sản phẩm phần mềm [55] gợi ý rằng Machine Translated by Google 4 1. Vấn đề phần mềm Hình 1.1: Thuộc tính chất lượng phần mềm. chất lượng phần mềm bao gồm sáu thuộc tính chính, như trong Hình 1. Các thuộc tính này có thể được định nghĩa như sau: – Chức năng.
Khả năng cung cấp các chức năng đáp ứng đã nêu và nhu cầu tiềm ẩn khi phần mềm được sử dụng. Khả năng cung cấp dịch vụ không có lỗi. – Khả năng sử dụng. Khả năng được hiểu, được học và được sử dụng.
Khả năng cung cấp hiệu suất phù hợp liên quan đến lượng tài nguyên được sử dụng. – Khả năng bảo trì. Khả năng được sửa đổi cho mục đích tạo ra cor chỉnh sửa, cải tiến hoặc thích ứng. – Tính di động.
Khả năng thích ứng với các môi trường cụ thể khác nhau mà không cần áp dụng các hành động hoặc phương tiện khác với những hành động hoặc phương tiện được cung cấp cho mục đích này trong sản phẩm. Với nhiều khía cạnh về chất lượng, các dự án khác nhau có thể nhấn mạnh các thuộc tính khác nhau và không thể có một con số toàn cầu về chất lượng. Tuy nhiên, mặc dù thực tế là có nhiều thuộc tính chất lượng, độ tin cậy thường được chấp nhận là tiêu chí chất lượng chính. Vì phần mềm không đáng tin cậy là do có lỗi trong phần mềm, một thước đo chất lượng là số lượng lỗi trong phần mềm được phân phối trên mỗi kích thước đơn vị (thường được coi là hàng nghìn dòng mã hoặc KLOC).
Với tiêu chí chất lượng chính này, mục tiêu chất lượng là giảm số lượng lỗi trên mỗi KLOC càng nhiều càng tốt. Các phương pháp hay nhất hiện nay trong công nghệ phần mềm đã có thể giảm mật độ lỗi xuống dưới 1 lỗi trên mỗi KLOC. Để xác định chất lượng của một sản phẩm phần mềm, chúng ta cần xác định số lỗi trong phần mềm đã được chuyển giao. Con số này rõ ràng là không được biết vào thời điểm giao hàng và có thể không bao giờ được biết.
Một cách tiếp cận để đo lường chất lượng là ghi lại các lỗi được tìm thấy trong 6 tháng (hoặc 1 năm) sau khi giao hàng và xác định chất lượng đối với các lỗi này. Điều này có nghĩa là chất lượng của phần mềm được chuyển giao chỉ có thể được xác định sau 6 tháng kể từ ngày chuyển giao. Tuy nhiên, mật độ lỗi cũng có thể được ước tính từ dữ liệu quá khứ của các dự án tương tự—nếu tương tự Machine Translated by Google 1.2 Quy mô và Thay đổi 5 phương pháp tiếp cận đang được sử dụng, thì dự kiến dự án hiện tại sẽ có mật độ lỗi tương tự như các dự án trước đây. Cần phải chỉ ra rằng để sử dụng định nghĩa về chất lượng này, khiếm khuyết là gì phải được xác định rõ ràng.