Xem mẫu

  1. Tập bài giảng Công nghệ phần mềm Chƣơng 5 THIẾT KẾ PHẦN MỀM 5.1. Đặc điểm của quá trình thiết kế phần mềm Xây dựng ứng dụng phần mềm là một dây chuyền các chuyển đổi, mà ở đó phân tích nhằm xác định ứng dụng sẽ thực hiện cái gì (what) còn thiết kế nhằm để trả lời câu hỏi phần mềm cụ thể sẽ nhƣ thế nào (how)? Tức là xác định cách thức thực hiện những gì đã đƣợc đặt ra ở phần phân tích. Trong ba giai đoạn: thiết kế, cài đặt và bảo trì thì thiết kế là giai đoạn quan trọng nhất, chịu trách nhiệm đến 80% đối với sự thành công của một sản phẩm. Cài đặt là việc thực thi những gì đã thiết kế. Nếu trong quá trình cài đặt có xuất hiện vấn đề thì phải quay lại sửa bản thiết kế. Quá trình thiết kế tốt là cơ sở để quản lý và giảm chi phí cho công việc bảo trì phần mềm sau này. Nhiệm vụ của thiết kế là chuyển đổi những yêu cầu của hệ thống (kết quả của quá trình phân tích) sang dạng biểu diễn của hệ thống phần mềm. Nghĩa là xây dựng các mô tả văn bản (thiết kế chi tiết) nêu rõ mối quan hệ giữa tiền điều kiện và hậu điều kiện cho tất cả các chức năng (quá trình) của hệ thống. Tiền điều kiện xác định những cái sẽ nhận giá trị chân lý đúng trƣớc khi một quá trình thực hiện, còn hậu điều kiện xác định những điều sẽ nhận giá trị đúng khi chấp nhận tiền điều kiện và khi quá trình đó kết thúc thành công. Tầm quan trọng của thiết kế đƣợc thể hiện qua hình 5.1: Hình 5.1. Tầm quan trọng của quá trình thiết kế Nhƣ vậy, thiết kế là một thực tế về một quyết định chọn lựa, xây dựng một đặc tả về hành vi nhìn thấy đƣợc từ bên ngoài và bổ sung các chi tiết cần thiết cho việc cài đặt trên hệ thống máy tính bao gồm cả chi tiết về tổ chức quản lý dữ liệu, công việc và tƣơng tác với con ngƣời. Thiết kế phải nhờ vào các kinh nghiệm và phải học tập những cái có sẵn từ các hệ thống khác; không thể chỉ đọc sách là đủ. Bản thiết kế tốt là chìa khóa cho sự thành công của hệ thống. 124 Phạm Hùng Phú -Nguyễn Văn Thẩm
  2. Tập bài giảng Công nghệ phần mềm Mối liên quan của thiết kế phần mềm với công nghệ phần mềm đƣợc thể hiện qua sơ đồ hình 5.2: Hình 5.2. Mối liên quan của giai đoạn thiết kế với các giai đoạn khác Thiết kế phần mềm là hoạt động đƣợc xác lập dựa trên hai mặt: quản lý và kỹ thuật, chúng đan xen với nhau. Mối quan hệ giữa hai khía cạnh kỹ thuật và quản lý đƣợc thể hiện qua hình 5.3: Hình 5.3. Các giai đoạn thiết kế Trong quan điểm quản lý, thiết kế phần mềm đƣợc tiến hành 2 bƣớc: - Thiết kế sơ bộ: quan tâm đến việc dịch các yêu cầu thành các kiến trúc dữ liệu và phần mềm. - Thiết kế chi tiết: tập trung vào việc làm mịn biểu diễn kiến trúc để dẫn đến cấu trúc dữ liệu chi tiết và biểu diễn thuật toán cho phần mềm. Đối với khía cạnh kỹ thuật, xuất hiện một số hoạt động thiết kế nhƣ: - Thiết kế dữ liệu - Thiết kế kiến trúc Phạm Hùng Phú -Nguyễn Văn Thẩm 125
  3. Tập bài giảng Công nghệ phần mềm - Thiết kế thủ tục - Thiết kế đối tƣợng - Thiết kế giao diện Các hoạt động của giai đoạn thiết kế phần mềm theo khía cạnh kỹ thuật đƣợc biểu diễn nhƣ hình qua hình 5.4. Trong đó, hoạt động thiết kế xử lý gồm hai hoạt động: Thiết kế thủ tục và thiết kế đối tƣợng. Hình 5.4. Các giai đoạn thiết kế theo khía cạnh kỹ thuật Các kết quả cần có khi thiết kế hệ thống theo khía cạnh kỹ thuật Bảng 5.1. Kết quả của các giai đoạn thiết kế theo khía cạnh kỹ thuật STT Hoạt động Kết quả Kết quả chi tiết - Sơ đồ các màn hình - Danh sách các màn hình Thiết kế giao Hệ thống các màn 1 - Nội dung từng màn hình diện hình giao diện - Biến cố và xử lý trên từng màn hình. - Danh sách các hàm Hệ thống các hàm - Danh sách các kiểu dữ liệu 2 Thiết kế xử lý cùng với cấu trúc - Mô tả chi tiết từng hàm dữ liệu tƣơng ứng - Mô tả chi tiết các kiểu dữ liệu - Cấu trúc lƣu trữ Thiết kế dữ Tổ chức lƣu trữ - Danh sách các thành phần lƣu trữ 3 liệu trên bộ nhớ phụ - Mô tả chi tiết các thành phần - Danh sách các ràng buộc Trong tiến trình thiết kế, mô hình để biểu diễn công việc thiết kế là đồ thị. Các đỉnh của đồ thị dùng để biểu diễn các thực thể (các tiến trình, các chức năng, các kiểu...) và các cạnh là các mối liên hệ giữa chúng. Quá trình thiết kế thƣờng đƣợc mô tả bằng nhiều mức khác nhau của cách tiếp cận trừu tƣợng hóa, nhằm tách các bộ phận cấu thành của bài toán nhằm nâng cao độ chắc chắn, độ tin cậy của hệ thống. 126 Phạm Hùng Phú -Nguyễn Văn Thẩm
  4. Tập bài giảng Công nghệ phần mềm Hình 5.5. Tiến trình thiết kế 5.2. Chiến lƣợc thiết kế Do các hệ phần mềm lớn là phức tạp nên ngƣời ta thƣờng dùng các phƣơng pháp tiếp cận khác nhau trong việc thiết kế các phần khác nhau của một hệ thống. Chẳng có một chiến lƣợc tốt nhất nào cho các dự án. Hai chiến lƣợc thiết kế hiện đang đƣợc dùng rộng rãi trong việc phát triển phần mềm đó là thiết kế hƣớng chức năng và thiết kế hƣớng đối tƣợng. Mỗi chiến lƣợc thiết kế đều có ƣu và nhƣợc điểm riêng phụ thuộc vào ứng dụng phát triển và nhóm phát triển phần mềm. Cách tiếp cận hƣớng chức năng hay hƣớng đối tƣợng là bổ sung và hỗ trợ cho nhau chứ không phải là đối kháng nhau. Kỹ sƣ phần mềm sẽ chọn cách tiếp cận thích hợp nhất cho từng giai đoạn thiết kế. 5.2.1. Thiết kế hƣớng chức năng Thiết kế hƣớng chức năng là một cách tiếp cận thiết kế phần mềm trong đó bản thiết kế đƣợc phân giải thành một bộ các đơn thể đƣợc tác động lẫn nhau, mà một đơn thể có một chức năng đƣợc xác định rõ ràng. Các chức năng có các trạng thái cục bộ nhƣng chúng chia sẻ với nhau trạng thái hệ thống, trạng thái này là tập trung và mọi chức năng đều có thể truy cập đƣợc. Một số quan niệm cho rằng thiết kế hƣớng chức năng đã lỗi thời và nên đƣợc thay thế bởi cách tiếp cận hƣớng đối tƣợng. Thế nhƣng, nhiều tổ chức đã phát triển các chuẩn và các phƣơng pháp dựa trên sự phân giải chức năng. Nhiều phƣơng pháp thiết kế kết hợp với các công cụ CASE đều là hƣớng chức năng và có nhiều hệ thống đã đƣợc phát triển bằng cách sử dụng phƣơng pháp tiếp cận hƣớng chức năng. Các hệ thống đó sẽ phải đƣợc bảo trì cho một tƣơng lai xa xôi. Bởi vậy thiết kế hƣớng chức năng vẫn sẽ còn đƣợc tiếp tục sử dụng rộng rãi. Chiến lƣợc thiết kế hƣớng chức năng dựa trên việc phân giải hệ thống thành một bộ các chức năng có tƣơng tác nhau với trạng thái hệ thống tập trung dùng chung cho các chức năng đó. Các chức năng này có thể có các thông tin trạng thái cục bộ nhƣng chỉ dùng cho quá trình thực hiện chức năng đó mà thôi. Phạm Hùng Phú -Nguyễn Văn Thẩm 127
  5. Tập bài giảng Công nghệ phần mềm Thiết kế hƣớng chức năng gắn với các chi tiết của một thuật toán của chức năng đó nhƣng các thông tin trạng thái hệ thống là không bị che dấu. Điều này có thể gây ra một vấn đề vì rằng một chức năng có thể thay đổi trạng thái theo một cách mà các chức năng khác không ngờ tới. Việc thay đổi một chức năng và cách nó sử dụng trạng thái hệ thống có thể gây ra những tƣơng tác bất ngờ đối với các chức năng khác. Do đó cách tiếp cận chức năng để thiết kế là thắng lợi nhất khi mà khối lƣợng thông tin trạng thái hệ thống là đƣợc làm nhỏ nhất và thông tin dùng chung nhau là rõ ràng. 5.2.2. Thiết kế hƣớng đối tƣợng Hệ thống đƣợc nhìn nhận nhƣ một bộ các đối tƣợng. Hệ thống đƣợc phân tán, mỗi đối tƣợng có những thông tin trạng thái riêng của nó. Đối tƣợng là một bộ các thuộc tính xác định trạng thái của đối tƣợng đó và các phép toán của nó. Nó đƣợc thừa kế từ một vài lớp đối tƣợng lớp cao hơn, sao cho dễ định nghĩa nó chỉ cần nêu đủ các khác nhau giữa nó và các lớp cao hơn nó. Che dấu thông tin là chiến lƣợc thiết kế dấu càng nhiều thông tin trong các thành phần càng hay. Cái đó ngầm hiểu rằng việc kết hợp điều khiển logic và cấu trúc dữ liệu đƣợc thực hiện trong thiết kế càng chậm càng tốt. Liên lạc thông qua các thông tin trạng thái dùng chung (các biến tổng thể) là ít nhất, nhờ vậy khả năng hiểu là đƣợc tăng lên. Thiết kế là tƣơng đối dễ thay đổi vì sự thay đổi một thành phần không thể không dự kiến các hiệu ứng phụ trên các thành phần khác. Thiết kế hƣớng đối tƣợng là dựa trên việc che dấu thông tin, nhìn hệ phần mềm nhƣ là một bộ các đối tƣợng tƣơng tác với nhau chứ không phải là một bộ các chức năng nhƣ cách tiếp cận chức năng. Các đối tƣợng này có một trạng thái đƣợc che dấu và các phép toán trên các trạng thái đó. Thiết kế biểu thị các dịch vụ đƣợc yêu cầu và đƣợc cung cấp bởi các đối tƣợng có tƣơng tác với nó. Thiết kế hƣớng đối tƣợng có ba đặc trƣng: - Vùng dữ liệu dùng chung là bị loại bỏ. Các đối tƣợng liên lạc với nhau bằng cách trao đổi thông báo chứ không phải bằng các biến dùng chung. - Các đối tƣợng là các thực thể độc lập mà chúng sẵn sàng đƣợc thay đổi vì rằng tất cả các trạng thái và các thông tin biểu diễn là chỉ ảnh hƣởng trong phạm vi chính đối tƣợng đó thôi. Các thay đổi về biểu diễn thông tin có thể đƣợc thực hiện không cần sự tham khảo tới các đối tƣợng hệ thống khác. - Các đối tƣợng có thể phân tán và có thể hành động tuần tự hoặc song song. Không cần có quyết định về tính song song ngay từ một giai đoạn sớm của quá trình thiết kế. Các ƣu điểm của phƣơng pháp thiết kế hƣớng đối tƣợng: 128 Phạm Hùng Phú -Nguyễn Văn Thẩm
  6. Tập bài giảng Công nghệ phần mềm - Dễ bảo trì vì các đối tƣợng là độc lập. Các đối tƣợng có thể hiểu và cải biên nhƣ là một thực thể độc lập. Thay đổi trong thực hiện một đối tƣợng hoặc thêm các dịch vụ sẽ không làm ảnh hƣởng tới các đối tƣợng hệ thống khác. - Các đối tƣợng là các thành phần dùng lại đƣợc thích hợp (do tính độc lập của chúng). Một thiết kế có thể dùng lại đƣợc các đối tƣợng đã đƣợc thiết kế trong các bản thiết kế trƣớc đó. - Đối với một vài lớp hệ thống, có một phản ánh rõ ràng giữa các thực thể có thực (chẳng hạn nhƣ các thành phần phần cứng) với các đối tƣợng điều khiển nó trong hệ thống. Điều này cải thiện đƣợc tính dễ hiểu của thiết kế. Các nhƣợc điểm của phƣơng pháp thiết kế hƣớng đối tƣợng: - Sự nhận minh các đối tƣợng hệ thống thích hợp là khó khăn. Cách nhìn tự nhiên nhiều hệ thống là cách nhìn chức năng và việc thích nghi với cách nhìn hƣớng đối tƣợng đôi khi là khó khăn. - Phƣơng pháp thiết kế hƣớng đối tƣợng vẫn còn là tƣơng đối chƣa chín muồi và đang thay đổi mau chóng. Ở đây, cần phân biệt hai khái niệm là thiết kế hƣớng đối tƣợng và lập trình (cài đặt) hƣớng đối tƣợng: - Thiết kế hƣớng đối tƣợng là một chiến lƣợc thiết kế nó không phụ thuộc vào một ngôn ngữ thực hiện cụ thể nào. Các ngôn ngữ lập trình hƣớng đối tƣợng và các khả năng bao gói đối tƣợng làm cho thiết kế hƣớng đối tƣợng đƣợc thực hiện một cách đơn giản hơn. Tuy nhiên một thiết kế hƣớng đối tƣợng cũng có thể đƣợc thực hiện trong một ngôn ngữ kiểu nhƣ Pascal hoặc C mà không có các đặc điểm nhƣ vậy. - Việc chấp nhận thiết kế hƣớng đối tƣợng nhƣ là một chiến lƣợc hữu hiệu đã dẫn đến sự phát triển phƣơng pháp thiết kế hƣớng đối tƣợng. Nhƣ Ada không phải là ngôn ngữ lập trình hƣớng đối tƣợng vì nó không trợ giúp sự thừa kế của các lớp, nhƣng lại có thể thực hiện các đối tƣợng trong Ada bằng cách sử dụng các gói hoặc các nhiệm vụ, do đó Ada đƣợc dùng để mô tả các thiết kế hƣớng đối tƣợng. - Thiết kế hƣớng đối tƣợng là một chiến lƣợc thiết kế, nó không phụ thuộc vào ngôn ngữ để thực hiện. Các ngôn ngữ lập trình hƣớng đối tƣợng và khả năng bao gói dữ liệu làm cho dễ thực hiện một thiết kế hƣớng đối tƣợng hơn. Tuy nhiên cũng có thể thực hiện một thiết kế hƣớng đối tƣợng trong một ngôn ngữ kiểu nhƣ Pascal hoặc C. 5.3. Thiết kế kiến trúc ứng dụng 5.3.1. Khái niệm Kiến trúc của phần mềm ứng dụng đƣợc suy dẫn ra qua tiến trình phân hoạch đặt mối quan hệ giữa các phần tử của giải pháp phần mềm với các bộ phận của thế giới thực đƣợc xác định không tƣờng minh trong phân tích yêu cầu. Các hệ thống lớn có thể đƣợc phân rã thành các phân hệ cung cấp các dịch vụ. Mỗi phân hệ có các module Phạm Hùng Phú -Nguyễn Văn Thẩm 129
  7. Tập bài giảng Công nghệ phần mềm và có một giao diện xác định để giao tiếp với các phân hệ khác. Nó là một hệ thống có quyền riêng của mình cho phép các hoạt động không phụ thuộc vào các dịch vụ của các phân hệ khác. Quy trình thiết kế khởi đầu để xác định các phân hệ của hệ thống và thiết lập một khuôn khổ điều khiển và truyền thông giữa các phân hệ đƣợc gọi là thiết kế kiến trúc cho ứng dụng. Thiết kế kiến trúc ứng dụng luôn đƣợc tiến hành trƣớc khi có các đặc tả chi tiết về hệ thống. Việc phân rã kiến trúc hệ thống là cần thiết cho việc cấu trúc và tổ chức đặc tả và chứa các hoạt động sau: - Cấu trúc hệ thống: Hệ thống đƣợc cấu trúc thành một số các phân hệ, mỗi phân hệ là một đơn vị phần mềm độc lập. Các liên kết thông tin giữa các phân hệ đƣợc xác định. - Mô hình hoá điều khiển: Một mô hình chung về các quan hệ điều khiển giữa các thành phần của hệ thống đƣợc thiết lập. - Phân rã mô hình: Mỗi phân hệ đã xác định sẽ đƣợc phân rã thành các module. Kiến trúc sƣ sẽ phải quyết định các kiểu module và các kết nối. Kết quả của thiết kế kiến trúc ứng dụng là tài liệu thiết kế kiến trúc. Tài liệu thiết kế kiến trúc bao gồm: - Các biểu diễn đồ hoạ về các mô hình hệ thống kèm theo các giải thích bằng văn bản. - Mô tả tại sao hệ thống đƣợc phân rã thành các phân hệ và các phân hệ lại đƣợc phân rã thành các module. Giai đoạn đầu tiên của thiết kế kiến trúc là việc phân rã hệ thống thành nhiều phân hệ tƣơng tác nhau. Tại mức trừu tƣợng nhất, một thiết kế kiến trúc có thể đƣợc coi nhƣ là một sơ đồ khối trong đó mỗi khối đại diện cho một phân hệ. Các hộp nằm trong một khối đƣợc coi là phân hệ con của phân hệ. Các mũi tên đại diện cho các điều khiển hoặc các dữ liệu giao tiếp giữa các phân hệ. Sau đó, một số mô hình đặc trƣng hơn đƣợc phát triển để biểu diễn các dữ liệu chia sẻ, các giao diện và phân phối dữ liệu giữa các phân hệ trong ứng dụng. 5.3.2. Các mô hình thiết kế ứng dụng 1) Mô hình kho dữ liệu (Data Warehouse Model) Các phân hệ cần trao đổi thông tin, và nó có thể tiến hành theo hai cách: - Mỗi phân hệ duy trì một cơ sở dữ liệu riêng của mình. Dữ liệu đƣợc trao đổi giữa các phân hệ bằng cách chuyển đổi các thông báo. - Mọi dữ liệu đƣợc lƣu trữ tại một cơ sở dữ liệu trung tâm có thể đƣợc truy cập bởi mọi phân hệ. Mô hình này gọi là mô hình kho dữ liệu. 130 Phạm Hùng Phú -Nguyễn Văn Thẩm
  8. Tập bài giảng Công nghệ phần mềm Hình 5.6. Mô hình kho dữ liệu Mô hình kho dữ liệu phù hợp cho các ứng dụng khi dữ liệu đƣợc tạo bởi một phân hệ và đƣợc sử dụng bởi các phân hệ khác. Đây là cách hữu hiệu để chia sẻ một số lƣợng lớn dữ liệu mà không cần chuyển đổi dữ liệu tƣờng minh từ một phân hệ này tới các phân hệ khác. Phân hệ phải chấp nhận mô hình này nếu muốn tham gia hệ thống. Sẽ rất khó tích hợp một phân hệ mới nếu nó không phù hợp với tiêu chuẩn của kho dữ liệu. Phân hệ tạo dữ liệu không cần liên quan đến việc dữ liệu đƣợc phân hệ khác sử dụng nhƣ thế nào. Việc phát triển mô hình sẽ khó khăn khi một số lƣợng lớn dữ liệu đã có theo tiêu chuẩn cũ. Việc chuyển đổi dữ liệu sẽ rất tốn kém. Các hoạt động nhƣ lƣu trữ, bảo mật, điều khiển truy nhập và khôi phục đƣợc tập trung hoá. Ví dụ kiến trúc của một bộ CASE tích hợp sử dụng mô hình kho dữ liệu: Hình 5.7. Kiến trúc của một bộ CASE tích hợp Tuy nhiên, các phân hệ có thể có các yêu cầu khác nhau về mức độ bảo mật, khôi phục và chiến lƣợc lƣu trữ. Mô hình này bắt buộc các phân hệ phải chấp nhận một chính sách chung. Mọi việc sẽ đơn giản nếu phân hệ mới cần tích hợp tƣơng thích với Phạm Hùng Phú -Nguyễn Văn Thẩm 131
  9. Tập bài giảng Công nghệ phần mềm dữ liệu cũ. Tuy nhiên sẽ khó khăn nếu phân phối dữ liệu tới nhiều máy khác nhau. Việc này sẽ phát sinh khả năng dƣ thừa dữ liệu, không toàn vẹn. 2) Mô hình khách - phục vụ Mô hình khách - phục vụ là một mô hình hệ thống phân tán biểu diễn việc phân tán các dữ liệu và xử lý trên nhiều máy tính khác nhau. Hình 5.8. Mô hình kho dữ liệu Các thành phần chính là: - Một tập các server độc lập phục vụ cho các phân hệ. - Một tập các khách hàng yêu cầu các dịch vụ. Chúng có thể là các phân hệ, hay là các thể hiện khác nhau của cùng một chƣơng trình. - Một mạng cho phép các khách hàng có thể truy nhập đƣợc các dịch vụ. Ví dụ kiến trúc của một thƣ viện phim và hình ảnh sử dụng mô hình kho dữ liệu: Hình 5.9. Kiến trúc của một thƣ viện phim và hình ảnh Khách hàng phải biết đƣợc định danh của các dịch vụ, còn các dịch vụ không cần biết các định danh của khách hàng. Ƣu điểm quan trọng nhất của mô hình này là sự phân tán rất rõ ràng. Mô hình này dễ dàng thêm một server và tích hợp dần dần khi có nhu cầu mà không ảnh hƣởng tới các thành phần cũ. Sự thiếu vắng của mô hình chia sẻ dữ liệu ở đây có nghĩa là sẽ khó dự đoán đƣợc các vấn đề khi tích hợp dữ liệu vào hệ thống cũ. Mỗi server phải có 132 Phạm Hùng Phú -Nguyễn Văn Thẩm
  10. Tập bài giảng Công nghệ phần mềm trách nhiệm với bản thân mình về lƣu trữ, khôi phục,...Không có một trung tâm nên khách hàng phải tự biết và tìm server, đây là vấn đề khó khăn đối với các mạng lớn nhƣ WAN, Internet. 3) Mô hình máy trừu tƣợng Mô hình máy trừu tƣợng đôi khi gọi là mô hình lớp, mô hình hoá giao diện của các phần mềm. Mô hình phân lớp tổ chức hệ thống thành nhiều lớp và mỗi lớp cung cấp một tập các dịch vụ. Mỗi lớp có thể đƣợc coi nhƣ một máy trừu tƣợng (Abstract Machine) mà ngôn ngữ của máy đƣợc định nghĩa bởi các dịch vụ mà lớp đó cung cấp. Do đó, mô hình này thƣờng đƣợc sử dụng để mô hình hoá giao diện (Interface) của hệ thống con. Mô hình phân lớp hỗ trợ phát triển các hệ thống con theo kiểu tăng vòng ở nhiều lớp khác nhau. Khi giao diện của một lớp thay đổi thì chỉ những lớp liền kề nó mới bị ảnh hƣởng. Hình 5.10. Mô hình máy trừu tƣợng Ví dụ kiến trúc của hệ thống quản lý phiên bản sử dụng mô hình máy trừu tƣợng: Hình 5.11. Kiến trúc của hệ thống quản lý phiên bản Ví dụ kiến trúc của ứng dụng doanh nghiệp sử dụng mô hình máy trừu tƣợng: Hình 5.12. Kiến trúc của ứng dụng doanh nghiệp Phạm Hùng Phú -Nguyễn Văn Thẩm 133
  11. Tập bài giảng Công nghệ phần mềm 4) Mô hình điều khiển Là mô hình mà để vận hành, hệ thống phải đƣợc điều khiển làm việc đồng bộ và đúng. Mô hình cấu trúc không có các thông tin điều khiển mà các luồng điều khiển đƣợc chỉ ra ở mô hình điều khiển. Hai cách tiếp cận chung có thể xác định là: - Điều khiển tập trung, - Điều khiển trên cơ sở sự kiện Mô hình điều khiển bổ sung cho mô hình cấu trúc. Mỗi mô hình cấu trúc đã nói trên đều có thể dùng mô hình điều khiển tập trung hoặc mô hình điều khiển trên cơ sở sự kiện. Mô hình điều khiển tập trung Một phân hệ đƣợc thiết kế nhƣ bộ điều khiển hệ thống có trách nhiệm quản lý việc thực hiện các phân hệ khác. Các mô hình điều khiển tập trung phân lớp theo hai loại phụ thuộc việc điều khiển đƣợc tiến hành tuần tự hay song song. - Mô hình gọi - trả lời: Mô hình này phù hợp với các mô hình thủ tục top - down. Hình 5.13. Mô hình gọi - trả lời - Mô hình quản lý: Mô hình này thích hợp với các hệ thống đồng thời. Một cấu thành hệ thống đƣợc thiết kế nhƣ là một bộ quản trị và điều khiển việc khởi động, kết thúc và phối hợp các phân hệ khác. Hình 5.14. Mô hình quản lý Mô hình hệ thống điều khiển bởi sự kiện Mô hình hệ thống điều khiển bởi sự kiện có nhiều kiểu khác nhau của hệ thống hƣớng sự kiện, nhƣ: 134 Phạm Hùng Phú -Nguyễn Văn Thẩm
  12. Tập bài giảng Công nghệ phần mềm - Mô hình phát tin: Trong mô hình này, về nguyên tắc, một sự kiện đƣợc thông báo cho các phân hệ. Các phân hệ đƣợc thiết kế điều khiển sự kiện này sẽ tự quyết việc trả lời. Mô hình này hiệu quả với các phân hệ đƣợc phân bố trên các máy tính khác nhau trên mạng. + Ƣu điểm: Việc phát triển tƣơng đối đơn giản. Một phân hệ mới xử lý một lớp sự kiện mới có thể đƣợc tích hợp khi ghi nhận các sự kiện này vào bộ điều khiển sự kiện. Mỗi phân hệ có thể kích hoạt mọi phân hệ khác không cần biết tên và vị trí của các phân hệ đó. Phân bố trong suốt với các phân hệ. + Nhƣợc điểm: Phân hệ không biết sự kiện có đƣợc xử lý hay không và khi nào đƣợc xử lý. Rất có thể hai phân hệ khác nhau cùng sinh một sự kiện và có thể gây xung đột. Hình 5.15. Mô hình phát tin - Mô hình điều khiển ngắt: Có một hệ thống bên ngoài đƣợc sử dụng riêng cho việc theo dõi các ngắt bên ngoài và đƣợc chuyển tới các phân hệ tƣơng ứng. Mô hình này phù hợp với các hệ thống thời gian. Ƣu điểm của nó là cho phép đáp ứng nhanh nhất với các sự kiện. Nhƣợc điểm là việc lập trình phức tạp. Hình 5.16. Mô hình điều khiển ngắt 5) Mô hình đối tƣợng Hệ thống đƣợc phân thành các đối tƣợng giao tiếp với nhau. Phân tích hƣớng đối tƣợng chỉ ra các lớp đối tƣợng liên quan, các thuộc tính và các hoạt động của chúng. Phạm Hùng Phú -Nguyễn Văn Thẩm 135
  13. Tập bài giảng Công nghệ phần mềm Ƣu điểm của nó là tính bao đóng cho phép dấu các thực hiện của các đối tƣợng và cho phép dùng lại mã. Tuy nhiên nhƣợc điểm là để sử dụng các dịch vụ, các đối tƣợng phải gọi tƣờng minh các tên và giao diện của các đối tƣợng khác. Sự thay đổi giao diện sẽ làm ảnh hƣởng tới các đối tƣợng khác. 6) Mô hình luồng dữ liệu Hệ thống đƣợc phân hoá thành các module chức năng. Chúng nhận các dữ liệu chuyển hoá chúng rồi lại đƣa ra kết quả. Trong mô hình luồng dữ liệu, các bộ biến đổi xử lý dữ liệu đầu vào và tạo dữ liệu ra. Dữ liệu đƣợc chảy tuần tự theo luồng từ bộ biến đổi này sang bộ khác. Mỗi bƣớc của quy trình giống nhƣ một phép biến đổi. Hình 5.17. Mô hình luồng dữ liệu Ƣu điểm: - Hỗ trợ việc sử dụng lại các biến đổi. - Phù hợp với suy nghĩ của mọi ngƣời quan niệm về dữ liệu đƣợc xử lý theo luồng có đầu vào và đầu ra. - Thêm các xử lý khác vào hệ thống đơn giản. - Dễ thực hiện xử lý song song hoặc tuần tự. Nhƣợc điểm: - Cần phải có một định dạng chung cho các dữ liệu để có thể xử lý bởi mọi bộ biến đổi. - Các hệ thống tƣơng tác khó đƣợc viết theo mô hình luồng dữ liệu. Trong khi các giao diện vào và ra theo dạng văn bản có thể dùng mô hình luồng dữ liệu thì các giao diện đồ hoạ có các dạng vào ra phức tạp hơn dựa trên sự kiện khó có thể áp dụng mô hình luồng dữ liệu. 5.4. Thiết kế cơ sở dữ liệu 5.4.1. Cách tổ chức lƣu trữ dữ liệu Mục tiêu chính của thiết kế dữ liệu là mô tả cách thức tổ chức lƣu trữ các dữ liệu của phần mềm. 136 Phạm Hùng Phú -Nguyễn Văn Thẩm
  14. Tập bài giảng Công nghệ phần mềm Trong đó D1, D2 đƣợc lƣu trữ trong bộ nhớ chính; D3, D4 đƣợc lƣu trữ trong bộ nhớ phụ. Cách thức lƣu trữ dữ liệu trên bộ nhớ chính: Kiểu cấu trúc, kiểu mảng, kiểu xâu, kiểu cây,.. Cách thức lƣu trữ dữ liệu trên bộ nhớ phụ: Tập tin (Có cấu trúc/Không có cấu trúc), cơ sở dữ liệu (Quan hệ/Đối tƣợng): - Lƣu trữ dƣới dạng tập tin: Thích hợp với một số phần mềm đặc thù, chẳng hạn trò chơi, mô phỏng ứng dụng Word, Paint, ...; đặc điểm chung của các phần mềm này là chú trọng rất nhiều vào các xử lý; hình thức giao diện và không chú trọng nhiều đến việc lƣu trữ lại các thông tin đƣợc tiếp nhận trong quá trình sử dụng phần mềm, các thông tin này thƣờng đƣợc tiếp nhận và xử lý ngay. - Lƣu trữ dƣới dạng cơ sở dữ liệu: Thƣờng sử dụng với các phần mềm quản lý, chẳng hạn các phần mềm quản lý học sinh, thƣ viện, bán hàng, nhân sự, …; có đặc điểm cần lƣu trữ lại các thông tin đƣợc tiếp nhận trong quá trình sử dụng phần mềm. Cách tiếp cận dùng cơ sở dữ liệu rất thông dụng và thƣờng dùng là cơ sở dữ liệu quan hệ: - Cách thức tổ chức lƣu trữ dữ liệu của phần mềm đƣợc mô tả thông qua hai loại thông tin: + Thông tin tổng quát: Cung cấp góc nhìn tổng quát về các thành phần lƣu trữ bao gồm danh sách các bảng dữ liệu và danh sách các liên kết. Việc lƣu trữ cần sử dụng bao nhiêu bảng dữ liệu và đó là các bảng nào, mối liên kết giữa các bảng dữ liệu. + Thông tin chi tiết: mô tả chi tiết từng thành phần lƣu trữ gồm danh sách các thuộc tính của từng thành phần, danh sách các miền giá trị toàn vẹn đó chính là các qui định về tính hợp lệ của các thông tin đƣợc lƣu trữ. - Danh sách các bảng dữ liệu Số thứ tự Tên bảng Ý nghĩa Ghi chú 1 - Danh sách các thuộc tính của bảng Loại Số thứ Thuộc Giá trị khởi Ràng buộc Ý nghĩa thuộc tự tính tạo tính 1 Phạm Hùng Phú -Nguyễn Văn Thẩm 137
  15. Tập bài giảng Công nghệ phần mềm Các loại thuộc tính: + Thuộc tính khóa + Thuộc tính có giá trị rời rạc: Thuộc tính phái của Sinh viên chỉ có 2 giá trị: Nam hoặc Nữ; thuộc tính phái của Sinh viên chỉ có 2 giá trị: 0 hoặc 1 (0: Nam, 1: Nữ); thuộc tính điểm học phần chỉ có các giá trị 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10; thuộc tính loại nhân viên chỉ có các giá trị: Nhân viên văn phòng, nhân viên bán hàng, nhân viên sản xuất. + Thuộc tính đa trị: Thuộc tính điện thoại của nhân viên là thuộc tính đa trị: 081234567, 09081234567,…; thuộc tính email của sinh viên cũng là một thuộc tính đa trị: dungspnd@yahoo.com, dungspnd@gmail.com,.... + Thuộc tính là đối tƣợng phụ: thuộc tính địa chỉ của sinh viên, nhân viên là một đối tƣợng phụ, bao gồm các thông tin: Số nhà, Đƣờng, Phƣờng/xã, Quận/huyện, Tỉnh thành; thuộc tính ngày sinh của sinh viên, nhân viên cũng là một đối tƣợng phụ gồm các thông tin: ngày, tháng, năm. + Thuộc tính tính toán: thuộc tính thành tiền trong hóa đơn là một thuộc tính tính toán, đƣợc tính bằng tổng số lƣợng * đơn giá của các mặt hàng; thuộc tính điểm trung bình của học sinh, sinh viên cũng là một thuộc tính tính toán. - Danh sách các miền giá trị toàn vẹn: Mã số Mô tả miền GT (RBTV) Thành phần liên quan Ghi chú RB1 RB2 - Quan hệ giữa các bảng dữ liệu: Quan hệ “1-1”, Quan hệ “1-nhiều”, Quan hệ “nhiều-nhiều”. 5.4.2. Xây dựng sơ đồ logic dữ liệu Có nhiều phƣơng pháp, nhiều đề nghị khác nhau về việc mô tả thông tin của thành phần dữ liệu trong giai đoạn thiết kế. Để biểu diễn các thông tin tổng quát về bảng thuộc tính, miền giá trị mô tả chi tiết các thành phần ta dùng sơ đồ logic còn đƣợc gọi là mô hình vật lý. Mô hình vật lý này sẽ đƣợc xây dựng dựa trên mô hình ERD đã có ở giai đoạn phân tích, kèm theo vài thay đổi tùy theo ngƣời thiết kế. Nguyên tắc chuyển đổi từ mô hình ERD sang mô hình vật lý dựa trên mối kết hợp giữa các thực thể. Các bƣớc chuyển đổi từ mô hình ERD sang mô hình vật lý. Bƣớc 1: Chuyển các tập thực thể thành các lƣợc đồ quan hệ. - Tên tập thực thể thành tên của lƣợc đồ quan hệ. - Các thuộc tính của tập thực thể thành các thuộc tính của lƣợc đồ quan hệ. - Khóa của tập thực thể thành khóa của lƣợc đồ quan hệ. Bƣớc 2: Chuyển các mối liên hệ đƣợc chuyển thành các lƣợc đồ quan hệ. - Tên của mối liên hệ thành tên của lƣợc đồ quan hệ 138 Phạm Hùng Phú -Nguyễn Văn Thẩm
  16. Tập bài giảng Công nghệ phần mềm - Các thuộc tính khoá của tập thực thể tham gia vào mối liên hệ thành các thuộc tính của lƣợc đồ quan hệ. - Khoá của lƣợc đồ quan hệ đƣợc xác định tùy thuộc vào loại mối liên hệ, nếu mối liên hệ là: + Một-Một thì khoá của tập thực thể nào cũng có thể trở thành khoá của lƣợc đồ quan hệ. + Nhiều-Một thì khoá bên nhiều thành khoá tên của lƣợc đồ quan hệ. + Nhiều-Nhiều thì các thuộc tính khoá của tất cả các tập thực thể trở thành khoá của lƣợc đồ quan hệ. Bƣớc 3: Gộp các lƣợc đồ quan hệ có chung khóa thành một lƣợc đồ. - Tên của lƣợc đồ quan hệ mới là tên mới hoặc là tên của một trong các tên của các lƣợc đồ quan hệ đem gộp. - Tập thuộc tính là hợp các thuộc tính của các lƣợc đồ quan hệ đem gộp. - Khoá là khoá chung. Bƣớc 4: Chuẩn hóa các lƣợc đồ quan hệ để đƣa các lƣợc đồ quan hệ về dạng chuẩn 3NF. Sơ đồ logic: Là công cụ cho phép mô tả trực quan cách thức lƣu trữ dữ liệu trên bộ nhớ phụ với việc sử dụng cơ sở dữ liệu quan hệ và mối liên kết giữa các bảng. Các quy ƣớc: 5.4.3. Cách phƣơng pháp thiết kế cơ sở dữ liệu Có hai cách tiếp cận chính để thiết kế dữ liệu. 1) Phƣơng pháp trực tiếp: Từ các yêu cầu đã xác định, tạo lập trực tiếp sơ đồ logic cùng với bảng thuộc tính, bảng miền giá trị toàn vẹn. Cách tiếp cận này rất khó thực hiện đối với mô hình vật lý phức tạp. Chẳng hạn thiết kế những phần mềm phức tạp nhƣ phần mềm kế toán, nhân sự, tiền lƣơng,… 2) Phƣơng pháp gián tiếp: Từ các yêu cầu đã xác định, tạo lập mô hình ERD, và sau đó dựa vào mô hình này sẽ tạo lập sơ đồ logic, bảng thuộc tính, bảng miền giá trị. Cách tiếp cận này dễ thực hiện hơn và mô hình ERD thƣờng đơn giản, dễ hiểu vì mô hình này chỉ chứa các thành phần dữ liệu cơ bản nhất của phần mềm. Các bƣớc thực hiện: Bƣớc 1: Xây dựng mô hình ERD Bƣớc 2: Chuyển mô hình ERD sang mô hình logic dữ liệu Phạm Hùng Phú -Nguyễn Văn Thẩm 139
  17. Tập bài giảng Công nghệ phần mềm Bƣớc 3: Vẽ sơ đồ logic dữ liệu Bƣớc 4: Lập bảng danh sách các bảng dữ liệu. Bƣớc 5: Lập bảng danh sách bảng thuộc tính. Bƣớc 6: Lập bảng danh sách bảng miền giá trị. Ví dụ Xét phần mềm quản lý thƣ viện với yêu cầu nghiệp vụ cho mƣợn sách có mẫu phiếu mƣợn: Hãy lập sơ đồ logic dữ liệu cho yêu cầu nghiệp vụ trên với các yêu cầu số lƣợng sách trong kho và số phiếu phải lớn hơn 0, ngày mƣợn phải nhỏ hơn hoặc bằng ngày trả. Bƣớc 1: Xây dựng mô hình ERD Bƣớc 2: Chuyển mô hình ERD sang mô hình logic dữ liệu - Docgia (Madg, Hoten, Ns, Diachi) - Sach(MaS, TenS, Tacgia, Nhaxb, Soluong) - Phieumuon(Sop, MaS, Madg, NgayM, NgayTr) Bƣớc 3: Vẽ sơ đồ logic dữ liệu Bƣớc 4: Lập bảng danh sách các bảng dữ liệu. Số thứ tự Tên bảng Ý nghĩa Ghi chú 1 Docgia Lƣu trữ thông tin về độc giả 2 Sach Lƣu trữ thông tin về sách 3 Phieumuon Lƣu trữ thông tin về quá trình mƣợn sách của độc giả Bƣớc 5: Lập bảng danh sách bảng thuộc tính. - Danh sách các thuộc tính của bảng Docgia 140 Phạm Hùng Phú -Nguyễn Văn Thẩm
  18. Tập bài giảng Công nghệ phần mềm Số thứ Ràng Giá trị Thuộc tính Ý nghĩa Loại thuộc tính tự buộc khởi tạo 1 Madg Mã độc giả Khóa 2 Hoten Họ tên độc giả Đối tƣợng phụ 3 Ns Ngày sinh Đối tƣợng phụ 4 Diachi Địa chỉ Đối tƣợng phụ - Danh sách các thuộc tính của bảng Sach Số thứ Ràng Giá trị Loại thuộc Thuộc tính Ý nghĩa tự buộc khởi tạo tính 1 MaS Mã sách Khóa 2 TenS Tên sách Rời rạc 3 Tacgia Họ tên tác giả Rời rạc 4 Nhaxb Nhà xuất bản Rời rạc 5 Soluong RB1 Số lƣợng Rời rạc - Danh sách các thuộc tính của bảng Phiếu mƣợn Số thứ Ràng Giá trị Loại thuộc Thuộc tính Ý nghĩa tự buộc khởi tạo tính 1 Sop RB1 Số phiếu Khóa chính 2 MaS Mã sách Khóa ngoại 3 Madg Mã độc giả Khóa ngoại 4 NgayM RB2 Ngày mƣợn Đối tƣợng phụ 5 NgayTr RB3 Ngày trả Đối tƣợng phụ Bƣớc 6: Lập bảng danh sách bảng miền giá trị. Mã số Mô tả miền GT (RBTV) Thành phần liên quan Ghi chú RB1 Phải lớn hơn 0 Phiếu mƣợn, Sách RB2 Phải nhỏ hơn hoặc bằng Phiếu mƣợn ngày trả. RB3 Phải lớn hơn hoặc bằng Phiếu mƣợn ngày mƣợn. 5.4.4. Yêu cầu về chất lƣợng thiết kế cơ sở dữ liệu Để đảm bảo các tiêu chuẩn về chất lƣợng thiết kế cơ sở dữ liệu cần xem xét đánh giá sơ đồ logic theo các yêu cầu về chất lƣợng và tiến hành cập nhật lại sơ đồ. Các yêu cầu về chất lƣợng thiết kế cơ sở dữ liệu bao gồm tính đúng đắn, tính tiến hoá, tính hiệu quả, tính bảo mật. Bảng 5.2. Yêu cầu về chất lƣợng thiết kế cơ sở dữ liệu STT Tiêu chuẩn Yêu cầu Lƣu trữ đầy đủ và đúng ngữ nghĩa các thông tin có trong 1 Tính đúng đắn nghiệp vụ liên quan Lƣu trữ thông tin về tổ chức và qui định có trong nghiệp vụ 2 Tính tiến hóa liên quan Lƣu trữ tiết kiệm nhất không gian bộ nhớ, truy xuất nhanh 3 Tính hiệu quả nhất thông tin cần thiết Lƣu trữ thông tin về các ngƣời sử dụng phần mềm cùng với 4 Tính bảo mật quyền hạn tƣơng ứng Phạm Hùng Phú -Nguyễn Văn Thẩm 141
  19. Tập bài giảng Công nghệ phần mềm 1) Xem xét tính tiến hoá: Để đảm bảo tính tiến hoá, sơ đồ logic sẽ còn bổ sung cập nhật lại nhiều thành phần qua các bƣớc thiết kế chi tiết. Thông thƣờng khi thiết kế dữ liệu ở bƣớc đầu tiên thì giới hạn xem xét đến các thuộc tính có giá trị rời rạc (A, B, C; 1, 2, 3, …). Thuộc tính có giá trị rời rạc là các thuộc tính mà miền giá trị chỉ bao gồm một giá trị nhất định nào đó. Các giá trị này thông thƣờng thuộc về một tập hợp có độ biến động rất ít trong quá trình sử dụng phần mềm. Ví dụ: - Khi xem xét quan hệ Độc giả, ta nhận thấy loại độc giả gồm có ba loại "Sinh viên", "Học sinh” ", "Cán bộ" thì khả năng thêm loại Độc giả mới là rất thấp. Khi xem xét quan hệ Sách, ta nhận thấy ngôn ngữ thể hiện của sách có ba loại ngôn ngữ đang dùng là "Tiếng Việt", "Tiếng Anh", "Tiếng Pháp" thì khả năng thêm loại ngôn ngữ mới là rất thấp. Nhƣ vậy loại độc giả và loại ngôn ngữ là kiểu chuỗi và là thuộc tính có giá trị rời rạc. Tuy là khả năng biến động thấp nhƣng không phải là không có, và nếu không chuẩn bị trƣớc, ngƣời dùng không thể khai báo đƣợc các biến động này. Để bảo đảm tính tiến hoá của hệ thống sau này, ta có thể tách các thuộc tính này thành các thành phần trong sơ đồ logic. Khi đó sơ đồ logic có thêm một số thành phần mới. 2) Xem xét tính hiệu quả Tính hiệu quả trong thiết kế dữ liệu sẽ đƣợc xem xét dƣới góc độ lƣu trữ tối ƣu. Vấn đề đặt ra là xây dựng sơ đồ logic sao cho vẫn bảo đảm lƣu trữ đầy đủ thông tin theo yêu cầu nhƣng với dung lƣợng lƣu trữ nhỏ nhất có thể có. Điều này đặc biệt quan trọng đối với các phần mềm với hệ thống lƣu trữ lớn và nhiều phát sinh thông tin cần lƣu trữ theo thời gian. Xem xét lại việc ánh xạ quan hệ nhiều-nhiều (m-n) để có thể lƣu trữ tốt hơn. Xét sơ đồ logic gồm 2 quan hệ A, B và mối kết hợp nhiều-nhiều C và đƣợc tách thành một quan hệ mới là C. Để có thể ánh xạ mô hình trên vào sơ đồ logic với 4 thành phần A, B, C, D. Với D là chi tiết của C. Các thuộc tính của A, B vẫn đƣợc bảo toàn, C trong trƣờng hợp này chỉ chứa các thuộc tính chung (có giá trị giống nhau) trong mỗi lần A quan hệ B, D sẽ gồm các thuộc tính riêng (có giá trị khác nhau) trong mỗi lần A quan hệ với B. 142 Phạm Hùng Phú -Nguyễn Văn Thẩm
  20. Tập bài giảng Công nghệ phần mềm Ví dụ: Xét phần mềm quản lý thƣ viện A: Độc giả, B: Sách, C: Phiếu mƣợn với các thuộc tính ngày mƣợn, ngày trả, số phiếu. Trong một lần độc giả mƣợn sách thì số phiếu là thuộc tính chung, ngày mƣợn, ngày trả là các thuộc tính riêng. Ta bổ sung thêm quan hệ chi tiết phiếu mƣợn (D) để lƣu trữ các thuộc tính riêng này. 5.5. Thiết kế giao diện 5.5.1. Quy trình thiết kế giao diện Màn hình giao diện đƣợc gọi tắt là giao diện (Interface) là một trong các hình thức giao tiếp giữa ngƣời sử dụng và phần mềm khi họ thực hiện các công việc của mình trên máy tính. Mục tiêu chính của thiết kế giao diện là mô tả hệ thống các màn hình giao diện này. Thiết kế giao diện ngƣời dùng là một quy trình lặp lại bao gồm sự cộng tác giữa ngƣời sử dụng và ngƣời thiết kế. Trong quy trình này gồm 3 hoạt động cơ bản: - Phân tích ngƣời sử dụng: Tìm hiểu những gì ngƣời sử dụng sẽ làm với hệ thống - Lập mẫu thử hệ thống: Xây dựng một tập các mẫu thử để thử nghiệm - Đánh giá giao diện: Thử nghiệm các mẫu thử cùng với ngƣời sử dụng. Hình 5.18. Quy trình thiết kế giao diện 1) Phân tích ngƣời sử dụng Nếu không hiểu rõ những gì ngƣời sử dụng muốn làm với hệ thống, thì sẽ không thể thiết kế đƣợc một giao diện hiệu quả. Phân tích ngƣời sử dụng phải đƣợc mô tả theo những thuật ngữ để ngƣời sử dụng và những ngƣời thiết kế khác có thể hiểu đƣợc. Phạm Hùng Phú -Nguyễn Văn Thẩm 143
nguon tai.lieu . vn