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.
37 trang |
Chia sẻ: aloso | Lượt xem: 1849 | Lượt tải: 0
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:
- 35678.doc