Bài thu hoạch ứng dụng của 40 nguyên lý sáng tạo trong công nghệ phần mềm

Trong lịch sử sáng tạo và đổi mới, hay gần gũi hơn là trong cuộc sống thường nhật, ta đã thấy được rằng các nguyên lý sáng tạo của Altshuller khá là đầy đủ để có thể lý giải cho hầu hết mọi phát minh sáng chế trên thế giới này. Các lợi ích của “40 nguyên tắc sáng tạo cơ bản” đối với chúng ta có thể kể đến như: Giúp giải phóng tính ì tâm lý. Phát triển các ý tưởng cải tiến sản phẩm (giúp tăng năng suất, tiết kiệm năng lượng, tiền bạc và thời gian.) Phát triển các ý tưởng giải quyết vấn đề. Định hướng sử dụng kiến thức hiệu quả hơn. Cho đến nay, vẫn còn nhiều nỗ lực để cố gắng đưa ra các định nghĩa chuẩn của 40 nguyên lý sáng tạo cho công nghệ phần mềm. Do khoa học máy tính là một lĩnh vực rất rộng lớn nên các ví dụ trong bài viết này được rút ra từ các giai đoạn khác nhau trong vòng đời của một sản phẩm phần mềm, đôi khi ở mức thiết kế, đôi khi ở mức hiện thực ứng dụng. Mặc dù chỉ giới hạn trong phạm vi công nghệ phần mềm, nhưng với việc hệ thống đầy đủ 40 nguyên lý sáng tạo như trên, ta có thể tự tin nói rằng những nguyên lý sáng tạo này cũng có thể được nhận ra ở bất cứ đâu và trong bất cứ lĩnh vực nào, dù là khoa học chính thống hay phi chính thống. Điều đó thúc đẩy chúng ta thực hành sáng tạo và mạnh dạn đưa ra ý tưởng thường xuyên hơn. Và đó cũng là cách mà thế giới thay đổi mỗi ngày.

pdf33 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2929 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài thu hoạch ứng dụng của 40 nguyên lý sáng tạo trong công nghệ phần mềm, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐH KHOA HỌC TỰ NHIÊN TP.HCM KHOA CÔNG NGHỆ THÔNG TIN ––––––––––––––– BÀI THU HOẠCH ỨNG DỤNG CỦA 40 NGUYÊN LÝ SÁNG TẠO TRONG CÔNG NGHỆ PHẦN MỀM GIẢNG VIÊN HƯỚNG DẪN: GS. TS. HOÀNG VĂN KIẾM SINH VIÊN THỰC HIỆN: MAI HỮU THIỆN 12 11 072 TP.HỒ CHÍ MINH – 2012 1 MỤC LỤC I. GIỚI THIỆU ............................................................................................................................................ 3 II. 40 NGUYÊN LÝ SÁNG TẠO VÀ CÔNG NGHỆ PHẦN MỀM .................................................................... 4 1. Phân nhỏ (Segmentation) ................................................................................................................ 4 2. Tách khỏi (Extraction) ..................................................................................................................... 4 3. Phẩm chất cục bộ (Local Quality).................................................................................................... 5 4. Bất đối xứng (Asymmetry) .............................................................................................................. 6 5. Kết hợp (Consolidation)................................................................................................................... 7 6. Vạn năng (Universality) ................................................................................................................... 8 7. Chứa trong (Nesting) ....................................................................................................................... 8 8. Phản trọng lượng (Counterweight) .................................................................................................. 9 9. Gây ứng suất sơ bộ (Prior counteraction) ...................................................................................... 10 10. Thực hiện trước sơ bộ (Prior action) .............................................................................................. 10 11. Đề phòng (Cushion in advance) ..................................................................................................... 11 12. Đẳng thế (Equipotentiality) ............................................................................................................ 12 13. Đảo ngược (Do it in reverse) ......................................................................................................... 12 14. Cầu tròn hóa (Spheroidality) .......................................................................................................... 13 15. Linh động (Dynamicity) ................................................................................................................ 14 16. Tác động thiếu hoặc thừa (Partial or excessive action) .................................................................. 15 17. Chuyển sang chiều khác (Transition into new dimension) ............................................................ 16 18. Dao động cơ học (Mechanical Vibration) ...................................................................................... 16 19. Tác động theo chu kỳ (Periodic Action) ........................................................................................ 17 20. Liên tục tác động có ích (Continuity of useful action) .................................................................. 18 21. Vượt nhanh (Rushing through) ...................................................................................................... 19 22. Biến hại thành lợi (Convert harm into benefit) .............................................................................. 19 23. Phản hồi (Feedback) ...................................................................................................................... 20 24. Sử dụng trung gian (Mediator)....................................................................................................... 20 25. Tự phục vụ (Self-service) .............................................................................................................. 21 26. Sao chép (Copying)........................................................................................................................ 22 27. Rẻ thay cho đắt (Inexpensive short-lived objects) ......................................................................... 22 2 28. Thay thế hệ cơ học (Replacement of Mechanical System) ............................................................ 23 29. Sử dụng kết cấu thủy hoặc khí (Pneumatic or hydraulic construction) ** .................................... 23 30. Sử dụng vỏ dẻo hoặc màng mỏng (Flexile films or thin membranes) ........................................... 24 31. Sử dụng vật liệu nhiều lỗ (Porous materials) ** ............................................................................ 24 32. Đổi màu (Changing the color) ....................................................................................................... 25 33. Đồng nhất (Homogeneity) ............................................................................................................. 26 34. Loại bỏ và tái sinh từng phần (Rejecting and regenerating parts) ................................................. 26 35. Thay đổi thông số hóa lý của đối tượng (Transformation properties) ........................................... 26 36. Chuyển pha (Phase transition) ** .................................................................................................. 27 37. Sử dụng sự nở nhiệt (Thermal expansion) ** ................................................................................ 27 38. Sử dụng các chất oxy hóa (Accelerated oxidation) ** ................................................................... 28 39. Sử dụng môi trường trơ (Inert Environment) ** ............................................................................ 29 40. Sử dụng vật liệu tổng hợp (Composite materials) ......................................................................... 30 III. KẾT LUẬN ....................................................................................................................................... 31 IV. TÀI LIỆU THAM KHẢO ..................................................................................................................... 32 3 I. GIỚI THIỆU 40 nguyên tắc sáng tạo cơ bản đã được Altshuller tìm ra bằng cách phân tích một lượng lớn các bằng sáng chế nhằm mục đích xây dựng các công cụ giải quyết những mâu thuẫn kỹ thuật, thường nảy sinh trong quá trình thực hiện sáng tạo và đổi mới. Đây có thể được xem như sự tổng hợp kiến thức của nhân loại. Vào năm 2001, Kevin C. Rea đã cho đăng bài viết của mình gồm 2 phần, mang tên “TRIZ and Software – 40 Principle Analogies, Part I and II” để trình bày những sự tương đồng trong lĩnh vực công nghệ phần mềm (CNPM) với 40 nguyên lý sáng tạo của Altshuller. Tuy nhiên, Rea đã không liệt kê ra sự tương đồng cũng như ví dụ cụ thể đối với một số nguyên lý. Cụ thể là các nguyên lý: 29 (sử dụng kết cấu thủy hoặc khí), 31 (sử dụng vật liệu nhiều lỗ), 36 (chuyển pha), 37 (sử dụng sự nở nhiệt), 38 (sử dụng các chất oxy hóa) và 39 (sử dụng môi trường trơ). Bài viết này cố gắng hoàn thiện danh sách của Rea thông qua việc đưa ra sự tương đồng trong công nghệ phần mềm đối với sáu nguyên lý này, đồng thời bổ sung các ví dụ cụ thể cho những nguyên lý khác. Do bố cục của Rea trong bài viết của ông khá là hữu ích, nên tôi sẽ sử dụng lại bố cục này, như vậy các ví dụ mới và sự tương đồng có thể được so sánh cũng như kết hợp lại dễ dàng hơn. Những nguyên lý bị bỏ sót trong bài viết của Rea sẽ được đánh dấu **. 4 II. 40 NGUYÊN LÝ SÁNG TẠO VÀ CÔNG NGHỆ PHẦN MỀM 1. Phân nhỏ (Segmentation) a. Chia một đối tượng thành nhiều phần độc lập. b. Làm cho một đối tượng dễ dàng tháo rời. c. Tăng mức độ chia nhỏ. Liên hệ CNPM: Phân chia một hệ thống, thiết kế, một đối tượng hoặc luồng dữ liệu thành các phần độc lập. Chẳng hạn như trong phương pháp thiết kế module hoặc hướng đối tượng. Tăng độ chi tiết cho đến khi tìm được giải pháp. Các bit có thể được xem như nguyên tử trong ngữ cảnh mã hóa. Ví dụ CNPM: Ví dụ thấy rõ nhất là hướng tiếp cận thiết kế ứng dụng từ trên xuống (top down). Khi thiết kế ta sẽ chia hệ thống thành từng khúc nhỏ, nhờ đó giúp chia hệ thống phức tạp ra thành các module nhỏ hơn và đỡ phức tạp hơn. Quá trình này có thể được lặp lại với mỗi module đến khi khối chức năng không còn phức tạp nữa. Người ta có thể xây dựng ứng dụng dựa trên các dịch vụ độc lập có sẵn trong tổ chức hoặc thông qua Internet như các Web-service. Ta cũng có thể xây dựng ứng dụng bằng các component thương mại có sẵn. 2. Tách khỏi (Extraction) a. Tách thành phần (đặc tính) gây cản trở khỏi đối tượng, hoặc chỉ lấy thành phần (đặc tính) cần thiết của đối tượng. Liên hệ CNPM: Cho một ngôn ngữ, định nghĩa biểu diễn văn phạm của nó cùng với trình thông dịch sẽ sử dụng cách biểu diễn này để rút ra các câu trong ngôn ngữ. Loại bỏ những phần vô giá trị trong luồng thông tin. 5 Ví dụ CNPM: Trong xử lý tín hiệu có nhiều cách để giảm nhiễu. Ví dụ ta có thể tính toán hoặc đo độ nhiễu trong phông nền của ảnh, khử nó khỏi ảnh để tăng độ tương phản của tín hiệu thực. Phương pháp nén âm thanh MP3 loại bỏ những phần tín hiệu âm thanh mà hầu hết mọi người không thể nghe được do các đặc điểm thính giác ở người. Phương pháp nén ảnh mất thông tin, chẳng hạn như JPEG, loại bỏ thông tin để có tỉ lệ nén tốt hơn mà không làm biến dạng ảnh quá mức. Bộ tạo token trong parser thay thế mọi từ khóa bằng mã gọn hơn để chuyển mã người đọc được thành mã xử lý được bởi máy. Bộ tạo token đơn giản nhất là các parser đối số dòng lệnh (command line argument) sẽ đổi một đối số dòng lệnh (một chuỗi) thành kiểu dữ liệu cơ sở hơn như integer hay boolean. 3. Phẩm chất cục bộ (Local Quality) a. Đổi cấu trúc của đối tượng từ đồng nhất sang không đồng nhất, đổi môi trường bên ngoài (hoặc tác động bên ngoài) từ đồng nhất sang không đồng nhất. b. Đặt mỗi thành phần của đối tượng dưới điều kiện hoạt động tối ưu. c. Cho mỗi thành phần của đối tượng thực hiện một chức năng hữu ích khác nhau. Liên hệ CNPM: Đổi phân loại của đối tượng trong hệ thống kỹ thuật từ hệ phân cấp đồng nhất thành không đồng nhất. Ví dụ CNPM: Trong ứng dụng trí thông minh nhân tạo sử dụng mô hình bảng đen (blackboard), nhiều người cùng cố gắng giải quyết vấn đề hoặc một phần của vấn đề theo nhiều cách, chẳng hạn như một số người sẽ theo hướng tiếp cận từ trên xuống (top down), số khác theo hướng từ dưới lên (bottom up). 6 Thay thế danh sách liên kết các đối tượng “Sư tử” bằng danh sách liên kết các đối tượng “Động vật”. Mức trừu tượng cao hơn cho phép các đối tượng không đồng nhất được lưu trong cùng một lớp container hoặc ngược lại. 4. Bất đối xứng (Asymmetry) a. Đổi hình dạng của đối tượng từ đối xứng sang bất đối xứng. b. Nếu một đối tượng đã bất đối xứng, tăng mức độ bất đối xứng của nó. Liên hệ CNPM: Đưa sự bất đối xứng vào trong ứng dụng. Thay đổi tính bất đối xứng của hệ thống kỹ thuật để tác động không đều lên kết quả tính toán mong muốn. Ví dụ CNPM: Cho chương trình có bộ lọc để xử lý các định dạng đầu vào khác nhau mà không phải tăng số lượng định dạng đầu ra hoặc là một định dạng đầu vào, nhiều định dạng đầu ra. Giả sử cần tính trung bình của một danh sách dài. Thông thường ta phải đếm tất cả giá trị và chia tổng cho kích thước danh sách. Nếu như đáp án không cần phải chính xác ta có thể làm như vậy với một tập nhỏ hơn được chọn ngẫu nhiên. Cách xấp xỉ này thường đủ tốt và nhanh hơn. Giải thuật quicksort kinh điển lấy phần tử chính giữa làm điểm chốt (pivot). Bằng cách sử dụng trung vị ba (median of three) ta thường đạt được hiệu suất tốt hơn. Thay thế tìm kiếm nhị phân kiểm tra phần tử chính giữa của mảng con thành tìm kiếm nhị phân có trọng số bằng cách sử dụng tri thức thống kê về độ phân bố của các phần tử. Ví dụ như tận dụng đặc điểm phân bố của các ký tự trong bảng chữ cái khi tìm kiếm trên một loại từ điển nào đó. 7 5. Kết hợp (Consolidation) a. Đặt các đối tượng tương đồng hoặc tương tự lại gần nhau (hoặc kết hợp chúng); lắp ghép các thành phần tương đồng hoặc tương tự để thực hiện các tác vụ song song. b. Cho các tác vụ nối tiếp hoặc song song với nhau; đặt chúng gần nhau về mặt thời gian. Liên hệ CNPM: Cho các quá trình chạy song song. Ví dụ CNPM: Các hệ điều hành đa nhiệm, các ứng dụng đa luồng, đa bộ xử lý. Seti@home là một dự án điện toán song song khổng lồ phân phối trên hàng triệu máy tính trên thế giới. Các máy tính này sẽ yêu cầu một phần dữ liệu để phân tích và gửi kết quả của mình về cho server. Dự án boinc.org là một sản phẩm phụ của Seti@home nhằm cung cấp framework cho dạng xử lý song song này. Một mạng chuyển gói (packet switching network) cho phép nhiều luồng dữ liệu chạy song hành trên một dây. Trên thực tế chúng không thực sự song song mà là xen kẽ nhau. Một dây cáp quang có thể thực sự truyền tin song song khi nhiều sóng tần số khác nhau được gửi qua sợi quang đồng thời. Một trang web có thể được xây dựng từ nhiều frame. Mỗi frame có thể đến từ một server khác nhau. Đẩy dữ liệu cho trang web loại này nhanh hơn khi nhiều kết nối có thể được sử dụng song song. In nhiều bản sao của một tài liệu có thể được thực hiện nhanh hơn khi in nó song song trên nhiều máy. Hệ thống đĩa cứng raid-5 chia tập tin ra nhiều đĩa có thể truy xuất và lưu tập tin nhanh hơn do nó được truy xuất/lưu trữ song song. 8 Một số ứng dụng chia sẻ tập tin peer-to-peer thấy rằng tập tin cần lấy có trên nhiều máy tính truy cập từ xa. Những khúc khác nhau của tập tin có thể được tải về từ nhiều máy tính khác nhau và ghép chúng lại tại chỗ. Kết quả là lưu lượng cao hơn. 6. Vạn năng (Universality) a. Cho một thành phần hoặc một đối tượng thực hiện nhiều chức năng; loại bỏ các thành phần khác. Liên hệ CNPM: Làm cho hệ thống kỹ thuật hỗ trợ nhiều phân loại và phân loại động dựa trên ngữ cảnh. Ví dụ CNPM: Trình Norton commander nhúng nhiều chức năng khác nhau trong một ứng dụng duy nhất. Một hàm tìm kiếm giá trị lớn nhất cũng có thể được dễ dàng mở rộng để tìm giá trị nhỏ nhất. Đặc biệt khi có nhiều I/O trong việc đọc dữ liệu từ tập tin. 7. Chứa trong (Nesting) a. Đặt một đối tượng vào trong đối tượng khác; đặt mỗi đối tượng lần lượt vào trong nhau. b. Cho một thành phần đi qua khoảng trống của thành phần khác. Liên hệ CNPM: Kế thừa tính năng của các đối tượng khác bằng cách lồng lớp tương ứng vào trong một lớp nền. Sử dụng nhiều mức trừu tượng. Sử dụng các cấu trúc dữ liệu và giải thuật đệ quy. Ví dụ CNPM: Các kiến trúc phần mềm phân tầng như mô hình OSI cho giao tiếp mạng. 9 Hướng tiếp cận phân tích và thiết kế từ trên xuống (top down): thiết kế các component ở cấp cao trước, sau đó mỗi component trở thành một dự án độc lập với interface đã được định nghĩa. Ma trận là một mảng các mảng. Ta có thể định nghĩa mảng nhiều chiều. Các cấu trúc dữ liệu đệ quy: cây, danh sách liên kết, kể cả cấu trúc thư mục quen thuộc với nhiều thư mục con. Các giải thuật đệ quy: quicksort, giải thuật duyệt cây, quay lui. 8. Phản trọng lượng (Counterweight) a. Để bù đắp trọng lượng của đối tượng, kết hợp nó với các đối tượng khác cung cấp lực nâng. b. Để bù đắp trọng lượng của đối tượng, cho nó tương tác với môi trường sử dụng khí động lực, thủy động lực và các lực khác. Liên hệ CNPM: Chia sẻ để hỗ trợ hiệu quả các đối tượng được phân hạt tốt với số lượng lớn nhằm giảm tải động trên hệ thống kỹ thuật. Sử dụng hàm băm để phân bố đều tải trọng. Ví dụ CNPM: Để cải thiện hiệu suất của web server ta có thể chia một trang ra nhiều frame và lưu các frame trên nhiều đĩa cứng hoặc thậm chí nhiều server. Ta có thể phân bố các ảnh hoặc các data-blob (lớn) ra nhiều đĩa thay vì đặt chúng vào một đĩa. Hiệu suất sẽ tăng lên. Với hàm băm ta có thể phân bố đối tượng ra nhiều bucket trong khi vẫn giữ số lượng đối tượng ở mỗi bucket gần như bằng nhau. 10 9. Gây ứng suất sơ bộ (Prior counteraction) a. Nếu cần thiết phải thực hiện một hành động với tác động có hại lẫn có ích, hành động này nên được thay thế bằng hành động ngược lại để kiểm soát tác động có hại. b. Tạo một áp lực ban đầu lên đối tượng để phản lại áp lực không mong muốn khi hoạt động. Liên hệ CNPM: Thực hiện xử lý sơ bộ trong hệ thống để cải thiện tính toán phía sau. Ví dụ CNPM: Giả sử người dùng phải chờ một hành động tốn thời gian nào đó. Nếu ta thông báo người dùng rằng hành động này tốn 10 giây nhưng lại lâu hơn thì sẽ gây khó chịu. Nếu ta nói rằng nó tốn 30 giây nhưng lại nhanh hơn thì người dùng sẽ thích hơn. Cứ thử tưởng tượng những chương trình install (hoặc uninstall) báo rằng bạn chỉ phải chờ 2 giây, nhưng 2 giây đó đôi khi có thể mất 2 phút hoặc hơn. Khi một ứng dụng khởi động cần đọc từ cơ sở dữ liệu ta có thể load những bảng hoặc chỉ mục quan trọng nhất trước. 10. Thực hiện trước sơ bộ (Prior action) a. Thực hiện trước thay đổi cần thiết trên đối tượng (toàn bộ hoặc một phần). b. Sắp xếp trước các đối tượng để chúng có thể đi vào hoạt động từ vị trí thuận tiện nhất và không mất thời gian chờ. Liên hệ CNPM: Như trên. Ví dụ CNPM: Bộ nhớ cache đọc trước trong ổ đĩa cứng. Trình duyệt web có thể lấy tất cả tham chiếu đến các trang web khác xuất hiện trên trang hiện tại trong khi người dùng đọc trang hiện tại. 11 Thử tưởng tượng một ứng dụng cơ sở dữ liệu chuẩn bị sẵn dữ liệu trước khi được truy vấn khi nó nhận ra khuôn mẫu trong quá trình sử dụng ứng dụng. Driver máy in kiểm tra có máy in hay không trước khi người dùng hoàn tất các thiết lập của mình. 11. Đề phòng (Cushion in advance) a. Chuẩn bị trước các phương án khẩn cấp để bù đắp cho độ thiếu tin cậy của đối tượng. Liên hệ CNPM: Sử dụng giải thuật xử lý các tác động có hại trong trường hợp tệ nhất và duy trì các bất biến toàn cục. Đừng giả định điều gì khi bạn không kiểm soát được hết mọi trường hợp. Ví dụ CNPM: Một hệ điều hành tạo backup cho các tập tin thiết yếu trước khi nó được sử dụng. Điều này giúp ngăn ngừa việc cài lại khi có gì đó bị trục trặc. Đặt timeout cho tác vụ có thể làm đứng hệ thống, chẳng hạn như một truy vấn đến cơ sở dữ liệu hoặc kết nối đến dịch vụ mạng. Việc sử dụng các transaction trong cơ sở dữ liệu có thể được roll-back cũng là một dạng đề phòng. Một bộ xử lý đầu vào giúp nhận biết và sàng lọc hoặc bỏ qua dữ liệu đầu vào có định dạng xấu. Một bộ lập lộ trình tính toán các lộ trình thay thế trong khi chạy xe. Dựa vào history nó biết rằng vài chỗ trên lộ trình thường bị kẹt xe. Theo cách này các lộ trình thay thế sẽ có ngay khi cần. Một trình xử lý văn bản tạo các bản chụp (snapshot) khi gõ tài liệu để ngăn mất mát dữ liệu trong trường hợp hệ điều hành gặp sự cố. Công việc này cũng bao gồm tạo bản sao tài liệu trước khi chỉnh sửa. Recycle bin trên hầu hết máy tính hiện nay. 12 12. Đẳng thế (Equipotentiality) a. Trong trường thế năng, hạn chế thay đổi vị trí; thay đổi điều kiện hoạt động để loại bỏ việc nâng lên hay hạ xuống trong điều kiện trọng lực. Liên hệ CNPM: Thay đổi điều kiện hoạt động của giải thuật để kiểm soát luồng dữ liệu vào và ra của quá trình. Một sự tương đồng với trường thế năng là thời gian tiêu tốn để tạo đối tượng trong bộ nhớ. Những đối tượng tiêu tốn nhiều thời gian cần phải được giữ lâu nhất có thể. Ví dụ CNPM: Giải thuật hoán đổi bộ nhớ thông minh tính toán khả năng cần dùng đến một đối tượng trong bộ nhớ chính. Nó sẽ hoán đổi các đối tượng có tỉ lệ sử dụng thấp nhất. Giữ lại những kết quả trung gian mất nhiều thời gian để tính chừng nào chúng còn hợp lệ. Nói chung nguyên lý này có thể được dùng khi ứng dụng sử dụng dữ liệu theo cách bất định. Cố gắng giữ những phần tử có nhiều khả năng được dùng lại. Trong giải thuật di truyền ta thường làm việc với tập đáp án khả thi dưới dạng nhiễm sắc thể. Giải thuật di truyền giữ lại những đáp án khả thi nhất để “nhân giống”. Các đáp án ít tiềm năng hơn sẽ bị loại bỏ. Thiết lập trật tự lại cho cơ sở dữ liệu hoặc tập tin chỉ khi thực sự cần. Thông thường dữ liệu được đánh dấu là đã xóa bằng cách bật cờ lên. Các record trong cơ sở dữ liệu không bị dời đi mặc dù có vẻ như chúng nằm ở vị trí mới trong cơ sở dữ liệu. 13. Đảo ngược (Do it in reverse) a. Đảo ngược hành động dùng để giải quyết vấn đề b. Cho các thành phần (hoặc môi trường bên ngoài) di chuyển được thành cố định, và các thành phần cố định thành di chuyển được. 13 c. Lật ngược đối tượng (hoặc quá trình). Liên hệ CNPM: Lưu các transaction theo thứ tự ngược để quay lui. Ví dụ CNPM: Mọi giải thuật lập thời biểu đều làm công việc này do đảo ngược thời biểu có thể nhanh hơn. Trong một số giải thuật ta làm việc với nhiều tập kết quả trung gian. Kiểm tra các điều kiện giới hạn mạnh nhất trên các tập này ngay khi có thể để giữ cho tập trung gian nhỏ và quá trình xử lý nhanh hơn, ví dụ, khi join hai bảng trong cơ sở dữ liệu trước tiên ta giới hạn mỗi bảng về một tập nhỏ nhất trước khi tính tích Descartes. Một vài tính toán có thể gây tràn trên (overflow) hoặc tràn dưới (underflow). Bằng cách thay đổi thứ tự tính toán ta có thể ngăn chặn điều này. Một công thức tính số dấu phẩy động đơn giản có thể được viết thành hay ; ta có thể chọn lựa giữa các công thức này tùy thuộc vào giá trị tương đối của biến , và . Với những bài thơ ta đảo ngược các chuỗi trong từ điển. Điều này sẽ giúp cho việc tìm những từ kết thúc giống nhau dễ hơn. 14. Cầu tròn hóa (Spheroidality) a. Thay vì dùng các thành phần, bề mặt hay hình dạng phẳng thì sử dụng dạng cong; chuyển từ bề mặt phẳng sang cầu; từ thành phần có dạng khối lập phương (hình hộp) sang các cấu trúc dạng tròn. b. Sử dụng con lăn, vật dạng bóng tròn, xoắn ốc, dạng vòm. c. Đi từ chuyển động thẳng sang chuyển động xoay, sử dụng lực ly tâm. Liên hệ CNPM: Thay thế các kiểu dữ liệu thẳng bằng những kiểu dữ liệu trừu tượng dạng vòng. Ngoài ra cũng nên xét các kiểu dữ liệu dạng cây hoặc dạng đồ thị. Nguyên lý này cũng áp 14 dụng được với các giải thuật: thay thế các giải thuật tuyến tính bằng những giải thuật phi tuyến. Nói chung thay thế giải pháp đơn giản nhất bằng giải pháp phức tạp hơn mà có thể có thêm nhiều lợi ích. Ví dụ CNPM: Thay thế tìm kiếm tuyến tính bằng phương pháp tìm kiếm phức tạp hơn như tìm kiếm nhị phân. Thay thế tìm kiếm nhị phân bằng tìm kiếm nhị phân có trọng số. Đổi hệ tọa độ từ Descartes sang hệ tọa độ cực để dễ dàng tính toán. Thay thế quá trình in từ máy tính đến thẳng máy in bằng cách thông qua server giúp kiểm soát tốt hơn luồng in ấn. Không đi theo đường ngắn nhất lại có lợi hơn. 15. Linh động (Dynamicity) a. Cho phép (hoặc thiết kế) các đặc tính của đối tượng, môi trường bên ngoài hay quá trình có thể chuyển sang chế độ tối ưu hoặc tìm ra điều kiện hoạt động tối ưu. b. Chia đối tượng thành các thành phần có thể chuyển động tương đối với nhau. c. Nếu một đối tượng (hoặc quá trình) cố định hay thiếu linh động thì làm cho nó di chuyển hoặc tự thích nghi được. Liên hệ CNPM: Như trên. Ví dụ CNPM: Thử tưởng tượng bộ nhớ cache thông minh tự điều chỉnh kích thước của nó dựa trên tần suất sử dụng trong 10 phút vừa qua. Giao diện người dùng động của ứng dụng có thể giấu bớt đi những tính năng ít dùng và thậm chí có thể tập trung vào bước được trông đợi kế tiếp. Một parser toán học có thể rút gọn công thức trước khi tính toán nó, ví dụ . 15 Khi xử lý ảnh, ta có thể thay đổi ngưỡng cục bộ một cách linh động giúp đạt được độ tương phản tối ưu để nhận dạng ký tự. Một trình biên dịch sắp xếp lại cây phân tích cú pháp để tối ưu mã sinh ra. Thay đổi khung nhìn trong ứng dụng như PowerPoint. Chỉnh sửa văn bản trong chế độ phác thảo (outline) dễ hơn và cho cái nhìn tổng thể tốt hơn chế độ trình bày (presentation). Một số chương trình đồ họa cho phép hình ảnh tự điều chỉnh tỉ lệ. 16. Tác động thiếu hoặc thừa (Partial or excessive action) a. Nếu 100 phần trăm của đối tượng khó đạt được bằng phương pháp đã biết, vấn đề có thể dễ giải quyết hơn đáng kể nếu thêm hoặc bớt một chút với cùng phương pháp đó. Liên hệ CNPM: Tăng hiệu suất bằng phân tích nhiễu loạn (perturbation analysis) đối với những tính toán đo lường và xác định được. Ví dụ CNPM: Bộ tối ưu Heuristic cho các bài toán có độ phức tạp NP như bài toán TSP sẽ dừng khi đạt được 95% của lộ trình tối ưu. Để đạt được 5% cuối sẽ tốn một khoảng thời gian lâu hơn rất nhiều. Để sắp xếp các mảng lớn thông thường quicksort sẽ được dùng do giải thuật này thực thi khá tốt. Tuy nhiên khi các mảng con cần sắp xếp trở nên nhỏ hơn, giả sử ít hơn 10 phần tử, các giải thuật sắp xếp khác sẽ được dùng do chúng thực thi tốt hơn. Để tăng độ tin cậy của tàu vũ trụ nhiều bộ xử lý sẽ tính toán cùng một giá trị với các thuật toán khác nhau. Nếu các kết quả là như nhau thì nhiều khả năng kết quả đó đúng. 16 17. Chuyển sang chiều khác (Transition into new dimension) a. Di chuyển một đối tượng trong không gian hai hoặc ba chiều. b. Sắp xếp các đối tượng theo nhiều tầng thay vì một tầng. c. Nghiêng hoặc đổi hướng đối tượng, đặt nó lên mặt bên của nó. d. Dùng mặt khác của diện tích đã cho. Liên hệ CNPM: Dùng mô hình đối tượng đa tầng thay vì đơn tầng. Ví dụ CNPM: Một hàng đợi khi tăng kích thước không đủ bộ nhớ để chứa có thể đặt các phần tử mới lên đĩa cứng đến khi lại có chỗ trong bộ nhớ chính. Trong một giao diện người dùng với cửa sổ 2D thêm vào chiều thứ 3 để đặt phần màn hình ít dùng ra phông nền phía sau. Cho cửa sổ xoay trong chiều thứ 3. Dùng hệ thập lục phân (hexadecimal) để biểu diễn giá trị giúp các tác vụ trên bit dễ hiểu hơn. 18. Dao động cơ học (Mechanical Vibration) a. Làm cho đối tượng dao động hoặc rung. b. Tăng tần số (thậm chí đến tần số siêu âm). c. Sử dụng tần số cộng hưởng của đối tượng. d. Sử dụng rung áp điện thay cho rung cơ học. e. Sử dụng kết hợp dao động siêu âm và trường điện từ. Liên hệ CNPM: Thay đổi tỉ lệ thời gian thực thi giải thuật đến khi đạt được kết quả mong muốn. Một từ đồng nghĩa khác với dao động trong máy tính là thay phiên (alternating). Ví dụ CNPM: 17 Trong kiến trúc xử lý liên hợp pipeline nhiều bộ lọc xử lý dữ liệu nối tiếp nhau thì thời gian được phân cho mỗi bộ lọc liên quan đến thời gian xử lý một phần tử và chiều dài của hàng đợi. Cũng trong kiến trúc pipeline ta có thể lập thời biểu cho các quá trình theo cùng trật tự để có dạng “sóng” đi qua pipeline. Trong chế độ “cộng hưởng” này dữ liệu cho bộ lọc kế tiếp có sẵn trên bộ nhớ. Hiệu suất sẽ tốt hơn nhiều so với lập thời biểu đối phó ngẫu nhiên. Refresh màn hình không theo đồng hồ hệ thống mà theo thời gian đến hoặc đi của dữ liệu trong GUI. Việc sử dụng thay phiên các giải thuật MIN-MAX trong trò chơi và trong trí thông minh nhân tạo cũng là một dạng dao động. Một hiệu ứng thay phiên khác là giải thuật xử lý đọc thay phiên từ nhiều hàng đợi, chẳng hạn như theo phương pháp vòng tròn round-robin. Để giảm thiểu thời gian tìm kiếm trung bình trên đĩa cứng ta cho đầu đọc dao động qua lại từ giá (rack) đầu đến giá cuối, phục vụ tất cả yêu cầu sector khi đầu đọc đi qua chúng. Công nghệ đĩa cứng mới sử dụng hai ô dao động, một ô chỉ toàn đầu đọc, thay vì nhiều đĩa xoay với một đầu đọc di chuyển. 19. Tác động theo chu kỳ (Periodic Action) a. Thay vì hành động liên tục thì hành động theo chu kỳ hoặc theo nhịp. b. Nếu một hành động đã có tính chu kỳ thì tăng mức độ hoặc tần số của nó. c. Dùng khoảng nghỉ giữa các xung để thực hiện hành động khác. Liên hệ CNPM: Thay vì thực hiện một tác vụ liên tục, xác định khung thời gian và thực hiện tác vụ đó theo chu kỳ. Ví dụ CNPM: 18 Cập nhật bảng người dùng trong cơ sở dữ liệu và tính lại chỉ mục sắp xếp chỉ một lần trong ngày thay vì thực hiện với mỗi lần cập nhật. Tương tự loại bỏ các entry đã đánh dấu xóa chỉ một lần trong ngày. Chuẩn bị trộn thư (mail merge) trên đĩa cứng trước khi gửi đến máy in. Đặc biệt khi việc tính toán một trang mất nhiều thời gian hơn in nó. Bộ thu dọn rác chỉ thực thi khi “rác” vượt quá ngưỡng nào đó. 20. Liên tục tác động có ích (Continuity of useful action) a. Cho công việc diễn ra liên tục, tất cả thành phần của đối tượng luôn hoạt động hết công suất. b. Loại bỏ tất cả hành động, công việc đứng yên hoặc đứt đoạn. Liên hệ CNPM: Phát triển một giải pháp được phân chi tiết tốt để tận dụng bộ xử lý tối đa. Ví dụ CNPM: Hệ điều hành đa nhiệm. Mọi loại quá trình đều có thể chạy nền, như truy vấn, in ấn, chống phân mảnh đĩa cứng, quét virus… Trong khi chỉnh sửa văn bản ta có thể cho kiểm tra ngữ pháp và chính tả đồng thời. Tự động chèn từ trong khi gõ, gợi ý các tham số cho công thức trong bảng tính. Liên tục biên dịch code trong phần mềm soạn thảo cho người lập trình. Liên tục kiểm tra các URL trong bookmarks của trình duyệt xem còn hợp lệ không. Kiểm tra tính hợp lệ của địa chỉ email trong ứng dụng email. Trong máy scan phẳng, thanh đèn quét di chuyển qua ảnh hai lần. Dùng lần quét thứ nhất để chuẩn bị tối ưu nhất cho lần quét cuối (như hiệu chỉnh phông nền). Hoặc ta có thể kết hợp hai ảnh để có độ phân giải cao hơn. Giải nén trước trong khi đang đọc một luồng được nén. 19 21. Vượt nhanh (Rushing through) a. Thực hiện quá trình, giai đoạn có hại hoặc nguy hiểm với tốc độ cao. Liên hệ CNPM: Cho truyền dữ liệu trong chế độ truyền từng khối (burst mode) ngay trước khi gặp tình huống xấu nhất. Ví dụ CNPM: Cố gắng viết lại các vòng lặp trong phần mềm sao cho vừa với bộ nhớ cache của bộ xử lý chính. Như vậy bộ xử lý sẽ không cần phải chờ I/O của bộ nhớ. Ngắt truy cập đến cơ sở dữ liệu khi backup dữ liệu. Việc backup có thể được thực hiện nhanh hơn và sau đó người dùng có thể sử dụng cơ sở dữ liệu. Khi phát hiện mất điện thì cho dump bộ nhớ ra đĩa cứng để cứu tất cả dữ liệu. Khi tần suất lỗi đĩa cứng tăng lên thì sao chép toàn bộ ra đĩa cứng khác càng sớm càng tốt. 22. Biến hại thành lợi (Convert harm into benefit) a. Sử dụng các nhân tố có hại, đặc biệt các tác động có hại với môi trường hoặc điều kiện xung quanh để đạt được tác động tích cực. b. Loại bỏ hành động chính gây hại bằng cách kết hợp nó với hành động gây hại khác để giải quyết vấn đề. c. Khuếch đại nhân tố có hại đến khi không còn gây hại nữa. Liên hệ CNPM: Đảo ngược vai trò của quá trình có hại và cho nó trở lại. Ví dụ CNPM: Nếu phần mềm biết một số tính toán hoặc truy vấn nào đó tốn nhiều thời gian, cho hiển thị thông điệp rằng người dùng có thể đi uống café hoặc tập thể dục co giãn gân cốt. Công việc này thậm chí có thể tốn nhiều thời gian hơn nhưng ít ra người dùng không phải ở trong trạng thái chờ. 20 Dùng nhiều bộ cảm biến để đọc (= thêm công việc) và lấy trung bình để khử nhiễu (= chất lượng tốt hơn). Nếu một chương trình quá chậm để có thể tương tác, biến nó thành chương trình xử lý theo bó (batch), như vậy mong đợi của người dùng sẽ khác hẳn. Nếu một chương trình phát hiện đường truyền có chất lượng tồi thì giảm tốc độ giao tiếp xuống. Mặc dù chậm hơn nhưng kết quả cuối cùng có thể có đầu ra tốt hơn do ít lỗi hơn. Nếu chất lượng của thiết bị lưu trữ thấp thì thêm một số byte dư vào dữ liệu sao cho dữ liệu sẽ được sửa lỗi. 23. Phản hồi (Feedback) a. Đưa vào thông tin phản hồi (tham chiếu ngược, kiểm tra chéo) để cải thiện quá trình hoặc hành động. b. Nếu thông tin phản hồi đã được dùng thì thay đổi mức độ hoặc ảnh hưởng của nó. Liên hệ CNPM: Đưa biến phản hồi vào trong vòng lặp để cải thiện các lần lặp phía sau. Ví dụ CNPM: Khi một số tính toán hoặc truy vấn tốn nhiều thời gian thì cho hiển thị thanh tiến độ (progress bar). Một bộ lập lộ trình có thể cho hiển thị kết quả đầu tiên trong khi nó cố gắng tối ưu lộ trình này. Một giải thuật xấp xỉ có thể tính toán giá trị đến độ chính xác nào đó và các giá trị trung gian được hiển thị trên màn hình. Giải thuật di truyền có thể cho hiển thị những kết quả tốt nhất tìm được tính đến thời điểm hiện tại trong khi lặp tiếp qua nhiều thế hệ đáp án về sau. 24. Sử dụng trung gian (Mediator) a. Sử dụng vật thể truyền tải trung gian hoặc quá trình trung gian. 21 b. Tạm thời kết hợp đối tượng với một đối tượng khác mà có thể dễ dàng tháo bỏ. Liên hệ CNPM: Sử dụng một lớp trung gian để cung cấp khung nhìn dữ liệu cho quá trình trong phạm vi ứng dụng. Ví dụ CNPM: Phương pháp thiết kế trung gian thực hiện điều này một cách rõ ràng. Thay vì phải biết trạng thái của một loạt đối tượng và giữ cho chúng đồng bộ với trạng thái thay đổi của ta, ta chỉ phải báo cho lớp trung gian hoặc hỏi lớp trung gian. Điều này giúp giảm giao tiếp giữa các đối tượng và giảm độ phức tạp. Ví dụ, tạo một đối tượng riêng để xử lý tất cả vấn đề cấu hình. Không cho đối tượng trong bộ nhớ giao tiếp trực tiếp với các bảng cơ sở dữ liệu, mà cho chúng truy cập thông qua một lớp trung gian để nếu cơ sở dữ liệu thay đổi thì thay đổi này không lan truyền ra toàn bộ phần mềm. Sử dụng một server in ấn để giữ công việc tạm thời khi máy in bị ngắt mạng. 25. Tự phục vụ (Self-service) a. Làm cho đối tượng tự phục vụ nó bằng cách thực hiện các chức năng có ích bổ trợ. b. Sử dụng tài nguyên, năng lượng hoặc chất thải bỏ đi. Liên hệ CNPM: Như trên. Ví dụ CNPM: Một ứng dụng an ninh, chẳng hạn như firewall hay chương trình quét virus sẽ tự kiểm tra chính nó trước khi chạy. Một cơ sở dữ liệu có thể tự tu sửa nội dung của nó do nó nắm các thông tin transaction. Một trình duyệt web có thể chuyển hướng bạn đến web site khác khi server được yêu cầu không có. Ví dụ, nếu Google tạm thời ngưng hoạt động nó sẽ chuyển hướng bạn đến Yahoo. 22 Một trình duyệt web gợi ý những hoán vị/dẫn xuất hợp lý các hostname khác nhau và hiển thị các lựa chọn thay thế này nếu không tìm thấy hostname. Một đối tượng đồng hồ tự đồng bộ hóa bằng giao thức NTP. Một chương trình backup tự bao hàm chương trình khôi phục khi backup; ví dụ, các tập tin zip tự giải nén. Các virus hay sâu máy tính có thể tự sao chép qua internet. 26. Sao chép (Copying) a. Thay vì sử dụng đối tượng hiếm, đắt tiền, dễ vỡ thì dùng bản sao đơn giản và rẻ tiền hơn. b. Thay thế đối tượng hoặc quá trình bằng bản sao quang học. c. Nếu bản sao quang học đã được dùng thì chuyển sang bản sao hồng ngoại hoặc cực tím. Liên hệ CNPM: Thay vì tạo đối tượng mới tiêu tốn tài nguyên không cần thiết thì chỉ thực hiện sao chép sơ bộ. Ví dụ CNPM: Thay vì xây dựng ứng dụng từ đầu (= đắt tiền) thì tái sử dụng các component có sẵn (= rẻ hơn). 27. Rẻ thay cho đắt (Inexpensive short-lived objects) a. Thay thế đối tượng đắt tiền bằng nhiều đối tượng rẻ tiền với ít ưu điểm hơn (chẳng hạn như tuổi thọ ngắn). Liên hệ CNPM: Như trên. Ví dụ CNPM: Thay vì sử dụng nhiều bộ nhớ tốc độ cao thì sử dụng đĩa cứng. Chi phí lưu trữ được đánh đổi với thời gian truy xuất. 23 Hiển thị một trang phức tạp với không đủ chi tiết, do để hiển thị chính xác toàn bộ cần rất nhiều thời gian tính toán hơn. Sử dụng độ phân giải thấp cho ảnh nếu có thể. Tính toán với số nguyên thay vì số dấu phẩy động. Nó nhanh hơn nhiều và có thể đủ chính xác với ứng dụng của bạn. Thay thế một hàm tốn nhiều thời gian bằng bảng tra, chẳng hạn như thay thế và bằng bảng ánh xạ trên mảng [0..45]. Xây dựng một siêu máy tính từ nhiều máy tính cũ. 28. Thay thế hệ cơ học (Replacement of Mechanical System) a. Thay thế hệ cơ học bằng hệ tri giác (thị giác, thính giác, vị giác hay khứu giác). b. Sử dụng điện, từ trường và điện từ trường để tương tác với đối tượng. c. Đổi trường tĩnh thành động, trường không cấu trúc thành có cấu trúc. d. Kết hợp các trường với các hạt sắt từ. Liên hệ CNPM: Như trên? Bản thân phần mềm không có ý nghĩa cơ học. Nhưng với những hệ thống bao gồm cả thành phần cơ học lẫn phần mềm thì sẽ có nhiều ví dụ. Ví dụ CNPM: Ống nghe của bác sĩ có thể được thay thế bằng micro và headphone. Ưu điểm ở đây là có thể ghi âm lại, có thể thực hiện xử lý tín hiệu phức tạp, chẳng hạn như phân tích tần suất, đếm nhịp tim… 29. Sử dụng kết cấu thủy hoặc khí (Pneumatic or hydraulic construction) ** a. Sử dụng thành phần khí hoặc chất lỏng của đối tượng thay vì thành phần rắn. Liên hệ CNPM: Sử dụng các kiểu dữ liệu linh động hoặc tổng quát hơn thay cho những kiểu dữ liệu cố định hay hằng số. Ví dụ CNPM: 24 Lớp container với dung lượng thay đổi chính là cấu trúc dữ liệu cấp phát động. Thông thường vào thời điểm biên dịch ta không biết chương trình cần phải xử lý bao nhiêu dữ liệu. Với các cấu trúc dữ liệu cấp phát động, khi cần thêm nhiều phần tử, vùng bộ nhớ của cấu trúc dữ liệu sẽ nở rộng ra và co lại khi các phần tử bị xóa đi. Dùng biến thay vì dùng hằng cứng trong code. Khởi tạo các biến này vào lúc khởi động với giá trị thích hợp. Khi hằng số thay đổi thì hệ thống chỉ phải thay đổi ở một chỗ. 30. Sử dụng vỏ dẻo hoặc màng mỏng (Flexile films or thin membranes) a. Sử dụng vỏ dẻo và màng mỏng thay cho các cấu trúc ba chiều. b. Cô lập đối tượng khỏi môi trường bên ngoài bằng vỏ dẻo và màng mỏng. Liên hệ CNPM: Như trên. Ví dụ CNPM: Các lớp hướng đối tượng với public interface đã định nghĩa (cố định) có thể thay đổi cách trình bày bên trong. Proxy có thể đóng vai trò lá chắn cho nhiều đối tượng. 31. Sử dụng vật liệu nhiều lỗ (Porous materials) ** a. Làm cho đối tượng có nhiều lỗ hoặc thêm vào thành phần nhiều lỗ. b. Nếu đối tượng đã có lỗ thì dùng những lỗ đó để đưa chức năng hoặc chất có ích vào. Liên hệ CNPM: Thay đổi interface của lớp để thể hiện nhiều hơn hay giấu bớt đi cấu trúc bên trong của nó. Ví dụ CNPM: “Vật liệu nhiều lỗ” ở đây có thể được hiểu là cố tình làm cho ứng dụng phần mềm kém hoàn hảo. Ví dụ như hệ thống dạy kèm thông minh (Intelligent Tutoring 25 System - ITS). Giả sử một người học chơi cờ với ITS. Người chơi sẽ trở nên chán nản và không hứng thú nếu như máy tính lúc nào cũng thắng. Ngoài ra, nếu máy tính luôn chơi hoàn hảo, người chơi sẽ không học được cách tận dụng sai lầm của đối thủ - một kỹ năng quan trọng trong chơi cờ với con người. Do đó, ITS cần phải “có lỗ” và tạo sai lầm có chủ ý để xuống cùng cấp với người chơi. Một đối tượng để lộ ra cách thức làm việc bên trong của nó, chẳng hạn như ta có thể thấy và chi phối trực tiếp các biến bên trong. Mặc dù điều này có thể ảnh hưởng đến tính toàn vẹn của đối tượng, nhưng nó cũng có thể tăng hiệu suất ở mức độ nào đó. Ví dụ, ta có thể lưu các giá trị trong đối tượng mà không cần phải qua công đoạn kiểm tra tính hợp lệ của những giá trị này. 32. Đổi màu (Changing the color) a. Đổi màu của đối tượng hoặc môi trường bên ngoài của nó. b. Đổi độ trong suốt của đối tượng hoặc môi trường bên ngoài của nó. Liên hệ CNPM: Như trên. Ví dụ CNPM: Đồng hồ có độ trong suốt 90% trên desktop trở nên rõ hơn khi gần đến thời điểm báo giờ hẹn. Một chương trình giám sát hiển thị trong suốt trên GUI của máy tính trở nên rõ hơn khi cần có sự chú ý. Có ứng dụng cho các nhà thiên văn có thể thay đổi màu sắc của giao diện người dùng sang đen và đỏ thay vì đủ màu. Điều này cần thiết khi sử dụng khi trời tối do mắt người cần thời gian để quen với bóng tối để nhìn thấy các ngôi sao. GUI màu đỏ không ảnh hưởng đến độ nhạy của mắt. Có thể dùng để tiết kiệm pin cho laptop, khi làm việc trong bóng tối mà không sử dụng back-light chỉ dùng ký tự màu đỏ. 26 33. Đồng nhất (Homogeneity) a. Làm cho đối tượng tương tác với một đối tượng cùng vật liệu hoặc vật liệu có tính chất tương đồng. Liên hệ CNPM: Tạo các lớp không nằm riêng lẻ mà thuộc hệ phân cấp lớp, do điều này sẽ giúp các lớp khác nhau trông giống nhau trong cùng cấp. Ở cấp đó chúng sẽ có cùng một số tính chất. Ví dụ CNPM: Viết các giải thuật nhận các đối tượng nền làm tham số truyền vào để tất cả những lớp dẫn xuất cũng có thể được xử lý. 34. Loại bỏ và tái sinh từng phần (Rejecting and regenerating parts) a. Loại bỏ những thành phần của đối tượng đã hoàn thành chức năng của mình hoặc sửa đổi chúng ngay trong quá trình hoạt động. b. Ngược lại, phục hồi những phần tiêu thụ được của đối tượng ngay trong quá trình hoạt động. Liên hệ CNPM: Giải phóng bộ nhớ không dùng của ứng dụng. Ví dụ CNPM: Giữ một vùng chứa các đối tượng (phức hợp) không dùng đến nhưng thường xuyên được tạo ra, sử dụng rồi xóa. Bằng cách giữ chúng quá trình tạo mới sẽ nhanh hơn nhiều do các đối tượng được lấy từ vùng chứa. Nó cũng giúp giảm bớt công việc cho bộ thu dọn rác. 35. Thay đổi thông số hóa lý của đối tượng (Transformation properties) a. Thay đổi trạng thái vật lý của đối tượng. b. Thay đổi mật độ hoặc độ đặc. 27 c. Thay đổi độ linh động. d. Thay đổi nhiệt độ. Liên hệ CNPM: Như trên. Ví dụ CNPM: Trộn các ứng dụng phần mềm có cơ sở dữ liệu gần như giống nhau để giảm dư thừa. Bằng cách làm việc với các template một trình soạn thảo có thể có nhiều chức năng, chẳng hạn như ta có thể nạp một template để highlight cú pháp giúp cho trình soạn thảo phù hợp với ngôn ngữ lập trình khác. 36. Chuyển pha (Phase transition) ** a. Sử dụng các hiện tượng xảy ra trong quá trình chuyển pha. Liên hệ CNPM: Sử dụng các kết quả và đối tượng trung gian có sẵn trong quá trình chuyển trạng thái của đối tượng. Ví dụ CNPM: Việc chuyển trạng thái của một đối tượng có thể cần nhiều tính toán phức tạp hoặc có chi phí tìm kiếm cao trong cơ sở dữ liệu. Bằng cách gán kết quả trung gian cho các biến (caching), các đối tượng khác có thể truy xuất kết quả trung gian này, nhờ đó cải thiện hiệu suất. Ví dụ, một danh sách liên kết có thể giữ một con trỏ đến phần tử cuối cùng được thêm vào. Khi cần tìm kiếm trên danh sách ta có thể kiểm tra con trỏ này để xem nên bắt đầu từ node này hay phải bắt đầu lại từ đầu danh sách. Điều này giúp tăng tốc tìm kiếm (tuyến tính) với hệ số 2, tính trên trung bình. 37. Sử dụng sự nở nhiệt (Thermal expansion) ** a. Sử dụng sự nở (hoặc co) do nhiệt của vật liệu. 28 b. Nếu sự nở nhiệt đang được dùng thì sử dụng nhiều vật liệu với hệ số nở nhiệt khác nhau. Liên hệ CNPM: Nén (hoặc giải nén) dữ liệu để giảm (hoặc tăng) kích thước dữ liệu. Cũng có thể được xem như thay đổi độ chính xác. Ví dụ CNPM: Không gian bộ nhớ máy tính là sự kết hợp giữa bộ nhớ hoạt động (trong CPU) và bộ nhớ phân trang (nằm ở phương tiện lưu trữ gần đó như bộ nhớ cache hay bộ nhớ ảo). Việc co giãn tài nguyên này để phục vụ các quá trình cần dùng đến bộ nhớ nhiều hơn hay ít hơn có thể được mô hình hóa theo nhiệt động học bằng cách gắn vào một hệ đo tương đồng với “nhiệt độ” mà sẽ thể hiện hiệu suất máy tính vào từng thời điểm. Khi dữ liệu được nén lại (co nhiệt) nó có thể được gửi qua mạng nhanh hơn, hoặc tốn ít không gian lưu trữ hơn. Ta phải đốt nóng nó lên (giải nén) để biến nó hữu ích trở lại. Khi phải tính toán bằng dollar, hoặc đơn vị tiền tệ khác thì công việc này thường là tính toán trên số dấu phẩy động. Bằng cách nhân tất cả số với 100 (đốt nóng với hệ số 100) ta có thể tính toán trên miền số nguyên mà sẽ nhanh hơn và không có (hoặc ít) lỗi làm tròn số. 38. Sử dụng các chất oxy hóa (Accelerated oxidation) ** a. Thay thế không khí thường bằng không khí giàu oxy. b. Thay thế không khí giàu oxy bằng môi trường thuần oxy. c. Cho bức xạ ion hóa không khí hoặc oxy. d. Sử dụng oxy đã ion hóa. e. Thay thế oxy đã ozon hóa hoặc ion hóa bằng khí ozon. Liên hệ CNPM: 29 Sử dụng cách biểu diễn tối ưu để xử lý nhanh hơn. Ví dụ CNPM: Hiển nhiên, phần mềm không có liên quan gì đến oxy hóa, nhưng ta có thể trừu tượng hóa nguyên lý này để chỉ chung hành động trộn lẫn thứ này với thứ khác để cho ra kết quả ngẫu nhiên. Ta có sự tương đồng với giải thuật mã hóa “pha muối”. Một giải thuật mã hóa không có thành phần ngẫu nhiên, “muối”, chạy trên văn bản rõ ràng (chẳng hạn như mật khẩu người dùng) sẽ luôn cho ra cùng kết quả mã hóa. Cùng một mật khẩu sẽ luôn được mã hóa bằng cùng một chuỗi trên mọi máy tính chạy giải thuật mã hóa “không pha muối”. Nếu bạn phá được mật khẩu một lần, bạn có thể qua mặt an ninh trên mọi máy tính cài đặt giải thuật đó. Tuy nhiên, nếu giải thuật mã hóa thêm vào một hệ số ngẫu nhiên, gọi là “muối”, vào các tính toán của nó, văn bản mã hóa sẽ chỉ hợp lệ đối với một máy duy nhất, do về lý thuyết tất cả các máy khác sẽ pha muối các tính toán của chúng khác nhau. Thay thế một giải thuật viết dưới dạng ngôn ngữ lập trình cấp cao bằng một thường trình (routine) hợp ngữ đã được điều chỉnh, tối ưu bằng tay và phù hợp với bộ xử lý. Hoặc thậm chí dùng phần cứng nào thực hiện cùng chức năng, chẳng hạn như nén video. Dùng định dạng nhị phân để tăng hiệu quả xử lý, lưu trữ và lưu lượng thông tin trên mạng. 39. Sử dụng môi trường trơ (Inert Environment) ** a. Thay thế môi trường thông thường bằng môi trường trơ. b. Thêm vào đối tượng các thành phần trung tính hoặc các chất trơ. Liên hệ CNPM: Thay thế môi trường tính toán thông thường bằng môi trường hạn chế hơn. Ví dụ CNPM: 30 Một môi trường trơ là môi trường không có phản ứng với các đối tượng trong môi trường đó. Nghĩa suy rộng hợp lý sẽ là một môi trường trơ là môi trường ôn hòa. Với cách diễn dịch này, ta có sự tương đồng trong quy trình kiểm nghiệm phần mềm. Trong phát triển phần mềm, đôi khi cần phải kiểm nghiệm phần mềm đang phát triển trong một môi trường giả lập với một số (không phải tất cả) động thái của môi trường thực sự mà phần mềm sẽ hoạt động. Một ví dụ khác là quy trình kiểm chuẩn (benchmark test), thường được dùng để đo lường hiệu suất phần cứng và phần mềm. Môi trường chạy kiểm chuẩn được kiểm soát cẩn thận để cách ly hệ thống khỏi các ảnh hưởng không kiểm soát được trong khi vẫn giữ các đặc tính quan trọng và do đó cũng là một môi trường trơ. Cài đặt một máy tính bù nhìn (dummy) không được bảo vệ trên Internet để sớm phát hiện sự bùng nổ virus hay sâu máy tính. Hạn chế tính năng của các thành phần thực thi được trong trình duyệt web. Chạy ứng dụng trong chế độ debug (không hoàn toàn trơ nhưng được kiểm soát tốt). 40. Sử dụng vật liệu tổng hợp (Composite materials) a. Thay vật liệu đồng nhất bằng vật liệu tổng hợp. Liên hệ CNPM: Đổi từ mức trừu tượng phần mềm đồng nhất sang mức trừu tượng tổng hợp. Ví dụ CNPM: Các phương pháp thiết kế tổng hợp chính là sự trừu tượng hóa nền tảng đằng sau các framework thành công thường gặp. Phương pháp thiết kế tổng hợp có thể được mô tả tốt nhất như một tập các phương pháp mà khi tích hợp chúng lại thì hiệu ứng hiệp lực của nó khiến cho việc tổng hợp có ý nghĩa cao hơn là chỉ cộng các thành phần lại. 31 III. KẾT LUẬN Trong lịch sử sáng tạo và đổi mới, hay gần gũi hơn là trong cuộc sống thường nhật, ta đã thấy được rằng các nguyên lý sáng tạo của Altshuller khá là đầy đủ để có thể lý giải cho hầu hết mọi phát minh sáng chế trên thế giới này. Các lợi ích của “40 nguyên tắc sáng tạo cơ bản” đối với chúng ta có thể kể đến như: Giúp giải phóng tính ì tâm lý. Phát triển các ý tưởng cải tiến sản phẩm (giúp tăng năng suất, tiết kiệm năng lượng, tiền bạc và thời gian...) Phát triển các ý tưởng giải quyết vấn đề. Định hướng sử dụng kiến thức hiệu quả hơn. Cho đến nay, vẫn còn nhiều nỗ lực để cố gắng đưa ra các định nghĩa chuẩn của 40 nguyên lý sáng tạo cho công nghệ phần mềm. Do khoa học máy tính là một lĩnh vực rất rộng lớn nên các ví dụ trong bài viết này được rút ra từ các giai đoạn khác nhau trong vòng đời của một sản phẩm phần mềm, đôi khi ở mức thiết kế, đôi khi ở mức hiện thực ứng dụng. Mặc dù chỉ giới hạn trong phạm vi công nghệ phần mềm, nhưng với việc hệ thống đầy đủ 40 nguyên lý sáng tạo như trên, ta có thể tự tin nói rằng những nguyên lý sáng tạo này cũng có thể được nhận ra ở bất cứ đâu và trong bất cứ lĩnh vực nào, dù là khoa học chính thống hay phi chính thống. Điều đó thúc đẩy chúng ta thực hành sáng tạo và mạnh dạn đưa ra ý tưởng thường xuyên hơn. Và đó cũng là cách mà thế giới thay đổi mỗi ngày. 32 IV. TÀI LIỆU THAM KHẢO [1] https://sites.google.com/site/sangtaotretho/the-gioi-sang-tao/40-thu-thuat-sang-che [2] Rea, K.C., TRIZ and Software 40 Principles Analogies, Part 1. The TRIZ Journal. Sep, 2001. Internet: [3] Rea, K.C., TRIZ and Software 40 Principles Analogies, Part 2. The TRIZ Journal. Nov, 2001. Internet:

Các file đính kèm theo tài liệu này:

  • pdf1211072_ppnckh_maihuuthien_2359.pdf