Đăng ký Đăng nhập
Trang chủ Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm...

Tài liệu Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm

.PDF
95
3
139

Mô tả:

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI ----------------------------------------- LÊ QUỐC TRUNG NGHIÊN CỨU CÁC KỸ THUẬT VÀ PHƯƠNG PHÁP TRONG TIẾN HOÁ PHẦN MỀM Chuyên ngành: Công nghệ thông tin LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS. NGUYỄN NGỌC BÌNH Hà Nội -2004 - ii - MỤC LỤC MỞ ĐẦU .......................................................................................................... 1 Chương 1 TỔNG QUAN VỀ TIẾN HOÁ PHẦN MỀM .......................... 3 1.1 Giới thiệu............................................................................................. 3 1.2 Cơ sở lý thuyết cho tiến hoá phần mềm .............................................. 4 1.2.1 Bài toán tiến hoá phần mềm......................................................... 4 1.2.2 Các ràng buộc về đặc tả và chương trình .................................... 5 1.2.3 Quan hệ tiến hoá .......................................................................... 6 1.3 Các dạng tiến hoá cơ bản..................................................................... 7 1.4 Các cơ chế tính toán cho tiến hoá phần mềm...................................... 9 1.5 Các thực thể tiến hoá phần mềm ....................................................... 11 Chương 2 CÁC LUẬT TIẾN HOÁ PHẦN MỀM................................... 13 2.1 Tổng quát về các luật tiến hoá phần mềm......................................... 13 2.2 Phân loại các chương trình kiểu S và kiểu E..................................... 14 2.2.1 Các định nghĩa............................................................................ 14 2.2.2 Các tính chất cơ bản................................................................... 15 2.3 Các luật tiến hoá ................................................................................ 15 2.3.1 Luật đầu tiên............................................................................... 16 2.3.2 Luật thứ 2.................................................................................... 17 2.3.3 Luật thứ 3.................................................................................... 18 2.3.4 Luật thứ 4.................................................................................... 18 2.3.5 Luật thứ 5.................................................................................... 18 2.3.6 Luật thứ 6.................................................................................... 19 2.3.7 Luật thứ 7.................................................................................... 20 2.3.8 Luật thứ 8.................................................................................... 20 Lê Quốc Trung – Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm. - iii - Chương 3 THAY ĐỔI PHẦN MỀM ........................................................ 21 3.1 Giới thiệu........................................................................................... 21 3.2 Các động lực tiến hoá phần mềm ...................................................... 22 3.3 Duy trì phần mềm.............................................................................. 23 3.3.1 Quá trình duy trì ......................................................................... 28 3.3.2 Dự đoán việc duy trì ................................................................... 30 Chương 4 TỔ CHỨC LẠI PHẦN MỀM ................................................. 33 4.1 Tổng quan về tổ chức lại phần mềm ................................................. 33 4.2 Chuyển đổi mã nguồn........................................................................ 35 4.3 Thiết kế đối chiếu .............................................................................. 36 4.4 Cải thiện cấu trúc chương trình ......................................................... 38 4.5 Mô đun hoá chương trình .................................................................. 39 4.6 Tổ chức lại dữ liệu............................................................................. 40 Chương 5 QUẢN LÝ CẤU HÌNH PHẦN MỀM..................................... 45 5.1 Mục đích của quản lý cấu hình.......................................................... 45 5.2 Lập kế hoạch quản lý cấu hình.......................................................... 47 5.2.1 Xác định thành phần cấu hình.................................................... 48 5.2.2 Cơ sở dữ liệu cấu hình................................................................ 50 5.3 Quản lý thay đổi ................................................................................ 50 5.4 Quản lý phiên bản và quản lý phát hành ........................................... 51 5.4.1 Xác định phiên bản..................................................................... 52 5.4.2 Quản lý phát hành ...................................................................... 55 5.5 Xây dựng hệ thống ............................................................................ 59 5.6 Các công cụ CASE hỗ trợ quản lý cấu hình...................................... 60 5.6.1 Hỗ trợ quản lý thay đổi............................................................... 60 5.6.2 Hỗ trợ quản lý phiên bản............................................................ 60 5.6.3 Hỗ trợ xây dựng hệ thống........................................................... 62 Lê Quốc Trung – Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm. - iv - Chương 6 TIẾN HOÁ TRONG PHẦN MỀM MÃ NGUỒN MỞ ......... 64 6.1 Giới thiệu........................................................................................... 64 6.1.1 6.2 Các dạng tiến hoá trong phần mềm mã nguồn mở .................... 65 Giới thiệu về hệ điều hành Linux...................................................... 66 6.2.1 Lịch sử ........................................................................................ 66 6.2.2 Các đặc điểm của hệ thống ........................................................ 67 6.3 Tiêu chí đánh giá ............................................................................... 69 6.4 Các quan sát và đánh giá quá trình tiến hoá của Linux..................... 70 6.4.1 Quá trình tiến hoá ở mức hệ thống ............................................ 70 6.4.2 Quá trình tiến hoá của các phân hệ chính ................................. 75 KẾT LUẬN .................................................................................................... 83 TÀI LIỆU THAM KHẢO ............................................................................ 85 CHỈ MỤC....................................................................................................... 87 Lê Quốc Trung – Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm. -v- DANH MỤC CÁC BẢNG Bảng 2.1 Tổng kết các luật tiến hoá................................................................ 13 Bảng 4.1 Các cách tiếp cận tổ chức lại dữ liệu .............................................. 41 Bảng 4.2 Các khả năng không nhất quán về dữ liệu ...................................... 43 Bảng 5.1 Quá trình quản lý thay đổi.............................................................. 51 Bảng 5.2 Các nhân tố ảnh hưởng đến chiến lược phát hành phần mềm........ 58 Lê Quốc Trung – Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm. - vi - DANH MỤC CÁC HÌNH VẼ Hình 3.1 Phân bổ nguồn lực cho quá trình duy trì ......................................... 24 Hình 3.2 Mô hình phát triển xoáy ốc .............................................................. 25 Hình 3.3 Quá trình xác định thay đổi và tiến hoá .......................................... 28 Hình 3.4 Quá trình tiến hoá hệ thống ............................................................. 29 Hình 3.5 Quá trình thực hiện các thay đổi ..................................................... 29 Hình 3.6 Quá trình sửa chữa khẩn cấp........................................................... 30 Hình 3.7 Dự đoán quá trình duy trì ................................................................ 31 Hình 4.1 Quá trình tổ chức lại phần mềm ...................................................... 34 Hình 4.2 Quá trình chuyển đổi chương trình.................................................. 36 Hình 4.3 Quá trình thiết kế đối chiếu.............................................................. 37 Hình 4.4 Cấu trúc lại chương trình tự động ................................................... 38 Hình 4.5 Quá trình di trú dữ liệu .................................................................... 42 Hình 4.6 Quá trình tổ chức lại dữ liệu............................................................ 44 Hình 5.1 Họ các phiên bản hệ thống .............................................................. 46 Hình 5.2 Phân cấp cấu hình............................................................................ 49 Hình 5.3 Cấu trúc tiến hoá phiên bản............................................................. 54 Hình 5.4 Xây dựng hệ thống ........................................................................... 59 Hình 5.5 Xây dựng phiên bản dựa trên Delta................................................. 61 Hình 5.6 Sự phụ thuộc giữa các thành phần................................................... 62 Hình 6.1. Sự tăng trưởng của tệp nén tar đối với phần Linux kernel............. 71 Hình 6.2. Tăng trưởng số lượng các dòng mã của các phiên bản ................. 72 Hình 6.3. Kích thước của các tệp thực thi (“*.c”). ........................................ 73 Hình 6.4. Kích thước của các tệp header (“*.h”). ........................................ 74 Hình 6.5. Quá trình tăng trưởng của các phân hệ chính................................ 76 Lê Quốc Trung – Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm. - vii - Hình 6.6. Tỷ lệ phần trăm của số dòng mã của mỗi phân hệ chính. .............. 77 Hình 6.7. Tỷ lệ dòng mã mỗi phân hệ chính, bỏ qua phân hệ drivers............ 78 Hình 6.8. Sự tăng trưởng của các phân hệ chính có kích thước nhỏ hơn. ..... 79 Hình 6.9. Sự phát triển của các phân hệ con của phân hệ drivers................. 80 Hình 6.10. Tiến hoá của phân hệ arch............................................................ 81 Lê Quốc Trung – Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm. - viii - LỜI CẢM ƠN Lời cảm ơn đầu tiên tôi xin đuợc gửi tới PGS. TS Nguyễn Ngọc Bình đã tận tình hướng dẫn tôi trong suốt thời gian qua. Tôi xin chân thành cảm ơn Trung tâm đào tạo và bồi dưỡng sau đại học, trường ĐHBKHN đã tạo điều kiện để tôi có thời gian được học tập và tích luỹ kiến thức trong hai năm vừa qua. Tôi cũng xin gửi lời cảm ơn tới các Thầy cô giáo khoa Công nghệ Thông tin Đại học Bách Khoa Hà Nội đã trang bị cho tôi những kiến thức cần thiết trong quá trình học tập tại Khoa. Nhân đây, tôi cũng xin cảm ơn giáo sư Meir M. Lehman đã có những gợi ý và đặc biệt đã hỗ trợ tôi về mặt tài liệu với nội dung liên quan đến các luật tiến hoá phần mềm mà ông và các cộng sự đã dày công nghiên cứu. Lời cuối tôi xin cảm ơn gia đình và bạn bè đã giúp đỡ tôi trong thời gian vừa qua, động viên tôi về mặt tinh thần để tôi có thể hoàn thành được luận văn cao học này. Lê Quốc Trung Lê Quốc Trung – Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm. -1- MỞ ĐẦU Khái niệm tiến hoá phần mềm lần đầu tiên được đề xuất và sau đó được nghiên cứu từ những năm 70. Tuy nhiên trong những năm gần đây vấn đề này mới thu hút được nhiều mối quan tâm từ phía những nhà nghiên cứu. Hàng ngày, trên thế giới, có vô vàn phần mềm mới ra đời và cũng chừng ấy số lượng các phần mềm không còn được đưa vào sử dụng nữa. Đứng dưới góc độ một người sử dụng phần mềm, đó đơn thuần là một sự kết thúc theo đúng nghĩa: cái gì không còn tác dụng sẽ không còn giá trị sử dụng. Tuy nhiên, nếu đứng trên góc độ của một nhà phát triến phần mềm, đó là sự kết thúc một vòng đời của một sản phẩm phần mềm để đi tiếp đến một chu kỳ sống tiếp theo. Việc thay đổi một sản phẩm phần mềm từ một phiên bản này sang một phiên bản khác là một điều rất bình thường trong ngành công nghiệp phần mềm hiện nay, có thể hiểu đơn thuần phần mềm cũng giống như một loại hàng hoá bán trên thị trường, và người tiêu dùng chính là người quyết định hàng hoá đó có thời gian tồn tại bao lâu. Chính vì vậy, phần mềm luôn phải được cải tiến và nâng cấp để đáp ứng nhu cầu ngày càng tăng của người sử dụng. Đứng dưới quan điểm kỹ thuật, người ta nói phần mềm phải trải qua một giai đoạn tiến hoá để ngày càng hoàn thiện hơn về chất và lượng. Xác định được tiến hoá phần mềm hiện đang là một hướng nghiên cứu thu hút nhiều quan tâm trong cộng đồng những người nghiên cứu về công nghệ phần mềm, luận văn cao học này xin được đề cập đến chủ đề còn khá mới mẻ này ở Việt Nam với một hướng tiếp cận mang tính chất nghiên cứu và đưa ra những đánh giá ở mức cơ bản nhất về những vấn đề có liên quan của tiến hoá phần mềm. Lê Quốc Trung – Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm. -2- Luận văn này được thực hiện với đề tài: “Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm” với kết cấu gồm các chương sau đây: • Chương 1 đi vào tìm hiểu tổng quan về tiến hoá phần mềm trong đó đưa ra một mô tả khái quát về bài toán tiến hoá phần mềm, bên cạnh đó cũng đưa ra các vấn đề cơ bản sẽ được giải quyết trong các chương kế tiếp • Chương 2 đi vào tìm hiểu và đưa ra đánh giá về các Luật tiến hoá phần mềm do giáo sư Meir M. Lehman và các cộng sự đã dày công nghiên cứu và đề xướng dựa trên việc tìm hiểu và nghiên cứu các hệ thống phần mềm trong thực tế trong nhiều năm • Chương 3 đề cập tới các chiến lược thay đổi hệ thống phần mềm cũng như các nguyên tắc duy trì phần mềm. • Chương 4 là một bước phát triển những gì được trình bày trong chương 3, trong đó việc tổ chức lại phần mềm là một lựa chọn cho tiến hoá hệ thống phần mềm. • Chương 5 trình bày về về quản lý cấu hình phần mềm trong đó đưa ra các vấn đề có liên quan đến việc lập kế hoạch quản lý cấu hình, quản lý thay đổi, quản lý phiên bản và ấn bản… • Chương 6 là phần thực nghiệm trong đó lấy hệ điều hành Linux là trọng tâm qua đó đưa ra các đánh giá dựa trên quá trình tiến hoá của hệ điều hành này. • Phần kết luận đưa ra những tổng kết và đánh giá của luận văn, những đóng góp của luận văn và những vấn đề mà luận văn chưa giải quyết được đồng thời đề xuất các hướng phát triển trong tương lai. Lê Quốc Trung – Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm. -3- Chương 1 TỔNG QUAN VỀ TIẾN HOÁ PHẦN MỀM 1.1 Giới thiệu Tiến hoá phần mềm là thuật ngữ được sử dụng đối với phần mềm có thể thay đổi cấu trúc và các chức năng khi nảy sinh các thay đổi về đặc tả và môi trường hoạt động mà phần mềm đó đang được triển khai. Tiến hoá phần mềm có thể bao gồm từ việc duy trì phần mềm trong thực tế cho tới việc thiết kế các phần mềm tinh vi phức tạp sao cho những phần mềm này có thể thay đổi hành vi của nó một cách tự trị theo như các thay đổi diễn ra. Mặc dù người ta nhận thấy ràng việc phần mềm có thể tiến hóa là một trong những yêu cầu quan trọng nhất, tuy nhiên các phần mềm hiện tại vẫn chưa được làm ra để cho phép thực hiện được một quá trình tiến hoá với một chi phí hợp lý. Mặc dù đã có rất nhiều nghiên cứu được thực hiện nhưng tiến hoá phần mềm vẫn là một vấn đề khó. Các phần sau sẽ trình bày về cơ sở lý thuyết cũng như những vấn đề liên quan đến tiến hoá phần mềm. Gần như tất cả các phần mềm đều trải qua các giai đoạn thay đổi trong khoảng thời gian sống của phần mềm đó. Các thay đổi có thể lớn hoặc nhỏ, đơn giản hoặc phức tạp, quan trọng hay không quan trọng. Tuy nhiên dù bất kể tác động lớn hay nhỏ nào cũng làm phát sinh công việc thực hiện các thay đổi đó. Các kinh nghiệm nghiên cứu hơn 30 năm qua trong lĩnh vực tiến hoá phần mềm cho thấy rằng: thực hiện các thay đổi phần mềm mà không nhìn thấy rõ những tác động của nó có thể dẫn đến những kết quả đáng tiếc: các sản phẩm phần mềm không tin cậy, trì hoãn trong việc phát hành phiên bản mới ra thị trường v.v... Lê Quốc Trung – Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm. -4- Tiến hoá phần mềm hiện nay đang được công nhận một cách rộng rãi như một trong số các vấn đề quan trọng nhất trong ngành công nghệ phần mềm. Mặc dù đã có nhiều nghiên cứu nhưng vẫn còn các vấn đề cơ bản cần phải được giải quyết. Điều này một phần do tính khó khăn cố hữu trong tiến hoá phần mềm, bên cạnh đó còn là việc thiếu đi các nguyên tắc cơ bản cho việc tiến hoá phần mềm một cách có hệ thống. Một vấn đề quan trọng phát sinh trong tiến hoá phần mềm là sau mỗi bước tiến hoá, độ hỗ loạn trong một hệ thống phần mềm (còn được gọi là entropy của phần mềm) tăng lên, và phần mềm ngày càng trở nên ít khả năng sử dụng hơn nếu chúng ta không quan tâm đến việc duy trì nó. Các hệ thống phần mềm có xu hướng tiến hoá theo hướng không thuận nghịch: các thay đổi thông tin làm mất hiệu lực về phiên bản hệ thống trước đó. Bằng việc thực hiện liên tục các thay đổi nhỏ, thiết kế hệ thống ban đầu trở nên không còn đúng đắn, và kết quả là phần mềm trở nên khó hiểu hơn, gây khó khăn cho việc thực hiện các biến đổi sau đó. Vấn đề này còn được gọi là “software ageing”: phần mềm già cỗi đi theo thời gian. 1.2 Cơ sở lý thuyết cho tiến hoá phần mềm Phần này sẽ trình bày một phát biểu mang tính chất lý thuyết về các bài toán tiến hoá phần mềm [1], và dựa trên lý thuyết này chúng tôi sẽ đề cập tiến đến các dạng tiến hoá và các cơ chế tính toán cơ bản cho tiến hoá. 1.2.1 Bài toán tiến hoá phần mềm Cho S và P lần lượt là tập các đặc tả và các chương trình. Cần nhắc lại rằng: trong quy trình sản xuất phần mềm, trước khi bắt tay vào thực hiện một chương trình phần mềm, kỹ sư phần mềm cần phải xây dựng đặc tả (mức độ chi tiết tuỳ thuộc quy mô của phần mềm đó) cho chương trình đó. Sau khi có đặc tả, chương trình sẽ được xây dựng dựa trên đặc tả đó. Chúng ta viết Lê Quốc Trung – Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm. -5- SAP nếu như một chương trình P ∈ P được suy ra từ một đặc tả S ∈ S. P thường được xây dựng bằng việc đưa ra một tiến trình phát triển phần mềm S A P. Bài toán tiến hoá phần mềm có thể được phát biểu thành như sau: giả thiết P có được từ S. Khi S thay đổi thành S’, tức là khi đặc tả thay đổi thì chương trình bắt nguồn từ đặc tả đó cũng phải thay đổi theo, và được viết là S ⇒ S’, thì P cũng phải thay đổi thành P’ tương ứng. Chúng ta có sơ đồ sau: Giả thiết S A P và S ⇒ S’ Tìm P’ sao cho: P ⇒ P’ và S’ A P’ Ở đây, nếu việc thay đổi S ⇒ S’ là tuỳ ý, thì P’ cần được tạo ra một lần nữa và chúng ta không có bài toán tiến hoá. Điều này xảy ra khi S và S’ có một phần chung đáng kể và P’ có thể có được từ P sử dụng đặc tính này. 1.2.2 Các ràng buộc về đặc tả và chương trình Chúng tôi giới hạn cách thức mà các đặc tả thay đổi. Ở đây chúng tôi đưa ra các quan hệ tiến hoá S và P trong các tập hợp S và P để lần lượt biểu diễn quan hệ giữa S và S’ và P và P’ đồng thời giả định rằng thay đổi S ⇒ S’ là có thể xảy ra nếu S’ quan hệ bởi trong đó S’ S . Sau đây để đơn giản chúng tôi viết cả hai S biểu diễn đặc tả S’ là kết quả của việc tiến hoá S, và đương nhiên S’ sẽ chi tiết hơn và có các chức năng phong phú hơn S. Lê Quốc Trung – Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm. -6- Giả thiết (S, ) tạo thành một ràng buộc toán học, tức là: là một quan hệ thứ tự trên S. • • Với bất kỳ các đặc tả S, S’ ∈ S, luôn tồn tại cận dưới lớn nhất S cận trên nhỏ nhất S S’ và S’ trong S. • Tồn tại các đặc tả đặc biệt F và ⊥ sao cho S Fvà ⊥ S đối với S bất kỳ. Giả thiết rằng cấu trúc này sẽ áp dụng cho tất cả các chương trình. Ở đây cần hiểu ⊥ như một đặc tả rỗng không có bất kỳ nội dung nào và ngược lại F là đặc tả đầy đủ nhất. S S’ và S nối và giao của hai đặc tả S và S’. Nếu S thông tin trái ngược nhau. Nếu S S’ lần lượt biểu diễn các đặc tả kết S’ = F thì S và S’ chứa các phần S’ = ⊥ thì S và S’ là độc lập. 1.2.3 Quan hệ tiến hoá Nhìn chung sẽ có rất nhiều các quan hệ tiến hoá và điều quan trọng là phải xác định được quan hệ tiến hoá tương ứng. Trong số các quan hệ tiến hoá, có hai quan hệ phổ biến nhất (1) sự gia tăng về mặt chức năng và (2) làm mịn/vật chất hoá. Nếu S S’ thì a. S’ có thể chấp nhận và quản lý lớp các dữ liệu vào ra rộng hơn và phong phú hơn và S có thể thể hiện hành vi trong nhiều trường hợp hơn S. Lê Quốc Trung – Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm. -7- b. S’ định nghĩa các chức năng và các hành vi của hệ thống chính xác hơn và cụ thể hơn S. Một số ví dụ liên quan đến việc gia tăng về mặt chức năng như: tính thừa kế trong lập trình hoặc phương pháp luận hướng đối tượng, và quá trình làm mịn sẽ tương ứng với việc minh hoạ bằng một ví dụ cụ thể trong mođun đã được tham số hoá và trong các ứng dụng. 1.3 Các dạng tiến hoá cơ bản Từ quan hệ chúng tôi giả thiết ba trường hợp sau đây sẽ được áp dụng cho tiến hoá phần mềm: a. Khả năng hiện thực hoá của các đặc tả: Đối với bất kỳ đặc tả S ∈ S, sẽ tồn tại một chương trình P ∈ P sao cho S A P. b. Tính tăng trưởng của (S, Nếu S S’, tồn tại ): S(≠ S’) ∈ S sao cho S’ = S S và S S=⊥ c. Tính kết hợp của quá trình phát sinh chương trình A: Nếu S1 A P1 , S2 A P2 khi đó S1 Ở đây, P1 S2 A P1 P2. P2 biểu diễn sự hợp thành của 2 chuơng trình P1 và P2. Mặc dù chương trình có được từ quá trình hợp thành này có thể khác phụ thuộc vào bài toán tiến hoá cụ thể, nhưng nó sẽ tương ứng với sự gia tăng của các chức năng chẳng hạn như hoà nhập các phần, thêm vào các phương thức và thành phần, hoặc đối với việc cụ thể hoá các tham số. Lê Quốc Trung – Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm. -8- Theo như giả thiết ở trên, có hai dạng tiến hoá cơ bản sau: a. Dạng cơ bản 1: Nếu S ⇒ S’ khi đó S’ S b. Dạng cơ bản 2: Nếu S ⇒ S’ khi đó T S và T S’ đối với T nào đó Trong dạng cơ bản 1, quá trình tiến hoá sẽ được thực hiện như sau: a. Xây dựng S thoả mãn S’ = S S. Chúng tôi định nghĩa: S = ExtractDelta(S’, S ) b. Xây dựng một chương trình tăng trưởng P thông qua S A P c. P’ = P P . P’ được viết là P’ = MergeProg (P, P) Trong các bài toán thực tế, người ta thường thêm đặc tả gia tăng S vào đặc tả S hiện tại hơn so với quá trình tiến hoá thường xảy ra đối với một đặc tả mới S’ (dạng tiến hoá 1’). a. Kiểm tra sự nhất quán giữa S và S(S S = F? ) và nếu tồn tại sự không nhất quán thì sự không nhất quán này sẽ bị loại bỏ. b. Xây dựng một chương trình tăng trưởng P sao cho c. Kết hợp các chương trình P’ = P SA P P Theo mô hình tiến hoá thứ hai, quá trình tiến hoá được thực hiện như sau: a. Trích chọn ra đặc tả chung T = S S’, ký hiệu là: CommonPart (S, S’) Lê Quốc Trung – Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm. -9- b. Áp dụng việc tạo sinh lại đặc tả S ⇒T , chương trình ban đầu P được tạo lại thành R bằng cách áp dụng P⇒R, R được viết là: Degenerate(P, S, T), c. Thực hiện việc tiến hoá R ⇒ P’ với luật T ⇒ S’ theo như dạng tiến hoá cơ bản 1. 1.4 Các cơ chế tính toán cho tiến hoá phần mềm Trong phần này, chúng tôi sẽ đưa ra các cơ chế tính toán cần thiết trong việc tiến hoá phần mềm theo như lý thuyết đã được trình bày ở phần trước. Ký hiệu P’ là chương trình có được bằng việc tiến hoá P thông qua S ⇒ S’ như sau: P’ = Evolver(P, S, S’). Mặc dù, P’ này có thể là không duy nhất, nhưng ở đây chúng ta giả thiết rằng P’ là một chương trình trong số các P’ có thể được chọn dựa trên một tiêu chí nào đó. Evolver được biểu diễn dựa trên các dạng cơ bản như sau: • Dạng 1: Evolver(P, S, S’) = MergeProg(P, DeriveProg( S)) ở đây S = ExtractDelta(S, S’), và DeriveProg(S) là một chương trình được suy ra từ S. • Dạng 1’: Evolver(P, S, S) = if Consistent (S, S, S’) Lê Quốc Trung – Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm. - 10 - then MergeProg(P, DeriveProg( S)) else MergeProg(P, DeriveProg( S’)) • Dạng 2: Evolver(P, S, S’) = MergeProg (R, DeriveProg( S)) ở đây, R = Degenerate (P, S, T) T =CommonPart(S, S’) S = ExtractDelta(T, S’) Để thực hiện Evolver, chúng ta cần thực hiện ExtractDelta, MergeProg,…thông qua cơ chế tính toán. Có hai kiểu tiến hoá cần quan tâm: a. Tiến hoá tự trị b. Tiến hoá không tự trị Trong tiến hoá tự trị, Evolver được nhúng vào các mô đun phần mềm được tiến hoá và bản thân Evolver sẽ nhận các tác nhân để kích hoạt quá trình tiến hoá. Để thực hiện việc tiến hoá này, cần phải có các cơ chế siêu tính toán để cho phép các mô đun phần mềm tự thay đổi chẳng hạn như: phản xạ, tiến hoá từng phần và biên dịch tự động. Mặt khác, trong tiến hoá không tự trị, Evolver được áp dụng cho S, S’, P trong môi trường phần mềm để tạo ra P’ dưới sự điều khiển của bộ phận quản lý dự án. Trung tâm của một môi trường như thế này là cơ sở dữ liệu phần mềm với các cơ chế chẳng hạn như lan truyền thay đổi [12] và tính toán tăng trưởng. Trong việc tiến hoá phần mềm theo như mô tả ở trên, các điều kiện sau cần được thoả mãn: Lê Quốc Trung – Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm. - 11 - a. Khả năng có thể thực hiện của các đặc tả. b. Khả năng có thể tăng trưởng được của các đặc tả. c. Khả năng cấu thành được của tiến trình dẫn xuất phần mềm. d. Khả năng có thể xây dựng của đặc tả tăng trưởng: ExtractDelta e. Kiểm tra và duy trì tính nhất quán của các đặc tả: Consistent f. Khả năng xây dựng các đặc tả chung: CommonPart g. Khả năng hoà nhập các chương trình: MergeProg h. Khả năng tạo sinh lại các chương trình: Degenerate Các điều kiện này có được thoả mãn hay không tất nhiên phụ thuộc vào các đặc tả, các chương trình và quan hệ tiến hoá được xem xét. Khả năng tăng trưởng (S, ) dường như được thoả mãn trong các trường hợp bình thường. 1.5 Các thực thể tiến hoá phần mềm Dựa trên mô tả về các luật [3] và lý thuyết tiến hoá phần mềm, có 5 thực thể được xác định như các chủ thể tương ứng để nghiên cứu và giải thích về tiến hoá phần mềm [4]. Tiến hoá dựa trên những lần phát hành: Một dãy các phiên bản ổn định của một phần mềm ứng dụng hoặc hệ thống phần mềm sẽ cho thấy các thay đổi trong chất lượng phần mềm, hiệu năng, chức năng và sẵn sàng đối với người sử dụng. Chỉ những phiên bản sản phẩm nào được phát hành và mang tính ổn định mới được xem xét đến chứ không phải các phiên bản sản phẩm tạm thời (những phiên bản alpha hoặc beta không được xét đến). Năm luật tiến hoá phân mềm đầu tiên được trình bày ở Chương 2 tập trung riêng cho quá phát triển liên tục của một hệ thống phần mềm qua các phiên bản. Hệ thống hoặc chương trình: Một hệ thống hay một chương trình tiến hoá có xuất phát điểm từ một yêu cầu hoặc một thay đổi được yêu cầu với Lê Quốc Trung – Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm. - 12 - một hệ thống hiện tại cho tới các phiên bản cuối cùng. Không có ràng buộc nào về kích thước của các hệ thống hoặc các chương trình, vì thế các hệ thống cỡ nhỏ, trung bình, lớn hoặc rất lớn có thể tiến hoá theo cùng các luật. Ứng dụng kiểu E (E-Type): Một ứng dụng kết hợp cả khái niệm mã nguồn và việc thực thi của nó chẳng hạn như một máy tính được hỡ trợ hoạt động trong một lĩnh vực hoạt động nào đó. Một ứng dụng phần mềm như thế này có thể được nói là được nhúng vào môi trường hoạt động. Các ứng dụng kiểu E có thể phân biệt với các chương trình kiểu S. Không có thông tin hoặc dữ liệu nào được biểu diễn đối với quá trình tiến hoá của các chương trình kiểu S (tham khảo thêm 2.2). Quy trình: Đây là các hoạt động có quan hệ với nhau hình thành quá trình phát triển và duy trì của một hệ thống phần mềm hoặc chương trình được gọi là quy trình [5]. Các mô hình quy trình: Một quy trình phần mềm để phát triển và duy trì một hệ thống phần mềm và chương trình có thể được mô hình hoá theo một cách thức mang tính mô tả hoặc. Các mô hình theo quy tắc chỉ ra cái gì nên làm, các mô hình loại trừ chỉ ra cái gì có thể được làm và mô hình mô tả chỉ ra những cái đã được làm trong quá trình phát triển và duy trì hệ thống phần mềm. Lê Quốc Trung – Nghiên cứu các kỹ thuật và phương pháp trong tiến hoá phần mềm.
- Xem thêm -

Tài liệu liên quan