BỘ CÔNG THƯƠNG
TRƯỜ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ỚN
MÔ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
Lớp:
KHMT1-K1
Hà nội
Page 1
LỜ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ã.
Page 2
MỤ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
Page 3
CHƯƠ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
Page 4
mề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
Page 5
cá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
Page 6
gồ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
Page 7
III. 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
Page 8
nế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.
Độ phức tạp
Tính hiểu được
Tính mạch lạc
Tài liệu hướng dẫn
Tuân thủ các tiêu chuẩn
Usability
Dễ dàng trong việc triển khai
…
.
Đóng gói
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, …)
Hình 1: Các đặc điểm của tính có thể dùng được
Page 9
2. 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.
Cấu hình
Tính phổ biến
…
….
Tính chính xác
Chất lượng
Tính hiệu quả
Usefulness
Độ tin cậy
Mua
Chi phí
Bảo trì
Page 10
Hình 2: Các dặc điểm của tính hữu ích
Page 11
CHƯƠ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
Page 12
lĩ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?)
Page 13
1. Phát triển để tái sử dụng
Thiết kế cho tái sử dụng hộp đen chủ yếu là một vấn đề đặc tả và được
xác định bằng cách tổng quát của sự triển khai thực hiện nó. Thiết kế cho tái
sử dụng hộp trắng chủ yếu được xác định bởi các vấn đề thiết kế như các
module, tính đơn giản và cấu trúc. Hiện nay, thiết kế theo vòng đời không
làm rõ được điều này. Hơn nữa, sự phát triển cho quy trình tái sử dụng hiện
tại gặp rất nhiều thiếu hụt trong sự phân tích, thiết kế và thực thi. Theo
Szyperski (Szyperski, 2002), các tài nguyên được coi như các thành phần, ví
dụ, lúc đầu là tính xác thực tại một cấp độ thực thi và bây giờ nội dung này
phải được tìm thấy ở giai đoạn đầu của sự phát triển vòng đời. Để làm được
điều này, các yếu tố cơ bản của tái sử dụng và các khái niệm nên được áp
dụng thống nhất trong suốt quá trình phát triển và cũng phải nhất quán ở các
giai đoạn sau đó.
2. Phát triển với việc tái sử dụng
Phát triển với hoạt động tái sử dụng cũng rất quan trọng cho tái sử
dụng phần mềm. Các phương pháp để xác định các yêu cầu, trình bày các
cấu trúc cho các sản phẩm hoặc các ứng dụng cụ thể, làm thích nghi và tích
hợp chúng thành code mới cần thiết. Hiện nay, quy trình tái sử dụng đã đưa
ra một số cải tiến theo hướng phân tích này bởi vì chủ yếu liên quan tới việc
phát triển với tái sử dụng
3. Độ đo
Trong bất kỳ hoạt động kỹ thuật nào, độ đo là cần thiết cho tái sử
dụng có hệ thống. Theo tổng quát, các lợi ích tái sử dụng (như cải thiện năng
suất và chất lượng) là một chức năng của việc hoàn thành tái sử dụng. Một
quy trình tái sử dụng phải xác định được đo cái gì, đo ở đâu và khi nào đo.
Page 14
Tuy nhiên, các độ đo thường không chính xác trong các quy trình tái sử
dụng hiện nay.
4. Chi phí
Xem xét tới vấn đề kinh tế là một mặt quan trọng của việc tái sử dụng,
từ sự đầu tư trong tái sử dụng phần mềm phải được hợp lý bởi một số phạm
vi kinh tế. Tuy nhiên, với các sản phẩm quan trọng trong lĩnh vực này như
của Poulin-1997 thì quy trình tái sử dụng hiện nay không xem xét tới mặt
chi phí như ví dụ: cách để ước tính chi phí để phát triển cho việc tái sử dụng
đang xem xét tới quy trình kỹ thuật tên miền hay là quy trình dòng sản
phẩm.
5. Reengineering
Software Reengineering đang được sử dụng để khôi phục lại hệ thống
di sản và cho phép phát triển chúng (Jacbon và Lindstrom, 1991). Nó được
thực hiện chủ yếu để làm giảm bớt chi phí bảo trì và cải thiện tốc độ phát
triển. Tuy nhiên tầm quan trong của reengineering nằm ngoài khía cạnh kỹ
thuật. Hệ thống di sản trình bày nhiều sự hiểu biết được sản xuất và duy trì
bởi một sự tổ chức mà có thể không làm mất nó. Do vậy, reengineering cho
phép kiến thức này được tái sử dụng dưới dạng cấu trúc mã và tài liệu hướng
dẫn.
6. Sự thích nghi
Nhiều tổ chức đang tích cực theo đuổi các quy trình phần mềm để làm
tăng tính cạnh tranh của họ. Thường thì họ sử dụng các độ đo như Mô hình
CMM (Capability Maturity Model) để cấu trúc quy trình của họ cải thiện tốt
hơn. Một phương pháp thường được trích dẫn để đẩy nhanh quá trình cải
thiện trong một tổ chức là để tái tạo một tiêu chuẩn, quy trình tổ chức có thể
tái sử dụng trong các dự án khác. Hollenbach đã định nghĩa phương pháp
Page 15
này như một quy trình có thể tái sử dụng (Hollenbach & Frakes, 1996). Theo
Hollenbach, quy trình tái sử dụng là quy trình sử dụng của một quy trình
được miêu tả trong việc tạo quy trình khác. Điều này phải được rõ ràng với
nhiều sự thực thi của cùng quy trình đối với một dự án.
Tuy nhiên, phương pháp này tồn tại một số vấn đề khi ranh giới để tái
sử dụng các quy trình không được tổ chức. Hơn nữa, vấn đề vẫn còn rất lớn
khi quy trình trong vấn đề này là quy trình tái sử dụng phần mềm. Do đó,
những gì được cần thiết là một quy trình hiệu quả để nắm bắt các nguyên tắc
mà dẫn tới sự thích nghi của một quy trình của sự tổ chức trở thành trung
tâm tái sử dụng.
Chúng tôi tin rằng công việc ban đầu của Hollenbach có thể cung cấp
một số hướng dẫn để xác định khía cạnh của quá trình thích nghi. Tuy nhiên,
chúng tôi thấy rằng quá trình thích nghi của một mô hình RMM (Reuse
Maturity Model: mô hình tái sử dụng chuẩn) với nhiều mức độ tái sử dụng
có thể cung cấp một cái nhìn quan trọng, từ các tổ chức có thể được phân
loại theo các mức độ RMM và quy trình có thể được thích nghi một cách
chính xác hơn.
7. Môi trường tái sử dụng phần mềm
Các công cụ CASE luôn luôn được trợ giúp trong sự phát triển phần
mềm, cung cấp việc cải thiện năng suất và chất lượng phần mềm. Tuy nhiên,
các lợi ích của CASE là rất lớn ngay cả khi thực hiện dưới hình thức tích
hợp các môi trường, với các công cụ cùng với sự đóng góp của chúng thành
các quy trình, hoạt động của người hướng dẫn các kỹ sư phần mềm thông
qua toàn bộ việc phát triển vòng đời. Với tái sử dụng phần mềm, điều này có
thể không khác. Bên cạnh môi trường tái sử dụng phần mềm, các công cụ
còn được sử dụng trong sự phát triển và tái sử dụng các tài nguyên. Có một
Page 16
vài vấn đề cần phải được xem xét bên cạnh môi trường tái sử dụng phần
mềm, đó là:
i. Sự khác nhau giữa phát triển để tái sử dụng và phát triển cùng với
tái sử dụng: Những hoạt động khác nhau này, phải có những công cụ hỗ trợ
khác nhau
ii. Tích hợp các công cụ. Các công cụ của môi trường phải có các mức
độ khác nhau trong sự tích hợp (Ambriola et al, 1997), bao gồm dữ liệu và
việc đưa ra sự tích hợp nhưng chủ yếu là tích hợp các quy trình. Nghĩa là
chúng phải được tập trung vào một quy trình, như trong trường hợp này là
quy trình tái sử dụng
iii. Tính tái sử dụng. Không chỉ mã mà còn các loại tài nguyên có thể
được tái sử dụng, bao gồm các mô hình, các ca kiểm thử, các yêu cầu,…
Page 17
CHƯƠNG III: NHỮNG LỢI ÍCH VÀ KHÓ KHĂN TRONG
QUÁ TRÌNH TÁI SỬ DỤNG
I. Những lợi ích từ việc tái sử dụng phần mềm
Như đã thảo luận trước đó, tái sử dụng phần mềm có một tác động
tích cực lên chất lượng phần mềm, cũng như các chi phí và thời gian phát
triển phần mềm (Sametinger, 1997).
1. Nâng cao chất lượng
Kết quả của việc tái sử dụng phần mềm là cải thiện về chất lượng,
nâng cao năng suất và độ tin cậy phần mềm.
- Chất lượng: Lỗi khi sửa chữa được tích lũy từ lần tái sử dụng này
đến lần tái sử dụng khác. Điều này mang lại chất lượng cao hơn cho các
thành phần tái sử dụng.
- Năng suất: Việc tái sử dụng các thành phần phần mềm mang lại
năng xuất cao là do tiết kiệm được công sức phân tích, thiết kế tiến trình và
những chi phí khác trong quá trình xây dựng phát triển phần mềm.
- Độ tin cậy: Việc sử dụng tốt các thành phần đã được kiểm tra sẽ làm
tăng độ tin cậy của hệ thống phần mềm. Hơn nữa, sử dụng một thành phần
trong các hệ thống khác nhau sẽ làm tăng khả năng phát hiện ra lỗi và làm
tăng độ tin cậy trong thành phần đó.
2. Giảm thiểu những khó khăn trong quá trình xây dựng phát triển
phần mềm
Tái sử dụng phần mềm làm giảm một số công việc rườm rà, không
cần thiết và giảm tối thiểu thời gian phát triển và nhanh chóng đưa sản phẩm
ra thị trường.
- Giảm thiểu các công việc không cần thiết và thời gian phát triển:
Việc phát triển mọi hệ thống từ ban đầu có nghĩa là phát triển nhiều phần
Page 18
không cần thiết như các yêu cầu về kỹ thuật, cấu trúc, … Điều này có thể
tránh được khi các phần sẵn có như là các thành phần có thể tái sử dụng và
có thể được chia sẻ, kết quả là làm giảm thời gian phát triển và chi phí cho
thành phần đó.
- Làm giảm thời gian đưa sản phẩm vào thị trường: Sự thành công hay
thất bại của một sản phẩm phần mềm thường được xác định bằng thời gian
đưa sản phẩm đó ra thị trường. Sử dụng các thành phần có thể tái sử dụng
mang lại kết quả là rút ngắn thời gian đưa sản phẩm vào thị trường.
- Các tài liệu hướng dẫn: Mặc dù các tài liệu hướng dẫn thường rất
quan trọng trong việc duy trì một hệ thống nhưng nó thường không được đề
cập tới. Tái sử dụng các thành phần phần mềm làm giảm một lượng các tài
liệu hướng dẫn cần phải viết nhưng nâng cao tầm quan trọng những gì được
viết. Do vậy, chỉ có toàn bộ cấu trúc của hệ thống và các tài nguyên mới
được phát triển là có tài liệu hướng dẫn.
- Giảm thiểu chi phí bảo trì: Không ít các khiếm khuyết đã được phát
hiện khi kiểm định chất lượng các thành phần đã được sử dụng và tính năng
duy trì của hệ thống.
- Giảm quy mô nhóm: Một số các nhóm phát triển lớn thường gặp
phải việc liên lạc quá tải. Việc tăng gấp đôi quy mô nhóm phát triển không
mang lại kết quả trong việc tăng gấp đôi năng suất sản phẩm. Nếu nhiều
thành phần có thể được tái sử dụng, thì hệ thống phần mềm có thể được phát
triển với các nhóm nhỏ hơn dẫn tới việc liên lạc thuận lợi hơn và năng suất
sẽ cao hơn.
II. Những khó khăn trong việc tái sử dụng
Mặc dù hứa hẹn đem lại những lợi ích, có một số khó khăn tồn tại
trong cách đón nhận kỹ nghệ phần mềm dựa trên tái sử dụng. Tồn tại những
Page 19
trở ngại điển hình sau: tổ chức và quản lý, kinh tế, tâm lý, pháp luật, và
cũng có thể cả công nghệ. Các trở ngại này không được phân chia thực sự
chặt chẽ, nhưng chúng tôi làm theo cấu trúc này để dễ dàng giải thích. Phần
này tóm tắt và bổ sung thu thập bởi Sametinger [Sam97].
1. Những khó khăn về quản lý và tổ chức
+ Thiếu hỗ trợ quản lý
Những nhà quản lý không thật sự thiết tha đầu tư vào việc ứng dụng
tái sử dụng phần mềm. Điều này có thể do thiếu tiền cho các chi phí thanh
toán ban đầu hoặc thiếu nguồn nhân lực (không có nhiều người triển khai
thực hiện các chương trình tái sử dụng / tái sử dụng dựa trên quản lý dự án).
Hoặc thiếu niềm tin vào giá trị tái sử dụng mang lại trong kinh doanh.
+ Thiếu tổ chức ưu đãi
Sản xuất phần mềm cho việc tái sử dụng đòi hỏi nhiều cố gắng hơn so
với sản xuất phần mềm bình thường, vì vậy là tốn kém hơn. Nhà quản lý
thường không thích đầu tư toàn diện vào một chương trình tái sử dụng, vì
những lợi ích của việc tạo ra những tài nguyên có khả năng tái sử dụng
thường được dồn vào những dự án khác không do họ quản lý. Trừ khi một
cá nhân hoặc doanh nghiệp chịu bỏ tiền ra đầu tư và được nhận lại những lợi
ích mỗi khi những tài nguyên chương trình của họ được người khác sử dụng
2. Trở ngại về kinh tế
Khó khăn trong đầu tư: Đâu tư phát triển một phần mềm tái sử dụng
tốn rất nhiều những khoản chi phí ban đấu (ví dụ như cho các tổ chức phát
triển mới các quy trình và các kỹ thuật cơ sở hạ tầng, đào tạo, vv). Những
tiềm năng lợi ích thu được là chỉ sau đó một khoảng thời gian . Để bù lại cho
các nỗ lực phát triển này, cần phải có những quy định về thuế khi sử dụng
những sang chế.
Page 20
3. Những trở ngại về tâm lý
Một tác động tâm lý ảnh hưởng đến đến sự đón nhận công nghệ mới
là hội chứng"Not invented here". Nguyên nhân hội chứng này là do một vài
nhân tố:
- Sự lo ngại vì chưa hiểu rõ: Đưa vào những phương thức , kỹ thuật
mới có thể mang lại nhưng rủi ro trong quá trình phát triển. Một tổ chức cần
xây dựng nên những đánh giá đáng tin cậy về công sức tài chính và thời
gian cần thiết để xây dựng và phát triển phần mềm dựa trên nền tảng tái sử
dụng. Về cơ bản đây là vấn đề về niềm tin
- Những Kỹ sư cảm thấy bị cản trở trong độc lập sáng tạo nếu họ
được khuyến khích tái sử dụng phần mềm mà không phài do chính họ phát
triển . Khả năng làm việc sáng tạo là một yếu tố quan trọng góp phần vào sự
hài long trong công việc của nhân viên
Thiếu ưu đãi:
Nếu việc đóng góp vào các tài nguyên có thể tái sử dụng được coi như
là một phần công việc của các kỹ sư phần mềm, sau đó cần phải có một cơ
chế khuyến khích cho những nỗ lực phát triển của những đơn vị và cá nhân
phát triển phần mềm. Một số lợi ích như làm đơn gian hóa trong công tác
quản lý dự àn hơn là công việc của các kỹ sư phần mềm. Một báo cáo
[PD91] đã đề xuất rằng dộng viên bằng tài chính cho cá nhân kỹ sư giúp họ
vượt qua những khó khăn và cũng là một biện pháp khắc phục hội chứng
“Not invented here”
4. Khó khăn chính trị
Các nhóm hoặc cá nhân có trách nhiệm quản lý những gì đã được
chấp nhận như tài nguyên có khả năng tái sử dụng có toàn quyền quản lý và
sử dụng chúng. Điều này có thể được sử dụng nhằm tạo ra những lợp thế
Page 21
cho một số tập đoàn quản lý chúng và bất lợi cho những tập đoàn khác.
5. Trở ngại pháp lý
Trách nhiệm pháp lý: Các thành phần tái sử dụng được bán mà không
có những ràng buộc trách nhiện gì từ phía người bán. Điều này có nghĩa là
người mua / người tiêu dùng của các thành phần trên có nguy cơ phải trả
thêm những khoản chi phí phát sinh từ những thất bại của các thành phần
6. Khó khăn về kỹ thuật
Trở ngại về kỹ thuật đối với việc tái sử dụng phần mềm bao gồm các
vấn đề liên quan tới tìm kiếm và phục hồi các thành phần
- Khó khăn trong việc tìm kiếm các thành phần có thể tái sử dụng: Để
có thể tái sử dụng các thành phần phần mềm có hiệu quả thì cần phải có
những cách để tìm kiếm và khôi phục chúng. Hơn thế nữa, điều quan trọng
là phải có một kho chứa các thành phần được tổ chức tốt với một số phương
tiện để truy cập vào nó.
- Phần mềm được tìm thấy có thể không được tái sử dụng: Việc dễ
dàng truy cập vào các phần mềm hiện có không nhất thiết phải tái sử dụng
phần mềm. Tái sử dụng các tài nguyên phải được xác định, thiết kế, thực thi
cẩn thận, do đó việc chỉnh sửa và lắp đặt phần mềm có thể đắt hơn là lập
trình các chức năng cần thiết từ ban đầu.
- Kế thừa các thành phần không phù hợp với việc tái sử dụng: Một
trong những phương pháp tái sử dụng phần mềm là sử dụng tính kế thừa
phần mềm. Tuy nhiên, chỉ phục hồi các tài nguyên sẵn có từ hệ thống và cố
gắng tái sử dụng chúng cho những phát triển mới thì không đủ khả năng tái
sử dụng một cách có hệ thống. Việc kiểm tra lại có thể trợ giúp trong việc
trích các thành phần tái sử dụng từ hệ thống kế thừa nhưng những nỗ lực cần
thiết cho sự hiểu biết và khai thác thì nên được xem xét.
Page 22
- Chỉnh sửa: Điều này là hết sức khó khăn để tìm một thành phần hoạt
động một cách chính xác như mong muốn. Theo cách này, việc sửa đổi bổ
sung là rất cần thiết và cần phải có những cách đê xác định hiệu quả của nó
trên các thành phần và các kết quả đã được kiểm tra trước đó.
- Tóm lại vấn đề đặt ra là, rất khó để tìm được những tài nguyên phù
hợp có khả năng giải quyết được những vấn đề của một bài toàn cụ thể. Về
bản chất việc đặc tả về một vấn đề cần phải phù hợp với một đặc tả xử lý cụ
thể. Nói chung, các vấn đề có nhiều mức độ khác nhau có thể được khai thác
trong một giải pháp. Không có một phương thức nào có thể giải quyết được
mọi vấn đề. Hiện đang có cách tiếp cận dựa trên sự phân loại, từ khóa, tiêu
chuẩn kỹ thuật
Page 23
CHƯƠNG IV: TỔNG KẾT
Qua phần trình bày về vấn đề tái sử dụng trong công nghệ phần mềm.
Nhóm chúng tôi đã tìm hiều được những điểm khái quát chủ yếu liên quan
tới vấn đề tái sử dụng. Trong chương 1, dựa trên một số quan điểm được đưa
ra về định nghĩa liên quan đến tái sử dụng, chúng tôi rút ra một khái niệm
bao quát nhất theo ý hiểu là: Tái sử dụng trong công nghệ phần mề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. Bên cạnh đó chúng tôi tìm
hiểu một số vấn đề như: Các tài nguyên có thể tái sử dụng, đặc điểm của tính
tái sử dụng. Chương 2, chúng tôi tìm hiểu các quy trình tái sử dụng mà đề
cập tới hai quy trình (quy trình kỹ thuật tên miền và quy trình dòng sản
phẩm) và hướng hiệu quả của quy trình tái sử dụng phần mềm. Chương 3
chúng tôi trình bày những lợi ích và khó khăn trong quá tình tái sử dụng
Ngoài những vấn đề đã tìm hiểu nêu ở trên, do thời gian có hạn và
kiến thức về bộ môn chưa sâu, cùng với việc tìm hiểu tài liệu bằng tiếng anh
nên trong quá trình đọc hiểu vẫn còn những thiếu sót về thuật ngữ.Vì vậy, đề
tài nhóm chúng tôi tìm hiểu cũng chỉ giới thiệu qua về tính tái sử dụng trong
công nghệ phần mềm nên vẫn còn những phần chưa được hoàn thiện. Qua
phần trình bày của nhóm, chúng tôi rất mong nhận được sự đóng góp ý kiến
của Giảng viên và các bạn sinh viên trong lớp để chúng tôi có thể rút kinh
nghiệm và hoàn thành tốt hơn trong những đề tài tiếp theo.
Xin chân thành cảm ơn !
Page 24
DANH MỤC TÀI LIỆU THAM KHẢO
1. Sortware Reuse của William B.Frakes
(link down: />2. Software Reuse and Component Based Software Engineering
(linkdown: />%20and%20Reuse.pdf )
3. Component Reuse in SortWare Engineering – tác giả Dr. Jeffrey S.
Poulin
(linkdown: />4. Reusability
(linkdown: />5. Bài giảng SoftWare Engineering – tác giả Vũ Đức Thi và Lê Văn
Phùng – Viện công nghệ thông tin.
Page 25