Tái sử dụng trong công nghệ phần mềm
Trang 1BỘ CÔNG THƯƠNGTRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO BÀI TẬP LỚNMÔN: CÔNG NGHỆ PHẦM MỀM NÂNG CAO
ĐỀ TÀI: TÁI SỬ DỤNG TRONG CÔNG NGHỆ PHẦN MỀM
Giáo viên hướng dẫn: Phùng Đức Hòa
Nhóm sinh viên thực hiện: Nguyễn Khắc Tùng
Nguyễn Thu Ngân Bùi Thị Ngọc Lan Đặng Thị Chinh
Hà nội
Trang 2LỜI NÓI ĐẦU
Với sự phát triển không ngừng của các ngành kinh tế xã hội, yêu cầu đối với sản phẩm và dịch vụ ngày một cao hơn cả về chất lượng cũng như thời gian phát triển Một phần mềm nếu được xây dựng từ đầu có thể có tính
ổn định cũng như tính nhất quán của hệ thống khá cao Nhưng mặt khác, chi phí để phát triển một sản phẩm như vậy thường là rất lớn, điều này dẫn đến
hệ quả là giá thành của sản phẩm khá cao, làm giảm đi tính cạnh tranh của sản phẩm trên thương trường
Thời gian phát triển sản phẩm cũng là một vấn đề quan trọng cần phải xem xét Với sự phát triển chóng mặt của công nghệ, chu kì sống của một sản phẩm dịch vụ ngày một ngắn hơn Yêu cầu chung đối với nhà sản xuất
và cung cấp dịch vụ là phải làm sao để đưa ra sản phẩm dịch vụ càng nhanh càng tốt, đáp ứng kịp thời nhu cầu tiêu dùng của khách hàng Vì vậy việc tiêu tốn nhiều thời gian và công sức để phát triển một sản phẩm từ đầu đến cuối không phải là giải pháp hiệu quả Trong công nghệ phần mềm, tính kế thừa và sử dụng lại mã luôn luôn được các nhà phát triển quan tâm Phát triển phần mềm dựa trên những nền móng có sẵn và sử dụng lại các thành phần đã được xây dựng từ trước sẽ tiết kiệm rất nhiều công sức và thời gian
Một trong những cách tiếp cận tương đối hiệu quả là sử dụng mã nguồn mở Các phần mềm mã nguồn mở hiện nay rất đa dạng Ta chỉ cần lựa chọn những mã nguồn mở thích hợp, tùy biến chúng cho phù hợp với yêu cầu của phần mềm Làm như vậy sẽ tiết kiệm rất nhiều thời gian và công sức cho việc viết mã
Trang 3MỤC LỤC
Giáo viên hướng dẫn: Phùng Đức Hòa 1
Nhóm sinh viên thực hiện: Nguyễn Khắc Tùng 1
Nguyễn Thu Ngân 1
Bùi Thị Ngọc Lan 1
Đặng Thị Chinh 1
Lớp: KHMT1-K1 1
Hà nội 1
LỜI NÓI ĐẦU 2
MỤC LỤC 3
CHƯƠNG I: TỔNG QUAN VỀ TÍNH TÁI SỬ DỤNG TRONG CÔNG NGHỆ PHẦN MỀM 4
I Khái niệm về tính tái sử dụng 4
II Các tài nguyên có thể tái sử dụng 5
III Phân loại tái sử dụng 8
IV Các đặc điểm của tính tái sử dụng 8
CHƯƠNG II: TỔNG QUAN VỀ QUY TRÌNH TÁI SỬ DỤNG PHẦN MỀM 12
I Giới thiệu 12
II Hướng hiệu quả của quy trình tái sử dụng phần mềm 13
CHƯƠNG III: NHỮNG LỢI ÍCH VÀ KHÓ KHĂN TRONG QUÁ TRÌNH TÁI SỬ DỤNG 18
I Những lợi ích từ việc tái sử dụng phần mềm 18
II Những khó khăn trong việc tái sử dụng 19
CHƯƠNG IV: TỔNG KẾT 24
DANH MỤC TÀI LIỆU THAM KHẢO 25
Trang 4CHƯƠNG I: TỔNG QUAN VỀ TÍNH TÁI SỬ DỤNG
TRONG CÔNG NGHỆ PHẦN MỀM
I Khái niệm về tính tái sử dụng
Tồn tại nhiều quan điểm khác nhau về các định nghĩa liên quan đến tái
sử dụng phần mềm
Theo Peter Freeman: tái sử dụng là việc sử dụng bất kỳ thông tin nào
mà người phát triển có thể cần trong quá trình xây dựng phần mềm (Ezran et al., 2002)
Basili và Rombach định nghĩa tái sử dụng phần mềm như việc sử dụng mọi thứ liên quan đến một dự án phần mềm, bao gồm cả tri thức (Basili & Rombach, 1991)
Theo Frakes & Isoda (Frakes & Isoda, 1994): Tái sử dụng phần mềm được định nghĩa là việc sử dụng các tri thức khoa học hay các phần mềm có sẵn để xây dựng hệ thống mới
Theo một nguồn tin chúng tôi tìm được thì tính tái sử dụng được định nghĩa như sau: Trong khoa học máy tính và công nghệ phần mềm, tính tái sử dụng là khả năng một phần nào đó của mã nguồn có thể được sử dụng lại với một chút chỉnh sửa để thêm những tính năng mới Tái sử dụng các module
và các lớp có thể làm giảm thời gian triển khai dự án và nâng cao tính chính xác của chương trình trước khi kiểm thử và sử dụng
Quan điểm của Krueger về tái sử dụng phần mềm sẽ được thông qua Krueger, 1992): "Phần mềm tái sử dụng là một quá trình tạo ra các phần mềm từ các hệ thống phần mềm hiện có chứ không phải là xây dựng các phần mềm mới từ đầu "
Nói chung, hầu hết các quan điểm trên đều đưa ra một khái niệm bao quát về tính tái sử dụng mà chúng tôi tổng hợp như sau: tái sử dụng phần
Trang 5mềm là một quá trình mà nhờ đó một tổ chức xác định một chuỗi các hệ thống thực thi các thủ tục để xác định, trình bày, phân loại, khôi phục và làm thích nghi với phần mềm được tạo ra cho mục đích sử dụng chúng trong các hoạt động phát triển khác Và mục đích của việc tái sử dụng phần mềm đều
là tiết kiệm thời gian và chi phí xây dựng lên các hệ thống mới mà vẫn đảm bảo chất lượng và tính đáng tin cậy
II Các tài nguyên có thể tái sử dụng
Việc đưa ra ý kiến về phạm vi rộng lớn của tính tái sử dụng dựa trên
sự phát triển phần mềm có thể so sanh với các thành phần dựa vào sự phát triển, chúng tôi liệt kê một chuỗi các thành phần mà có thể được xem xét như là các tài nguyên có thể tái sử dụng
1 Các yêu cầu
Những yêu cầu phổ biến là kết quả của một quá trình đòi hỏi nhiều nỗ lực liên quan của các nhà phân tích về các lĩnh vực chuyên môn Họ hệ thống hóa những đặc tính quan trọng Sự tổ chức mà tạo ra nhiều hệ thống trong cùng lĩnh vực có thể đem lại nhiều lợi ích từ việc tái sử dụng các yêu cầu Trong quá trình chuyển tiếp từ các yêu cầu cho tới cấu trúc, phân tích các mô hình và các đặc tính của mô hình có thể được tái sử dụng
2 Kiến trúc
Các kiến trúc miêu tả những xử lý chủ yếu để tổ chức một thành phần của hệ thống Theo ý tưởng đó, sự mô tả các kiến trúc bao gồm những quyết định thiết kế quan trọng và các nhân tố căn bản của chúng Thông thường các kiến trúc là kết quả của việc thảo luận của những nhà thiết kế giàu kinh nghiệm mà biết rất rõ làm thế nào thế nào để có được tính ổn định của một
hệ thống Những kiến trúc như vậy rất có giá trị cho việc xây dựng những hệ thống trong một lĩnh vực đặc biệt, và có thể rất phù hợp cho việc tái sử dụng
Trang 6các tài nguyên trong một chương trình khác Sự có mặt của nhân tố thiết kế
cơ bản là quan trọng để biết liệu có phải một số quyết định thiết kế cần phải được xem xét lại khi một kiến trúc được sử dụng trong bối cảnh khác
3 Thiết kế
Mỗi thiết kế là một đặc tả chi tiết của một hệ thống con hay một phần của một hệ thống con Thiết kế các tài nguyên có thể có những điểm chung hoặc khác nhau từ một linh vực hay ứng dụng Điểm chung phổ biến nhất trong việc thiết kế cấp độ các tài nguyên là mẫu thiết kế Một mẫu thiết kế là một giải pháp chung cho một vấn đề thông thường Các mẫu hiện nay thường chủ yếu là tài liệu trong các cuốn sách (ví dụ Bu+1996) và lưu trữ trên internet (WWW-Pat) Ngày càng có nhiều hỗ trợ cho mô hinh tái sử dụng được tích hợp trong công cụ phát triển phần mềm Một ví dụ điển hình cho việc thiết kế phân cấp tài nguyên là mô hình UML Một mô hình UML
có thể được tái sử dụng như là cơ sở cho việc triển khai trên các nền tảng khác nhau hoặc cho các mẫu thiết kế
4 Sự thực thi
- Mã chương trình là văn bản mà máy tính có thể xử lý Thông thường một số ngôn ngữ lập trình như là C hoặc Java Việc tái sử dụng các mã chương trình có thể thực hiện theo nhiều mô hình và quy mô
Ví dụ: có thể tái sử dụng mã nguồn, macro, script để xây dựng, biên dịch các cấu hình tệp tin, khuôn mẫu, thư viện,…
Mã nguồn có thể được đóng gói với kích cỡ khác nhau, phân luồng từ các phương thức, các lớp và các thuộc tính
Tái sử dụng mã chương trình thường phổ biến bởi vì ngay lập tức nó cung cấp những kết quả rõ ràng (có thể nhìn thấy được) Nên chú ý rằng những đoạn mã này không chỉ có những thuộc tính chức năng mà còn bao
Trang 7gồm những thuộc tính phi chức năng như là sự thực thi.
- Dữ liệu: Các chương trình không chỉ tồn tại dưới dạng mã chương trình mà còn có thể chứa dữ liệu có giá trị Ví dụ trong một hệ thống định tuyến, các dữ liệu quan trọng là tập hợp những đường đi và vị trí GPS của chúng Một hệ thống thông tin bệnh viện duy trì một danh sách có thể được chẩn đoán y tế Một trò chơi máy tính có thể chứa các thiết kế đồ họa (phông chữ, ký tự, cảnh quan) mà có thể được sử dụng trong các trò chơi khác
Việc sử dụng các sản phảm phần mềm như hệ điều hành hay hệ quản trị cơ sở dữ liệu thường không được tái sử dụng Theo quy định, nếu một thành phần không được coi là một phần của thiết kế hệ thống, nó không được coi như đang được tái sử dụng Trong CBSE, sản phẩm phần mềm đôi khi được coi như một thành phần Quy ước này của CBSE được gọi là chi phí phát triển cơ bản
Khi một lập trình viên cần thực hiện một số chức năng, thì người đó tìm kiếm mã nguồn của chức năng đó trong các chương trình hiện có Khi tìm được mã nguồn, nó sẽ được điều chỉnh phù hợp với bối cảnh mới của nó trong chương trình mới Rõ ràng đây là một loại hình tái sử dụng nhưng không phải tất cả các mã được tạo ra từ đầu
5 Đảm bảo chất lượng / Sự xác minh
Các tài nguyên mà có thể tái sử dụng cho việc đảm bảo chất lượng là:
- Bảng liệt kê các danh mục cần kiểm tra
- Kiểm thử: tái sử dụng kịch bản thử nghiệm (ví dụ: Sau khi sửa đổi,
mở rộng hệ thống
Kịch bản thử nghiệm nắm bắt những kiến thức về lỗi điển hình
- Tài liệu mẫu
Trang 8III Phân loại tái sử dụng
Tái sử dụng phần mềm thường có ở hai dạng: đó là tái sử dụng hộp trắng và tái sử dụng hộp đen
+ Tái sử dụng hộp đen tập trung vào việc tích hợp các tài nguyên thành một hệ thống mà không phải thay đổi các tài nguyên gốc
+ Tái sử dụng hộp trắng: các tài nguyên có thể được thay đổi trước khi tích hợp thành hệ thống
Tái sử dụng hộp trắng dễ dàng thực hiện nhưng lợi ích thu được nhỏ hơn tái sử dụng hộp đen bởi vì đòi hỏi sự nỗ lực nhiều hơn để hiểu biết về các tài nguyên và việc xác nhận lại (ví dụ như kiểm thử) những tài nguyên
đã sửa đổi
IV Các đặc điểm của tính tái sử dụng
Khả năng tái sử dụng của các tài nguyên là khác nhau trong những bối cảnh khác nhau Tuy nhiên, có một số các đặc tính chung cơ bản góp phần tạo nên tính tái sử dụng
Tại một khía cạnh nào đó, chúng tôi phân biệt hai khía cạnh của tính tái
sử dụng (được Mili et.at đưa ra):
Reusability = Usability + Usefulness
Tái sử dụng = Tính có thể dùng được + Tính hữu ích
1 Usability (Tính có thể dùng được)
Usability là mức độ mà một tài nguyên ‘dễ dàng’ sử dụng trong một số lượng lớn các trường hợp Usability được hiểu là không phụ thuộc vào chức năng của các thành phần Các đặc điểm con của Usability được trình bày như hình 1 Tính hiểu được là sự nỗ lực cần thiết để hiểu được những gì mà một thành phần thực hiện Tính hiểu được phụ thuộc vào quy mô và độ phức tạp của thành phần Như vậy, một thành phần cũng có thể được hiểu nhanh hơn
Trang 9nếu có tài liệu hướng dẫn được đưa ra cùng với thành phần Một thành phần mà nắm bắt được một khái niệm đơn thì hiểu nhanh hơn một thành phần mà có nhiều khái niệm trừu tượng Việc triển khai dễ dàng quyết định một thành phần
có thể được cài đặt trong môi trường hay không Việc gộp một thành phần có thể được giúp ích lớn trong việc cài đặt nó Trong Windows các thành phần có thể được gói trong một chương trình cài đặt Chương trình này sẽ lưu trữ các tệp tin một cách cẩn thận trong những vị trí và thiết lập cấu hình các tham số một cách thích hợp Việc tuân theo các tiêu chuẩn có thể đơn giản hóa trong quá trình xác minh một thành phần Tính di chuyển được cũng là một đặc điểm được hiểu theo nghĩa là làm giảm độ phức tạp cho việc sử dụng một thành phần trên các nền tảng khác
Hình 1: Các đặc điểm của tính có thể dùng được
Usability
Độ phức tạp Tính mạch lạc Tài liệu hướng dẫn Tính hiểu được
Tuân thủ các tiêu chuẩn
Dễ dàng trong việc triển khai
…
Tính di chuyển được/ môi trường
Các công cụ (SDE, trình biên dịch, …)
Nền tảng( Hệ điều hành, …)
Trang 102 Usefulness (Tính hữu ích)
Usefulness là ‘tần số’ của sự thích hợp cho việc sử dụng Usefulness phụ thuộc vào các chức năng, tính phổ biến và chất lượng của một phần mềm Tính phổ biến của một thành phần có thể ở mức cao nếu nó được xây dựng theo nhiều cách Tuy nhiên, điều này phải được phù hợp với độ phức tạp của Usability Có rất nhiều khía cạnh về chất lượng của một thành phần nhưng không phải là tất cả các đặc điểm mà đã xác định bằng tiêu chuẩn về chất lượng phần mềm cũng có thể được áp dụng cho các thành phần riêng biệt, như tính hiệu quả và độ tin cậy Usefulness cũng bị tác động bởi vấn đề kinh tế như chi phí mua sản phẩm và bảo trì Hình 2 hiển thị các đặc điểm cho Usefulness
Tính chính xác
Tính hiệu quả Usefulness
Trang 12CHƯƠNG II: TỔNG QUAN VỀ QUY TRÌNH TÁI SỬ DỤNG
PHẦN MỀM
I Giới thiệu
Một quy trình là một tập hợp các thao tác có liên quan chủ yếu tới một sản phẩm (theo Ezran et al 2002)
Các quy trình rất quan trọng và cần thiết để xác định làm thế nào một
tổ chức thi hành các hoạt động, và làm thế nào để mọi người thực hiện và tương tác để đạt được các mục tiêu đó Thông thường, các quy trình phải được xác định để đảm bảo độ hiệu quả, tính tái sử dụng và tính đồng nhất
Các quy trình phần mềm cung cấp tất cả các thao tác cần thiết để sản xuất và quản lý phần mềm, trong khi các quy trình tái sử dụng là những tập hợp thao tác con cần thiết để phát triển và tái sử dụng các tài nguyên
Các quy trình tái sử dụng phần mềm đã chỉ ra rằng một cách hiệu quả
để có được những lợi ích của việc tái sử dụng phần mềm là thông qua một quy trình tái sử dụng Một quy trình có thể được sử dụng để nắm bắt các phương pháp hay nhất để giải quyết khi gặp một vấn đề Việc thực hiện các quy trình cũng cho phép thực hiện được công việc hiệu quả nhất
Một quy trình tái sử dụng phần mềm, bên cạnh việc trình bày các vấn
đề liên quan tới mặt không thuộc kỹ thuật, phải miêu tả hai hoạt động chủ yếu đó là: phát triển để dùng lại được và phát triển cùng với tái sử dụng Trong tài liệu, một số nghiên cứu đã tìm ra các cách hiệu quả để phát triển phần mềm có thể dùng lại được Những công việc này tập trung vào hai mặt:
kỹ thuật tên miền và hiện nay là dòng các sản phẩm
1 Quy trình kỹ thuật tên miền
Kỹ thuật tên miền là hoạt động tập hợp, tổ chức và lưu trữ qua những kinh nghiệm trong việc xây dựng hệ thống hoặc các phần của hệ thống trong
Trang 13lĩnh vực cụ thể dưới dạng các tài nguyên có thể dùng lại được, cũng như cung cấp một cách thức phù hợp cho việc tái sử dụng các tài nguyên khi xây dựng các hệ thống mới (Czarnecki & Eisenecker, 2000)
Trong số những công trình xây dựng đầu những năm 80 và 90 như (Neighbors, 1980), (STARS, 1993), (Simos et al 1996), (Jacobson et al, 1997), (Griss et al, 1998), (Kang et al, 1998), một nỗ lực đặc biệt là đưa vào quy trình kỹ thuật khi phát triển phần mềm có thể dùng lại được
2 Quy trình dòng sản phẩm
Cho tới năm 1998, quy trình tái sử dụng phần mềm chỉ liên quan tới vấn đề kỹ thuật Tuy nhiên, cũng trong khoảng thời gian này, một khuynh hướng mới đã bắt đầu được khai thác: lĩnh vực dòng sản phẩm phần mềm Các dòng sản phẩm phần mềm bắt đầu được xem như là một trong những hứa hẹn cho hiệu quả của sự phát triển phần mềm Tuy nhiên, cho tới cuối những năm 90 có một số nguyên tắc sẵn có hoặc các phương pháp để phát triển và triển khai các dòng sản phầm ngoài phương pháp kỹ thuật hiện nay
II Hướng hiệu quả của quy trình tái sử dụng phần mềm
Hiện nay, quy trình tái sử dụng phần mềm liên quan tới vấn đề dòng sản phẩm phần mềm Tuy nhiên một số câu hỏi quan trọng ban đầu được đề cập trong quy trình kỹ thuật và ngày nay là quy trình dòng sản phẩm thì vẫn còn nhưng không có câu trả lời rõ ràng (Làm thế nào để thực hiện tính hiệu quả của sự phát triển để tái sử dụng? Làm thế nào để giải quyết sự thiếu hụt giữa các bản phân tích, thiết kế và thực thi trong quy trình tái sử dụng? Làm cách nào để hoàn tất sự phát triển với tái sử dụng kết hợp với sự phát triển
để tái sử dụng?)