3.1.1 Tại sao chúng ta sử dụng quy trình
Một quy trình là một tập các bước đã được định nghĩa để thực hiện một công việc. Mỗi bước hay mỗi pha trong quy trình đều có những tiêu chuẩn đầu vào phải thoả trước khi bắt đầu pha. Tương tự như vậy, mỗi pha cũng có những tiêu chuẩn đầu ra cần được thỏa mãn trước khi hoàn tất pha. Các bước trong quy trình khi đó định nghĩa các nhiệm vụ và cách thực hiện chúng. Thiết kế và quản lý quy trình thì quan trọng trong công nghệ phần mềm bởi vì chất lượng một qui trình của kỹ sư sẽ phần lớn xác định được chất lượng và tính hiệu quả công việc của kỹ sư này. Mục đích của quy trình cá nhân được định nghĩa ở đây là để giúp bạn là một kỹ sư phần mềm hiệu quả hơn.
PSP là một “bộ khung” giúp cho các kỹ sư phần mềm đánh giá và cải thiện cách thức họ làm việc. Hai mục tiêu của PSP là giúp cho bạn phát triển các chương trình và chỉ ra cho bạn việc sử dụng quy trình có thể cải thiện cách làm việc của bạn như thế nào. Về sau, khi bạn phát triển các chương trình lớn hơn và phức tạp hơn, bạn có thể mở rộng PSP để giúp bạn thực hiện các công việc đó. Hình 3.1.1 Dòng quy trình PSP Các yêu cầu Kịch bản Tóm tắt kế hoạch dự án Sản phẩm hoàn tất thDựực t án kế cùng các dế hoạch và ữ liệu của quy trình Các bản ghi Lên kế hoạch Thiết kế Hướng dẫn Cài đặt Biên dịch Kiểm thử Tổng kết
Khi một quy trình được mô tảđầy đủ thì nó được gọi là quy trình được định nghĩa. Một quy trình được định nghĩa thường bao gồm các kịch bản (script), biểu mẫu (form), khuôn dạng (template) và các chuẩn (standard). Một kịch bản quy trình là một tập hợp các bước được viết để người sử dụng đi theo khi sử dụng quy trình. Các biểu mẫu khác nhau, như là các bản ghi hay bản tóm tắt, được sử dụng để ghi lại hay lưu giữ những dữ liệu của dự án. Các yếu tố của PSP được thể hiện ở hình trên.
3.1.2 Kịch bản quy trình
Kịch bản ban đầu được thể hiện trong bảng dưới đây. Đây là cấp độđầu tiên trong một số các cấp độ kich bản PSP. Trong các phần tiếp theo, kịch bản này được cải tiến thêm vào một số bước. Các pha của qui trình PSP được mô tả dưới đây và được tóm tắt trong bảng 3.1.1.
Lên kế hoạch: Đầu tiên nắm bắt các yêu cầu của dự án và sau đó hoàn chỉnh những phần Kế hoạch chưa được điền trong bản tóm tắt kế hoạch dự án. Cuối cùng, điền vào thời gian bạn bỏ ra để thực hiện việc lên kế hoạch này trong bản ghi thời gian.
Thiết kế: Vì một thiết kế không cần tỉ mỉ nên hãy suy nghĩ vể logic chương trình trước khi bắt tay vào viết mã. Ghi nhận lại thiết kế trong biểu đồ, mã giả hay theo bất cứ một định dạng được định rõ nào. Cuối pha thiết kế, ghi nhận lại thời gian thiềt kế trong bản ghi thời gian.
Viết mã (code): Thực thi thiết kế bằng cách cài đặt với ngôn ngữ chương trình đã chọn. Sử dụng một định dạng cài đặt nhất quán và theo những tiêu chuẩn được đưa ra. Cuối pha coding, ghi nhận lại thời gian cài đặt trong bản ghi thời gian.
Biên dịch: Biên dịch chương trình và sửa tất cả các lỗi tìm thấy. Tiếp tục biên dịch và chỉnh sửa lỗi cho đến khi chương trình không còn lỗi nữa. Tất cả thời gian trong pha này được tính là thời gian biên dịch, ngay cả khi sửa code cho đúng hay thay đổi thiết kế. Cuối pha biên dịch, ghi nhận lại thời gian biên dịch trong Bản ghi thời gian.
Kiểm thử: Chạy đủ test đểđảm bảo rằng chương trình đáp ứng tất cả các yêu cầu và chạy tất cả các trường hợp test đều không gặp lỗi. Tất cả thời gian dùng trong pha này được tính là thời gian kiểm thử, bao gồm việc sửa mã cho đúng, thay đổi thiết kế và biên dịch lại. Cuối pha, ghi nhận lại thời gian kiểm thử trong Bản ghi thời gian.
Tổng kết (Postmortem): Hoàn tất các mục thực tế trong bản tóm tắt kế hoạch dự án. Bởi vì bạn cần phải ghi nhận lại thời gian tổng kết trước khi bạn thật sự kết thúc pha
để thực hiện tính toán cuối cùng, điền vào thời gian tổng kết ước lượng. Dùng thời gian tổng kết ước lượng này để tính toán thời gian phát triển và tất cả các tính toán khác.
Mục đích Hướng dẫn bạn trong việc phát triển những chương trình nhỏ Tiêu chuẩn đầu
vào
- Mô tả vấn đề
- Bản tóm tắt kế hoạch dự án PSP
- Dữ liệu về thời gian và kích thước thật sự của những chương trình trước
- Bản ghi thời gian
1. Lên kế hoạch - Ghi nhận những mô tả về chức năng của chương trình - Ước tính tổng số, tối đa, tối thiểu dòng lệnh cần thiết. - Xác định Phút/LOC
- Xác định giá trị lớn nhất, nhỏ nhất và tổng cộng thời gian phát triển - Ghi nhận những dữ liệu kế hoạch trong bản tóm tắt kế hoạch dự án. - Ghi lại thời gian lên kế hoạch trong bản ghi thời gian.
2. Thiết kế - Thiết kế chương trình
- Ghi nhận lại thiết kế theo một định dạng chuẩn. - Ghi nhận lại thời gian thiết kế trong bản ghi thời gian 3. Cài đặt - Thực thi thiết kế
- Sử dụng dạng chuẩn để viết code.
- Ghi nhận lại thời gian viết code trong bản ghi thời gian. 4. Biên dịch - Biên dịch chương trình
- Sửa tất cả các lỗi tìm thấy.
- Ghi nhận lại thời gian biên dịch trong bản ghi thời gian. 5. Kiểm thử - Kiểm thử chương trình.
- Sửa tất cả các lỗi tìm thấy.
- Ghi nhận lại thời gian kiểm thử trong bản ghi thời gian.
6. Tổng kết - Hoàn tất bản tóm tắt kế hoạch dự án với thời gian và kích thước thực tế
- Ghi nhận thời gian tổng kết trong bản ghi thời gian. Tiêu chuẩn đầu
ra
- Một chương trình đã được kiểm thử kỹ càng. - Một thiết kếđã được sưu liệu một cách chính xác. - Danh sách các chương trình hoàn tất.
- Bản tóm tắt kế hoạch dự án đã hoàn tất. - Bản ghi thời gian đã hoàn tất.
Bảng 3.1.1 Kịch bản quy trình PSP 3.1.3 Điểm mốc và pha
Bằng việc định nghĩa ra các điểm mốc dự án có thể nhận ra một cách rõ ràng, bạn có thể lên kế hoạch tốt hơn. Lý do mà các dự án này tốt hơn là vì các điểm mốc cung cấp các điểm tham chiếu chính xác đểđánh giá tình trạng của dự án khi bạn đang làm việc.
Qui trình phát triển phần mềm mở rộng ý tưởng điểm mốc từ một vài điểm cho đến toàn bộ các pha của qui trình. Với một qui trình được định nghĩa, mỗi pha đưa ra một kết quả và do đó việc hoàn tất một pha là một điểm mốc có thể đo được. Bằng cách sử dụng
một qui trình đã được định nghĩa, bạn sẽ có nhiều điểm mốc để giúp cho việc lên kế hoạch và theo dõi công việc.
3.1.4 Bản tổng kết các kế hoạch dự án cập nhật
Sinh viên Ngày
Chương trình Chương trình # Người hướng dẫn Ngôn ngữ
Tóm tắt Kế hoạch Thực tế Đến ngày Phút/LOC LOC/Giờ Sai sót/KLOC Hiệu suất A/FR Kích thước chương trình (LOC) Tổng mới và thay đổi Kích thước tối đa Kích thước tối thiểu
Thời gian trong pha (phút) Kế hoạch Thực tế Đến ngày Đến ngày % Lên kế hoạch Thiết kế Cài đặt Xem lại mã Biên dịch Kiểm thử Tổng kết Tổng cộng Kích thước tối đa Kích thước tối thiểu
Sai sót mắc phải Kế hoạch Thực tế Đến ngày Đến ngày % Sai sót/giờ
Lên kế hoạch Thiết kế Cài đặt Xem lại mã Biên dịch Kiểm thử Tổng cộng
Sai sót loại bỏ Kế hoạch Thực tế Đến ngày Đến ngày % Sai sót/giờ
Lên kế hoạch Thiết kế Cài đặt Xem lại mã Biên dịch Kiểm thử Tổng cộng
Bản tổng kết kế hoạch dự án là một trong những biểu mẫu của qui trình PSP. Như trước đây, một số phần của bản tổng kết kế hoạch dự án được tô đậm. Các phần này lúc này chúng ta có thể lờđi vì chưa sử dụng chúng. Để nhận ra sự thay đổi từ một cấp độ quy trình đến cấp độ kế tiếp, các phần được thêm vào được in nghiêng đậm.
Mục đích Mẫu này ghi nhận các thông tin ước lượng và thực tế của đề án
Đầu trang Nhập các thông tin: - Tên và ngày hiện tại - Tên và mã số chương trình - Tên người hướng dẫn
- Ngôn ngữ sử dụng để lập trình
Tóm tắt
Phút/LOC Trước khi phát triển:
- Nhập giá trị Phút/LOC dự kiến cho đề án. Sử dụng tốc độ Đến ngày từ
chương trình gần nhất trong bản ghi công việc hay bản tổng kết kế hoạch dự án. Sau khi phát triển:
- Chia tổng thời gian phát triển cho độ lớn chương trình thực tế để có chỉ số
Phút/LOC thực tế
- Ví dụ, nếu dự án phát triển mất 196 phút và gồm 29 LOC, chỉ số Phút/LOC sẽ
là 196/29=6.76 LOC/Giờ Trước khi phát triển:
- Tính LOC/Giờ dự kiến bằng cách lấy 60 chia cho Phút/LOC dự kiến Sau khi phát triển:
- Để tính LOC/Giờ thực tế, lấy 60 chia cho Phút/LOC thực tế
Ví dụ: với chỉ số Phút/LOC thực tế là 6.76, chỉ số LOC/Giờ thực tế là 60/6.76=8.88
Độ lớn chương trình (LOC)
Trước khi phát triển:
- Nhập giá trị Tổng cộng, Tối đa và tối thiểu của LOC Mới & Thay đổi Sau khi phát triển:
- Đếm và nhập giá trị LOC Mới & Thay đổi thực tế.
- Với Đến ngày, cộng thêm LOC Mới và Thay đổi thực sự với LOC mới và Thay đổi Đến ngày của chương trình trước đó.
Thời gian bỏ ra ở từng giai đoạn
Kế hoạch Đối với Tổng thời gian phát triển (Total Development time), nhân LOC Mới & Thay đổi với Phút/LOC
Đối với Thời gian tối đa, nhân độ lớn tối đa (Maximum size) với Phút/LOC.
Đối với Thời gian tối thiểu, nhân độ lớn tối thiểu (Minimum size) với Phút/LOC.
Từ bản tổng kết kế hoạch dự án của chương trình gần nhất, tìm giá trịĐến ngày % cho mỗi pha.
Sử dụng Đến ngày % từ chương trình trước đó, tính toán thời gian kế hoạch cho mỗi pha.
Thực tế Sau khi hoàn tất, nhập thời gian thực tế tính theo phút trong mỗi pha phát trỉển. Lấy dữ liệu này từ Bản ghi nhận thời gian
Đến ngày Với mỗi pha, điền vào tổng thời gian thực tế và thời gian Đến ngày từ chương trình gần nhất.
Đến ngày % Với mỗi pha, điền vào (thời gian Đến ngày * 100) / Tổng thời gian Đến ngày.
Phần Thời gian trong Pha của bản tổng kết kế hoạch dự án mới có một dòng cho mỗi pha của quy trình. Dòng này chứa thời gian kế hoạch và thực tế cho mỗi pha. Trong pha lên kế hoạch, điền vào tất cả các dữ liệu kế hoạch trong biểu mẫu này. Trong pha tổng kết, điền vào thời gian thực tế. Khi ghi nhận lại thời gian trong bản ghi thời gian, ghi chú vào phần chú thích bạn đang ở pha quy trình nào. Sau đó, trong khi tổng kết, điền các thời gian này vào Thời gian Thực tế trong cột Pha cho mỗi pha.
Trước khi bắt đầu một dự án, hoàn tất phần Kế hoạch của biểu mẫu tổng kết kế hoạch dự án nhưở phần 2.9.2. Điều khác biệt duy nhất bây giờ là bạn cần phải ước lượng thời gian bỏ ra trong mỗi pha. Cách làm là phân phối tổng thời gian phát triển cho mỗi pha theo tỉ lệ mà bạn đã bỏ ra trong các dự án trước đây. Lần đầu bạn sử dụng cấp độ PSP này, bạn sẽ không có dữ liệu thực tếđể làm điều này nên bạn phải đoán. Tuy nhiên, với các dự án tiếp theo, bạn có thể sử dụng dữ liệu từ các dự án trước này đểước lượng thời gian mỗi pha cho dự án mới. Đây là lý do sử dụng giá trịĐến ngày % trong bản tổng kết kế hoạch dự án.
Cột Đến ngày và Đến ngày % trong bản tổng kết kế hoạch dự án đưa ra một cách đơn giản để tính phần trăm phân phối thời gian phát triển cho mỗi pha. Cột Đến ngày chứa tổng thời gian bỏ ra trong mỗi pha cho tất cả các chương trình đã hoàn tất. Cột Đến ngày % chứa phần trăm phân phối của thời gian ở cột Đến ngày (Ví dụ trong phần 3.1.6 sẽ chỉ ra cách tính toán mục Đến ngày và Đến ngày %).
3.1.5 Một ví dụ về lên kế hoạch
Bảng 3.1.4 cho thấy sinh viên X hoàn tất một phần của biểu mẫu tổng kết kế hoạch cho chương trình 9. Sinh viên này sử dụng dữ liệu từ bản tổng kết kế hoạch dự án cho chương trình 8 ở bảng 3.1.5. Các mục kế hoạch trong bảng 3.1.4 được điền như sau:
- Phút/LOC. Khi lên kế hoạch cho chương trình 9, hãy xem Phút/LOC thật sự của chương trình trước, nghĩa là từ chương trình 8 ở bảng 3.1.5, và ta có được tốc dộ là 7.21 Phút/LOC. Sau này, bạn sẽ không sử dụng những dữ liệu này nữa mà bạn sẽ sử dụng tốc dộ trung bình của tất cả các chương trình được phát triển cho tới hiện tại (hay còn gọi là tốc độĐến ngày, sẽđược thêm vào ở các phần sau).
- LOC/giờ. Sinh viên X tính ra là 60/7.21 = 8.32
- Kích thước chương trình. Sinh viên X ước lượng tổng LOC Mới và Thay đổi của chương trình (N), LOC tối đa và tối thiểu. Trong ví dụ của bảng 3.1.4, các kích
Sinh viên Sinh viên X Ngày 21/10/96 Chương trình Chương trình # 9
Người hướng dẫn Thầy Z Ngôn ngữ Ada
Tóm tắt Kế hoạch Thực tế Đến ngày Phút/LOC 7.21 LOC/Giờ 8.32 Sai sót/KLOC Hiệu suất A/FR Kích thước chương trình (LOC) Tổng mới và thay đổi 23 Kích thước tối đa 31 Kích thước tối thiểu 15
Thời gian trong pha (phút) Kế hoạch Thực tế Đến ngày Đến ngày % Lên kế hoạch 5 Thiết kế 0 Cài đặt 74 Xem lại mã Biên dịch 25 Kiểm thử 52 Tổng kết 10 Tổng cộng 166 Kích thước tối đa 224 Kích thước tối thiểu 108
Sai sót mắc phải Kế hoạch Thực tế Đến ngày Đến ngày % Sai sót/giờ
Lên kế hoạch Thiết kế Cài đặt Xem lại mã Biên dịch Kiểm thử Tổng cộng
Sai sót loại bỏ Kế hoạch Thực tế Đến ngày Đến ngày % Sai sót/giờ
Lên kế hoạch Thiết kế Cài đặt Xem lại mã Biên dịch Kiểm thử Tổng cộng Bảng 3.1.4 Bản tổng kết kế hoạch đề án chương trình 9
- Thời gian trong Pha - Tổng cộng. Sử dụng kích thước ước lượng là 23 LOC và tốc độ 7.21 phút/LOC, thời gian phát triển sẽ là 7.21*23=166 phút.
- Thời gian tối thiểu = Phút/LOC * Kích thước tối thiểu = 7.21*15=108 phút. Sinh viên Sinh viên X Ngày 7/10/96
Chương trình Chương trình # 8
Người hướng dẫn Thầy Z Ngôn ngữ Ada
Tóm tắt Kế hoạch Thực tế Đến ngày Phút/LOC 7.82 7.21 7.21 LOC/Giờ 7.67 8.32 8.32 Sai sót/KLOC Hiệu suất A/FR Kích thước chương trình (LOC) Tổng mới và thay đổi 26 19 19 Kích thước tối đa 36 Kích thước tối thiểu 18
Thời gian trong pha (phút) Kế hoạch Thực tế Đến ngày Đến ngày % Lên kế hoạch 10 4 4 2.9 Thiết kế 19 0 0 0 Cài đặt 118 61 61 44.6 Xem lại mã Biên dịch 12 21 21 15.3 Kiểm thử 29 43 43 31.4