Kiến trúc tiến hóa và thiết kế nổi dần: Thiết kế nổi dần thông qua các thước đo
Số trang: 16
Loại file: pdf
Dung lượng: 434.68 KB
Lượt xem: 11
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Sử dụng các thước đo và phép trực quan hoá để tìm và thu thập thiết kế ẩn trong mã của bạn Neal Ford, Kiến trúc phần mềm, ThoughtWorks Tóm tắt: Các thước đo của phần mềm (Software metrics) có thể giúp bạn tìm ra các phần tử thiết kế ẩn trong mã của bạn, cho phép các phần tử đó nổi dần lên như là các mẫu đặc thù. Bài viết này trong loạt bài viết Kiến trúc tiến hóa và thiết kế nổi dần cho thấy việc sử dụng thông minh các thước đo và phép trự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: Thiết kế nổi dần thông qua các thước đo Kiến trúc tiến hóa và thiết kế nổi dần: Thiết kế nổi dần thông qua các thước đoSử dụng các thước đo và phép trực quan hoá để tìm và thu thập thiết kế ẩn trongmã của bạnNeal Ford, Kiến trúc phần mềm, ThoughtWorksTóm tắt: Các thước đo của phần mềm (Software metrics) có thể giúp bạn tìm racác phần tử thiết kế ẩn trong mã của bạn, cho phép các phần tử đó nổi dần lên nhưlà các mẫu đặc thù. Bài viết này trong loạt bài viết Kiến trúc tiến hóa và thiết kếnổi dần cho thấy việc sử dụng thông minh các thước đo và phép trực quan hoá chophép bạn phát hiện ra các phần tử mã quan trọng bị che khuất bởi sự phức tạpngẫu nhiên như thế nào.Một trong những khó khăn đối với thiết kế nổi dần nằm trong việc tìm kiếm cácmẫu đặc thù và các phần tử thiết kế khác ẩn trong mã. Các thước đo và phép trựcquan hóa giúp bạn xác định các phần quan trọng của mã của bạn, cho phép bạntrích xuất chúng làm các phần tử thiết kế hạng một. Hai thước đo mà tôi tập trungvào trong bài viết này là độ phức tạp chu số và kết dính hướng tâm. Độ phức tạpchu số là một cách đo độ phức tạp tương đối của một phương thức so với phươngthức khác. Kết dính hướng tâm là số đếm bao nhiêu lớp khác sử dụng lớp hiện tại.Bạn sẽ tìm hiểu về một số công cụ để trực quan hoá và để hiểu rõ cả hai thước đonày và tìm hiểu sự kết hợp các thước đo đó có thể giúp bạn làm phát lộ ra các đặcđiểm của thiết kế như thế nào.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 quyết địnhcuối cùng, bạn có thể ngăn ngừa được những phức tạp không cần thiết không đểchúng ngầm phá hoại các dự án phần mềm của bạn.Tôi đã nói về độ phức tạp chu số trong bài viết Thiết kế hướng kiểm thử, phần 2,nhưng có một số sắc thái mà tôi đã không thảo luận trong bài viết đó. Một yếu tốlàm phức tạp thêm phép đo lường độ phức tạp chu số bằng các công cụ của Java™là khái niệm đơn vị công việc. Độ phức tạp chu số (CC) là số đo ở mức phươngthức, nhưng đơn vị công việc trong lập trình Java là các lớp. Do đó, số đo độ phứctạp chu số thường là tổng số hoặc trung bình của độ phức tạp của tất cả cácphương thức trong một lớp. Cả hai thước đo này đều đáng chú ý.Lấy ví dụ: Kịch bản sau đây là có thể xảy ra. Giả sử ta có lớp có một phương thứcrất phức tạp (CC = 40), nhưng lớp đó cũng có rất nhiều phương thức rất nhỏ(chẳng hạn như các cặp phương thức get/set rất phổ biến trong mã Java). Với côngcụ chẳng hạn như JavaNCSS (xem phần Tài nguyên) mà báo cáo số đo này như làtổng số của tất cả các phương thức, thì độ phức tạp chu số là một con số lớn chotoàn bộ lớp. Nếu bạn sử dụng một công cụ chẳng hạn như Cobertura — báo kếtquả độ phức tạp chu số là số trung bình của lớp — thì lớp này sẽ không quá tồi tệnữa, bởi vì một lô lớn các phương thức đơn giản đã làm giảm nhẹ bớt cho một lớprất phức tạp. Do sự không phù hợp này của đơn vị công việc, ta cần phải xem xétcả các số đo tổng cộng và số đo trung bình của độ phức tạp chu số. Nếu bạn xemxét chúng một cách độc lập, thì các nhiễu có thể làm nhiễu kết quả. Việc sử dụngcả hai số đo này sẽ giảm bớt khả năng ấy.Các thước đo của phần mềm so với các thước đo vật lýTrong phần mềm, một thước đo dựa vào việc áp dụng phép đo lường khách quancác tạo phẩm phát triển để xác định các đặc trưng ở mức thô hơn. Không giốngnhư các thước đo vật lý (chẳng hạn như một thước đo mét), hầu hết các thước đophần mềm không phản ánh một đặc tính nào đó trong thế giới thực. Một số đo độphức tạp chu số, chẳng hạn như số 5 không có đơn vị đo lường đi kèm; nó sẽkhông cho bạn biết gì về bất kỳ đặc tính vật lý nào của mã. Con số này chỉ có ýnghĩa khi so sánh với độ phức tạp chu số của một mã lệnh khác.Các thước đo khác đáng chú ý đối với thiết kế là hai số kết dính: kết dính hướngtâm và kết dính ly tâm. Kết dính ly tâm đo số lượng các lớp mà lớp hiện tại thamchiếu đến. Nó rất dễ dàng xác định thông qua một bước rà soát đơn giản: mở lớpđang nói đến và đếm số lượng tham chiếu (trong các trường và các tham số) đếncác lớp khác. Kết dính hướng tâm rất khó xác định và nó có giá trị hơn nhiều. Nóđo xem bao nhiêu lớp khác sử dụng lớp hiện tại. Bạn có thể sử dụng dòng lệnh fuđể xác định số này, hoặc sử dụng một trong các công cụ hiểu được thước đo này.Một công cụ như vậy là ckjm, là một công cụ mã nguồn mở để chạy bộ các thướcđo hướng đối tượng Chidamber & Kemerer (xem phần Tài nguyên). Mặc dù cóchút phức tạp khi thiết lập và chạy công cụ này, nhưng nó cung cấp cả độ phức tạpchu số (báo kết quả là tổng các độ phức tạp chu số của tất cả các phương t ...
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: Thiết kế nổi dần thông qua các thước đo Kiến trúc tiến hóa và thiết kế nổi dần: Thiết kế nổi dần thông qua các thước đoSử dụng các thước đo và phép trực quan hoá để tìm và thu thập thiết kế ẩn trongmã của bạnNeal Ford, Kiến trúc phần mềm, ThoughtWorksTóm tắt: Các thước đo của phần mềm (Software metrics) có thể giúp bạn tìm racác phần tử thiết kế ẩn trong mã của bạn, cho phép các phần tử đó nổi dần lên nhưlà các mẫu đặc thù. Bài viết này trong loạt bài viết Kiến trúc tiến hóa và thiết kếnổi dần cho thấy việc sử dụng thông minh các thước đo và phép trực quan hoá chophép bạn phát hiện ra các phần tử mã quan trọng bị che khuất bởi sự phức tạpngẫu nhiên như thế nào.Một trong những khó khăn đối với thiết kế nổi dần nằm trong việc tìm kiếm cácmẫu đặc thù và các phần tử thiết kế khác ẩn trong mã. Các thước đo và phép trựcquan hóa giúp bạn xác định các phần quan trọng của mã của bạn, cho phép bạntrích xuất chúng làm các phần tử thiết kế hạng một. Hai thước đo mà tôi tập trungvào trong bài viết này là độ phức tạp chu số và kết dính hướng tâm. Độ phức tạpchu số là một cách đo độ phức tạp tương đối của một phương thức so với phươngthức khác. Kết dính hướng tâm là số đếm bao nhiêu lớp khác sử dụng lớp hiện tại.Bạn sẽ tìm hiểu về một số công cụ để trực quan hoá và để hiểu rõ cả hai thước đonày và tìm hiểu sự kết hợp các thước đo đó có thể giúp bạn làm phát lộ ra các đặcđiểm của thiết kế như thế nào.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 quyết địnhcuối cùng, bạn có thể ngăn ngừa được những phức tạp không cần thiết không đểchúng ngầm phá hoại các dự án phần mềm của bạn.Tôi đã nói về độ phức tạp chu số trong bài viết Thiết kế hướng kiểm thử, phần 2,nhưng có một số sắc thái mà tôi đã không thảo luận trong bài viết đó. Một yếu tốlàm phức tạp thêm phép đo lường độ phức tạp chu số bằng các công cụ của Java™là khái niệm đơn vị công việc. Độ phức tạp chu số (CC) là số đo ở mức phươngthức, nhưng đơn vị công việc trong lập trình Java là các lớp. Do đó, số đo độ phứctạp chu số thường là tổng số hoặc trung bình của độ phức tạp của tất cả cácphương thức trong một lớp. Cả hai thước đo này đều đáng chú ý.Lấy ví dụ: Kịch bản sau đây là có thể xảy ra. Giả sử ta có lớp có một phương thứcrất phức tạp (CC = 40), nhưng lớp đó cũng có rất nhiều phương thức rất nhỏ(chẳng hạn như các cặp phương thức get/set rất phổ biến trong mã Java). Với côngcụ chẳng hạn như JavaNCSS (xem phần Tài nguyên) mà báo cáo số đo này như làtổng số của tất cả các phương thức, thì độ phức tạp chu số là một con số lớn chotoàn bộ lớp. Nếu bạn sử dụng một công cụ chẳng hạn như Cobertura — báo kếtquả độ phức tạp chu số là số trung bình của lớp — thì lớp này sẽ không quá tồi tệnữa, bởi vì một lô lớn các phương thức đơn giản đã làm giảm nhẹ bớt cho một lớprất phức tạp. Do sự không phù hợp này của đơn vị công việc, ta cần phải xem xétcả các số đo tổng cộng và số đo trung bình của độ phức tạp chu số. Nếu bạn xemxét chúng một cách độc lập, thì các nhiễu có thể làm nhiễu kết quả. Việc sử dụngcả hai số đo này sẽ giảm bớt khả năng ấy.Các thước đo của phần mềm so với các thước đo vật lýTrong phần mềm, một thước đo dựa vào việc áp dụng phép đo lường khách quancác tạo phẩm phát triển để xác định các đặc trưng ở mức thô hơn. Không giốngnhư các thước đo vật lý (chẳng hạn như một thước đo mét), hầu hết các thước đophần mềm không phản ánh một đặc tính nào đó trong thế giới thực. Một số đo độphức tạp chu số, chẳng hạn như số 5 không có đơn vị đo lường đi kèm; nó sẽkhông cho bạn biết gì về bất kỳ đặc tính vật lý nào của mã. Con số này chỉ có ýnghĩa khi so sánh với độ phức tạp chu số của một mã lệnh khác.Các thước đo khác đáng chú ý đối với thiết kế là hai số kết dính: kết dính hướngtâm và kết dính ly tâm. Kết dính ly tâm đo số lượng các lớp mà lớp hiện tại thamchiếu đến. Nó rất dễ dàng xác định thông qua một bước rà soát đơn giản: mở lớpđang nói đến và đếm số lượng tham chiếu (trong các trường và các tham số) đếncác lớp khác. Kết dính hướng tâm rất khó xác định và nó có giá trị hơn nhiều. Nóđo xem bao nhiêu lớp khác sử dụng lớp hiện tại. Bạn có thể sử dụng dòng lệnh fuđể xác định số này, hoặc sử dụng một trong các công cụ hiểu được thước đo này.Một công cụ như vậy là ckjm, là một công cụ mã nguồn mở để chạy bộ các thướcđo hướng đối tượng Chidamber & Kemerer (xem phần Tài nguyên). Mặc dù cóchút phức tạp khi thiết lập và chạy công cụ này, nhưng nó cung cấp cả độ phức tạpchu số (báo kết quả là tổng các độ phức tạp chu số của tất cả các phương t ...
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 261 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 251 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 251 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 229 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 213 0 0 -
Giáo án Tin học lớp 11 (Trọn bộ cả năm)
125 trang 204 1 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 192 0 0 -
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 171 0 0 -
Giáo trình Lập trình C căn bản: Phần 1
64 trang 162 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 151 0 0