Kiến trúc tiến hóa và thiết kế nổi dần: Ngôn ngữ, tính biểu cảm và thiết kế, Phần 1
Số trang: 25
Loại file: pdf
Dung lượng: 214.04 KB
Lượt xem: 8
Lượt tải: 0
Xem trước 3 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Tính biểu cảm trong mã lệnh của bạn tạo khả năng cho thiết kế nổi dần như thế nào Neal Ford, Kiến trúc phần mềm, ThoughtWorks Tóm tắt: Khả năng xem và thu lượm các mẫu (pattern) diễn đạt đặc trưng là rất quan trọng đối với thiết kế nổi dần. Và điều quan trọng sống còn đối với thiết kế là tính biểu cảm của mã lệnh. Trong loạt bài viết gồm hai phần, Neal Ford sẽ bàn về chỗ giao nhau giữa tính biểu cảm và mẫu diễn đạt đặc trưng, giải thích các khái niệm này bằng...
Nội dung trích xuất từ tài liệu:
Kiến trúc tiến hóa và thiết kế nổi dần: Ngôn ngữ, tính biểu cảm và thiết kế, Phần 1 Kiến trúc tiến hóa và thiết kế nổi dần: Ngôn ngữ, tính biểu cảm và thiết kế,Phần 1Tính biểu cảm trong mã lệnh của bạn tạo khả năng cho thiết kế nổi dần nh ư thếnàoNeal Ford, Kiến trúc phần mềm, ThoughtWorksTóm tắt: Khả năng xem và thu lượm các mẫu (pattern) diễn đạt đặc trưng là rấtquan trọng đối với thiết kế nổi dần. Và điều quan trọng sống còn đối với thiết kế làtính biểu cảm của mã lệnh. Trong loạt bài viết gồm hai phần, Neal Ford sẽ bàn vềchỗ giao nhau giữa tính biểu cảm và mẫu diễn đạt đặc trưng, giải thích các kháiniệm này bằng cả mẫu diễn đạt đặc trưng lẫn mẫu thiết kế hình thức hóa. Ông viếtlại một số mẫu cổ điển của Gang of Four trong các ngôn ngữ động cho JVM đểcho bạn thấy rằng các ngôn ngữ biểu cảm hơn cho phép bạn thấy các phần tử thiếtkế bị che khuất bởi các ngôn ngữ mờ tối hơn như thế nào. (N.D: Gang of Four hayGoF - Nhóm bốn người - là cuốn sách của bốn tác giả : Erich Gamma, RichardHelm, Ralph Johnson và John Vlissides, được coi là nền tảng của các mẫu thiết kếkhác, được phân loại làm 3 nhóm: tạo lập (Creation), cấu trúc (Structure) và hànhvi (Behavior)).Một trong những điều chính yếu cho phép thiết kế nổi dần là khả năng xem và thulượm các mẫu diễn đạt đặc trưng: các quy trình, các cấu trúc và các đặc ngữ,chúng lặp lại một cách không tầm thường trong cơ sở mã lệnh của bạn. Tuy nhiên,đôi khi các mẫu ấy bị ẩn đi. Trong phần đầu tiên của loạt bài viết Kiến trúc tiếnhóa và thiết kế nổi dần tôi đã mô tả các vấn đề che khuất tầm nhìn của các mẫunày, chẳng hạn như vấn đề khái quát quá đáng. Việc xây dựng các ứng dụng nhiềutầng có thể có hiệu lực tốt cho các dạng tách biệt mối quan tâm nhằm cho phépkhả năng mở rộng và phân đoạn, nhưng nó che giấu các mẫu diễn đạt đặc trưngbởi vì bây giờ bạn phải tìm chúng xuyên qua nhiều tầng. Muốn trở thành một nhàthiết kế và một kiến trúc sư giỏi thì bạn phải phát triển các con mắt để phân biệtcác mẫu đó.Về loạt bài viết nàyLoạt bài viết này nhằm cung cấp một phối cảnh tươi mới về các khái niệm thườngđược thảo luận nhưng khó nắm bắt về kiến trúc và thiết kế phần mềm. Thông quacác ví dụ cụ thể, Neal Ford mang đến cho bạn một nền tảng vững chắc cho cáchlàm thực tế lanh lẹn của kiến trúc tiến hóa và thiết kế nổi dần. Bằng cách trì hoãncác quyết định quan trọng về thiết kế và kiến trúc cho đến thời điểm chịu tráchnhiệm cuối cùng, bạn có thể ngăn ngừa được những phức tạp không cần thiếtkhông để chúng ngầm phá hoại các dự án phần mềm của bạnMột điều khác ức chế việc thu lượm các mẫu là khả năng biểu cảm của chính ngônngữ lập trình. Ví dụ, ta rất khó thu lượm các mẫu từ hợp ngữ (assembly language)bởi vì các đặc tính của ngôn ngữ này đối chọi với tính biểu cảm. Ngay cả khi bạnđã học được cách để đọc hợp ngữ như tiếng mẹ đẻ của bạn, thì các hạn chế khắcnghiệt về cách viết mã lệnh che khuất khả năng để bạn có được một cái nhìn toàndiện. Ví dụ: việc chuyển các biến vào và ra khỏi các thanh ghi thay vì có thể tạo racác biến và các phương thức có tên phù hợp có nghĩa là bạn tốn nhiều thời gian đểxử lý các gánh nặng công việc cố hữu trong ngôn ngữ này.Việc so sánh ngôn ngữ Java™ với hợp ngữ là đòi hỏi quá đáng (stretch), nhưngtính biểu cảm của các ngôn ngữ máy tính xếp dọc theo một dải phổ. Một số ngônngữ có tính biểu cảm hơn các ngôn ngữ khác, làm cho việc xem các bản mẫu hiệuquả trở nên dễ dàng hơn. Nhằm mục đích đó, bài viết này — là bài viết đầu tiêncủa loạt bài viết gồm hai phần — sử dụng một ngôn ngữ động cho JVM (ngôn ngữGroovy) để giải thích các triển khai thay thế của một số mẫu Gang of Four.Ôn lại về các mẫu thiết kếMột trong những cuốn sách có ảnh hưởng sâu xa về phát triển phần mềm là cuốnDesign Patterns: Elements of Reusable Object-Oriented Software (Các mẫu thiếtkế: Các phần tử phần mềm hướng đối tượng có thể sử dụng lại được) của các tácgiả Eric Gamma, Richard Helm, Ralph Johnson và John Vlissides (xem phần Tàinguyên). Cuốn sách này bao gồm hai phần riêng biệt: mô tả các vấn đề chungthường gặp trong quá trình phát triển phần mềm và các ví dụ về các giải pháp củachúng. Phần đầu tiên là có giá trị như là một danh mục liệt kê các vấn đề chung,nhưng việc triển khai thực hiện các mẫu nhất thiết phải thiên về một ngôn ngữ cụthể. Các triển khai thực hiện mẫu có ở trong cả hai ngôn ngữ: C++ và Smalltalk,chúng tận dụng lợi thế của một vài tính năng ngôn ngữ tiên tiến của Smalltalk.Bằng nhiều cách, các triển khai làm rõ các hạn chế của ngôn ngữ C++ và cáchkhắc phục cần thiết để giải quyết các vấn đề cố hữu của ngôn ngữ n ày.Các khía cạnh thuật ngữ của cuốn sách Gang of Four ngày nay vẫn còn có giá trị,nhưng các triển khai thực hiện đã trở nên lỗi thời. Nhiều vấn đề mà các triển khaithực hiện ở đây đã giải quyết bằng biện pháp cấu trúc (bằng cách xây dựng một hệthống phân cấp các lớp tương tác với nhau) hiện có những giải pháp đẹp đẽ hơntrong các ngôn ngữ mạnh hơn và biểu cả ...
Nội dung trích xuất từ tài liệu:
Kiến trúc tiến hóa và thiết kế nổi dần: Ngôn ngữ, tính biểu cảm và thiết kế, Phần 1 Kiến trúc tiến hóa và thiết kế nổi dần: Ngôn ngữ, tính biểu cảm và thiết kế,Phần 1Tính biểu cảm trong mã lệnh của bạn tạo khả năng cho thiết kế nổi dần nh ư thếnàoNeal Ford, Kiến trúc phần mềm, ThoughtWorksTóm tắt: Khả năng xem và thu lượm các mẫu (pattern) diễn đạt đặc trưng là rấtquan trọng đối với thiết kế nổi dần. Và điều quan trọng sống còn đối với thiết kế làtính biểu cảm của mã lệnh. Trong loạt bài viết gồm hai phần, Neal Ford sẽ bàn vềchỗ giao nhau giữa tính biểu cảm và mẫu diễn đạt đặc trưng, giải thích các kháiniệm này bằng cả mẫu diễn đạt đặc trưng lẫn mẫu thiết kế hình thức hóa. Ông viếtlại một số mẫu cổ điển của Gang of Four trong các ngôn ngữ động cho JVM đểcho bạn thấy rằng các ngôn ngữ biểu cảm hơn cho phép bạn thấy các phần tử thiếtkế bị che khuất bởi các ngôn ngữ mờ tối hơn như thế nào. (N.D: Gang of Four hayGoF - Nhóm bốn người - là cuốn sách của bốn tác giả : Erich Gamma, RichardHelm, Ralph Johnson và John Vlissides, được coi là nền tảng của các mẫu thiết kếkhác, được phân loại làm 3 nhóm: tạo lập (Creation), cấu trúc (Structure) và hànhvi (Behavior)).Một trong những điều chính yếu cho phép thiết kế nổi dần là khả năng xem và thulượm các mẫu diễn đạt đặc trưng: các quy trình, các cấu trúc và các đặc ngữ,chúng lặp lại một cách không tầm thường trong cơ sở mã lệnh của bạn. Tuy nhiên,đôi khi các mẫu ấy bị ẩn đi. Trong phần đầu tiên của loạt bài viết Kiến trúc tiếnhóa và thiết kế nổi dần tôi đã mô tả các vấn đề che khuất tầm nhìn của các mẫunày, chẳng hạn như vấn đề khái quát quá đáng. Việc xây dựng các ứng dụng nhiềutầng có thể có hiệu lực tốt cho các dạng tách biệt mối quan tâm nhằm cho phépkhả năng mở rộng và phân đoạn, nhưng nó che giấu các mẫu diễn đạt đặc trưngbởi vì bây giờ bạn phải tìm chúng xuyên qua nhiều tầng. Muốn trở thành một nhàthiết kế và một kiến trúc sư giỏi thì bạn phải phát triển các con mắt để phân biệtcác mẫu đó.Về loạt bài viết nàyLoạt bài viết này nhằm cung cấp một phối cảnh tươi mới về các khái niệm thườngđược thảo luận nhưng khó nắm bắt về kiến trúc và thiết kế phần mềm. Thông quacác ví dụ cụ thể, Neal Ford mang đến cho bạn một nền tảng vững chắc cho cáchlàm thực tế lanh lẹn của kiến trúc tiến hóa và thiết kế nổi dần. Bằng cách trì hoãncác quyết định quan trọng về thiết kế và kiến trúc cho đến thời điểm chịu tráchnhiệm cuối cùng, bạn có thể ngăn ngừa được những phức tạp không cần thiếtkhông để chúng ngầm phá hoại các dự án phần mềm của bạnMột điều khác ức chế việc thu lượm các mẫu là khả năng biểu cảm của chính ngônngữ lập trình. Ví dụ, ta rất khó thu lượm các mẫu từ hợp ngữ (assembly language)bởi vì các đặc tính của ngôn ngữ này đối chọi với tính biểu cảm. Ngay cả khi bạnđã học được cách để đọc hợp ngữ như tiếng mẹ đẻ của bạn, thì các hạn chế khắcnghiệt về cách viết mã lệnh che khuất khả năng để bạn có được một cái nhìn toàndiện. Ví dụ: việc chuyển các biến vào và ra khỏi các thanh ghi thay vì có thể tạo racác biến và các phương thức có tên phù hợp có nghĩa là bạn tốn nhiều thời gian đểxử lý các gánh nặng công việc cố hữu trong ngôn ngữ này.Việc so sánh ngôn ngữ Java™ với hợp ngữ là đòi hỏi quá đáng (stretch), nhưngtính biểu cảm của các ngôn ngữ máy tính xếp dọc theo một dải phổ. Một số ngônngữ có tính biểu cảm hơn các ngôn ngữ khác, làm cho việc xem các bản mẫu hiệuquả trở nên dễ dàng hơn. Nhằm mục đích đó, bài viết này — là bài viết đầu tiêncủa loạt bài viết gồm hai phần — sử dụng một ngôn ngữ động cho JVM (ngôn ngữGroovy) để giải thích các triển khai thay thế của một số mẫu Gang of Four.Ôn lại về các mẫu thiết kếMột trong những cuốn sách có ảnh hưởng sâu xa về phát triển phần mềm là cuốnDesign Patterns: Elements of Reusable Object-Oriented Software (Các mẫu thiếtkế: Các phần tử phần mềm hướng đối tượng có thể sử dụng lại được) của các tácgiả Eric Gamma, Richard Helm, Ralph Johnson và John Vlissides (xem phần Tàinguyên). Cuốn sách này bao gồm hai phần riêng biệt: mô tả các vấn đề chungthường gặp trong quá trình phát triển phần mềm và các ví dụ về các giải pháp củachúng. Phần đầu tiên là có giá trị như là một danh mục liệt kê các vấn đề chung,nhưng việc triển khai thực hiện các mẫu nhất thiết phải thiên về một ngôn ngữ cụthể. Các triển khai thực hiện mẫu có ở trong cả hai ngôn ngữ: C++ và Smalltalk,chúng tận dụng lợi thế của một vài tính năng ngôn ngữ tiên tiến của Smalltalk.Bằng nhiều cách, các triển khai làm rõ các hạn chế của ngôn ngữ C++ và cáchkhắc phục cần thiết để giải quyết các vấn đề cố hữu của ngôn ngữ n ày.Các khía cạnh thuật ngữ của cuốn sách Gang of Four ngày nay vẫn còn có giá trị,nhưng các triển khai thực hiện đã trở nên lỗi thời. Nhiều vấn đề mà các triển khaithực hiện ở đây đã giải quyết bằng biện pháp cấu trúc (bằng cách xây dựng một hệthống phân cấp các lớp tương tác với nhau) hiện có những giải pháp đẹp đẽ hơntrong các ngôn ngữ mạnh hơn và biểu cả ...
Tìm kiếm theo từ khóa liên quan:
lập trình java công nghệ java phát triển với java lập mô hình dịch vụ web java ngôn ngữ lập trìnhGợi ý tài liệu liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 273 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 264 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 264 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 232 0 0 -
Bài giảng Một số hướng nghiên cứu và ứng dụng - Lê Thanh Hương
13 trang 223 0 0 -
Giáo án Tin học lớp 11 (Trọn bộ cả năm)
125 trang 215 1 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 205 0 0 -
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 180 0 0 -
Giáo trình Lập trình C căn bản: Phần 1
64 trang 169 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 164 0 0