Cho tới bây giờ, hầu hết các cuộc thảo luận về quá trình phát triển phần mềm đều tập trung vào vấn đề các chương trình và hệ thống phần mềm luôn luôn biến đổi. Tuy nhiên, trong nhiều trường hợp, nó lại liên quan đến vấn đề phát triển dữ liệu. Lưu trữ, tổ chức và định dạng của dữ liệu được xử lý bởi chương trình cũ phải được tiến hóa để phù hợp với những thay đổi của phần mềm. Quá trình phân tích và tổ chức lại cấu trúc dữ liệu và đôi khi là cả giá trị của dữ liệu trong hệ thống làm cho nó trở nên dễ hiểu hơn được gọi là tái kỹ nghệ dữ liệu.
Nói chung, tái kỹ nghệ dữ liệu không cần thiết nếu như các chức năng của hệ thống không thay đổi. Tuy nhiên, trong thực tế, có rất nhiều lý do để chúng ta phải sửa đổi dữ liệu khi chương trình của chúng ta là một hệ thống cũ được kế thừa lại:
− Sự thoái hóa dữ liệu Qua thời gian, chất lượng của dữ liệu sẽ dần trở nên suy tàn.
Thay đổi những dữ liệu có thông báo lỗi, các giá trị sao chép có thể được tạo ra và thay đổi ở môi trường bên ngoài có thể sẽ không được phản hồi trong dữ liệu. Đây là một điều không thể tránh khỏi bởi vì vòng đời của dữ liệu thường rất dài. Ví dụ, một dữ liệu ngân hàng cá nhân hình thành khi một tài khoản được mở và có thể kéo dài ít nhất là suốt đời khách hàng. Khi thông tin của khách hàng thay đổi, những thay đổi này có thể không đúng với dữ liệu của ngân hàng. Tái kỹ nghệ chương trình có thể mang vấn đề chất lượng dữ liệu ra ánh sáng và làm nổi bật sự cần thiết của việc tái kỹ nghệ dữ liệu.
− Những giới hạn cố hữu được xây dựng trong chương trình Khi thiết kế ban đầu,
những người phát triển chương trình đưa vào những ràng buộc gắn liền với số lượng dữ liệu mà nó có thể xử lý. Tuy nhiên, các chương trình ngày nay cần phải xử lý nhiều dữ liệu hơn so với những dự kiến ban đầu của các nhà phát triển. Vì vậy, tái kỹ nghệ dữ liệu là cần thiết để loại bỏ các hạn chế này. Ví dụ, Rochester và Douglas (Rochester and Douglass, 1993) đã mô tả một hệ thống quản lý quỹ với thiết kế ban đầu chỉ có thể xử lý được 99 quỹ. Công ty đang chạy hệ thống này quản lý hơn 2000 quỹ, vì vậy họ phải chạy 23 hệ thống riêng biệt. Và để xử lý vấn đề này, họ đã quyết định tái kỹ nghệ hệ thống và các dữ liệu liên quan.
− Tiến hóa kiến trúc Nếu một hệ thống tập trung được chuyển thành một kiến trúc
phân tán, thì điều cần thiết cốt lõi của kiến trúc nên là một hệ thống quản lý dữ liệu mà các khách hàng ở xa có thể truy cập được. Điều này đòi hỏi phải có những nỗ lực lớn trong việc tái kỹ nghệ dữ liệu để di chuyển các dữ liệu từ các tệp riêng biệt vào trong hệ thống máy chủ quản lý cơ sở dữ liệu. Việc di chuyển đến một kiến trúc chương trình có thể bắt đầu khi tổ chức chương trình chuyển đổi từ quản lý dữ liệu dựa trên các tệp sang hệ thống quản lý cơ sở dữ liệu.
Rickets và một số tác giả khác (Rickets, DelMonaco et al., 1993) đã mô tả lại rằng một hệ thống kế thừa được tạo thành từ nhiều chương trình phối hợp lại sẽ có một số vấn đề có thể phát sinh với cơ sở dữ liệu của hệ thống là: − Vấn đề đặt tên dữ liệu Một số tên dữ liệu có thể gây khó hiểu. Những cái tên khác
trình khác nhau trong một hệ thống. Cùng một cái tên có thể được sử dụng trong những chương trình khác nhau với những việc có ý nghĩa khác nhau.
− Vấn đề độ dài trường Vấn đề này xảy ra khi độ dài của trường trong những bản
ghi được chỉ định rõ ràng trong chương trình. Với cùng một mục có thể được gán những độ dài khác nhau trong những chương trình khác nhau hoặc độ dài của trường có thể quá ngắn để hiển thị dữ liệu hiện hành. Để giải quyết vấn đề này, các trường khác có thể được sử dụng lại trong một vài trường hợp vì thế để sử dụng một trường dữ liệu có cùng tên qua các chương trình là không phù hợp.
− Vấn đề tổ chức bản ghi Các bản ghi thể hiện cùng một thực thể có thể được tổ
chức khác nhau trong các chương trình khác nhau. Nó sẽ trở thành vấn đề trong các ngôn ngữ như là COBOL nơi mà các tổ chức vật lý của bản ghi được thiết lập bởi những người lập trình và được phản ánh trong các tập tin. Tuy nhiên, nó sẽ không phải là vấn đề trong các ngôn ngữ như C++ hay Java nơi mà các tổ chức vật lý của bản ghi là trách nhiệm của trình biên dịch.
− Các giá trị cố định mã hóa cứng Các giá trị (tuyệt đối) cố định, chẳng hạn như là
mức số thuế, được đưa vào trực tiếp trong chương trình chứ không phải được tham chiếu sử dụng qua một số tên đặc trưng.
− Không có từ điển dữ liệu Có thể không có từ điển dữ liệu định nghĩa những cái tên
được sử dụng, những đại diện của nó và những cái sử dụng của nó.
27 Tệp 1 Tệp 2 Tệp 3 Tệp 4 Tệp 5 Tệp 6 Chương trình 1 Chương trình 7 Chương trình 6 Chương trình 5 Chương trình 4 Chương trình 2 Chương trình 3 Trở thành
Hình 1-11: Chuyển đổi dữ liệu
Cũng như định nghĩa dữ liệu không phù hợp, các giá trị dữ liệu cũng có thể được lưu trữ một cách không phù hợp. Sau khi các định nghĩa dữ liệu được tái kỹ nghệ, giá trị của dữ liệu cũng phải được chuyển đổi để phù hợp với cấu trúc mới.
Trước khi tái kỹ nghệ dữ liệu của chương trình, điểu cần thiết trước khi làm là phải phân tích chi tiết chương trình. Những phân tích này nên nhằm vào mục đích phát hiện những chức năng định danh trong chương trình, tìm ra các giá trị cố định để thay đổi thành tên hằng số, phát hiện những qui tắc kiểm chứng dữ liệu nhúng và chuyển đổi đại diện của dữ liệu. Các công cụ như là phân tích và mô hình tham chiếu chéo có thể được sử dụng để giúp cho quá trình phân tích được nhanh chóng và đơn giản hơn. Một tập hợp các bảng nên được tạo ra để chỉ ra các mục dữ liệu được tham chiếu và những thay đổi được tạo ra cho mỗi tham chiếu đó.
Phân tích dữ liệu
Chương trình được tái kỹ nghệ Phân tích dữ liệu
Chuyển đổi dữ liệu Sửa đổi tên
thực thể Thay thế các giá trị cố định. Sắp xếp lại định nghĩa dữ Định dạng lại dữ liệu Chuyển đổi giá trị mặc định Sửa đổi các Hệ thống quản lý CSDL Chương trình 2 Chương trình 3 Chương trình 4 Chương trình 1 Chương trình 5 Chương trình 6 Chương trình 7 Mô hình dữ liệu vật lý và logic Mô tả
Hình 1-12: Quá trình tái kỹ nghệ dữ liệu
Hình 1-12 minh họa quá trình tái kỹ nghệ dữ liệu, giả định rằng những định nghĩa dữ liệu được sửa đổi, các giá trị cố định được đặt tên, định dạng dữ liệu được tổ chức lại và giá trị dữ liệu được chuyển đổi. Bảng tóm tắt các chi tiết trong thay đổi được tạo ra. Do đó chúng được sử dụng ở tất cả các giai đoạn của quá trình tái kỹ nghệ dữ liệu.
Trong giai đoạn 1 của quá trình này, các định nghĩa dữ liệu trong chương trình được sửa đổi cho dễ hiểu hơn. Dữ liệu không bị ảnh hưởng bởi các sửa đổi. Có thể tự động quá trình này ở một mức độ nào đó bằng cách sử dụng hệ thống kết hợp mô hình như là AWK (Aho, Kernighan và một số người khác, 1988) để tìm và thay thế các định nghĩa hoặc để phát triển các mô tả UML của dữ liệu (St Laurent and Cerami, 1999) và sử dụng các công cụ chuyển đổi dữ liệu. Tuy nhiên, một vài việc làm thủ công hầu như là cần thiết để hoàn tất quá trình. Quá trình tái kỹ nghệ dữ liệu có thể dừng lại ở giai đoạn này nếu mục đích chỉ đơn giản là làm tăng hiểu biết về các định nghĩa cấu trúc dữ liệu trong chương trình. Tuy nhiên, nếu có các vấn đề về giá trị dữ liệu như đã được trình bày ở trên thì giai đoạn 2 có thể thực hiện.
Nếu tổ chức quyết định tiếp tục giai đoạn 2 của quá trình, sau đó là tập trung vào giai đoạn 3, chuyển đổi dữ liệu. Nó thường là một quá trình rất tốn kém. Chương trình phải được viết với đầy đủ những hiểu biết về tổ chức cũ và mới. Nó thực hiện chuyển đổi dữ liệu cũ và chuyển đổi thông tin đầu ra. Một lần nữa, hệ thống mẫu phù hợp có thể được sử dụng để tiến hành sự chuyển đổi này.
29