Bài giảng Công nghệ phần mềm - Huỳnh Xuân Hiệp - Bài 4: Nhóm làm việc và các công cụ nghề nghiệp
Nội dung:
? Khái quát chung
? Tiếp cận về các nhóm làm việc
? Phân tích giá thành và lợi nhuận
? Đánh giá phần mềm
? Các công cụ CASE
? Các phiên bản phần mềm
phát hiện lỗi, cảm thấy hạnh phúc trong nhóm Khuyết điểm: khó chấp nhận từ phía các nhà quản lý, các lập trình viên lâu năm sẽ cảm thấy khó chịu (nhất là khi đ−ợc các lập trình viên trẻ tuổi giúp phát hiện lỗi !) Huỳnh Xuân Hiệp - CNPM 43 4.4 Tiếp cận về tr−ởng nhóm lập trình cổ điển (classical chief programmer team approach) Th− ký lập trình Tr−ởng nhóm lập trình Lập trình viên hỗ trợ Lập trình viên Lập trình viên Lập trình viên Hình 4.3 Cấu trúc về tr−ởng nhóm lập trình cổ điển Chính thức hóa bởi Mills [Backer, 1972] Các thành viên trong nhóm: tr−ởng nhóm (chief), quản lý tốt, giỏi lập trình, xử lý các công việc khó khăn khác lập trình viên hỗ trợ (back-up programmer), sẵn sàng thay thế tr−ởng nhóm quán xuyến các công việc khi cần th− ký lập trình (secretary), bảo trì th− viện, tài liệu, danh sách mã nguồn, dữ liệu kiểm thử, JCL (job control language) lập trình viên (programmer) Trợ giúp của các chuyên gia luật, tài chính,...trong các vấn đề liên quan b b b c c c Hình 4.2 Các kênh giao tiếp Huỳnh Xuân Hiệp - CNPM 44 4.5 Một số cấu trúc nhóm lập trình hiện đại (structures of modern programming team) Khó tìm đ−ợc tr−ởng nhóm có khả năng tuyệt vời nh− cấu trúc cổ điển Tách tr−ởng nhóm thành 2 cá nhân lãnh đạo (leader) quản lý (manager) Quản lý nhóm Lãnh đạo nhóm Lập trình viên Lập trình viên Lập trình viên Quản lý kỹ thuật Quản lý không kỹ thuật Hình 4.4 Cấu trúc nhóm lập trình hiện đại Huỳnh Xuân Hiệp - CNPM 45 Lãnh đạo dự án Lãnh đạo nhóm Lãnh đạo nhóm Lãnh đạo nhóm Lập trình viên Lập trình viên Lập trình viên Lập trình viên Lập trình viên Lập trình viên Lập trình viên Lập trình viên Quản lý kỹ thuật Hình 4.5 Cấu trúc tổ chức quản lý kỹ thuật cho các dự án lớn Lãnh đạo dự án Lãnh đạo nhóm Lãnh đạo nhóm Lãnh đạo nhóm Lập trình viên Lập trình viên Lập trình viên Lập trình viên Lập trình viên Lập trình viên Lập trình viên Lập trình viên Quản lý kỹ thuật Hình 4.6 Phiên bản của Hình 4.5 với việc phi tập trung hóa các quyết định và các kênh giao tiếp kỹ thuật Huỳnh Xuân Hiệp - CNPM 46 4.6 Các nhóm làm việc dạng đồng bộ hoá và ổn định (synchronize-and-stabilize teams) Do Microsoft sử dụng [Cusamano và Selby, 1997] VD: Windows95 có: ≥ 11 triệu LOCs, ≥ 200 lập trình và kiểm thử viên Cứ mỗi 3-4 b−ớc xây dựng đ−ợc thực hiện song song bởi nhiều nhóm nhỏ Tổ chức của một nhóm nhỏ: 1 quản lý ch−ơng trình 3-8 nhà phát triển 3-8 kiểm thử viên (t−ơng ứng 1-1 với số l−ợng nhà phát triển) Công việc của một nhóm nhỏ: đ−ợc cung cấp tài liệu đặc tả cho toàn bộ công việc của nhóm môi thành viên trong nhóm đ−ợc tự do thiết kế và cài đặt phần làm việc của mình Ưu điểm: các lập trình viên luôn sáng tạo và đổi mới, h−ớng cùng mục đích Khuyết điểm: phải tôn trọng triệt để thời gian đ−a mã nguồn vào cơ sở dữ liệu của sản phẩm để đồng bộ hóa Huỳnh Xuân Hiệp - CNPM 47 4.7 So sánh các tiếp cận tổ chức nhóm làm việc (comparison of approaches to team organization) Tổ chức nhóm làm việc Điểm mạnh Điểm yếu Các nhóm dân chủ Chất l−ợng mã lệnh cao vì thái độ tích cực dò tìm lỗi Đặc biệt tốt với những vấn đề phức tạp Không thể gánh vác thêm công việc Tr−ởng nhóm lập trình cổ điển Thành công chính trong dự án báo NewYork Times Không thực tế Tr−ởng nhóm lập trình có bổ sung Nhiều thành công Không có những thành công so sánh đựơc với dự án NewYork Times Nhóm lập trình hiện đại Quản lý nhóm/lãnh đạo nhóm xoá đi sự cần thiết của tr−ởng nhóm lập trình Co giãn đ−ợc Hỗ trợ phi tập trung khi cần Khó khăn sẽ nảy sinh nếu không có sự phác họa rõ ràng trách nhiệm giữa quản lý và lãnh đạo nhóm Hình 4.7 So sánh các cách tiếp cận Huỳnh Xuân Hiệp - CNPM 48 4.8 Làm mịn dần (stepwise refinement) Định nghĩa: trì hoãn các quyết định chi tiết càng lâu càng tốt nhằm có thể tập trung vào những vấn đề trọng tâm nhất Luật Miller [Miller, 1956], con ng−ời chỉ có thể tập trung cùng một lúc tối đa là 2-7 mức thông tin (quanta of information) Thuật ngữ lμm mịn dần đ−ợc Wirth giới thiệu đầu tiên [Wirth, 1971] Xét ví dụ sau: Bài toán: Thiết kế một sản phẩm dãy các cập nhật tập tin với dữ liệu gồm có tên, địa chỉ khách thuê bao của một tờ báo tháng, Tuổi trẻ chủ nhật. - có 3 dạng giao dịch: thêm, sửa đổi và xóa với các mã t−ơng ứng 1-2-3. - các giao dịch đ−ợc sắp xếp theo thứ tự từ điển của tên thuê bao; nếu có nhiều giao dịch trên cùng một tên thuê bao, các giao dịch sẽ đ−ợc thực hiện theo thứ tự sau: thêm, sửa đổi và xóa. Hai tập tin đầu vào: - chứa dữ liệu về các thuê bao - chứa các giao dịch Ba tập tin đầu ra: - chứa dữ liệu mới về các thuê bao - báo cáo về các ngoại lệ (exception) - tổng kết và thông báo kết thúc công việc Huỳnh Xuân Hiệp - CNPM 49 Kiểu giao dịch Tên Địa chỉ 3 Bình 1 Hùng 18/09 đ−ờng 30/4, Tp.Cần Thơ 2 Sanh 67 đ−ờng Trần H−ng Đạo, TP.HCM 3 Sanh 1 Toàn 88 đ−ờng Đại Cồ Việt, Hànội Hình 4.8 Các mẩu tin giao dịch Cập nhật tập tin dữ liệu Đầu vào Xử lý Đầu ra Hình 4.10 B−ớc thiết kế mịn thứ nhất Tập tin giao dịch Tập tin dữ liệu cũ Tập tin dữ liệu mới 3 Bình Anh Anh 1 Hùng Bình Hùng 2 Sanh Khoa Khoa 3 Sanh Sanh Toàn 1 Việt Toàn Tùng Tùng Báo cáo ngoại lệ Toàn Hình 4.11 Các tập tin giao dịch, dữ liệu cũ, dữ liệu mới và báo cáo ngoại lệ Cập nhật tập tin dữ liệu Tập tin giao dịch Tập tin dữ liệu mới Báo cáo ngoại lệ Tập tin dữ liệu cũ Hình 4.9 Chuỗi các cập nhật tập tin dữ liệu Tổng kết và thông báo kết thúc Huỳnh Xuân Hiệp - CNPM 50 Lỗi Cập nhật tập tin dữ liệu Đầu vào Đầu ra Hình 4.12 Làm mịn lần thứ hai So sánh: khoá của mẫu tin giao dịch, khóa của mẩu tin dữ liệu A Kiểm thử kiểu giao dịch Kiểm thử kiểu giao dịch Ghi vào tập tin dữ liệu mới Lỗi Lỗi Thực hiện xen Thực hiện xóa Thực hiện sửa đổi THEM XOASUADOI THEM XOASUADOI AA A A = > < Huỳnh Xuân Hiệp - CNPM 51 = THEM XOASUADOI Hình 4.13 Làm mịn dần lần thứ ba Kiểm thử kiểu giao dịch Lỗi Lỗi Ghi tập tin dữ liệu mới A Cập nhật tập tin dữ liệu Đọc mẩu tin từ tập tin dữ liệu cũ, đọc mẩu tin của tập tin giao dịch Ghi thông báo kết thúc công việc So sánh: khoá của mẫu tin giao dịch, khóa của mẩu tin dữ liệu A > Đọc mảu tin từ tập tin dữ liệu cũ A Ghi mẩu tin lên tập tin dữ liệu mới Đọc tập tin giao dịch < Kiểm thử kiểu giao dịch Ghi tập tin dữ liệu mới THEM XOASUADOI A Lỗi Đọc tập tin giao dịch Huỳnh Xuân Hiệp - CNPM 52 4.9 Phân tích giá thành và lợi nhuận (cost-benefit analysis) Ước tính giá thành và lợi nhuận trong t−ơng lai Một số vấn đề quan tâm: sự thay đổi trị giá của tiền [Yourdon, 1989] giá thành phần cứng, phần mềm tiền thuê chuyên gia công nghệ phần mềm tính giá trị sản phẩm nh− thế nào ? ... Một số h−ớng giải pháp: tính theo mệnh giá của đồng tiền mạnh sử dụng chiến l−ợc thích hợp để đánh giá ... Huỳnh Xuân Hiệp - CNPM 53 4.10 Đánh giá phần mềm (software metrics) Còn gọi là đo (mesurement) phần mềm Tiến trình đánh giá (process metrics), quá trình tiến hành đo phần mềm Đánh giá sản phẩm (product metrics) Nên đánh giá theo từng giai đoạn Có nhiều ph−ơng pháp đánh giá, nhìn chung có 5 yếu tố cơ bản sau: kích th−ớc (size) [LOC,...] giá thành (cost) [đơn vị tiền tệ] thời gian thực hiện (duration) [tháng] nhân lực (effort) [ng−ời-tháng] chất l−ợng (quality) [số l−ợng lỗi phát hiện đ−ợc] Huỳnh Xuân Hiệp - CNPM 54 4.11 Phân loại công cụ CASE (taxonomy of CASE) Đơn giản nhất là công cụ phần mềm (software tool), trợ giúp một mặt nào đó trong sản xuất phần mềm upperCASE hay front-end: trợ giúp trong các giai đoạn đầu tiên nh− phân tích yêu cầu, đặc tả và thiết kế lowerCASE hay back-end : trợ giúp trong các giai đoạn cuối nh− cài đặt, tích hợp và bảo trì Workbench : công cụ thể hiện bằng đồ họa với từ điển dữ liệu, kiểm chứng tính chắc chắn, sinh báo cáo, sinh màn hình cho các giai đoạn đặc tả và thiết kế. VD: PowerBuilder, Software through Pictures, System Architect,... hỗ trợ 1 hoặc 2 hoạt động (ativities) hoạt động bao gồm nhiều công việc (task). VD: hoạt động mã hóa có các công việc: viết, nối kết, kiểm thử và dò lỗi hỗ trợ định khung nhanh Môi tr−ờng (CASE environment): hỗ trợ đầy đủ hoặc một phần lớn tiến trình phần mềm [Fuggetta, 1993] Huỳnh Xuân Hiệp - CNPM 55 Từ điển dữ liệu (data dictionary): danh sách các định nghĩa dữ liệu có trong sản phẩm kiểm chứng tính chắc chắn (consistency checker): phản ánh các mục trong đặc tả với thiết kế, trong thiết kế với cài đặt,... sinh báo cáo (report generator): tạo các mã lệnh cho các báo cáo sinh màn hình (screen generator): tạo mã lệnh cho các màn hình Điều khiển cấu hình (configuration control) VD: khi gặp lỗi, xác định chính xác phiên bản nào của sản phẩm bị lỗi Phân tích yêu cầu Phân tích yêu cầu Phân tích yêu cầu Đặc tả Đặc tả Đặc tả Thiết kế Thiết kế Thiết kế Cài đặt Cài đặt Cài đặt Tích hợp Tích hợp Tích hợp Bảo trì Bảo trì Bảo trì (a) Công cụ (b) Workbench (c) Môi tr−ờng Hình 4.14 Giới thiệu công cụ, workbench và môi tr−ờng Huỳnh Xuân Hiệp - CNPM 56 4.12 Các phiên bản phần mềm (software versions) Một phiên bản mới của phần mềm sẽ ra đời mỗi khi bảo trì sản phẩm ! Phiên bản đã sửa chữa (revisions): là phiên bản mới (new version) sau khi đã đ−ợc hiệu chỉnh một lỗi. Gọi phiên bản đã sửa chữa tr−ớc là n thì phiên bản đã sửa chữa sau sẽ là n+1 Phiên bản khác nhau (variations) hai trình điều khiển máy in: in kim, in lade,... sản phẩm đ−ợc cài đặt trên hai hệ điều hành hay hai loại phần cứng khác nhau,... (a) (b) Hình 4.16 Các dạng phiên bản khác nhau (a) revisions (b) variations
File đính kèm:
- Bài giảng Công nghệ phần mềm - Huỳnh Xuân Hiệp - Bài 4 Nhóm làm việc và các công cụ nghề nghiệp.pdf