Đề tài Phương pháp thiết kế hướng dữ liệu trong công nghệ phần mềm

Mỗi một trong các phương pháp thiết kế hướng cấu trúc dữ liệu đã được trình bày trong bài viết này đều là “trẻ thơ” của những năm 1970. Mỗi phương pháp đều đưa vào những ý tưởng quan trọng về bản chất của thiết kế tốt và các phương pháp riêng để đạt điều đó. Khi những phương pháp này đã xhín muồi thì sự tập trung riêng của chúng vào cấu trúc dữ liệu đã được mở rộng ra cũng như cách hiểu của chúng ta về “hệ thống tốt nên giống như cái gì” tiến hoá lên.

doc37 trang | Chia sẻ: aloso | Lượt xem: 1849 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Đề tài Phương pháp thiết kế hướng dữ liệu 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
đề cương chi tiết Đề tài: Phương pháp thiết kế hướng dữ liệu trong công nghệ phần mềm. Giáo viên hướng dẫn: pgs.ts Hàn Viết Thuận Sinh viên : Phạm Thế Tân Lớp : Tin Học 43C Khoa: TinHọc Kinh Tế Trường Đại Học Kinh Tế Quốc Dân Mở đầu I. thiết kế và cấu trúc dữ liệu 1. Các đóng góp 2. Miền ứng dụng 3. Cấu trúc dữ liệu so với các kĩ thuật luồng dữ liệu 4. Cấu trúc dữ liệu so với thiết kế hướng sự vật II. xem xét tiến trình thiết kế III. phát triển hệ thống jackson 1. Các bước thiết kế JSD 2. Bước chức năng 3. Bước thời gian hệ thống 4. Bước cài đặt 5. Biểu diễn thủ tục IV. phát triển hệ thống có cấu trúc dữ liệu 1. Cách tiếp cận thiết kế đã đơn giản hoá 2. Suy dẫn về cấu trúc cái ra logic 3. Suy dẫn ra cấu trúc xử lí logic 4. Logic xử lí phức tạp Kết Luận Mở đầu Mối quan hệ mật thiết giữa chương trình và dữ liệu có thể được dõi về nguồn gốc của tin học. Khái niệm nguyên thuỷ đằng sau máy tính lưu trữ chương trình là ở chỗ chương trình được coi như dữ liệu và dữ liệu được hiểu như chương trình. Cấu trúc thông tin, được gọi là cấu trúc dữ liệu, đã chứng tỏ có tác động quan trọng tới độ phức tạp và tính hiệu quả của thuật toán được thiếi kế để xử lý thông tin. Khi thiết kế phần mềm tiến hoá, một trường phái tư tưởngcho rằng: Việc xác định cấu trúc dữ liệu cố hữu (đối với hệ thống dựa trên máy tính) là điều sống còn, còn cấu trúc của dữ liệu (cái vào và cái ra) có thể được dùng để đưa ra cấu trúc (và một số chi tiết) về chương trình. Trong lĩnh vực ứng dụng một cấu trúc thông tin có cấp bậc, phân biệt là tồn tại. Dữ liệu vào, thông tin ghi nhớ bên trong (như cơ sở dữ liệu) và dữ liệu ra có thể có một cấu trúc duy nhất. Thiết kế hướng cấu trúc dữ liệu dùng những cấu trúc này làm nền tảng cho việc phát triển phần mềm. I. Thiết kế và cấu trúc dữ liệu Cấu trúc dữ liệu phản ánh thiết kế của các khía cạnh cấu trúc và thủ tục của phần mềm. Dữ liệu lặp lại bao giờ cũng được xử lý bằng phần mềm có tiện nghi điều khiển cho việc lặp lại; dữ liệu khác (như thông tin có thể có hay không) ngưng đọng lại thành phần mềm với các phần tử xử lý có điều kiện; một tổ chức dữ liệu phân cấp thường có những điểm tương đồng đáng để ý với cấu trúc chương trình của phần mềm có dùng dữ liệu đó. Trong thực tế, cấu trúc thông tin là điều báo trước cho cấu trúc chương trình. Thiết kế hướng cấu trúc dữ liệu biến đổi một biểu diễn của cấu trúc dữ liệu thành biểu diễn của phần mềm. Giống như các kĩ thuật luồng dữ liệu, người phát triển thiết kế hướng cấu trúc dữ liệu xác định ra một tập các thủ tục “ánh xạ” có dùng cấu trúc (dữ liệu) thông tin như hướng dẫn. 1. Các đóng góp Nguồn gốc của thiết kế hướng cấu trúc dữ liệu có thể tìm thấy trong những thảo luận về “nền tảng của cấu trúc dữ liệu”, thuật toán máy tính, cấu trúc điều khiển và dữ liệu, và khái niệm về trừu tượng dữ liệu. Những xử lí thực chứng hơn về thiết kế phần mềm và mối quan hệ của nó với cấu trúc dữ liệu đã dược Jackson, Warnier và Orr đề nghị. Lập trình có cấu trúc Jackson (JSP), một phương pháp thiết kế phần mềm được sử dụng rộng rãi, lấy quan điểm là “sự song song giữa cấu trúc của dự liệu vào và dữ liệu ra (báo cáo) sẽ đảm bảo chất lượng thiết kế”. Những mở rộng gần đây hơn thành phương pháp luận, gọi là phát triển hệ thống Jackson, tập trung vào việc xác định các thực thể thông tin và những hành động được áp dụng lên chúng và hoàn toàn tương tự trong một số khía cạnh của cách tiếp cận thiết kế hướng sự vật đã được mô tả. Jackson nhấn mạnh về mặt thực hành, phát triển thực chứng để biến đổi dữ liệu thành cấu trúc chương trình. Xây dựng logic chương trình (LPC), dược J.D.Warnier phát triển, đưa ra một phương pháp chặt chẽ cho thiết kế phần mềm. Rút ra từ mối quan hệ giữa cấu trúc dữ liệu và cấu trúc thủ tục, Warnier đã phát triển một tập các kĩ thuật thực hiện ánh xạ tù cấu trúc dữ liệu vào/ra sang biểu diễn thủ tục chi tiết cho phần mềm. Phát triển hệ thống có cấu trúc dữ liệu (DSSD), cũng còn được gọi là phương pháp luận Warnier- Orr, là một mở rộng của LCP và bổ sung thêm các khả năng phân tích cũng như thiết kế mạnh. Cách tiếp cận DSSD đưa ra một kí pháp và nhiều thủ tục để suy ra cấu trúc dữ liệu, cấu trúc chương trình, và thiết kế thủ tục chi tiết cho các thành phần chương trình (mô đun). Bên cạnh đó, DSSD cung cấp một kí pháp làm cho người thiết kế có khả năng xem xét luồng dữ liệu giữa nơi phát và nơi nhận thông tin và đi qua các tiến trình biến đổi thông tin. Một kĩ thuật gọi là xây dựng logic phần mềm là đại biểu cho việc tổng hợp của các cách tiếp cận thiết kế hướng luồng dữ liệu và cấu trúc dữ liệu. Những người phát triển phưong pháp này cho rằng “thiết kế logic có thể được mô tả tường minh nếu phần mềm được xét như một hệ thống các tập dữ liệu và các phếp biến đổi dữ liệu.” 2. Miền ứng dụng Thiết kế hướng cấu trúc dữ liệu có thể được áp dụng thành công trong các ứng dụng có cấu trúc thông tin cấp bậc, được xác định rõ. Các thí dụ điển hình bao gồm: ã ứng dụng hệ thống thông tin kinh doanh.cái vào và cái ra có cấu trúc phân biệt (như tệp vào, báo cáo ra); việc dung cơ sở dữ liệu cấp bậc là thông dụng. ã các ứng dụng hệ thống. Cấu truc dữ liệu cho hệ điều hành có chứa nhiều bảng, tệp và danh sách có cấu trúc xác định rõ. ã các ứng dụng CAD/CAE/CIM. Các hệ thống thiết kế, kĩ nghệ và chế tạo có máy tính trợ giúp đòi hỏi các cấu trúc dữ liệu phức tạp để ghi nhớ, chuyển dịch và xử lí thông tin. Bên cạnh đó, các ứng dụng trong lĩnh vực kĩ nghệ khoa học có máy tính trợ giúp, giải bài toán tổ hợp và nhiều lĩnh vực khác có thể tuân theo thiết kế hướng cấu trúc dữ liệu. 3. Cấu trúc dữ liệu so với các kỹ thuật luồng dữ liệu Trước khi xem xét những khác biệt giữa thiết kế hướng cấu trúc dữ liệu và luồng dữ liệu, điều quan trọng cần kưu ý là cả hai cách thiết kế này đều bắt đầu từ cách phân tích để đặt nền tảng cho các bước thiết kế tiếp; cả hai đều hướng theo thông tin; cả hai đều định biến đổi thông tin thành biểu diễn phần mềm; cả hai đều dựa trên các khái niệm suy diễn tách biệt về thiết kế “tốt”. Thiết kế hướng cấu trúc dữ liệu không dùng biểu đồ luồng dữ liệu một cách tường minh. Do đó, các phân loại phép biến đổi và luồng giao tác ít có liên can tới phương pháp thiết kế hướng cấu trúc dữ liệu. Điều quan trọng hơn mục tiêu cuối cùng của phương pháp hướng cấu trúc dữ liệu là tạo ra một mô tả thủ tục cho phần mềm. Khái niệm về cấu trúc mô đun chương trình không được xem xét một cách tường minh. Các mô đun được coi như các thứ phẩm của thủ tục và triết lí về sự độc lập của mô đun cũng ít được nhấn mạnh tới. Thiết kế hướng cấu trúc dữ liệu dùng biểu đồ phân cấp để biểu diễn cấu trúc thông tin. Do đó, việc nhấn mạnh trong phân tích các yêu cầu phần mềm phải được đặt vào các mô hình biểu diễn này. 4. Cấu trúc dữ liệu so với thiết kế hướng sự vật Vì thiết kế hướng cấu trúc dữ liệu và thiết kế hướng sự vật tập trung vào các sự vật thế giới thực và biểu diễn của chúng trong hệ thống dựa trên phần mềm nên có những điểm tương đồng quan trọng giữa hai phương pháp thiết kế. Giống như việc so sánh giữa các phương pháp hướng cấu trúc dữ liệu và hướng luồng dữ liệu, thiết kế hướng cấu trúc dữ liệu và OOD cả hai đều hướng thông tin; cả hai đều dùng một biểu diễn dữ liệu làm cơ sở cho việc phát triển mộ biểu diễn chương trình; cả hai có khái niệm riêng của chúng (được suy diễn độc lập) về thiết kế “tốt”. Cấp bậc dữ liệu (được dùng trong các phương pháp hướng cấu trúc dữ liệu) là tương tự với cấp bậc lớp được dung trong OOD. Cả hai đều áp dụng các trừu tượng dữ liệu và mỗi phương pháp đều coi các thao tác biến đổi dữ liệu là thứ yếu so với chính khoản mục dữ liệu. Sự khác biệt chủ yếu giữa OOD và phương pháp thiết kế hưóng cấu trúc dữ liệu ở trong định ngiã về sự vật. Trong OOD, một sự vật bao bọc cả dữ liệu và tiến trình. Các phương pháp thiết kế hướng cấu trúc dữ liệu chọn con đường qui ước nhiều hơn - một sự vật (sự vật dữ liệu) chỉ là dữ liệu. Mặc dầu không có biểu diễn trực tiếp cho kế thừa, truyền thông báo, hay bao bọc trong phương pháp thiết kế hướng cấu trúc dữ liệu, các kái niệm này vẫn cứ tự biểu lộ tinh vi trong trực cảm thiết kế được mô tả trong chương trình này. II. xem xét tiến trình thiết kế Phân tích yêu cầu phần mềm vẫn còn là nền tảng cho thiết kế hướng cấu truc dữ liệu. Mô tả về miền thông tin (cấu trúc, nội dung và luồng dữ liệu) chứa trong bản Đặc tả yêu cầu phần mềm báo trước về cấu trúc phần mềm cần được phát triển trong khi thiết kế. Mỗi phương pháp thiết kế đều đưa ra một tập các “qui tắc” làm cho người thiết kế biến đổi cấu trúc dữ liệu thành mộ biểu diễn của phần mềm. Mỗi phương pháp hướng cấu trúc dữ liệu dều có tập qui tắc riêng của nó. Tuy nhiên, các nhiệm vụ thiết kế sau đây bao giờ cũng phải được tiến hành: (1) đánh giá các đặc trưng cấu trúc dữ liệu; (2) biểu diễn dữ liệu dưới dạng sơ cấp như tuần tự, tuyển chọn và lặp; (3) ánh xạ biểu diễn cấu trúc dữ liệu vào cấu trúc điều khiển của phần mềm; (4) làm mịn cấp bậc phần mềm bằng cách dùng các hướng dẫn được xác định như một phần của phương pháp; (5) cuối cùng phát triển một mô tả thủ tục cho phần mềm. Một phân chia rõ rệt giữa các bước thiết kế cấu trúc và thủ tục (khi chúng đã được mô tả như một phần của tiến trình thiết kế phần mềm) thì không hiển nhiên như trong các phương pháp hướng cấu trúc dữ liệu. Jackson, Warnier và Orr chuyển nhanh chóng sang biểu diễn thủ tục. III. Phát triển hệ thống Jackson Giống như phần lớn các phương pháp thiết kế phần mềm, phát triển hệ thống Jackson (JSD) thực tế là một sự liên tục các bước kĩ thuật hỗ trợ cho việc phân tích và thiết kế phần mềm. Để tiến hành JSD, người phân tích và người thiết kế thực hiện các bước sau: ã Bước hành động thực thể. Dùng cách tiếo cận hoàn toàn tương tự như kí thuật phân tích hướng sự vật, xác định các thực thể (con người, sự vật, tổ chức mà hệ thống cần tạo ra hay sử dụng thông tin) và hành động (các sự kiện xuất hiện trong thế giới thực ảnh hưởng tới thực thể). ã Bước cấu trúc thực thể. Các hành động ảnh hưởng đến từng thực thể được sắp xếp theo thời gian và được biểu diễn bằng biểu đồ Jackson (kí pháp kiểu cây sẽ được giới thiệu lại trong mục này). ã Bước mô hình ban đầu. Biểu diễn các thực thể và hành động như một mô hình tiến trình; xác định mối nối giữa mô hình và thế giới thực. ã Bước chức năng. Xác định các chức năng tương ứng với hành động đã xác định. ã Bước định thời gian hệ thống. Các đặc trưng lập lịch tiến trình được định giá và xác định. ã Bước cài đặt. Phần cứng và phần mềm được xác định như một thiết kế. Bức hành động thực thể bắt đầu với một phát biểu ngắn gọn trong tiếng Anh (hay tiếng Việt) vầ vấn đề mà từ đó các thực thể (danh từ) và hành động (động từ) được chọn ra. Chỉ những thực thể và hành động có mối quan hệ trực tiếp với giải pháp phần mềm mới được chọn ra để đánh giá thêm. Bước cấu trúc thực thể tạo ra một biểu đồ Jackson mô tả đặc tả theo thời gian của những hành động được thực hiện trên hay bởi một thực thể. Biểu đồ Jackson, được vẽ trong Hình 1 (cho dịc vụ xe con thoi của trường đại học hay ví dụ USS ), được tạo ra cho từng thực thể (thực thể xe và nút trong trường hợp Hình 1) và thường được đi kèm bởi văn bản lời thuật. Nhấn Nút Tới (i) Đi (i) Tới Thân xe Rời đi (1) Xe con thoi Trạm (i) Hình 1 Biểu đồ cấu trúc Jackson Hình 1 Biểu đồ cấu trúc Jackson Bước mô hình ban đầu bắt đầu việc xây dựng đặc tả cho hệ thống như một mô hình của thế giới thực. Đặc tả được tạo ra bằng biểu đồ đặc tả hệ thống (SSD) bằng cách dùng các biểu trưng được minh hoạ trong Hình 2. Kết nối dòng dữ liệu xuất hiện khi một tiến trình truyền một dòng thông tin (như ghi bản ghi) và tiến trình khác thì nhận dòng này (như đọc bản ghi). Đầu mũi tên biểu thị cho hướng của luồng thông tin, trong khi hình tròn biểu thị cho dòng dữ liệu được giả thiết là đặt vào trong bộ đệm FIFO có dung lượng vô hạn. Kết nối véc tơ trạng thái xuất hiện khi một tiến trình tiếp giám định véc tơ trạng thái và hình thoi chi ra véc tơ trạng thái. Kết nối này là chung trong các ứng dụng điều khiển tiến trình trong đó cần phải kiểm tra trạng thái của một số thiết bị cơ điện. Theo qui ước, đuôi 0 biểu thị cho tiến trình thế giới thực còn đuôi 1 biểu diễn cho tiến trình mô hình hệ thống. * Mối nối dòng dữ liệu * Trạng thái mối nối véc tơ SV D Tiến trình - 1 Tiến trình - 1 Tiến trình - 0 Tiến trình - 0 Hình 2 Kí pháp SSD 1. Các bước thiết kế JSD Để thảo luận về các bước thiết kế cho việc phát triển hệ thống Jackson, thí dụ về con thoi của trường đại học phát biểu bài toán: một đại học lớn trải trên hai khu trường sở cách nhau gần hai ki lô mét. Để giúp cho sinh viên phải đi lại giữa hai khu trường sở này nghe bài giảng đúng giờ, đi học lập kế hoạch thiết lập dịch vụ xe khách tuyến ngắn. Dịch vụ tuyến ngắn chỉ sử dụng một xe con thoi tốc độ cao đi qua các đường giữa các điểm đỗ tại các khu trường sở. Mỗi điểm đỗ đều có một nút gọi mà sinh viên có thể dùng để yêu cầu vận chuyển tới điểm kia. Khi sinh viên tới một điểm đỗ, họ nhấn nút gọi. Nếu xe đã sẵn có đấy thì họ lên xe và đi tới điểm đỗ kia, nhận sinh viên (nếu có) rồi trở lại. Nếu xe đang ở điểm đỗ kia thì nó sẽ rời bến quay lại để đón sinh viên vừa nhấn nút. Xe sẽ đợi tại từng điểm đỗ cho tới khi có yêu cầu dich vụ tiếp (một nút được nhấn) xuất hiện. Các thực thể được lựa ra bằng cách xem xét tất cả các danh sách từ trong lời mô tả. Sau khi xem xét mô tả trên, các thực thể ứng cử viên sau đây được lựa ra: đại học, khu trường sở, sinh viên, bài giảng, xe, điểm đỗ và nút, chúng ta không quan tâm trực tiếp tới khu trường sở, sinh viên, bài giảng, hay điểm đỗ - tất cả chúng nằm ngoài biên giớ mô hình và đều bị bác bỏ không phảI là các thực thể có thể. Đại học đơn thuần là một tập thể cho cả hai khu trường sở, cho nên chúng ta bác bỏ nó như một thực thể . Chúng ta chọn xe và nút. Dùng cách phân tích tương tự , chúng ta chọn tới, nhấn và rời như những hành động ảnh hưởng tới xe và nút. Biểu đồ cấu trúc Jackson cho xe và nút được vẽ trong Hình 1. Biểu đồ đặc tả hệ thống cho USS được minh hoạ trong Hình 3. Cuối cùng, bước mô hình ban đầu cho USS được tiến hành như mô tả trong thảo luận sau. Bất kì khi nào có thể người ta đều ưa thích nối các tiến trình mô hình với thực thể thế giới thực bằng luồng dữ liệu bởi vì sự tương ứng trực tiếp giữa hành vi của mô hình và thế giới thực được đảm bảo. Trong thí dụ của ta, nút gọi phát ra một xung khi được nhấn. Điều này có thể được truyền tới tiến trình nút-1 như một liên hệ luồng dữ liệu. Tuy nhiên, chúng ta sẽ giả sử rằng các cảm biến phát hiện việc tới hay đi của xe không phát ra xung nào, nhưng việc đóng công tắc mạch điện thì mới phát ra xung. Do đó, một nối véc tơ trạng thái cần phải có. BD Nút - 1 Nút - 0 SV Xe - 1 Xe - 0 Hình 3 SSD cho USS Hành động tuần tự Hành động tuyển chọn Hành động lặp 0 * 0 Hình 4 Kí pháp biểu đồ cấu trúc Các chi tiết bên trong của tiến trình mô hình được xác định bằng cách dùng cái mà Jackson gọi là văn bản cấu trúc. Văn bản cấu trúc biểu thị cho cùng thông tin như biểu đồ cấu trúc (Hình 4)- tuần tự, tuyển chọn, lặp- nhưng thực hiện điều này theo định dạng văn bản. Văn bản cấu trúc cho nút-1 là: Nút-1 Read BD: PUSH-BDY itr while BD PUSH; Read DB; PUSH-BDY end Nút-1 end Cấu trúc nút-1 tương ứng đồng nhất với cấu trúc của Nút-0, với việc thêm thao tác Read nối thế giới thực với hệ thống. Như được lưu ý trước đây, tiến trình SHUTTLE-1 không thể được nối với thành phần thế giới thực tương ứng của nó bằng mối nối luồng dữ liệu. Thay vì thế, chúng ta phải hỏi các công tắc xem đang dược bật hay tắt bởi việc tới hay đi của xe. Tiến trình hệ thống phải giám định thực thể thế giưói thực khá thường xuyên để đảm bảo rằng không hành động nào xảy ra mà không bị phát hiện. Điều này được thực hiện bởi thực hiện một thao tác Getsv (lấy véc tơ trạng thái) để thu được từng giá trị của véc tơ trạng thái một số lần trước khi nó bị thay đổi, và tiến trình mô hình có thể được khởi thảo để chỉ ra các giá trị “đang đổi” này của các véc tơ trạng thái. Một mô tả văn bản cấu trúc của SHUTTLE-1 là như sau: SHUTTLE-1 seq Getsv SV: WAIT-BDY itr while TRANSIT1 Getsv SV; WAIT-BDY end LEAVE (1); TRANSIT-DBY1 itr while TRANSIT1 Getsv SV; TRANSIT-BDY1 end SHUTTLE-BDY1 itr STATION seq ARRIVE (i); WAIT-BDY itr while TRANSIT1 Getsv SV; WAIT-BDY end LEAVE (i) TRANSIT-BDY itr while TRANSITi Getsv SV; TRANSIT-BDY end STATION end SHUTTLE-BDY end ARRIVE (1); SHUTTLE-1 end Các giá trị trạng thái WAIT và TRANSIT biểu thị cho các giá trị thích hợp của công tắc tới và đi. Tiến trình thế giới thực SHUTTLE-0 tạo ra một thay đổi trạng thái trong công tắc, và tiến trình hệ thống SHUTTLE-1 thực hiện thao tác getsv để cảm nhận sự thay đổi này. Hình 5a minh hoạ cho văn bản cấu trúc đối với SHUTTLE-1 như một biểu đồ cấu trúc. 2. Bước chức năng Mục đích của bước chức năng JSD là để mở rộng biểu đồ đặc tả hệ thống bằng cách nói các tiến trình chức năng mới được định nghĩa với các tiến trình mô hình thông qua dòng dữ liệu hay véc tơ. JSD thừa nhận ba loại chức năng: Chức năng nhúng. Chức năng này đạt được bằng cách cấp phát (ghi) các thao tác thành văn bản cấu trúc tiến trình mô hình. Chức năng áp đặt. Chức năng này kiểm tra véc tơ trạng thái của tiến trình mô hình và tạo ra kết quả. Chức năng tương tác. Chức năng này kiểm tra véc tơ trạng thái của tiến trình mô hình, ghi ra một dòng dữ liệu đẻ ảnh hưởng tới các hành động của tiến trình mô hình và bao gồm các thao tá ghi kết quả. Cái ra của các tiến trình chức năng chính là cái ra hệ thống và có thể là báo cáo, mệnh lệnh cho các thiết bị phần cứng, hay bất kì thông tin đi ra nào khác. Để minh hoạ cho bước chức năng, ta xét thí dụ USS và xem xét mô hình của xe con thoi. Trong xe con thoi, có một bảng đèn được dùng để chỉ ra việc tới điểm đỗ với việc chiếu sáng một thông báo. Đèn được tắt bật bởi lệnh LON(i) và LOFF(i). Một chức năng phải được nhúng vào trong mô hình tiến trình xe con thoi để viết ra một lệnh lamp(i) khi xe tới điểm đỗ station(i). Vởy, khi xe con thoi đi lại giữa các điểm đỗ thì nó đưa ra một dòng dữ liệu bao gồm các chỉ lệnh đèn. SSD biểu thị cho tình huống này được vẽ trong Hình 5b. a) b) Xe con thoi Tới Xe Rời đi (1) Đợi (1) Chuyển (1) CMDS Xe - 1 SV Nút - 0 Xe - 0 Nút - 1 BD Đợi (1) Chuyển (1) Rời (i) Chuyển (i) Đợi (1) Chuyển (1) Điểm đỗ (i) Đợi (i) Tới (i) Hình 5 (a) Biểu đồ cấu trúc tương ứng với văn bản có cấu trúc (b) SSD đã cập nhật. Để cài đặt chỉ lệnh đèn, văn bản cấu trúc cho SHUTTLE-1 được sửa đổi như sau: SHUTTLE-1 seq LON(1); Getsv SV: WAIT-BDY itr while TRANSIT1 Getsv SV; WAIT-BDY end LOFF(1) LEAVE (1); TRANSIT-DBY1 itr while TRANSIT1 Getsv SV; TRANSIT-BDY1 end SHUTTLE-BDY1 itr STATION seq ARRIVE (i); LON(i); WAIT-BDY itr while TRANSIT1 Getsv SV; WAIT-BDY end LOFF(i); LEAVE (i) TRANSIT-BDY itr while TRANSITi Getsv SV; TRANSIT-BDY end STATION end SHUTTLE-BDY end ARRIVE (1); SHUTTLE-1 end Tham khảo tới văn bản cấu trúc trên, một chỉ lệnh được phát ra để bật thông báo về điểm đỗ 1 trên bảng đèn. Điều này xuất hiện lúc bắt đầu cuộc hành trình của xe con thoi, trước khi nó rời khỏi điểm đỗ 1 lần đầu tiên. Mỗi lần cảm biến chỉ ra tới một điểm đỗ thì đèn tương ứng lại được bật sáng và khi xe rời đi thì đèn được tắt. Chức năng thứ hai là tạo ra chỉ lệnh điều khiển động cơ, START và STOP, sẽ kiểm soát việc di chuyển của xe. Các chỉ lệnh này phải được đưa ra dưới những điều kiện sau: STOP - khi cảm biến báo việc tới một điểm đỗ START - khi một nút đựơc nhấn (lần đầu tiên) để yêu cầu xe và xe đang đợi tại một trong các điểm đỗ. Nhu cầu đưa ra chỉ lệnh STOP chỉ được xác định bởi việc tới điểm đỗ của xe. Tuy nhiên, việc đặt thời gian cho chỉ lệnh START bị ảnh hưởng bởi cả nút lẫn xe. Do đó, chúng tôi đưa vào một tiến trình chức năng gọi là mcontrol hành đọng trên dữ liệu mà nó nhận được từ các tiến trình Shuttle-1 và nút và đưa ra các chỉ lệnh START và STOP. Mối nối giữa tiến trình SHUTTLE-1 và mcontrol sẽ là dòng dữ liệu S1D. Điều có nghĩa là tiến trình SHUTTLE-1 không thể lỡ việc xe tới như điều đó có thể xuất hiện nếu véc tơ trạng thái đều đặn được xét tới. Văn bản cấu trúc cho tiến trình SHUTTLE-1 được viết lại một lần nữa, lần này có sửa cho điều khiển đèn và mô tơ: SHUTTLE-1 seq LON(1); Getsv SV: WAIT-BDY itr while TRANSIT1 Getsv SV; WAIT-BDY end LOFF(1) LEAVE (1); TRANSIT-DBY1 itr while TRANSIT1 Getsv SV; TRANSIT-BDY1 end SHUTTLE-BDY1 itr STATION seq ARRIVE (i); Write arrive to S1D; LON(i); WAIT-BDY itr while TRANSIT1 Getsv SV; WAIT-BDY end LOFF(i); LEAVE (i) TRANSIT-BDY itr while TRANSITi Getsv SV; TRANSIT-BDY end STATION end SHUTTLE-BDY end ARRIVE (1); Write arrive to S1D SHUTTLE-1 end Cần đản bảo rằng tiến trình SHUTTLE-1 thực hiện các thao tác Getsv SV và mcontrol đọc bản ghi tới của nó khá thường xuyên để dừng xe đúng thời gian. Các ràng buộc thời gian lịch biểu , và cài đặt được xem xét trong các bước JSD sau đó. Để hoàn chỉnh thí dụ USS, chúng ta quay lại với mô hình cho thực thể nút. Mô hình gốc, Nút-1, là một phát triển chính xác về hành động nút, nhưng bây giờ cần phân biệt giữa việc nhấn đầu tiên yêu cầu một hành trình và các lần nhấn tiếp đó trước khi cuộc hành trình thực sự bắt đầu. Một tiến trình mức-2 mới, nút-2, được mô tả để thực hiện các yêu cầu này và được vẽ bằng biểu đồ cấu trúc Jackson trong Hình 6. Một tiến trình chức năng xem xét véc tơ trạng thái của nút-2 để xác định xem liệu có một yêu cầu còn chưa được giải quyết cho hành trình không. Chức năng mcontrol thông báo nút-2 khi một yêu cầu đã được phục vụ xong, thúc là khi xe đã tới điểm đỗ nơi yêu cầu phát ra. Nó thực hiện điều này bằng cách truyền các bản ghi tới mà nó nhận được từ SHUTTLE-1. Do vậy, một chức năng tương tác cho tiến trình nút-2 được xác định. Nhấn phụ Tới phụ Tới Nhấn yêu cầu phụ Lần tới phụ Nhấn yêu cầu Nhóm nhấn Nút - 2 Hình 6 Dịch vụ con thoi trong trường – bước chức năng Văn bản cấu trúc cho tiến trình nút-2 là như sau: BUTTON-2 seq Request := no; Read MBD-BDY itr PUSH-GROUP seq EXTRA-AR-BDY itr while (ARRIVAL) Read MBD and B1D; EXTTRA-AR-BDY end RQ-PUSH seq Resquest := yes; Read MBD and B1D; RQ-PUSH end EXTRA-RQ-PUSH itr while Read MBD and B1D; EXTRA-RQ-PUSH end ARRIVAL end PUSH-GROUP end BUTTON-BDY end BUTTON-2 end Cái vào cho BUTTON-2 bao gồm hai dòng dữ liệu, được gộp lại theo cách được gọi là gộp thô. Việc gộp thô xuất hiện khi tiến trình đọc đơn thuần chấp nhận bản ghi tiếp xuất hiện trong dòng dữ liệu. Do đó, thứ tự các bản ghi được xử lý phụ thuộc vào hai tiến trình ghi phi đồng bộ tiềm năng. Với thí dụ này, việc gộp thô là đủ. Tuy nhiên, JSD còn đưa ra các kiểu gộp khác nhau với nhiều xác định vào hệ thống. Hình 7 chỉ ra một biểu đồ đặc tả hệ thống phản ánh tất cả những thay đổi được áp đặt như một phần của bước chức năng. Một chức năng nhúng bên trong SHUTTLE-1 sinh ra chỉ lệnh đèn, còn một tiến trình chức năng mới, mcontrol, thì áp đặt một chức năng tương tác lên BUTTON-2 và tạo ra chỉ lệnh động cơ cho xe. Cấu trúc của tiến trình mcontrol được suy dẫn ra bằng cách xem xét các cấu trúc dữ liệu vào và ra (mục13.3.4 và 13.3.5). BD1 BD Nút – 1 Nút - 2 Nút - 0 S1D Chỉ lệnh động cơ SV Xe - 1 Xe - 0 Chỉ lệnh đèn Mcontrol B2V MBD Hình 7 SSD, được mở rộng cho các chức năng 1 và 2 3. Bước đặt thời gian hệ thống Trong bước JSD này, người thiết kế xác định các ràng buộc đặt thời gian bị áp đặt lên hệ thống. Các bước thiết kế trước đây tạo ra một hệ thống bao gồm các tiến trình tuần tự trao đổi qua dòng dữ liệu và trực tiếp kiểm tra véc tơ trạng thái. Việc lập lịch tương đối cho xử lí còn chưa được xác định. Một cơ chế có thể được dùng để đồng bộ các tiến trình là bộ đánh dấu lát thời gian (TGM). TGM là một bản ghi dữ liệu chỉ ra sự xuất hiện của một khoảng thời gian đặc biệt và có thể làm cho việc chuyển thời gian ảnh hưởng tới các hành động của một tiến trình. Các ràng buộc thời gian cho thí dụ dịch vụ xe con thoi trong trường đại hoc có thể bao gồm: 1. Thời gian trong đó chỉ lệnh STOP phải được đưa ra, dựa trên tốc độ xe con thoi và năng lượng phanh. 2. Thời gian đáp ứng để chuyển tắt/bật đèn báo. Với thí dụ USS, không cần đưa vào bất kì cơ chế đồng bộ đặc biệt nào. Tới một mức nào đó, việc trao đổi dữ liệu đã áp đặt một số mức độ đồng bộ. 4. Bước đã cài đặt Bước cài đặt của JSD đã nêu trong công trình ban đầu để suy dẫn ra phần cấu trúc chương trình và dữ liệu còn lại từ cấu trúc dữ liệu vấn đề. Trong mục này và mục sau sẽ trình bày một tổng quan về cách tiếp cận cách thiết kế chương trình Jackson, gọi là lập trình có cấu trúc Jackson (JSP). Các ánh xạ liên kết với cách tiếp cận này có lí do của chúng là phương pháp luận thiết kế nàt đã được phân loại như hướng cấu trúc dữ liệu. Bản chất của bước cài đặt có thể được phát biểu bằng cách nói theo Jackson: “Vấn đề nên được phân tách thành các cấu trúc có cấp bậc của các bộ phận có thể biểu diễn theo ba dạng cấu trúc.” Các “dạng cấu trúc” mà Jackson ám chỉ là tuần tự, điều kiện và lặp – trong thực tại, các kết cấu thủ tục (theo thuật ngữ của cuốn sách này) là nền tảng của triết lí lập trình có cấu trúc . Kí pháp cấu trúc dữ liệu là một biến thể của biểu đồ cấu trúc Jackson và được minh hoạ trong Hình 8. Tham khảo vào hình này, một tuyển tập dữ liệu, A, bao gồm nhiều lần xuất hiện (được kí hiệu bởi *) của cấu trúc dữ liệu B. B chứa nhiều lần xuất hiện của C và một cấu trúc con khác, D, có chứa khoản mục dữ liệu E hay F (dữ liệu khác được kí hiệu là 0). Việc biểu diễn theo biểu đồ khối của Jackson cho cấp bậc thông tin có thể được áp dụng cho cái vào, cái ra hay các cấu trúc cơ sở dữ liệu với tiện nghi tương đương. Xem như một thí dụ cụ thể hơn về kí pháp này, ta xem xét phần mềm được phát triển cho hệ thống kế toán thẻ tín dụng (đã đơn giản hoá phần lớn), được vẽ trong hình 9. Tệp thanh toán, chứa số hiệu khách hàng (CNO), ngày thanh toán (Date) và số lượng đã trả (Amt) được điều hoà với tệp chính khách hàng có chứa CNO và số dư còn lại. Tệp thanh toán được sắp xếp trước theo nhóm số khách hàng (CNO-GROUP) để cho tất cả mọi việc thanh toán theo cá nhân đều được chứa trong một bản ghi riêng lẻ. Cấu trúc dữ liệu cho cả hai tệp này, mô tả theo kí pháp Jack son, được vẽ trong hình. Một định dạng báo cáo đưa ra cho hệ thống kế toán thẻ tín dụng và biểu đồ cấu trúc dữ liệu kết quả được vẽ trong Hình 10. Báo cáo này có cấp bậc bao gồm dữ liệu khách hàng (CUST_DATA) và tổng số chính. Các cấu trúc con chỉ ra thông tin chứa trong cấp bậc này. * = Nhiều lần xuất hiện:; 0 = Chọn lựa F 0 E 0 C * D B * A Hình 8 Kí pháp cấu trúc dữ liệu Tệp thanh toán CNO GROUP CNO Tệp chính Tệp trả tiền CNO Ngày Số tiền xxx xxx ã ã ã xxx yyy yyy CNO - GROUP Bản Ghi Trả Tiền CNO tệp chính CNO Số dư XXX YYY ã ã ã Bản ghi khách hàng Số dư Hình 9 Hệ thống hóa dơn thẻ tín dụng Báo Cáo Kế Toán CNO Ngày Pmt Số cũ Số mới Xxx ------- ----- ------- ----- ------- ----- ------- ----- ------ ------- yyy -------- ------- ------ ------- ------ ------- ------ Grand tot ------ ------- ACTT NEW BAL OLD BAL CUST TOTAL PAY REC CNO CUTST DATA CNO GROUP BAL DATA TOTAL PMT TOTAL BAL MASTER TOTAL Hình 10 cái ra hệ thống 5. Biểu diễn thủ tục Biểu diễn thủ tục do chương trình hay tiến trình được suy ra trực tiếp từ cách tổ chức của cấu trúc dữ liệu cấp bậc cấu trúc của nó. Cấu trúc dữ liệu được vẽ trong Hình 10 phát sinh trong suy dẫn từ cấu trúc chương trình được vẽ trong Hình 11. dùng cấu trúc chương trình này như hướng dẫn, có thể phát triển văn bản cấu trúc. Để minh hoạ cấu trúc cho nhánh PROCESS-CUST-DATA (xử lí dữ liệu khách hàng) của Hình 11 được nêu dưới đây: PROCESS-CUST-DATA seq Open PAY-FILE; Open C-M-F; PROCESS CNO-GROUP iter until eof:PAY-FILE; Read PAY-FILE; PROCESS-CNO {read C-M-F, finds old balance} PROCESS-PAY-REC iter until end: CNO-GROUP; Write report line; Compute total payments; Read PAY-FILE; End PROCESS-PAY-REC COMPUTE-CUST-TOTAL; COMPUTE-BALANCE seq PROCESS-OLD-BAL; COMPUTE-NEW-BAL; Write report line; End COMPUTE-BALANCE End PROCESS-CNO-GROUP End PROCESS-CUST-DATA Phương pháp luận của Jackson hõ trợ cho một số kĩ thuật phụ mở rộng hơn tính áp dụng của nó và làm phong phú cho thiết kế tổng thể. Có thể tìm thấy một thảo luận đầy đủ về từng kĩ thuật này trong sách của Jackson và Cameron. Xử lí PAY-FILE & CMS để cho báo cáo kế toán PROCESS MASTER - TOTS PROCESS CNO PROCESS CNO - GROUP COMPUETR FILE-BAL COMPUTER TOT - PMT COMPUTER BALANCE COMPUTER NEW - BAL COMPUTER OLD - BAL COMPUTER CUST - TOT PROCESS PAY - REC PROCESS CUST - DATA Hình 11 cấu trúc chương trình kết quả IV. Phát triển hệ thống có cấu trúc dữ liệu Phát triển hệ thống có cấu trúc dữ liệu (DSSD) mở rộng khái niệm cơ sở do Warnier phát triển thành một phương pháp luận dễ hiểu choviệc phân tích và thiết kế các hệ thống dựa trên máy tính. Trong Chương 9, chúng ta đã trình bày các bước hướng phân tích của DSSD. Thủ tục thiết kế DSSD được mô tả dùng kí pháp biểu đồ Warnier trong Hình 12. Cái nào cho thủ tục thiết kế DSSD là thông tin phân tích yêu cầu có chứa hoàn cảnh ứng dụng, mô tả chức năng và kết quả ứng dụng . Các biểu đồ và dữ liệu có chứa trong những biểu dồ này được dùng như nền tảng cho thiết kế logic và vật lí. Thiết kế logic tập trung vào các cái ra, giao diện và thhiết kế thủ tục của phần mềm. Thiết kế vật lí tiến hoá từ thihết kế logic và tập trung vào “đóng gói” phần mềm để đạt tới sự hoàn thiện mong muốn tốt nhất, tính dễ bảo trì và các ràng buộc thiết kế do môi trường hệ thống áp đặt. Vào Ra Thủ tục thiết kế DSSD Đặc tả yêu cầu * Hoàn cảnh ứng dụng * Mô tả chức năng * Kết quả ứng dụng Tài liệu thiết kế * Cấu trúc dữ liệu * Chi tiết thủ tục * Ràng buộc Hình 12 thủ tục thiết kế DSSD 1. Cách tiếp cận thiết kế đã đơn giản hoá Tiến trình thiết kế logic có thể được chia thành hai hoạt động suy dẫn ra logic của cấu trúc cái ra logic (LOS) và định nghĩa kết quả của cấu trúc xử lí logic (LPS). Cách tiếp cận đơn giản hoá đã được đề nghị cho suy dẫn của LOS. Trong cách tiếp cận này, các khoản mục dữ liệu là một phần của miền thông tin của vấn đề của tổ chức theo cấp bậc rất giống cách mà Jackson tiếp cận đến thiết kế. Một tiến trình bốn bước được áp dụng để suy ra LOS: 1. Đánh giá phát biểu vấn đề hay thông tin về các yêu cầu có liên quan và liệt kê ra mọi khoản mục dữ liệu phân biệt mà không thể phân chia thêm được nữa (còn gọi là các nguyên tử). 2. Xác định tần suất cho từng nguyên tử. 3. Tính toán các khoản mục dữ liệu có thể được phân chia ra thêm (còn gọi nó là toàn thể). 4. Phát triển một biểu diễn văn phạm bbiểu đồ cho LOS Để minh hoạ cho tiến trình bốn bước được mô tả ở trên, chúng ta giới thiệu một thí dụ ngắn gọn. “Báo cáo việc sử dụng công cụ máy thường ngày” (Hình 13) được sinh ra một phần của hệ thống thông tin chế tạo tự động hoá lớn. Cách tiếp cận thioết kế DSSD đã đơn giản hoá sẽ được sử dụng để suy dẫn ra LOS và LPS. Báo cáo sử dụng máy hàng ngày Ngày: DATA Phần tổng phân loại: cat – tot – parts Phạm vi công cụ TOOL - CAT Tên công cụ TID Số bộ phận tạo ra NO – PARTS Trạng thái S Phần tổng được sản xuất ngày: manuf - total Phần tổng phân loại: Hình 13 Bản mẫu báo cáo 2. Suy diễn về cấu trúc cái ra logic Cấu trúc cái ra logic là một biểu diễn cấp bậc của khoản mục dữ liệu có chứa cái ra từ một hệ thống dựa trên máy tính. Bước đầu tiên trong suy dẫn của LOS là cô lập tất cả các nguyên tử (các khoản mục dữ liệu không thể chia nhỏ thêm được nữa). Điều này có thể được thực hiện bằng cách xem lại phát biểu vấn đề hay, trong trường hợp thí dụ báo cáo về việc dùng công cụ trên, bằng cách xem xét định dạng của bản thân báo cáo bản mẫu (Hình 13). Tiếp đó, cũng nên lưu ý đến tần suất như được vẽ trong Hình 14. Tần số 1/ Báo cáo 1/ Báo cáo 1/ Báo cáo 1/ Phân loại công cụ 1/ Tên công cụ 1/ Tên công cụ 1/ Tên công cụ 1/ Phân loại công cụ 1/ Phân loại công cụ 1/ Báo cáo 1/ Báo cáo Phần tử dữ liệu (Nguyên tử) Heading Date Column – head Tool – cat Tid S No parts Subtotal – head Cat – tot – parts Total – head Manuf – total Chi tiết Báo cáo về sử dụng máy công cụ hàng ngày. Phân loại công cụ, tên công cụ… Phân loại toàn bộ bộ phận. Tổng số bộ phận sản xuất ngày này. Hình 14 Nguyên tử và tần xuất Một khi đã xác định được tất cả các nguyên tử và tần suất của chúng thì người thiết kế bắt đầu việc xem xét tới toàn thể. Toàn thể là các khoản mục dữ liệu hay các phân loại* có bao gồm cả các nguyên tử và các toàn thể khác. với thí dụ của chúng ta, toàn thể sẽ là: Report (xuất hiện một lần), tools-category (xuất hiện t lần trên Report), và tool-id (xuất hiện s lần trên tool-category). Dùng thông tin có trong Hình 14 và được thu thập như một phần của phân tich toàn thể, có thể xây dựng biểu đồ Warnier-Orr (mục 9.3) cho “Báo cáo việc dùng công cụ máy hàng ngày” ( Hình 15). Deading Date Column-head Tool category Total-head Manuf-total Toptal-cat Tool id (1,i) Subtotal-head Cat-total-parts Báo cáo chế tạo Tid S No-parts Hình15 Kí pháp Warnier-Orr cho LOS 3. Suy dẫn ra cấu trúc xử lí logic Cấu trúc tiến trình logic là một biểu diễn thủ tục cho phần mềm để xử lí LOS tương ứng. Mỗi khoản mục dữ liệu toàn thể đều trở thành một kết cấu lặp mà theo nó các lệnh xử lí được thêm vào. cá bước sau đây được tiến hành để suy dẫn ra LPS: 1. Gỡ tất cả các nguyên tử ra khỏi biểu đồ Warnier-Orr cho LOS 2. Bổ xung thêm các định biên BEGIN và END cho mọi toàn thể (lặp lại) Nếu các bước 1 và 2 được áp dụng cho thí dụcủa chúng ta thì kết quả sẽ là biểu đồ được vẽ trong Hình 16 . Tiếp tục các bước cho suy dẫn của LPS: 3. Xác định tất cả các lệnh hay tiến trình khởi đầu và kết thúc. 4. Xác định tất cả xử lí tính toán hay phi số áp dụng các bước 3 và 4 làm phát sinh biểu đồ Warnier-Orr mở rộng được vẽ trong Hình 17. Tiếp tục 5. Xác định mọi lệnh và tiến trình đầu ra 6. Xác định mọi lệnh và tiến trình đầu vào áp dụng các bước 5 và 6 hoàn chỉnh đặc tả của LPS và được vẽ cho ví dụ này trong Hình 18. Strip LOS of all atoms Add BEGIN and END BEGIN Tool ID (1,i) .END begin Manufacturing report Tool category (1,t) .end Hình16 Biến đổi LOS thành LPS Define intalization and termination. Define computation. And CAT-TOTAL-PARTS to MANUF-TOTAL And NO-PARTS to CAT-TOTAL-PARTS Set MANUF-TOTAL to 0 BEGIN Tool ID (1,i) .END .end Tool category (1,t) BEGIN Set CAT-TOTAL-PARTS to 0 Manufacturing report Hình 17 LPS suy dẫn Output HEADINS,’ DATE,COLUMN-HEAD Set MANUF – TOTAL to 0 Get LOGICAL RECORD BEGIN BEGIN Output TOOL-CAT Set MANUF-TOTAL to 0 Manufacturing report Output TID,S,NO,PARTS And NO-PARTS to CAT-TOTAL-PARTS Get LOGICAL RECORD Tool ID (1,i) Tool category (1,t) Output SUBTOTAL-HEAD And CAT-TOTAL-PARTS to MANUF-TOTAL Output CAT-TOTAL-PARTS END Output TOOL - HEAD Output MANUF - TOTAL end Hình 18 LPS hoàn chỉnh 4. Logic xử lí phức tạp Trong nhiều trưòng hợp, bản chất thủ tục của LPS phức tạp hơn đáng kể so với thí dụ đã được trình bày trong mục trước. DSSD cung cấp một lí pháp để giải quyết xử lí tính toán và điều kiện - Logic xử lí phức tạp. Để minh hoạ cho việc dung logic xử lí phức tạp, chúng ta xem xét một thí dụ khác: một doanh nghiệp đặt hàng theo the tính tổng số tiền phảI trả theo đơn bằng cách cộng chi phí của tất cả các khoản mục đặt hàng với chi phí vận chuyển rồi trừ đi số tiền giảm giá. Chi phí vận chuyển được xác định theo bảng sau: Khoảng cách mile Trọng lượng lb Phí Biểu <=100 <=100 + 100 + 100 <=50 +50 <=50 +50 0.1 x Khoảng cách x trọng lượng 1.10 x trọng lượng 0.02 x khoảng cách x trọng lượng 2.35 x trọng lượng Giảm giá được xác định dựa trên ttỏnh hoá đơn tương ứng với bảng biểu sau: Tổng hoá đơn: $ Thừa số giảm giá: % < 100 < 500 >= 500 0 1 2 Việc xử lí cần đòi hỏi tới mô hình toán của tổng phải trả được vẽ trong Hình 19a và Hình 19b. Các phép toán số học được trình bày trong hộp để phân biệt chúngvới các phép toán logic. Tuy nhiên cần phải chú ý rằng các phép toán số học có thể được xác định mà không có hộp khi không có thể có sự lẫn lộn. Kí hiệu chú thích, /?n với n là số hiệu chú thích, được dùng để định tính một xử lí đặc biệt nào đó. Bên cạnh các thủ tục cho logic xử lí phức tạp, DSSD cũng đưa ra các kĩ thuật để giải quyết những tình huống trong đó cấu trúc cái ra logic và cấu trúc cái ra vật lí mang những đặc trưng khác nhau. Một tiến trình gộp cho phép thiết kế giải quyết những va chạm cấu trúc này. + Invoice total (a) (b) + + (c) Total payable shipping - discount Item.cost (1,i) Unit.cost + Quantity + + discount shipping Invoice total Total Payable - LOCAN /?3 HEAVY /?4 LONG DISTANCE /?2 2.35 x WEIGHT 0.02 x DISTANCE x WEIGHT LIGHT /?3 0.01 x DISTANCE x WEIGHT 1.10 x WEIGHT LOCAN /?1 TOTAL PAYABLE HEAVY /?4 ?3/ IF WEIGHT Ê 50 lb ?4/ IF WEIGHT >50 lb ?1/ IF DISTANCE Ê 100ml ?2/ IF DISTANCE > 100ml Hình 19a Logic xử lí a)mức1; b)mức2;c)mức3;d)mức4. (d) ?5/ IF INVOICE < $ 100 ?6/ IF INVOICE < $ 500 ?7/ IF INVOICE ³ $ 500 0% /?5 1% /?6 2% /?7 FACTOR INVOICE TOTAL X DISCOUT Hình 19b Logic xử lí a)mức1; b)mức2;c)mức3;d)mức4. DSSD, giống như phát triển hệ thống Jackson, đưa ra một phương pháp luận đầy đủ cho phân tích và thiết kế phần mềm. Vi` mỗi một trong các phương pháp hướng cấu trúc dữ liệu này đều đưa ra cơ chế để suy dẫn ra thiết kế thủ tục chi tiết nên từng phương pháp đó đều đưa tới việc sinh mã gốc tự động. Kết Luận Thiết kế hướng cấu trúc dữ liệu, giống như tất cả các phương pháp thiết kế phần mềm chính, tập trung vào miền thông tin. Tuy nhiên thay vì tập trung vào luồng dữ liệu thì các phương pháp hướng cấu trúc dữ liệu dùng cấu trúc thông tin như như bộ dẫn lái để suy ra thiết kế. Hai phương pháp thiết kế quan trọng – phát triển hệ thống Jackson và phát triển hệ thống có cấu trúc dữ liệu - đã được trình bày trong đề án này. cả hai đều khác giống nhau về nhiều phương diên, nhưng mỗi phương pháp lại tiếp cận tới tiến trình thiết kế phần mềm từ một quan điểm khác biệt theo cách nào đó. Jackson đã đưa vào một tập khái niệm sơ bộ, ít sử lí với cấu trúc dữ liệu mà thay vì thế tập trung vào mô hình hoá tiến trình và điều khiển. Thiết kế và cài đặt tiến trình tiếp tục còn phụ thuộc vào việc biểu diễm cấu trúc dữ liệu. Orr (DSSD) tổ hợp các phần tử tinh vi của kĩ thuật luồng dữ liệu (trong phân tích) và thích nghi từ cả LCP/LCS và ( với mức độ mở rộng lỏng thêm) vớiJSD cho thủ tục thiết kế của mình. Orr đưa ra một tổng quan có giá trị với tất cả các phương pháp thiết kế được trình bày trong bài viết này: Các hệ thống tồi thường phức tạp, khó thay đổi, phụ thuộc phần cứng và phần mềm và thành một cục. Hơn nữa, chúng lại lớn, đắt đỏ, và tốn thời gian xây dựng. điều không may là dù có biết một hệ thống tồi như thế nào thì cũng không nhất thiết đưa ra được một hướng dẫn rõ ràng để xây dựng một hệ thống tốt. Hai mươi năm qua người ta đx phát triển nhiều phương pháp luận nhằm tránh việc tạo ra các hệ thống tồi, nhưng mãi cho dến năm 1970 các cách tiếp cận vẫn dường như chưa xác định được hệ thống tốt phải là như thế nào. Mỗi một trong các phương pháp thiết kế hướng cấu trúc dữ liệu đã được trình bày trong bài viết này đều là “trẻ thơ” của những năm 1970. Mỗi phương pháp đều đưa vào những ý tưởng quan trọng về bản chất của thiết kế tốt và các phương pháp riêng để đạt điều đó. Khi những phương pháp này đã xhín muồi thì sự tập trung riêng của chúng vào cấu trúc dữ liệu đã được mở rộng ra cũng như cách hiểu của chúng ta về “hệ thống tốt nên giống như cái gì” tiến hoá lên. Mục lục Trang Đề cương chi tiết 1

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

  • doc35678.doc