Ngày nay, công nghệ thông tin đang phát triển rất nhanh. Các hệ thống phần
cứng của máy tính đang ngày càng trở nên mạnh mẽ hơn để đáp ứng nhu cầu ngày
càng tăng của người sử dụng. Công nghệ thay đổi nhanh chóng theo từng ngày. Một hệ
thống phần mềm hôm nay có thể là hiện đại nhưng chỉ sau một thời gian ngắn nó đã
trở nên lạc hậu và không sử dụng hết được năng lực to lớn của phần cứng và không
đáp ứng đầy đủ nhu cầu sử dụng của con người. Vậy chúng ta đang gặp phải một số
lượng các hệ thống phần mềm có những đặc trưng này. Một giải pháp được đưa ra, đó
chính là tái kỹ nghệ. Vì vậy đề tài“Tái kỹ nghệ hệ thống phần mềm” được chọn làm
đề tài khóa luận của em. Để bảo trì, nâng cấp một hệ thống phần mềm lạc hậu, trong
điều kiện cho phép có thể sử dụng giải pháp tái kỹ nghệ. Tuy nhiên, tái kỹ nghệ phải đi
đôi với sự trợ giúp của những công cụ mạnh và có một quy trình thích hợp. Khóa luận
trình bày một quy trình tái kỹ nghệ phần mềm với sự trợ giúp của công cụ Rational
Rose. Bằng cách đó ta có thể nâng cấp một phần mềm cũ thành một phần mềm có khả
năng đáp ứng các yêu cầu mới đặt ra và có được kiến trúc tốt, sử dụng hiệu quả nguồn
tài nguyên hiện có, làm thuận lợi cho việc bảo trì tiếp tục sau này. Hơn thế nữa, quá
trình tái kỹ nghệ hệ thống diễn ra một cách nhanh chóng và hiệu quả, đáp ứng được
những thách thức đang đặt ra cho việc phát triển các phần mềm hiện nay.
Trong khóa luận này, những nội dung sau đây sẽ được trình bày:
− Giới thiệu tổng quan về tái kỹ nghệ hệ thống phần mềm cùng và qui trình để thực
hiện tái kỹ nghệ một hệ thống phần mềm.
− Giới thiệu hai công cụ hỗ trợ cho quá trình tái kỹ nghệ trong phạm vi luận văn
này là Rational Rose Enterprise Edition 7.0 và ngôn ngữ mô hình hóa (UML).
− Sau khi đã hiểu về qui trình và cách thức thực hiện qui trình tái kỹ nghệ với các
công cụ hỗ trợ, thực hiện tái kỹ nghệ một ứng dụng nhỏ để áp dụng là chương
trình “Sổ địa chỉ”.
65 trang |
Chia sẻ: nhungnt | Lượt xem: 2421 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Đề tài Tái kỹ nghệ hệ thống phần mềm, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trần Thị Hồng Sim
TÁI KỸ NGHỆ HỆ THỐNG PHẦN MỀM
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công Nghệ Phần Mềm
Cán bộ hướng dẫn: PGS.TS Nguyễn Văn Vỵ
HÀ NỘI - 2010
1
Lời cảm ơn
Lời đầu tiên, em muốn bày tỏ sự chân trọng và biết ơn sâu sắc đối với PGS.TS
Nguyễn Văn Vỵ, giảng viên bộ môn Công Nghệ Phần Mềm, khoa Công Nghệ Thông
Tin, trường Đại học Công Nghệ, Đại học Quốc Gia Hà Nội. Trong suốt quá trình học
tập và thực hiện khóa luận này, thầy đã là người trực tiếp hướng dẫn và đưa ra những
định hướng cho quá trình nghiên cứu. Chính nhờ sự tận tình chỉ bảo, dành rất nhiều
thời gian quí báu của thầy trong suốt quá trình hướng dẫn mà em đã hoàn thành nghiên
cứu khóa luận này.
Em cũng xin gửi lời cảm ơn chân thành đến các thầy giáo, cô giáo là giảng viên
trường Đại học Công Nghệ đã giảng dạy, truyền đạt kiến thức cho em trong suốt bốn
năm học tại trường. Những kiến thức mà các thầy cô đã truyền thụ làm nền tảng cho
em trong công việc sau này và là những kiến thức tiên quyết trong việc nghiên cứu và
tìm hiểu đề tài trong khóa luận.
Và cuối cùng, tôi xin gửi lời cảm ơn đến bạn bè, đồng nghiệp và đặc biệt là gia
đình, những người đã luôn ở bên động viên, giúp đỡ, tạo điều kiện tốt nhất cho tôi
trong suốt quá trình học tập và thực hiện khóa luận.
Hà Nội, tháng 5/2010
Trần Thị Hồng Sim
2
Tóm tắt nội dung
Ngày nay, công nghệ thông tin đang phát triển rất nhanh. Các hệ thống phần
cứng của máy tính đang ngày càng trở nên mạnh mẽ hơn để đáp ứng nhu cầu ngày
càng tăng của người sử dụng. Công nghệ thay đổi nhanh chóng theo từng ngày. Một hệ
thống phần mềm hôm nay có thể là hiện đại nhưng chỉ sau một thời gian ngắn nó đã
trở nên lạc hậu và không sử dụng hết được năng lực to lớn của phần cứng và không
đáp ứng đầy đủ nhu cầu sử dụng của con người. Vậy chúng ta đang gặp phải một số
lượng các hệ thống phần mềm có những đặc trưng này. Một giải pháp được đưa ra, đó
chính là tái kỹ nghệ. Vì vậy đề tài “Tái kỹ nghệ hệ thống phần mềm” được chọn làm
đề tài khóa luận của em. Để bảo trì, nâng cấp một hệ thống phần mềm lạc hậu, trong
điều kiện cho phép có thể sử dụng giải pháp tái kỹ nghệ. Tuy nhiên, tái kỹ nghệ phải đi
đôi với sự trợ giúp của những công cụ mạnh và có một quy trình thích hợp. Khóa luận
trình bày một quy trình tái kỹ nghệ phần mềm với sự trợ giúp của công cụ Rational
Rose. Bằng cách đó ta có thể nâng cấp một phần mềm cũ thành một phần mềm có khả
năng đáp ứng các yêu cầu mới đặt ra và có được kiến trúc tốt, sử dụng hiệu quả nguồn
tài nguyên hiện có, làm thuận lợi cho việc bảo trì tiếp tục sau này. Hơn thế nữa, quá
trình tái kỹ nghệ hệ thống diễn ra một cách nhanh chóng và hiệu quả, đáp ứng được
những thách thức đang đặt ra cho việc phát triển các phần mềm hiện nay..
Trong khóa luận này, những nội dung sau đây sẽ được trình bày:
− Giới thiệu tổng quan về tái kỹ nghệ hệ thống phần mềm cùng và qui trình để thực
hiện tái kỹ nghệ một hệ thống phần mềm.
− Giới thiệu hai công cụ hỗ trợ cho quá trình tái kỹ nghệ trong phạm vi luận văn
này là Rational Rose Enterprise Edition 7.0 và ngôn ngữ mô hình hóa (UML).
− Sau khi đã hiểu về qui trình và cách thức thực hiện qui trình tái kỹ nghệ với các
công cụ hỗ trợ, thực hiện tái kỹ nghệ một ứng dụng nhỏ để áp dụng là chương
trình “Sổ địa chỉ”.
3
Mục lục
Lời cảm ơn 1
Tóm tắt nội dung 2
Mục lục 3
Lời nói đầu 5
Chương 1: Tổng quan về tái kỹ nghệ 7
1.1 Bảo trì hệ thống phần mềm 7
1.2 Tổng quan chung về tái kỹ nghệ 9
1.3 Qui trình chung tái kỹ nghệ phần mềm 14
1.3.1 Dịch mã nguồn..............................................................................................15
1.3.2 Kỹ nghệ ngược ..............................................................................................17
1.3.2.1 Làm lại tài liệu ..........................................................................................19
1.3.2.2 Phục hồi thiết kế.........................................................................................19
1.3.3 Cấu trúc lại hệ thống ....................................................................................20
1.3.4 Module hóa chương trình..............................................................................25
1.3.5. Tái kỹ nghệ dữ liệu.......................................................................................26
1.4 Các công cụ sử dụng cho tái kỹ nghệ 30
1.4.1 Ngôn ngữ UML .............................................................................................30
1.4.2 Hệ thống phần mềm RATIONAl ROSE ..........................................................33
1.4.3 Tái kỹ nghệ hệ thống với kỹ nghệ đảo ngược của Rational Rose....................41
1.5 Những ưu điểm và hạn hế của tái kỹ nghệ 45
1.5.1 Các ưu điểm..................................................................................................45
1.5.2 Các hạn chế ..................................................................................................45
1.6 Kết luận 46
Chương 2: Bài toán về chương trình “Sổ địa chỉ” 47
2.1 Giới thiệu chương trình sổ địa chỉ 47
1.2 Những vấn đề cần cải tiến chương trình 48
Chương 3: Tái kỹ nghệ chương trình sổ địa chỉ 50
4
3.1 Sơ đồ tiến trình thực hiện tái kỹ nghệ 50
3.2 Qui trình thực hiện tái kỹ nghệ chương trình sổ địa chỉ 50
3.2.1 Xây dựng tài liệu và mô hình thiết kế UML ...................................................51
3.2.2 Cấu trúc lại chương trình..............................................................................55
3.2.3 Tái kỹ nghệ dữ liệu........................................................................................58
3.2.4 Xây dựng mã nguồn ......................................................................................60
3.2.5 Hoàn thiện, cài đặt và sử dụng......................................................................60
3.3 Kết quả đạt được và một số đánh giá 60
3.3.1. Liên quan đến chương trình .........................................................................60
3.3.2. Liên quan đến triển khai...............................................................................62
3.3.3. Một số vấn đề tồn tại....................................................................................62
Kết luận 63
Tài liệu tham khảo 64
Tiếng Việt 64
Tiếng Anh 64
5
Lời nói đầu
Ngày nay, chúng ta đang sống trong một kỉ nguyên của công nghệ thông tin. Với
sự bùng nổ của công nghệ thông tin, sự hỗ trợ của máy tính cho các hoạt động của con
người ngày càng trở nên cần thiết hơn bao giờ hết. Để đáp ứng những nhu cầu thiết
yếu này, các phần mềm phục vụ con người ngày càng phổ biến hơn, số lượng lớn hơn
và được nâng cấp để có chất lượng tốt hơn. Tuy nhiên, cùng với xu hướng phát triển
của phần mềm, các hệ thống phần cứng, các chương trình hỗ trợ cũng như các môi
trường phát triển, hay các qui trình nghiệp vụ cũng luôn đổi mới với tốc độ không
ngừng. Ngày hôm nay, một hệ thống có thể là hiện đại, tối tân nhưng đến ngày mai nó
đã trở nên lạc hậu và còn có thể không dùng được nữa. Trước sự thay đổi nhanh chóng
của các công cụ, môi trường hỗ trợ này, các phần mềm cũ có nguy cơ bị bỏ đi. Vậy
phải làm sao để giải quyết vấn đề này khi mà số lượng các phần mềm cũ ngày càng
lớn? Nhiều giải pháp được đưa ra cho việc bảo trì phần mềm.
Bảo trì phần mềm chính là một giai đoạn trong quy trình tiến hóa phần mềm. Đây
là giai đoạn có chi phí tốn kém nhất, như ta đã biết, nó chiếm đến 70% trong tổng chi
phí phát triển phần mềm. Tuy nhiên, nếu chúng ta thực hiện phát triển mới phần mềm
thì chi phí bỏ ra còn lớn hơn rất nhiều. Cho nên một yêu cầu được đặt ra là phải lựa
chọn một phương pháp bảo trì phần mềm sao cho có hiệu quả cao và giảm thiểu các
rủi ro.
Với một chương trình phần mềm đã sử dụng trong thời gian dài, nó có thể gặp
phải các vấn đề như ngôn ngữ lập trình không còn được sử dụng, thiếu các công cụ hỗ
trợ cần thiết, không đáp ứng đủ yêu cầu của người dùng v.v… Vì vậy, để có thể tiếp
tục sử dụng được hệ thống phần mềm, ta thực hiện quá trình bảo trì cần phải có biện
pháp xây dựng, cấu trúc lại những phần chương trình đã trở nên lạc hậu và không dùng
được nữa. Và một phương pháp rất phổ biến và hiệu quả của ngày nay, đó chính là tái
kỹ nghệ lại hệ thống phần mềm.
Tái kỹ nghệ là một phương pháp tiến hóa phần mềm có hiệu quả cao trong khi
chi phí bỏ ra ít hơn nhiều so với việc xây dựng mới phần mềm cũng như so với một số
phương pháp tiến hóa khác. Có được điều này bởi quy trình tái kỹ nghệ được hỗ trợ
bởi các công cụ và phương tiện mới với một quy trình khép kín khá hoàn thiện và đầy
đủ. Một số công cụ hỗ trợ cho việc tái kỹ nghệ phần mềm như ngôn ngữ mô hình hóa
6
thống nhất UML, Rational Software Architecture, Rational Rose v.v… Trong phạm vi
khóa luận tốt nghiệp này, chúng ta sẽ sử dụng hai công cụ hỗ trợ cho việc tái kỹ nghệ
là ngôn ngữ UML và Rational Software Architecture.
Cùng với việc tìm hiểu về quy trình tái kỹ nghệ, để có thể hiểu sâu hơn các bước
thực hiện của quy trình, ta sẽ thực hiện tái kỹ nghệ cho một chương trình đơn giản là:
Sổ địa chỉ.
Cụ thể khóa luận tốt nghiệp này được xây dựng gồm ba chương:
- Chương 1: Trình bày tổng quan về tái kỹ nghệ và phương pháp để tái kỹ nghệ
một hệ thống phần mềm
- Chương 2: Giới thiệu qua về chương trình “Sổ địa chỉ”
- Chương 3: Thực hiện tái kỹ nghệ chương trình “Sổ địa chỉ”, từ đó rút ra những
kết quả đánh giá cho chương trình và những hạn chế còn tồn tại trong nội dung
khóa luận.
Cuối cùng là kết luận và tài liệu tham khảo
7
Chương 1: Tổng quan về tái kỹ nghệ
Tính tái dụng là một đặc trưng quan trọng của các thành phần phần mềm chất
lượng cao. Tính tái dụng ở đây được hiểu là các thành phần của một hệ thống phần
mềm có thể sử dụng lại trong các hệ thống phần mềm khác. Một vấn đề lớn đặt ra là:
phải phát triển phần mềm như thế nào để về sau có thể sử dụng lại nhiều nhất và hiệu
quả nhất.
Nói chung, sau một thời gian sử dụng, các phần mềm cần phải được bảo trì để
đáp ứng các yêu cầu phát sinh của người sử dụng, của công nghệ mới, và sự thay đổi
của các hoạt động nghiệp vụ theo thời gian... đúng theo nghĩa vòng đời của một hệ
thống phần mềm, ta lại bắt đầu các công việc: phân tích, thiết kế, cài đặt, kiểm thử... ở
mức cao hơn. Như vậy, việc tái sử dụng các phần đó được xây dựng trước đây có ý
nghĩa to lớn cho việc tiết kiệm công sức, thời gian, kinh phí...trong hoạt động phát
triển.
Có nhiều cách thực hiện việc bảo trì hệ thống phần mềm và cũng có nhiều công
cụ để thiết kế lại phần mềm. Mỗi công cụ thiết kế lại phần mềm đều có những ưu và
nhược điểm riêng, tuỳ theo hoàn cảnh thực tế mà ta có thể lựa chọn một công cụ sao
cho hiệu quả nhất. Dưới đây sẽ trình bày một số vấn đề về tái kỹ nghệ hệ thống phần
mềm bằng UML (Unified Modeling Language) và công cụ Rational Rose.
1.1 Bảo trì hệ thống phần mềm
Phát triển phần mềm phải trải qua nhiều giai đoạn. Các giai đoạn đó bao gồm:
phân tích yêu cầu, kiến trúc hệ thống, thiết kế, cài đặt, kiểm thử, triển khai phần mềm
và bảo trì. Bảo trì chính là giai đoạn cuối trong vòng đời phát triển phần mềm. Bảo trì
bảo đảm cho hệ thống được tiếp tục hoạt động sau khi thực hiện kiểm thử hay sau khi
đưa hệ thống vào hoạt động trong thực tế. Bảo trì phần mềm bao gồm những sửa đổi
làm hệ thống thích nghi với những yêu cầu thay đổi của người sử dụng, thay đổi dữ
liệu cho phù hợp, gỡ rối, khử bỏ và sửa chữa các sai sót mà trước đây chưa phát hiện
ra...
Ngày nay, việc xây dựng, phát triển cũng như quá trình bảo trì các hệ thống phần
mềm được hỗ trợ nhiều bởi các công cụ, đó là kĩ nghệ phần mềm có máy tính trợ giúp
(CASE). Công nghệ CASE đang phát triển mạnh mẽ, bao gồm các công cụ về: lập kế
hoạch quản lý dự án, các công cụ trợ giúp phân tích và thiết kế, cài đặt hệ thống, tích
8
hợp và kiểm thử, làm bản mẫu …, Ở đây chúng ta sẽ quan tâm tới một số hoạt động
trong quá trình bảo trì phần mềm bằng một số công cụ có sẵn.
Các hoạt động trong bảo trì phần mềm bao gồm:
− Trong quá trình kiểm thử, theo dõi quá trình hoạt động của hệ thống phần mềm,
ta sẽ phát hiện ra tất cả các lỗi, các sai sót tiềm tàng trong hệ thống, tất cả các lỗi
đó sẽ được thông báo cho các chuyên gia phát triển phần mềm để họ cập nhật lại.
Tiến trình đó được gọi là bảo trì sửa chữa.
− Theo thời gian, các khía cạnh xử lý và hệ thống phần cứng thay đổi; môi trường
làm việc như hệ điều hành thay đổi; các thiết bị ngoại vi và các phần tử của hệ
thống được nâng cấp; các yêu cầu của khách hàng cho hệ thống sẽ thay đổi...
Điều đó dẫn tới việc phải thay đổi hệ thống phần mềm sao cho phù hợp với các
yêu cầu thay đổi trên, quá trình đó được gọi là bảo trì thích nghi.
− Khi hệ thống phần mềm thành công và được đưa vào sử dụng, người ta nhận
được các khuyến cáo về khả năng mới, các chức năng cần được bổ sung nâng
cao... Đó là quá trình nâng cấp hệ thống phần mềm cho phù hợp và tiện dụng
hơn, được gọi là bảo trì hoàn thiện.
− Hệ thống cần phải thay đổi để đảm bảo tính tin cậy, an toàn trong tương lai, tạo
cơ sở tốt hơn cho việc nâng cao chất lượng trong tương lai, tiến trình đó được gọi
là bảo trì phòng ngừa, hoạt động này được đặc trưng bởi các kĩ thuật đảo ngược
và tái kĩ nghệ.
Các công cụ bảo trì phần mềm có thể được chia theo các chức năng sau:
− Kĩ nghệ ngược với các công cụ đặc tả: nhận chương trình gốc làm đầu vào và
sinh ra các mô hình phân tích và thiết kế có cấu trúc đồ thị, các thông tin thiết kế
khác.
− Công cụ tái cấu trúc và phân tích mã: phân tích cú pháp chương trình, sinh ra đồ
thị luồng điều khiển, và sinh tự động một chương trình có cấu trúc.
− Công cụ tái kĩ nghệ hệ thống trực tuyến: dùng để thay đổi các hệ thống cơ sở dữ
liệu trực tuyến.
Bảo trì là giai đoạn cuối cùng trong tiến trình kĩ nghệ phần mềm, nó tiêu tốn rất
nhiều thời gian, công sức và kinh phí. Tái kỹ nghệ là công nghệ đặc trưng giúp cho
việc bảo trì các hệ thống phần mềm hiệu quả và nhanh chóng.
9
1.2 Tổng quan chung về tái kỹ nghệ
Bản chất của việc tái kỹ nghệ phần mềm là để cải tiến hoặc biến đổi những phần
mềm đã có để nó có thể hiểu, điều khiển hay sử dụng được bằng một cách khác. Ngày
nay, số lượng các hệ thống được xây dựng từ đầu đang giảm dần, trong khi đó các hệ
thống chúng ta được kế thừa lại ngày càng nhiều. Chức năng của các hệ thống đó vẫn
không đổi nhưng hệ thống phần cứng, các công nghệ, môi trường làm việc thì ngày
một đổi mới. Những hệ thống phần mềm được kế thừa lại đã trở nên lạc hậu, một số
cấu trúc chương trình đã không còn dùng được nữa do đó nhu cầu tái kỹ nghệ phần
mềm được tăng lên đáng kể. Việc tái kỹ nghệ phần mềm trở nên rất quan trọng trong
việc phục hồi và tái sử dụng lại những phần mềm hiện có, làm cho chi phí bảo trì phần
mềm có thể kiểm soát được và tạo ra cơ sở cho việc tiến hóa phần mềm trong tương
lai.
Thuật ngữ “Tái kỹ nghệ” nhanh chóng trở thành một từ được yêu thích đối với
những nhà quản lý và phát triển phần mềm, nhưng nó thực sự có ý nghĩa như thế nào
đối với họ? Về cơ bản thì tái kỹ nghệ là lấy các phần mềm được thừa kế hiện có mà
việc bảo trì đối với chúng là rất đắt, hoặc là những thành phần, kiến trúc của hệ thống
đã không dùng được nữa và làm lại nó bằng những công nghệ phần mềm và phần cứng
hiện thời. Vấn đề khó khăn ở đây là phải có sự hiểu biết về những hệ thống đó.
Thường thì những tài liệu phân tích yêu cầu, tài liệu thiết kế và tài liệu về mã nguồn
của chương trình không còn nữa, hoặc nếu còn thì đã quá lỗi thời. Vì vậy để hiểu các
chức năng không còn sử dụng được một cách rõ ràng là một điều khó khăn. Thường
thì hệ thống cũ vẫn bao gồm cả những chức năng không cần thiết nữa vì vậy những
chức năng này không cần đưa vào hệ thống mới.
Vậy thế nào là tái kỹ nghệ? Chikofsky và Cross đã định nghĩa tái kỹ nghệ là: “
kiểm tra, phân tích, biến đổi hệ thống phần mềm hiện thời để xây dựng lại thành một
hệ thống mới, và bổ sung thêm một số thành phần mới vào trong đó” (Chikofsky
1990). Định nghĩa này rõ ràng tập trung vào làm sáng tỏ đặc trưng của thuật ngữ, các
thay đổi của kết quả phần mềm. Arnold, đã định nghĩa một cách khác về tái kỹ nghệ
là: “bất kỳ hoạt động nào làm cải tiến sự hiểu biết về phần mềm, hoặc là hoạt động cải
tiến phần mềm và thường tăng khả năng bảo trì, khả năng sử dụng lại, khả năng tiến
hóa” (Arnold 1993).
Qui trình tái kỹ nghệ thường là sự kết hợp của nhiều qui trình khác nhau như kỹ
nghệ ngược, làm lại tài liệu, cấu trúc lại chương trình, chuyển đổi và kỹ nghệ xuôi,
dịch hệ thống sang một ngôn ngữ lập trình hiện đại hơn. Mục đích là để có cái nhìn rõ
10
hơn về chương trình hiện thời (đặc tả, thiết kế, thực thi), sau đó tái thực hiện lại để cải
thiện các chức năng, hiệu suất, sự thi hành của hệ thống. Mục tiêu là để duy trì các
chức năng hiện có và chuẩn bị cho các chức năng mới sẽ được thêm vào sau này. Sau
khi sửa đổi, các chức năng chính của phần mềm không thay đổi, và thông thường thì
cấu trúc của chương trình vẫn được giữ nguyên như cũ.
Đứng từ quan điểm kỹ thuật, tái kỹ nghệ phần mềm chỉ là giải pháp thứ hai trong
vấn đề phát triển phần mềm sau lựa chọn giải pháp phát triển mới hệ thống phần mềm.
Nguyên nhân là do cấu trúc phần mềm không được nâng cấp vì thế việc phân phối
những hệ thống có tính tập trung là một việc khó. Nó thường không thể thay đổi triệt
để ngôn ngữ lập trình hệ thống vì hệ thống cũ với ngôn ngữ lập trình thủ tục thì khó có
thể chuyển đổi sang những ngôn ngữ lập trình hướng đối tượng như Java hay C++. Do
đó, những giới hạn cố hữu tồn tại trong hệ thống vẫn sẽ duy trì bởi vì chức năng của
phần mềm không được thay đổi.
Tuy nhiên, đứng từ quan điểm nghiệp vụ, tái kỹ nghệ phần mềm là con đường
duy nhất có thể đảm bảo rằng một hệ thống cũ vẫn có thể tiếp tục phục vụ. Sẽ là quá
đắt và quá rủi ro nếu như chấp nhận một cách tiếp cận khác trong việc phát triển phần
mềm. Để hiểu được những lí do cho vấn đề này, chúng ta sẽ đưa ra một đánh giá sơ bộ
về những vấn đề của hệ thống phần mềm cũ.
Số lượng mã nguồn của một hệ thống cũ là rất lớn. Năm 1990, nó được ước đoán
(Ulrich 1990) là có khoảng 120 tỉ dòng mã nguồn tồn tại. Phần lớn những hệ thống
này được viết bằng COBOL, một ngôn ngữ lập trình thích hợp nhất cho qui trình dữ
liệu nghiệp vụ, hoặc bằng FORTRAN. FORTRAN là một ngôn ngữ lập trình toán học
và khoa học. Những ngôn ngữ này có cấu trúc chương trình rất giới hạn, và trong
trường hợp của FORTRAN, rất giới hạn trong việc hỗ trợ cấu trúc dữ liệu.
Mặc dù nhiều chương trình đã được thay thế, nhưng hầu hết trong số chúng vẫn
đang được sử dụng. Trong khi đó, từ năm 1990 đã có một sự gia tăng rất lớn trong việc
sử dụng máy tính để hỗ trợ qui trình nghiệp vụ. Do đó đến năm 2000 đã có khoảng
250 tỉ dòng mã nguồn đang tồn tại và phải được duy trì. Phần lớn trong số đó không
được viết bằng các ngôn ngữ hướng đối tượng và số nhiều trong đó vẫn được chạy trên
các máy tính lớn. Có nhiều hệ thống để tiếp tục tồn tại phải thay đổi hoàn toàn hoặc
cấu trúc lại hệ thống căn bản do đó kinh phí sẽ phải bỏ ra là một điều không tưởng
được đối với hầu hết các tổ chức. Bảo trì một hệ thống cũ ngày càng đắt tiền, vì vậy tái
kỹ nghệ lại những hệ thống này sẽ kéo dài thời gian sử dụng của chúng. Tái kỹ nghệ
một hệ thống sẽ có chi phí hiệu quả khi hệ thống đó có giá trị nghiệp vụ cao nhưng lại
11
tốn kém cho việc bảo trì. Tái kỹ nghệ cải thiện cấu trúc hệ thống, tạo ra tài liệu của hệ
thống mới và làm cho nó dễ hiểu hơn.
Vậy trong trường hợp nào chúng ta nên thực hiện tái kỹ nghệ hệ thống. Câu trả
lời là tái kỹ nghệ sẽ có hiệu quả cao nhất khi thực hiện đối với một hệ thống cũ được
kế thừa lại (legacy system). Một hệ thống cũ được kế thừa lại có thể là một phương
thức, công nghệ đã cũ, một hệ thống máy tính hay một chương trình ứng