Vì mục đích này nên chúng ta sẽ tiếp cận lần lượt từng chủ đề trong kỹ thuật phần mềm và xem xét nó ở khía cạnh tổng thể của TRIZ, bao gồm: • Các nguyên tắc sáng tạo • Các tiểu chuẩn sán
Trang 1Bộ môn:
PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC
VÀ TƯ DUY SÁNG TẠO
Tp.HCM, 04/2013
Trang 2MỤC LỤC
Trang 3LỜI NÓI ĐẦU
Lý thuyết về giải quyết các vấn đề sáng tạo TRIZ ngày càng trở thành một khuynh hướng sáng tạo phổ biến trên toàn cầu Genrich Altshuller là người khởi đầu ý tưởng về TRIZ trong suốt những năm 1940 và đã sử dụng nó cùng với các đồng nghiệp của mình suốt 50 sau đó Altshuller đã quan sát rất nhiều bằng sáng chế, hơn
400 nghìn dự án khác nhau và phát hiện ra rằng các cải tiến, thay đổi về mặt công nghệ và một hệ thống các phát minh, sáng chế liên quan trong mỗi dự án đều nằm trong một quy trình: phát sinh, phát triển, trưởng thành và phai nhạt dần theo một quy luật có thể theo dõi được Nếu chúng ta nắm bắt các quy luật này, ta có thể thiết
kế và dự đoán được các xu hướng phát triển của các sản phẩm trong tương lai TRIZ đã trở thành một công cụ đầy sức mạnh để giải quyết các vấn đề và đưa ra các giải pháp sáng tạo Nhìn sơ qua, TRIZ dường như chủ yếu được áp dụng cho các bài toán cơ học và không nhiều cho các vấn đề về điện tử và phần mềm Tuy nhiên, phần mềm là một phần phát triển của sản phẩm và đang trở thành nguồn gốc của mọi vấn đề Nếu TRIZ cũng được áp dụng đúng đắn vào phần mềm, khả năng ứng dụng của TRIZ sẽ đươc mở rộng và các rắc rối liên quan tới phần mềm có thể được giải quyết.
Trong tiểu luận này, chúng ta sẽ xem xét nội dung của các nguyên tắc sáng tạo TRIZ
và vận dụng chúng trong lĩnh vực phát triển phần mềm Vì mục đích này nên chúng
ta sẽ tiếp cận lần lượt từng chủ đề trong kỹ thuật phần mềm và xem xét nó ở khía cạnh tổng thể của TRIZ, bao gồm:
• Các nguyên tắc sáng tạo
• Các tiểu chuẩn sáng tạo
• Các khuynh hướng phát triển
Em xin chân thành cảm ơn thầy Hoàng Kiếm, người đã bước đầu giúp em tìm hiểu
và tiếp cận một bộ môn khoa học mới đầy thú vị và thử thách, cũng như đã khơi gợi
Trang 4tinh thần và cảm hứng sáng tạo để em có thể khởi đầu tìm tòi và áp dụng các nguyên tắc sáng tạo trong công tác nghiên cứu khoa học cũng như trong thực tiễn cuộc sống.
Trang 5PHẦN THỨ NHẤT: CÁC NGUYÊN LÝ SÁNG TẠO
TRIZ
CHƯƠNG I: TỔNG QUAN CÁC NGUYÊN LÝ SÁNG TẠO TRIZ
Hình 1: TRIZ đánh thức bộ não của bạn
TRIZ là một bộ công cụ giải quyết các vấn đề kỹ thuật một cách sáng tạo TRIZ tổng kết các giải pháp và các thành công đã được biết đến để đúc kết nên các cách thức giúp chúng ta giải quyết các vấn đề một cách có hệ thống TRIZ khởi nguồn từ nước Nga, do kỹ sư và nhà phát minh Genrich Altshuller sáng tạo nên TRIZ là một bộ công cụ mạnh mẽ mà trong đó, mỗi công cụ sử dụng rất đơn giản
và đề cập đến tất cả các mặt của việc nắm bắt và giải quyết vấn đề Thử thách duy nhất đối với TRIZ đó là học cách sử dụng công cụ nào và khi nào thì sử dụng
nó Điều này đòi hỏi những trải nghiệm thực tế và mức độ quen thuộc TRIZ giúp chúng ta hiểu và giải quyết các vấn đề bằng cách dựa trên một kho tàng rộng lớn các kiến thức khoa học và kỹ thuật đã được tích lũy trong quá khứ và tìm ra câu trả lời có liên quan cho các vấn đề thực tế.
Trang 6Bộ công cụ TRIZ khá đơn giản và mặc dù rất chặt chẽ và mạnh mẽ nhưng nó khá
dễ dàng cho chúng ta học và áp dụng nhanh chóng vào thực tế Các công cụ chính bao gồm:
40 nguyên tắc sáng tạo: dùng để giải quyết các mâu thuẫn, sử dụng các nguyên tắc này thông qua Ma Trận Mâu Thuẫn và Các nguyên tắc Tách Rời.
8 khuynh hướng phát triển: để xây dựng một hệ thống hoàn hảo trong tương lai.
Tư duy về thời gian và phạm vi: áp dụng vào một ngữ cảnh của vấn đề
để hiểu rõ và giải quyết nó.
Ý tưởng, kết quả, giải pháp, hệ thống, tài nguyên lý tưởng: để hiểu các yêu cầu và hình dung ra các giải pháp.
Nguồn lực và cắt giảm: giúp tìm ra các giải pháp thông minh với chi phí thấp
Các giải pháp tiêu chuẩn: để giải quyết một vấn đề hệ thống bất kỳ Tạo
và hoàn chỉnh hệ thống, đơn giản hóa, xử lý các tác nhân gây cản trở, phát triển các chức năng mới và các giải pháp thông minh cho các vấn đề kỹ thuật.
Trong phạm vi của bài tiểu luận này, chúng ta cùng khảo sát một phần nội dung của
40 nguyên tắc sáng tạo và phân tích ứng dụng của các nguyên tắc này trong lĩnh vực công nghệ phần mềm để thấy được tiềm năng và hiệu quả to lớn đạt được của các nguyên tắc sáng tạo trong kỹ thuật và cuộc sống.
Trang 7Mỗi chúng ta đều có giải pháp khác nhau
đối với cùng một vấn đề
Trang 8CHƯƠNG II: MỘT SỐ NGUYÊN LÝ SÁNG TẠO
I Nguyên tắc phân nhỏ
1 Chia đối tượng thành nhiều phần độc lập
Các ống kính máy ảnh có chiều dài
tiêu cự khác nhau
Các cổng kết nối đa chân
Nhiều xi-lanh trong động cơ đốt trong
Máy bay phản lực đa động cơ
2. Làm cho đối tượng dễ tháo lắp
Các khớp nối ngắt nhanh trong hệ thống
ống nước và thủy lực
Xích xe đạp và xe máy
3. Tăng mức độ phân đoạn
Động cơ đốt trong với 16 hoặc 24 van so
Trang 9II Nguyên tắc tách riêng
1. Tách phần cản trở hoặc thuộc tính gây nhiễu ra khỏi đối tượng
Khu vực không hút thuốc trong nhà hàng hoặc toa tàu hỏa
Cục nóng gây ồn ào của máy lạnh được đem ra khỏi phòng
2. Chỉ tách phần hoặc đặc tính cần thiết ra khỏi đối tượng
Các hạng ghế khác nhau trên máy bay
Tiếng chó sủa (nhưng không có chó thật sự) để dọa trộm.
Cửa sổ để thông gió và lấy ánh sáng Với phòng có máy lạnh thì không cần mở cửa, chỉ cần lấy ánh sáng.
Trang 102. Thay đổi các tác nhân hoặc môi trường bên ngoài (hay ảnh hưởng bên ngoài) từ dạng theo mẫu sang dạng không theo mẫu.
Dẫn một dòng chất lỏng chảy xung quanh một vật để thay đổi đặc tính truyền nhiệt.
Sử dụng nhiệt độ, mật độ, áp suất đo bằng gradient thay cho cố định.
Tính đến các điều kiện thời tiết khắc nghiệt khi thiết kế các hệ thống ngoài trời.
Trang 11 Dao Thụy Sĩ đa năng
Kính mắt có các thấu kính hai tiêu cự
Trang 12 Ghế an toàn dành cho trẻ em trên xe
hơi có thể chuyển thành ghế đẩy
Trung tâm giải trí tại gia
Dao Thụy Sĩ
Chức năng nướng trong lò viba
5.
VI Nguyên tắc chứa trong
1. Đặt một vật vào trong một vật khác, rồi lại đặt vào trong một vật khác nữa
Cửa hàng sách trong cửa hàng cafe
Lớp vải lót bên trong áo khoác
Các muỗng đo lường
Trang 132. Đặt nhiều vật vào trong nhiều vật khác
Kính viễn vọng
Bộ thu gom cỏ trên máy cắt cỏ
Phủ nhiều lớp chống ăn mòn
3. Đưa một vật qua lỗ hổng của vật khác
Ăng-ten thu gọn lại bằng cách lồng vào nhau
Dây điện có thể co rút lại trong máy hút bụi, nồi cơm điện
Dây đai an toàn trên xe hơi có thể rút ngắn lại
Hình 7: Nguyên tắc chứa trong
VII Nguyên tắc tác động thừa hoặc một phần
Nếu một phương pháp không thể đạt được 100% hiệu quả mong muốn thì hãy dùng “ít đi” hoặc “mạnh lên” chính phương pháp đó, vấn đề sẽ trở nên dễ giải quyết hơn.
Trang 14 Xịt nhiều hơn một chút khi sơn, sau đó xóa phần thừa đi
Các công đoạn gia công chà nhám rồi chà bóng sản phẩm
Tô tường bằng thạch cao rồi chà để làm nhẵn mặt tường
Hình 8: Nguyên tắc tác động thừa hoặc một phần
Trang 15 Trong tiểu luận này, chúng ta cùng xem xét áp dụng các nguyên tắc sáng tạo TRIZ trong phát triển phần mềm với các vấn đề sau:
• Áp dụng TRIZ cho các vấn đề liên quan tới phát triển phần mềm và mở rộng lĩnh vực ứng dụng của TRIZ vào công nghệ phần mềm.
• Làm rõ các chủ đề của kỹ thuật phần mềm dưới góc nhìn của TRIZ.
• Xem xét các tác động ngược lại của các nguyên tắc và tri thức của kỹ thuật phần mềm đối với TRIZ.
CHƯƠNG IV: LẬP TRÌNH CẤU TRÚC TRONG CÔNG NGHỆ
PHẦN MỀM
Trang 16 Khoảng cuối những năm 1960, khi quy mô của phát triển phần mềm ngày càng mở rộng đến mức khó kiểm soát theo hướng đáng tin cậy, một số quy tắc về kỹ thuật phần mềm bắt đầu được khởi xướng Các ngôn ngữ lập trình như COBOL hay FORTRAN được sử dụng chủ yếu cho các ứng dụng khoa học và nghiệp vụ Để giúp các chương trình hiệu quả hơn về cả thời gian và không gian
bộ nhớ, thông thường người ta sử dụng câu lệnh Goto để xây dựng các thủ tục phức tạp mặc dù điều này sẽ khiến cho chương trình hỗn tạp khó kiểm soát E Dijkstra đã từng phát biểu rằng các câu lệnh Goto chỉ khiến cho chương trình khó hiểu và chủ trương ủng hộ “Lập trình cấu trúc” để loại bỏ các câu lệnh Goto
và sử dụng chỉ ba cấu trúc điều khiển cơ bản, bao gồm: Cấu trúc tuần tự, Cấu trúc rẽ nhánh và Cấu trúc rẽ nhánh (với tiền điều kiện) Phương pháp lập trình được ủng hộ là triết lý “Sàng lọc từng bước”, trong đó các lập trình viên được khuyến khích thiết kế và viết mã chương trình từng bước theo hướng từ trên xuống dưới.
Nhiều nhà phát triển chương trình thời đó đã tranh luận với nhau
về đề xuất của Dijkstra Họ cho rằng viết chương trình chỉ với 3 cấu trúc điều khiển như vậy là không dễ dàng Các câu lệnh Goto vẫn cần thiết trong nhiều tình huống khác Dijkstra và những người ủng hộ ông ấy đã chỉ ra bằng chứng rằng bất kỳ chương trình nào cũng có thể được viết lại chỉ với 3 cấu trúc như trên Nghĩa là, các câu lệnh nhảy tới có thể được viết lại bằng cách dùng Cấu trúc
rẽ nhánh, còn các câu lệnh nhảy lui sẽ thay bằng Cấu trúc lặp Để viết lại chương trình có câu lệnh Goto, có thể áp dụng 2 cách: một là sao chép một đoạn chương trình và nhân bản nó lên, hai là thêm một biến điều khiển để quy định luồng chương trình.
Trong khi đó, trên cơ sở thực tế, một số cấu trúc điều khiển bổ sung khác đã được giới thiệu, bao gồm: Cấu trúc rẽ đa nhánh, Cấu trúc lặp với điều kiện ở sau, ngắt và thoát khỏi vòng lặp, và các ngoại lệ Vì thế đề xuất về “Lập
Trang 17Tuần tự Phân nhánh Lặp
trình cấu trúc” đã được dàn xếp bằng cách bổ sung thêm các cấu trúc điều khiển mới này và cuộc tranh cãi dần kết thúc.
Trong Lập trình cấu trúc, một thủ tục với 1 đầu vào và 1 đầu ra sẽ được điều chỉnh từng bước bằng cách sử dụng 3 cấu trúc điều khiển cơ bản như hình sau:
Các cấu trúc điều khiển bổ sung được thể hiện như sau:
Hình 9: Biến đổi một tiến trình bằng 3 cấu trúc điều khiển cơ bản
Trang 18Hình 10: Bốn cấu trúc điều khiển bổ sung
Trang 19 Để rõ hơn, ta xem xét các trường hợp đơn giản được minh họa trong hai hình sau:
Hình 11: Một đoạn chương trình được viết theo 3 cách khác nhau
Trang 21 Nhìn từ khía cạnh tiến hóa của các hệ thống kỹ thuật, rõ ràng ta có thể thấy nhu cầu nảy sinh của kỹ thuật phần mềm và lập trình cấu trúc Tương
tự các hệ thống kỹ thuật khác, nói chung, các hệ thống phần mềm cũng phát triển nhanh chóng bằng cách tự mở rộng và nhiều tính năng hơn, đổi lại, nó ngày càng trở nên phức tạp hơn Các hệ thống phần mềm khổng lồ và phức tạp thúc đẩy các nhà khoa học về phần mềm dần nhận ra một “cơn khủng hoảng phần mềm” Để các hệ thống phần mềm phát triển xa hơn, nhất thiết phải phát triển một số phương thức nào đó để làm cho chúng đơn giản hơn và dễ bảo trì hơn
VIII Đơn giản hóa các hệ thống bằng cách dùng cấu trúc phân cấp:
Một hệ thống phần mềm có thể xem như là 1 “Hệ thống” theo nghĩa chung nhất của nó trong TRIZ Một hệ thống là toàn bộ những thành phần hoạt động cùng với nhau để thực hiện một chức năng nào đó nhằm tạo ra một số kết quả bằng cách sử dụng các dữ liệu đầu vào Khái niệm về cấu trúc phân cấp của
hệ thống là một trong những vấn đề cơ bản trong TRIZ và được phát biểu bằng Nguyên tắc sáng tạo số 7:
Nguyên tắc số 7 : Nguyên tắc chứa trong
Đặt một đối tượng/hệ thống vào trong một đối tượng/hệ thống khác
Đặt nhiều đối tượng/hệ thống vào trong nhiều đối tượng/hệ thống khác
Mặc dù nguyên tắc số 7 dường như được sử dụng tương đối hạn chế trong thế giới thực nhưng nó đóng vai trò quan trọng trong thế giới phần mềm, nơi mà việc tạo các hệ thống phần mềm phân cấp rất dễ dàng và phổ biến Ở đây,
Trang 22TRIZ sẽ đưa ra một số nguyên tắc giúp đơn giản hóa một hệ thống khi nó trở nên phức tạp Có 3 phương pháp cần xem xét:
Nguyên tắc số 6 : Nguyên tắc vạn năng
Làm cho một bộ phận/hệ thống có thể thực hiện được nhiều chức năng, loại bỏ những bộ phận/hệ thống khác đi.
Ý tưởng của nguyên tắc vạn năng là đơn giản hóa các hệ thống phức tạp Tuy nhiên, có một nguyên tắc khác được phát biểu như sau:
Nguyên tắc : Các tiêu chuẩn vạn năng
Đưa ra những khối chức năng đã được chuẩn hóa và cơ bản, và tái sử dụng chúng rộng rãi trong nhiều ứng dụng khác.
Nguyên tắc này được sử dụng rộng rãi trong nhiều lĩnh vực kỹ thuật
và xã hội Lập trình cấu trúc có thể được xem như đã đưa ra những cấu trúc điều khiển đã được chuẩn hóa và được thể hiện ở dạng một luồng tuần tự Ngoài ra, còn có một nguyên tắc sáng tạo khác:
Trang 23Nguyên tắc số 1 : Nguyên tắc phân nhỏ
Chia hệ thống thành nhiều phần riêng biệt và độc lập
Làm cho hệ thống dễ dàng tháo lắp.
Nguyên tắc này có thể được áp dụng trong các hệ thống kỹ thuật, xã hội và phần mềm Chúng ta có thể liên tưởng đến nguyên tắc này một cách rất tự nhiên về việc chia nhỏ một hệ thống phức tạp thành các phần nhỏ hơn để dễ kiểm soát và bảo trì.
IX Loại bỏ câu lệnh Goto:
Kỹ thuật cắt bỏ trong TRIZ có thể được áp dụng để đơn giản hóa các
hệ thống phức tạp Lập trình cấu trúc được xem như loại bỏ các câu lệnh Goto ở cấp độ cách thức lập trình, thay vì ở cấp độ các chương trình riêng lẻ Khi một thành phần của hệ thống gây hại hoặc không cần thiết, ta có thể xem xét loại bỏ nó bằng cách trả lời hai câu hỏi sau:
− Thành phần được loại bỏ có thực hiện các chức năng hữu ích khác trong hệ thống hay không ?
− Nếu có, chức năng đó có thể được một thành phần khác trong hệ thống thực hiện hay không ?
Theo các bước này, ta có thể tìm ra các câu lệnh Goto có các vai trò hữu ích kiểm soát các điểm nhảy của chương trình Lập trình cấu trúc ban đầu đề xuất thay thế các lệnh Goto này bằng ba cấu trúc
Trang 24điều khiển cơ bản Nhưng nhiều chuyên gia phần mèm tranh cãi rằng ba cấu trúc này không đủ mạnh, linh hoạt và tiện lợi để thay thế Goto Cuộc tranh luận chỉ chấm dứt sau khi một số cấu trúc điều khiển mới được thêm vào Vì vậy, trong ngữ cảnh của phương thức loại bỏ của TRIZ, rõ ràng rằng câu lệnh Goto đã được bỏ đi ở cấp độ cách thức lập trình ( hay trong ngôn ngữ lập trình) không phải bởi 3 cấu trúc cơ bản của Lập trình cấu trúc, mà bởi tập các cấu trúc bao gồm những cấu trúc mới được thêm vào.
X Xem xét tranh luận về Goto bằng các khái niệm Mâu Thuẫn của TRIZ:
Tranh luận bao gồm 2 ý kiến trái ngược nhau:
− Các câu lệnh Goto nên bị loại bỏ hoàn toàn để làm cho luồng chương trình dễ hiểu.
− Các câu lệnh Goto là cần thiết để thể hiện các luồng chương trình khác nhau.
Để giải quyết các trường hợp mâu thuẫn như thế này, TRIZ đưa ra nguyên tắc sau:
Trang 25Nguyên tắc : Nguyên tắc tách riêng
Kiểm tra 2 yêu cầu trái ngược nhau xem khi nào, ở đâu, dưới điều kiện nào các yêu cầu được áp dụng và tìm ra sự khác biệt trong các yêu cầu này.
Nếu có khác biệt, thiết lập 2 giải pháp riêng biệt thỏa mãn đầy đủ mỗi yêu cầu, rồi tìm cách sử dụng cả 2 giải pháp kết hợp với nhau.
Loại trừ mâu thuẫn chỉ có thể đạt được bằng cách chia sẻ một số
mục tiêu chung nào đó ở cấp độ cao hơn cấp độ mâu thuẫn Mục tiêu chung
trong tình huống này là: Làm cho phương thức lập trình dễ hiểu và hầu như
không lỗi Hai phía tranh luận có thể trả lời câu hỏi của Nguyên tắc Tách Riêng
một cách logic hơn như sau:
− Các câu lệnh Goto nên bị loại bỏ bằng cách thay thế chúng bằng các cấu
trúc điều khiển thích hợp đảm bảo các khối chương trình lồng nhau một
cách đúng đắn Nen tránh các câu lệnh Goto làm cho các khối chương
trình lồng nhau nhưng bị lệch đối xứng.
− Các chức năng của lệnh Goto thể hiện cấu trúc rẽ đa nhánh, cấu trúc lặp
với điều kiện được xét sau, cấu trúc thoát khỏi vòng lặp, sẽ tìm thấy các
cấu trúc đúng đắn theo phương thức lập trình mới.