Academia.eduAcademia.edu
CHƯƠNG 1 TỔNG QUAN PHÂN TÍCH VÀ THIẾT KẾ HTTT OVERVIEW OF ANALYSIS AND DESIGN INFORMATION SYSTEMS PGS.TS. Nguyễn Mậu Hân Khoa CNTT-ĐHKH HUẾ nmhan2009@gmail.com 1 NỘI DUNG 1.1. CÁC KHÁI NIỆM VỀ THÔNG TIN VÀ HTTT 1.2. HỆ THỐNG THÔNG TIN QUẢN LÝ 1.3. MÔ HÌNH HÓA MỘT HTTT 1.4. GIỚI THIỆU MỘT VÀI PHƯƠNG PHÁP PTTK 1.5. CÁC MỨC BẤT BIẾN CỦA MỘT HTTT 1.6. CÁC CÁCH TIẾP CẬN TRONG PHÁT TRIỂN PHẦN MỀM 1.1. CÁC KHÁI NIỆM VỀ THÔNG TIN VÀ HTTT • Thông tin (Informations):  những sự kiện  những khái niệm  những hiểu biết và  những phán đoán có được ở một thời điểm ấn định về một hiện tượng, một sự việc hay một con người. 3 1.1. CÁC KHÁI NIỆM CƠ BẢN VỀ THÔNG TIN VÀ HTTT • Hệ thống - Hệ thống thông tin Hệ thống Tập hợp các phần tử có quan hệ qua lại với nhau cùng hoạt động hướng đến một mục tiêu chung thông qua việc tiếp nhận các đầu vào và sản xuất các đầu ra nhờ một quá trình chuyển đổi được tổ chức. Hệ thống này còn được gọi là hệ thống động (Dynamic System) 4 1.1. CÁC KHÁI NIỆM VỀ THÔNG TIN VÀ HTTT Hệ thống mở (hệ thống có tính xác suất) trong đó đầu vào, đầu ra không thể xác định chính xác nhưng có thể dự đoán được. Ví dụ: • Hệ thống đặt chổ vé máy bay không thể đoán chính xác bao nhiêu chỗ sẽ được đặt cho một chuyến bay nào đó. • Hệ thống thông tin dự báo thời tiết 5 1.1. CÁC KHÁI NIỆM VỀ THÔNG TIN VÀ HTTT Hệ thống đóng Hệ thống có thể đoán trước kết quả đầu ra nếu biết đầu vào. Vd: HTTT QL NHÂN SỰ & TIỀN LƯƠNG  hệ thống đóng dễ quản lý hơn hệ thống mở. Cấu tạo của một hệ thống INPUT SYSTEM OUTPUT HỘP ĐEN 6 1.1. CÁC KHÁI NIỆM VỀ THÔNG TIN VÀ HTTT Thông tin và Ra quyết định Mục đích của thông tin:  giúp nhà quản lý / lãnh đạo RQĐ. Ra Quyết định  một hành động (hay sự thực hiện) nhằm thay đổi trạng thái hiện tại tới 1 trạng thái mong muốn. Các loại quyết định:  QĐ có cấu trúc  QĐ bán cấu trúc  QĐ không có cấu trúc 1.1. CÁC KHÁI NIỆM VỀ THÔNG TIN VÀ HTTT Hệ thống thông tin (information system) Về hình thức- là một hệ thống, gồm nhiều thành phần mà mối liên hệ giữa các thành phần này cũng như liên hệ giữa chúng với các hệ thống khác là liên hệ thông tin. Về nội dung - Là một hệ thống sử dụng công nghệ thông tin để thu thập, truyền, lưu trữ, xử lý và biểu diễn thông tin trong một hay nhiều quá trình nghiệp vụ. 8 1.1. CÁC KHÁI NIỆM VỀ THÔNG TIN VÀ HTTT Tại sao phải phân tích thiết kế HT thông tin?  Có một cái nhìn đầy đủ, đúng đắn và chính xác về hệ thống thông tin được xây dựng.  Tránh sai lầm trong thiết kế và cài đặt.  Tăng vòng đời (life cycle) của hệ thống  Dễ sửa chữa, bổ sung và phát triển hệ thống. 9 1.1. CÁC KHÁI NIỆM VỀ THÔNG TIN VÀ HTTT IBM đã thống kê được trong giai đoạn 1970-1980. Phân tích về sai sót:  Quan niệm : 45%  Mã hóa : 25%  Soạn thảo : 7%  Các sai sót ở mức 2 : 20%  Các sai sót không xếp loại : 3% 10 1.1. CÁC KHÁI NIỆM VỀ THÔNG TIN VÀ HTTT IBM đã thống kê được trong giai đoạn 1970-1980. Phân tích về chi phí   Bảo trì: Phát triển: 54% 46% Phân tích phân bổ hoạt động    Sản xuất mã: Phát hiện và sửa chữa sai sót: Khác: 15% 50% 35% 11 1.1. CÁC KHÁI NIỆM VỀ THÔNG TIN VÀ HTTT Microsoft đã thống kê được (2003) 12 1.1. CÁC KHÁI NIỆM VỀ THÔNG TIN VÀ HTTT 13 1.1. CÁC KHÁI NIỆM VỀ THÔNG TIN VÀ HTTT Nhận xét: Các số liệu trên cho thấy:  Sai sót lớn nhất trong tất cả các loại sai sót:  Chi phí chiếm tỉ trọng lớn nhất: mức quan niệm, tức là nằm trong việc PT và TK. bảo hành  Lượng công việc chiếm tỷ lệ lớn nhất: phát hiện và sửa chữa. 14 ĐỊNH NGHĨA HÌNH THỨC MỘT HTTT  Hệ thống thông tin của một tổ chức là tập hợp các phương tiện, nhân lực, vật lực, thông tin và phương pháp xử lý tin nhằm cung cấp các thông tin cho quá trình ra quyết định đúng thời hạn và đủ độ tin cậy. 15 CÁC THÀNH PHẦN CỦA MỘT HTTT QUẢN LÝ Trong đó: *Tổ chức: có thể là cơ quan, xí nghiệp, trường học... *Phương tiện (phần cứng-phần mềm): cơ sở vật chất dùng để thu nhập, xử lý, lưu trữ, chuyển tải thông tin trong hệ thống như máy tính, máy in, điện thoại ... *Nhân lực: bao gồm tập thể, cá nhân tham gia vào việc phát triển và duy trì HT *Thông tin: Các thông tin sử dụng trong hệ thống, các thông tin từ môi trường bên ngoài vào hệ thống, các thông tin từ hệ thống ra môi trường bên ngoài. *Phương pháp xử lý tin: các tài nguyên phi vật chất như các mô hình toán học, các thuật toán, tri thức của con người trong hệ thống, các phần mềm. 16 1.2. HỆ THỐNG THÔNG TIN QUẢN LÝ (Management Information System, MIS) Mục đích của MIS  Phục vụ cho công tác quản lý.  Tạo ra các báo cáo thường xuyên hoặc theo yêu cầu dưới dạng tóm tắt về hiệu quả hoạt động nội bộ của tổ chức.  MIS chỉ quan tâm đến hiệu quả hoạt động của các đối tượng trong và ngoài tổ chức để có các biện pháp đối xử và phân bổ nguồn lực thích hợp. 1.2. HỆ THỐNG THÔNG TIN QUẢN LÝ (Management Information System, MIS) Chức năng của MIS – Cung cấp thông tin cho việc quản lý tổ chức – Cho phép các nhà quản lý kiểm soát và điều khiển các tổ chức – Cung cấp những thông tin phản hồi chính xác – Cung cấp các báo cáo đặc biệt trên cơ sở đã được lập kế hoạch 1.2. HỆ THỐNG THÔNG TIN QUẢN LÝ Đặc điểm MIS  MIS Hỗ trợ cho trong xử lý và lưu trữ giao dịch  MIS sử dụng CSDL hợp nhất và hỗ trợ cho nhiều chức năng trong tổ chức  MIS đủ mềm dẻo để có thể thích ứng được với những nhu cầu về thông tin của tổ chức  MIS tạo lớp vỏ an toàn cho HT và phân quyền cho việc truy nhập HT  MIS cung cấp thông tin theo thời gian cho các nhà QL, chủ yếu là các thông tin có cấu trúc 1.2. HỆ THỐNG THÔNG TIN QUẢN LÝ Ví dụ về HTTT quản lý 1.2. HỆ THỐNG THÔNG TIN QUẢN LÝ Một số MIS thông dụng: Dự báo bán hàng (Sales forecasting) Dự báo & quản lý tài chánh (Financial management and forecasting) Lập lịch & lập kế hoạch sản xuất (Manufacturing planning and scheduling) Lập kế hoạch & quản lý tồn kho (Inventory management and planning) Định giá sản phẩm & Quảng cáo (Advertising and product pricing) CÁC THÀNH PHẦN CỦA MỘT HTTT QUẢN LÝ Có 3 thành phần:  Thành phần quyết định: Chức năng: ra quyết định.  Thành phần thông tin: Chức năng tiếp nhận, xử lý, truyền tin và lưu trữ thông tin.  Thành phần tác nghiệp: Chức năng: bảo đảm các hoạt động cơ sở của tổ chức. 22 CÁC THÀNH PHẦN CỦA MỘT HTTT QUẢN LÝ 23 CÁC THÀNH PHẦN CỦA MỘT HTTT QUẢN LÝ VAI TRÒ, NHIỆM VỤ CỦA HTTT QUẢN LÝ Vai trò  Hệ thông tin đóng vai trò trung gian giữa hệ quyết định và hệ tác nghiệp trong hệ thống quản lý. Nhiệm vụ  Trao đổi thông tin với môi trường ngoài  Thực hiện việc liên lạc giữa các bộ phận và cung cấp thông tin cho các thành phần tác nghiệp và thành phần quyết định. 24 CÁC THÀNH PHẦN CỦA MỘT HTTT 25 1.3. MÔ HÌNH HÓA MỘT HỆ THỐNG THÔNG TIN Mô hình hóa là gì?  Mô hình hóa (MHH) là đơn giản hóa cái có thật  Mô hình là một dạng trừu tượng hoá hệ thống thực của bài toán mà chúng ta đang xét.  Bài toán này được diễn đạt một cách hình thức, dễ hiểu bằng văn bản, biểu đồ, đồ thị, công thức hay phương trình toán học, ...  Tóm lại, Mô hình là một cách mô tả của một vật thể nào đó. Vật đó có thể tồn tại trong một số giai đoạn nhất định của quá trình phân tích thiết kế hệ thống. Ví dụ về mô hình hóa Mô hình: Quả địa cầu học sinh Thế giới thực Thế giới thực Ôtô Làm chủ Con người Đọc  Sách Mô hình Ví dụ về mô hình A model is a complete description of a system from a particular perspective 1.3. MÔ HÌNH HÓA MỘT HỆ THỐNG THÔNG TIN... Tại sao phải mô hình hóa HTTT?  Nhu cầu của người phân tích thiết kế hệ thống  Tìm hiểu quá trình nhận thức, diễn tả sự phức tạp của hệ thống thông qua mô hình.  Giới hạn vấn đề nghiên cứu bằng cách chỉ tập trung vào một khía cạnh trong phạm vi không gian và thời gian nhất định. 1.3. MÔ HÌNH HÓA MỘT HỆ THỐNG THÔNG TIN... Mục đích của mô hình hoá  Giúp trực quan hóa hệ thống mà bạn muốn tìm hiểu.  Mô hình hóa cho phép đặc tả được cấu trúc và hành vi của hệ thống:  Đảm bảo hệ thống đạt được mục đích đã xác định trước.  Kiểm tra được các qui định về cú pháp, ngữ nghĩa, tính chặt chẽ và đầy đủ của mô hình, khẳng định được tính đúng đắn của thiết kế, phù hợp với yêu cầu đặt ra. 1.3. MÔ HÌNH HÓA MỘT HỆ THỐNG THÔNG TIN... Tóm lại, 4 mục đích quan trọng của mô hình hoá ...  Hình dung một hệ thống theo thực tế hay theo mong muốn của chúng ta.  Cho phép đặc tả cấu trúc hoặc hành vi của hệ thống.  Tạo một khuôn mẫu hướng dẫn nhà phát triển trong suốt quá trình xây dựng hệ thống.  Lập tài liệu về các quyết định đã đưa ra để sử dụng sau này. 1.3. MÔ HÌNH HÓA MỘT HỆ THỐNG THÔNG TIN... Các yêu cầu của mô hình hoá: Việc biểu diễn mô hình phải thỏa mãn các yếu tố sau: Chính xác (accurate): Mô tả đúng hệ thống cần xây dựng. Đồng nhất (consistent): Các view khác nhau không được mâu thuẩn với nhau. Có thể hiểu được (understandable): Cho những người xây dựng lẫn sử dụng Dễ thay đổi (changeable) Dễ dàng liên lạc với các mô hình khác. MỤC ĐÍCH, YÊU CẦU ĐỐI VỚI MỘT PH PHÁP PTTK Mục đích:  HTTT có vòng đời dài (long life cycle)  Có chức năng là một hệ hỗ trợ ra quyết định  Chương trình dễ cài đặt, sửa chữa, bảo hành  Hệ thống dễ sử dụng, có độ chính xác cao. MỤC ĐÍCH, YÊU CẦU ĐỐI VỚI MỘT PH PHÁP PTTK Yêu cầu Quan điểm tiếp cận tổng thể: Từ tổng quát đến chi tiết Xem mọi bộ phận, dữ liệu, chức năng là các phần tử trong hệ thống. Quan điểm top-down: Quan điểm phân tích từ trên xuống theo hướng tiếp cận từ tổng thể đến riêng biệt. Nhận dạng được các mức trừu tượng và bất biến của hệ thống ứng với chu trình phát triển hệ thống Nhận dạng được các thành phần dữ liệu và xử lý của HT Định ra được các kết quả cần đạt được cho từng giai đoạn phát triển hệ thống và các thủ tục cần thiết trong mỗi giai đoạn. XÂY DỰNG THÀNH CÔNG MỘT HTTT Khái niệm về một dự án CNTT thành công Chưa có một tiêu chuẩn cụ thể để xác định một HTTT được xem là thành công Một HTTT được gọi là có hiệu lực nếu nó góp phần nâng cao chất lượng hoạt động quản lý tổng thể của tổ chức, và thể hiện cụ thể trên các mặt: Đạt được mục tiêu thiết kế đề ra. Chi phí vận hành là chấp nhận được. Có độ tin cậy cao, đáp ứng được các chuẩn mực của một HTTT Sản phẩm có giá trị: thtin đưa ra là đúng đắn, kịp thời, có ý nghĩa thiết thực đối với hoạt động chức năng và quản lý. Dễ học, dễ nhớ và dễ sử dụng. Mềm dẽo, hướng mở, dễ bảo trì. 1.4. GIỚI THIỆU MỘT VÀI PHƯƠNG PHÁP PTTK Một số công cụ mô tả quá trình phát triển một HTTT: Lưu đồ hệ thống: đồ thị về những đầu vào (input), đầu ra (output) và dòng dữ liệu giữa các điểm chính trong hệ thống. Sơ đồ khối chương trình: đồ thị về lôgic dòng điều khiển của chương trình. Sơ đồ ngữ cảnh: mô tả các dòng dữ liệu lưu chuyển giữa các thành phần (điểm công tác) khác nhau của hệ thống. Từ điển dữ liệu: tập hợp có cấu trúc các dữ kiện về dữ liệu. Từ điển dữ liệu chứa danh sách các cấu trúc dữ liệu và các định nghĩa về tất cả thành phần dữ liệu cơ sở trong các kho dữ liệu. Lược đồ cấu trúc: đồ thị về lôgic điều khiển các chức năng của hệ thống. 1.4. GIỚI THIỆU MỘT VÀI PHƯƠNG PHÁP PTTK Phương pháp phân tích thiết kế có cấu trúc SADT: Nguồn gốc: xuất phát từ Mỹ, Ý tưởng cơ bản:  Một hệ thống được xem như một bộ sưu tập của các chức năng.  Phân rã một hệ thống lớn thành các hệ thống con đơn giản. 1.4. GIỚI THIỆU MỘT VÀI PHƯƠNG PHÁP PTTK Phương pháp phân tích thiết kế SADT: Công cụ để phân tích:  Sơ đồ chức năng nghiệp vụ BFD (Business Function Diagram)  Sơ đồ luồng dữ liệu DFD (Data Flow Diagram) .  Mô hình dữ liệu quan hệ (Relation data Mode)  Ngôn ngữ có cấu trúc (Structured Language)  Từ điển dữ liệu (Data Dictionary)  Bảng và cây quyết định (Warnier/orr)  Đặc tả các tiến trình (Process Specification). Ưu điểm:  Dựa vào nguyên lý phân tích có cấu trúc  Thiết kế theo lối phân cấp, bảo đảm từ một dữ liệu vào sản xuất nhiều dữ liệu ra. Nhược điểm:  không chứa toàn bộ các tiến trình phân tích do đó nếu không thận trọng có thể đưa đến tình trạng trùng lặp thông tin. 1.4. GIỚI THIỆU MỘT VÀI PHƯƠNG PHÁP PTTK Phương pháp phân tích thiết kế MERISE: Nguồn gốc: MERISE viết tắt từ cụm từ Methode pour Rassembler les Ideés Sans Effort (phương pháp tập hợp các ý tưởng không cần cố gắng). Ra đời vào những năm cuối của thập niên 70. Xuất phát từ những suy nghĩ của một nhóm nghiên cứu đứng đầu bởi J.L.Lemoigne tại trường đại học AixEn-Provence - Pháp và những nghiên cứu hiện thực đồng thời ở Trung tâm nghiên cứu trang bị kỹ thuật (CETE), dưới sự lãnh đạo của H.Tardien. 1.4. GIỚI THIỆU MỘT VÀI PHƯƠNG PHÁP PTTK Phương pháp phân tích thiết kế MERISE: Nguồn gốc: MERISE viết tắt từ cụm từ Methode pour Rassembler les Ideés Sans Effort (phương pháp tập hợp các ý tưởng không cần cố gắng). Ra đời vào những năm cuối của thập niên 70. Xuất phát từ những suy nghĩ của một nhóm nghiên cứu đứng đầu bởi J.L.Lemoigne tại trường đại học AixEn-Provence - Pháp và những nghiên cứu hiện thực đồng thời ở Trung tâm nghiên cứu trang bị kỹ thuật (CETE), dưới sự lãnh đạo của H.Tardien. 1.4. GIỚI THIỆU MỘT VÀI PHƯƠNG PHÁP PTTK Phương pháp phân tích thiết kế MERISE: Đặc trưng của phương pháp Merise:  Tách rời dữ liệu và xử lý nhằm đảm bảo tính khách quan trong quá trình phân tích và cung cấp đầy đủ các mô hình để diễn đạt các bước cập nhật. Mô tả hệ thống: bao gồm dữ liệu và xử lý được biểu diễn ở ba mức:  Mức quan niệm (Concept): xác định mục đích của hệ thống, các thành phần của dữ liệu và xử lý.  Mức tổ chức (Oganization): chi tiết hóa những quan hệ giữa chúng.  Mức vật lý (Physic): các thành phần được thể hiện trong thực tế như thế nào. 1.4. GIỚI THIỆU MỘT VÀI PHƯƠNG PHÁP PTTK Phương pháp phân tích thiết kế MERISE: Công cụ để phân tích: MỨC DỮ LIỆU XỬ LÝ Mức quan niệm MH quan niệm về dữ liệu MH tổ chức về dữ liệu MH quan niệm về xử lý MH tổ chức về xử lý MH vật lý về dữ liệu MH vật lý về xử lý Mức tổ chức Mức vật lý 1.4. GIỚI THIỆU MỘT VÀI PHƯƠNG PHÁP PTTK Phương pháp phân tích thiết kế hướng đối tượng  Ra đời vào giữa thập niên 80  Phát triển từ các ý tưởng của lập trình hướng đối tượng.  Dựa trên một số khái niệm cơ bản sau: • Ðối tượng (Object): gồm dữ liệu và thủ tục tác động lên dữ liệu này • Lớp (Class): Tập hợp các đối tượng có chung một cấu trúc dữ liệu và cùng một phương pháp. • Kế thừa (Heritage): tính chất kế thừa là đặc tính cho phép định nghĩa một lớp mới từ các lớp đã có bằng cách thêm vào đó những dữ liệu mới, các phương pháp mới có thể kế thừa những đặc tính của lớp cũ. • Ðóng gói (Encapsulation): Không cho phép tác động trực tiếp lên dữ liệu của đối tượng mà phải thông qua các phương pháp trung gian. 1.4. GIỚI THIỆU MỘT VÀI PHƯƠNG PHÁP PTTK Phương pháp phân tích thiết kế hướng đối tượng (tt)  Sử dụng ngôn ngữ mô hình hoá hợp nhất UML để mô tả.  UML sử dụng 9 biểu đồ để mô hình hóa một hệ thống: NHỮNG SAI LẦM CÓ THỂ XẢY RA KHI PTTK MỘT HTTT  Thiếu sự tiếp cận tổng thể trong phát triển HT  Thu thập thông tin nhiều lần về một đối tượng  Dùng các thuật ngữ khác nhau đối với cùng một quan niệm  Sự phiến diện, không đầy đủ của hồ sơ  Sự bất hợp tác của người sử dụng.  Thiếu một chuẩn thống nhất: Người phân tích thiếu một chuẩn thống nhất để mô tả, cài đặt các ứng dụng trong hệ thống 1.4. CÁC GIAI ĐOẠN XÂY DỰNG MỘT HTTT TIN HỌC HÓA  Nghiên cứu nhu cầu (hệ thống cần gì?)  Nghiên cứu khả thi (cân nhắc giữa nhu cầu và khả năng)  Đề xuất một kiểu kiến trúc mới của HT  Mã hóa (tổ chức dữ liệu và lập trình)  Thử nghiệm và khai thác 1.4. CÁC GIAI ĐOẠN XÂY DỰNG MỘT HTTT TIN HỌC HÓA a. Giai đoạn lập kế hoạch (khảo sát hệ thống)  Xác định các công việc cần thiết trước khi có thể tiến hành nghiên cứu các lĩnh vực, bộ phận, hệ thống con, các tổ chức có liên quan đến hệ thống thông tin cần xây dựng.  Làm rõ được ý muốn của chủ đầu tư là: xây dựng 1 hệ thống thông tin mới hay nâng cấp một hệ thống thông tin cũ. b. Giai đoạn phân tích Là giai đoạn trung tâm khi xây dựng 1 hệ thống thông tin, giai đoạn này khởi sự ngay trong giai đoạn lập kế hoạch. Phân tích bao gồm các công việc sau: 1. Phân tích hiện trạng Mục đích: hiểu rõ tình trạng hoạt động của hệ thống cũ trong mục đích hoạt động của tổ chức. Nội dung công việc: Tìm hiểu hiện trạng: thông qua việc nghiên cứu hồ sơ, tài liệu để tìm hiểu thông tin chung về ngành dọc của tổ chức.  Tìm hiểu hoạt động hiện tại của tổ chức  Xác định các thành phần tham gia trong tổ chức  Các nhiệm vụ của các tổ chức thành viên và các tổ chức bên ngoài có liên quan  Các mối quan hệ thông tin giữa các thành viên trong tổ chức b. Giai đoạn phân tích 2. Phân tích khả thi và lập hồ sơ nhiệm vụ: . Phân tích khả thi về kỹ thuật: xem xét khả năng kỹ thuật hiện có để đề xuất giải pháp kỹ thuật áp dụng cho httt mới. . Phân tích khả thi kinh tế: xem xét khả năng tài chính để chi trả cho việc xây dựng hệ thống thông tin mới cũng như chỉ ra những lợi ích mà hệ thống sẽ đem lại. . Phân tích khả thi hoạt động: khả năng vận hành hệ thống trong điều kiện khuôn khổ, điều kiện tổ chức và quản lý cho phép của tổ chức. Tóm lại, trong giai đoạn này người phân tích phải tìm ra một điểm cân bằng giữa nhu cầu và khả năng. b. Giai đoạn phân tích Lập hồ sơ nhiệm vụ. Công việc này nhằm mục đích: • Định hình các chức năng hệ thống cần đạt được. • Định ra các thủ tục xây dựng quan niệm và thực hiện hệ thống • Định hình sơ lược giao diện của hệ thống với người sử dụng trong tương lai. • Làm các bản mẫu (prototype) để NSD hình dung được hệ thống trong tương lai. Tóm lại, lập hồ sơ nhiệm vụ là một thỏa thuận không chính thức giữa 3 phía: Người phân tích, Chủ đầu tư và Người sử dụng. c. Giai đoạn thiết kế  Thiết kế dữ liệu: xác định các đối tượng và cấu trúc dữ liệu được sử dụng trong hệ thống.  Thiết kế chức năng: định ra các modun xử lý thể hiện các chức năng xử lý của hệ thống thông tin.  Thiết kế giao diện: chi tiết hóa hình thức giao tiếp người - máy  Thiết kế an toàn hệ thống  Thiết kế phần cứng: tính toán các yêu cầu kỹ thuật, cơ sở vật chất cho hệ thống  Dự kiến nhân sự tại các vị trí công tác của hệ thống. d. Giai đoạn thực hiện xây dựng hệ thống bao gồm xây dựng các file cơ bản. viết các chương trình thực hiện các chức năng của hệ thống mới tương ứng với các kiểu khai thác đã đặt ra. làm tài liệu sử dụng để hướng dẫn cho người sử dụng làm tài liệu kỹ thuật cho các chuyên gia tin học phát triển hệ thống sau này. e. Giai đoạn chuyển giao hệ thống Hiệu chỉnh hệ thống Vận hành thử bằng số liệu giả để phát hiện sai sót Đưa hệ thống vào khai thác thử nghiệm Đào tạo người sử dụng tại mỗi vị trí trong hệ thống. Chuyển giao hệ thống f. Giai đoạn bảo trì hệ thống Sửa đổi, khắc phục những thiếu sót của hệ thống Làm cho hệ thống thích nghi hơn, thuận tiện hơn trong sử dụng. Quá trình xây dựng một HTTT có thể mô tả theo sơ đồ dưới đây: Sơ đồ mô tả quá trình phân tích và thiết kế một HTTT LẬP KẾ HOẠCH PHÂN TÍCH THIẾT KẾ THỰC HIỆN CHUYỂN GIAO BẢO TRÌ Mô hình thác nước - Water Fall Model Mô hình thác nước - Water Fall Model Giai đoạn phân tích Giai đoạn thiết kế Giai đoạn mã hóa Giai đoạn kiểm thử Giai đoạn bảo trì 1.5. CÁC MỨC BẤT BIẾN CỦA MỘT HTTT Xuất phát từ các nhu cầu: Cần có một mô hình hoặc một ngôn ngữ đặc tả đơn giản nhưng đơn nghĩa để xác định những yêu cầu trong mỗi giai đoạn phân tích. Cần có một mô hình hoặc một ngôn ngữ để đối thoại với những người không chuyên tin học trong hệ thống thông tin. Cần có một ngôn ngữ mô tả các mức quan niệm khác nhau của hệ thống thông tin liên quan đến chu kỳ sống của hệ thống. 1.5. CÁC MỨC BẤT BIẾN CỦA MỘT HTTT a. Mức quan niệm: 1. Ý nghĩa: Mô tả mục đích hệ thống thông tin và những ràng buộc phải tôn trọng trong mối quan hệ với mục đích của hệ thống. Các mô tả này phải độc lập với mọi giải pháp cài đặt 2. Những đối tượng cần phải mô tả ở mức quan niệm: • Các đối tượng được sử dụng trong hệ thống. • Các hiện tượng và các mối quan hệ thông tin giữa các đối tượng, giữa các hệ thống con trong hệ thống và giữa hệ thống với môi trường bên ngoài. • Thứ tự công việc được thực hiện trong hệ thống. • Các qui tắc biến đổi, công thức tính toán, thuật toán. • Các nhiệm vụ hệ thống phải thực hiện và các ràng buộc mà hệ thống phải tôn trọng. 1.5. CÁC MỨC BẤT BIẾN CỦA MỘT HTTT a. Mức quan niệm: Có 3 loại quy tắc: + Qui tắc quản lý: qui định mục tiêu và ràng buộc của hệ thống (thường là những quy định, luật lệ áp đặt từ môi trường ngoài). Một cách để xem xét một quy tắc có phải là quy tắc quản lý không là nếu hủy bỏ quy tắc này thì hệ thống có nguy cơ bị phá vỡ không? + Qui tắc tổ chức: qui tắc liên quan đến giải pháp họat động của hệ thống. + Qui tắc kỹ thuật: qui tắc liên quan đến các yêu cầu kỹ thuật để đảm bảo hệ thống có thể họat động được. 1.5. CÁC MỨC BẤT BIẾN CỦA MỘT HTTT a. Mức quan niệm: Ở mức quan niệm cần trả lời các câu hỏi: WHAT? Chức năng của hệ thống thông tin là gì? Hệ thống thông tin cần những yếu tố gì? Hệ thống có dữ liệu và những quy tắc quản lý gì? 1.5. CÁC MỨC BẤT BIẾN CỦA MỘT HTTT b. Mức tổ chức:  Mục đích: xác định các phương tiện, nhân lực, máy móc, cách tổ chức để cung cấp các thông tin cho người sử dụng đúng thời hạn và đủ độ tin cậy.  Tại mức này, cần trả lời các câu hỏi:  Ai làm? (WHO?)  Làm ở đâu? (WHERE?)  Làm khi nào? (WHEN?) Thông tin ở mức tổ chức được mô tả theo giải pháp CSDL và thực chất là quan hệ logic của chúng. Do đó, đối với dữ liệu mức tổ chức còn gọi là mức logic. 1.5. CÁC MỨC BẤT BIẾN CỦA MỘT HTTT c. Mức vật lý: Mục đích: Xác định cách thực hiện của hệ thống thông tin trong một môi trường cài đặt nào đó Đây là mức ít trừu tượng nhất vì nó chính là hệ thống có thể họat động và vận hành. Tại mức này, cần trả lời câu hỏi hệ thống hoạt động như thế nào? (HOW?) Thông tin ở mức vật lý được mô tả với các cấu trúc, giá mang và phương thức truy nhập. 1.6. CÁC CÁCH TIẾP CẬN TRONG PHÁT TRIỂN PHẦN MỀM 1. Cách tiếp cận theo hướng chức năng Đặc điểm:  Dựa vào chức năng là chính  Tập trung khảo sát chức năng, hành vi của hệ thống  Khi các chức năng của hệ thống đã được xác định thì chúng khó thay đổi trong suốt quá trình thiết kế  Dữ liệu sẽ được xác định cấu trúc dựa vào các chức năng 1.6.1 CÁCH TIẾP CẬN THEO HƯỚNG CHỨC NĂNG Đặc điểm:  Phân rã chức năng và làm mịn dần theo cách tiếp cận Top/Down  phân tách nhỏ các chức năng chính thành các chức năng đơn giản hơn theo cách từ trên xuống- nguyên lý chia để trị.  Kết quả của việc phân rã là một BFD của hệ thống  Các đơn thể chức năng trao đổi với nhau bằng cách truyền tham số hay sử dụng dữ liệu chung 1.6.1 CÁCH TIẾP CẬN THEO HƯỚNG CHỨC NĂNG Đặc điểm: Bị ảnh hưởng bới các ngôn ngữ lập trình ALGOL, Pascal, C Các hàm của hệ thống phần mềm được xem như tiêu chí cơ sở khi phân rã Tách chức năng khỏi dữ liệu Chức năng có hành vi Dữ liệu chứa thông tin bị các chức năng tác động Phân tách top-down chia hệ thống thành các hàm để chuyển sang mã trình, dữ liệu được gửi giữa chúng. 1.6.1 CÁCH TIẾP CẬN THEO HƯỚNG CHỨC NĂNG Hệ thống quản lý thư viện Quản lý bạn đọc quản lý tài liệu Dữ liệu chung Theo dõi mượn trả Dữ liệu chung Chức năng 1 Chức năng 2 Dữ liệu riêng Dữ liệu riêng Thống kê 1.6.2 CÁCH TIẾP CẬN THEO HƯỚNG ĐỐI TƯỢNG Đặc điểm:  Đặt trọng tâm vào dữ liệu (thực thể)  Xem hệ thống như là tập các thực thể, các đối tượng  Các lớp đối tượng trao đổi với nhau bằng các thông điệp  Tính mở và thích nghi của hệ thống cao  Hỗ trợ sử dụng lại và cơ chế kế thừa 1.6.2 CÁCH TIẾP CẬN THEO HƯỚNG ĐỐI TƯỢNG  Tiệm cận hướng đối tượng tập trung vào cả thông tin và hành vi  Cho khả năng xây dựng hệ thống mềm dẻo, “co dãn”  Phương pháp này dựa trên các nguyên tắc sau • Tính đóng gói • Kế thừa • Đa trị 1.6.3 NHẬN XÉT Ưu điểm chính của phương pháp HĐT  là cơ sở để kết hợp các đơn thể có thể sử dụng lại thành hệ thống lớn hơn, tạo ra những sản phẩm có chất lượng cao  Qui ước truyền thông điệp giữa các đối tượng đảm bảo cho việc mô tả các giao diện giữa các đối tượng thành phần bên trong hệ thống và những hệ thống bên ngoài trở nên dễ dàng hơn  Nguyên lý bao gói, che giấu thông tin hỗ trợ cho việc xây dựng những hệ thống thông tin an toàn. 1.6.3 NHẬN XÉT Ưu điểm chính của phương pháp HĐT:  Nguyên lý bao gói, che giấu thông tin hỗ trợ cho việc xây dựng những hệ thống thông tin an toàn.  Lập trình HĐT với kỹ thuật kế thừa cho phép dễ dàng xác định các đơn thể và sử dụng ngay khi chúng chưa thực hiện đầy đủ các chức năg (đơn thể mở) và sau đó mở rộng được mà không làm ảnh hưởng tới các đơn thể khác. 1.6.3 NHẬN XÉT Ưu điểm chính của phương pháp HĐT (tt)  Định hướng đối tượng cung cấp những công cụ, môi trường mới, hiệu quả để phát triển phần mềm theo hướng công nghiệp và hỗ trợ để tận dụng được những khả năng kế thừa, sử dụng lại ở phạm vi diện rộng để xây dựng được những hệ thống phức tạp như: hệ thống động, hệ thống thời gian thực, v,v.  Xoá bỏ được hố ngăn cách giữa các pha phân tích, thiết kế và cài đặt trong quá trình xây dựng phần mềm. Những hạn chế của phương pháp hướng CN Sản phẩm khó bảo trì Mọi chức năng đều chia sẻ khối dữ liệu lớn Các chức năng phải hiểu rõ dữ liệu được lưu trữ thế nào Khi thay đổi cấu trúc dữ liệu kéo theo thay đổi mọi hàm liên quan Tiến trình phát triển không ổn định Thay đổi yêu cầu kéo theo thay đổi các chức năng Rất khó bảo toàn kiến trúc thiết kế ban đầu khi hệ thống tiến hóa Không hỗ trợ lập trình bằng ngôn ngữ hướng đối tượng như C++, Java, Smalltalk, Eiffel. HẾT CHƯƠNG 1 82 CHƯƠNG 2 PHÂN TÍCH VÀ THIẾT KẾ HTTT THEO HƯỚNG CHỨC NĂNG ANALYSIS AND DESIGN INFORMATION SYSTEMS IN FUNCTIONAL-ORIENTED PGS.TS. Nguyễn Mậu Hân Khoa CNTT-ĐHKH HUẾ 83 NỘI DUNG 2.1. NGHIÊN CỨU HIỆN TRẠNG CỦA HTTT 2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG 2.3. MÔ HÌNH QUAN NIỆM CỦA HTTT 2.4. MÔ HÌNH TỔ CHỨC CỦA HTTT 2.5. MÔ HÌNH VẬT LÝ CỦA HTTT 2.6. THIẾT KẾ GIAO DIỆN, BÁO BIỂU, AN TOÀN HỆ THỐNG 2.1. NGHIÊN CỨU HIỆN TRẠNG CỦA HTTT 2.1.1. Mục đích: Tiếp cận với nghiệp vụ chuyên môn, môi trường hoạt động của hệ thống. Tìm hiểu các chức năng, nhiệm vụ và cách hoạt động của hệ thống. Chỉ ra các ưu điểm của hệ thống cũ để kế thừa và các khuyết điểm của hệ thống để nghiên cứu khắc phục. 85 2.1. NGHIÊN CỨU HIỆN TRẠNG CỦA HTTT 2.1.2. Nội dung khảo sát và đánh giá hiện trạng: Thu thập và mô tả các quy tắc quản lý, tổ chức, kỹ thuật. Thu thập và tìm hiểu các chứng từ giao dịch. Mô tả các luồng thông tin và tài liệu giao dịch. Thống kê các phương tiện và tài nguyên đã và có thể sử dụng. Thu thập và tìm hiểu các ý kiến khen chê về HTTT cũ và những yêu cầu, đòi hỏi về hệ thống tương lai. Lập hồ sơ tổng hợp về hiện trạng 86 2.1. NGHIÊN CỨU HIỆN TRẠNG CỦA HTTT 2.1.3. Nghiên cứu các tài liệu Qua các tài liệu của hệ thống phân tích viên có thể nắm được: các công việc, các chức năng, các quy tắc làm việc. Các tài liệu nghiên cứu bao gồm: Các văn bản pháp quy, quy định về chức năng, nhiệm vụ của tổ chức và của mỗi điểm công tác. Các văn bản pháp quy, quy định về tiêu chuẩn, quy tắc, phương thức làm việc. Các chủ trương chính sách mà tổ chức, mà nhà nước đã ban hành. Các báo cáo, báo biểu, thống kê đã có. 87 2.1. NGHIÊN CỨU HIỆN TRẠNG CỦA HTTT Tóm lại, phải trả lời cho được các câu hỏi sau: Hệ thống đang làm gì? Gồm những công việc gì? Đang quản lý cái gì? Những công việc trong hệ thống do ai làm? Làm ở đâu? Khi nào làm? Mỗi công việc được thực hiện như thế nào? Mỗi công việc liên quan đến dữ liệu nào? Chu kỳ, tần suất, khối lượng công việc? Đánh giá các công việc hiện tại: tầm quan trọng như thế nào? Các thuận lợi, khó khăn? Nguyên nhân dẫn đến khó khăn? 88 2.1. NGHIÊN CỨU HIỆN TRẠNG CỦA HTTT 2.1.2. Các công việc sau khảo sát hiện trạng: a. Xử lý sơ bộ kết quả khảo sát  Làm rõ các chức năng của hệ thống Xác định được các chức năng và dữ liệu của hệ thống: như các đối tượng, các điểm công tác, các hoạt động. Đối với mỗi chức năng cần làm rõ: điều kiện khởi động, kết quả thu được, thời gian thực hiện, tần số, chu kỳ, các quy tắc phải tuân thủ. 89 2.1. NGHIÊN CỨU HIỆN TRẠNG CỦA HTTT  Rà soát lại dữ liệu: Tên dữ liệu: do người phân tích lựa chọn Định nghĩa về dữ liệu: mô tả bằng lời hoặc bằng công thức Kiểu dữ liệu (số, chuỗi,...) Loại: là dữ liệu cơ sở hay dữ liệu được suy từ dữ liệu khác. Ràng buộc về giá trị 90 2.1. NGHIÊN CỨU HIỆN TRẠNG CỦA HTTT b. Tổng hợp kết quả khảo sát Tổng hợp các xử lý Mục đích là làm rõ các thiếu sót và sự rời rạc của các yếu tố liên quan đến công việc khi phỏng vấn. Có hai cách tổng hợp các xử lý: tổng hợp kết hợp với yếu tố tổ chức tổng hợp tách rời các yếu tố tổ chức. Tổng hợp các dữ liệu Mục tiêu là liệt kê ra tất cả các dữ liệu có liên quan đến hệ thống nhằm xây dựng một từ điển dữ liệu chung cho toàn nhóm phân tích. 91 2.1. NGHIÊN CỨU HIỆN TRẠNG CỦA HTTT c. Hợp thức hoá kết quả khảo sát Mục đích: xác định tính đúng đắn của thông tin và dữ liệu phản ánh yêu cầu thông tin của hệ thống bảo đảm tính pháp lý của nó cho việc sử dụng sau này. Hợp thức hoá kết quả khảo sát gồm các công việc: Hoàn chỉnh và trình bày các dữ liệu thu được để người sử dụng xem xét và cho ý kiến. Tổng hợp các tài liệu để các nhà quản lý và lãnh đạo đánh giá và bổ sung. Đề đạt thêm một số quy tắc mới (như các quy tắc về an toàn hệ thống, các yêu cầu về nhân sự,...) Hợp thức hoá là một khâu không thể bỏ qua, nếu không có thể 92 sẽ đối mặt với những khó khăn không lường khi triển khai. 2.1. NGHIÊN CỨU HIỆN TRẠNG CỦA HTTT Giới thiệu một số nghiên cứu hiện trạng a. Hệ thống thông tin "Quản lý kho hàng" Một công ty sản xuất bánh kẹo, có nhiều kho để chứa vật tư và hàng hoá: Kho nguyên liệu: chứa đường, bột, hương liệu, bao bì,... Kho nhiên liệu: chứa xăng, dầu, than Kho phụ tùng: chứa các thiết bị thay thế Kho thành phẩm: chứa bánh kẹo đã sản xuất được ....... (Xem tiếp trong giáo trình) 93 2.1. NGHIÊN CỨU HIỆN TRẠNG CỦA HTTT Giới thiệu một số nghiên cứu hiện trạng a. Hệ thống thông tin "Quản lý Công chức" Một cơ quan hành chính sự nghiệp cần tin học hoá việc quản lý cán bộ công chức của cơ quan mình. Qua nghiên cứu hiện trạng phân tích viên đã nắm được các thông tin sau: Mỗi công chức được cơ quan quản lý các thông tin sau đây: Họ tên, đơn vị công tác, giới tính, ngày sinh, nơi sinh, địa chỉ, dân tộc, tôn giáo, chính trị, trình độ văn hóa, ngoại ngữ, loại hình đào tạo, cựu chiến binh, ngày vào cơ quan, ngày vào biên chế, cha mẹ, vợ chồng, con, khen thưởng, kỷ luật. ....... (Xem tiếp trong giáo trình) 94 2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG 2.2.1. Các mức độ mô tả chức năng a. Mô tả vật lý : Mô tả chức năng ở mức độ vật lý đòi hỏi phải nói rõ mục đích và cách thực hiện của quá trình xử lý, nghĩa là phải trả lời câu hỏi: làm gì? và làm như thế nào? b. Mô tả logic: Mô tả chức năng ở mức độ logic lại đơn giản hơn, chỉ cần trả lời đầy đủ câu hỏi làm gì? Nghĩa là chỉ diễn tả mục đích, bản chất của quá trình xử lý mà không cần quan tâm đến các yếu tố về thực hiện, cài đặt như phương pháp, phương tiện, tác nhân, thời điểm, thời gian,... 95 2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG c. Mô tả đại thể và mô tả chi tiết: Ở mức độ đại thể Một chức năng được mô tả dưới dạng hộp đen. Nội dung bên trong hộp đen không được chỉ rõ mà chỉ mô tả các thông tin vào và ra hộp đen đó. Ở mức độ chi tiết Nội dung của quá trình xử lý phải được chỉ rõ hơn: Các chức năng con Các mối quan hệ thông tin và điều khiển giữa những chức năng đó. Nếu một chức năng có nhiều chức năng con thì để mô tả chi tiết người phân tích phải phân rã các chức năng con này thành nhiều mức. Các mức này được biểu diễn qua biểu đồ phân cấp chức 96 năng dưới đây. 2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG 2.2.2. Biểu đồ chức năng nghiệp vụ BFD (Business Function Diagram) BFD là một sơ đồ hình học dùng để mô tả sự phân rã có thứ bậc các chức năng của hệ thống từ đại thể đến chi tiết. Mỗi nút trong biểu đồ là một chức năng, các chức năng này có quan hệ bao hàm với nhau và chúng được nối với nhau bằng các cung để tạo nên một cấu trúc cây. Ký hiệu: một chức năng được biểu diễn bởi một hình chữ nhật hoặc một vòng tròn (SADT) <Tên chức năng> <Tên chức năng> 97 2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG Ví dụ: Biểu đồ chức năng nghiệp vụ của hệ thống thông tin “quản lý doanh nghiệp” Quản lý Doanh nghiệp Quản lý Nhân sự Quản lý Vật tư Tài sản cố định Thiết bị Quản lý Tài chính Lương tiền Kế toán 98 2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG Ví dụ: BFD về “Quản lý trông giữ xe” Quản lý trông giữ xe 1. Nhận xe 2. Trả xe 3. Giải quyết sự cố 2.1 Kiểm tra vé 3.1 Kiểm tra sổ gửi 1.2 Ktra chổ trống 2.2 Đối chiếu vé 3.2 Ktra hiện trường 1.3 Ghi vé xe 2.3 Thanh toán 3.3 Lập biên bản 1.4 Ghi số xe vào 2.4 Ghi số xe ra 3.4 Thanh toán sự cố 1.1 Nhận dạng xe 99 2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG 2.2.3. Mô hình hoá các tiến trình của hệ thống a. Biểu đồ luồng dữ liệu DFD (Data Flow Diagram ) DFD là một sơ đồ hình học nhằm diễn tả các luồng dữ liệu thông qua các chức năng của hệ thống. Những hỗ trợ của DFD Xác định yêu cầu của người dùng. Lập kế hoạch và minh hoạ những phương án cho phân tích viên và người dùng xem xét. Trao đổi giữa những phân tích viên và người dùng trong hệ thống. Làm tài liệu đặc tả yêu cầu hình thức và đặc tả thiết kế hệ thống. 100 2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG b. Các thành phần của một DFD: Luồng dữ liệu (Data flow): Một luồng dữ liệu là một tuyến truyền dẫn thông tin vào hay ra một chức năng nào đó. Được dùng để mô tả dữ liệu di chuyển từ vị trí này đến vị trí khác. Ký hiệu: Một luồng dữ liệu được mô tả bởi một mũi tên với tên dữ liệu kèm theo, chiều của mũi tên chỉ hướng di chuyển của dữ liệu. Tên của luồng dữ liệu thể hiện trạng thái logic của thông tin chứ không phải dạng vật lý của nó. Phiếu nhập Nhập kho Thẻ kho 101 2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG b. Các thành phần của một DFD: Kho dữ liệu (Data store) – Tài liệu lưu trữ Về mặt vật lý, kho dữ liệu là các tập tin dữ liệu trong máy tính hoặc những tập tài liệu được lưu trữ ở văn phòng. Kho dữ liệu là các dữ liệu được lưu giữ trên giá mang nó, vì vậy người ta thường lấy tên của vật mang nó làm tên của kho dữ liệu.  Ký hiệu: Phiếu xuất Phiếu xuất Phiếu xuất 102 2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG b. Các thành phần của một DFD: Tiến trình (Proccess): Là một công việc hoặc một hành động có tác động lên dữ liệu làm cho chúng di chuyển, thay đổi hoặc được phân phối. Chỉ được xem là một tiến trình trong DFD nếu chúng nhận thông tin đầu vào và có thông tin đầu ra. 103 2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG b. Các thành phần của một DFD: Tác nhân ngoài (extenal entity): Là một cá nhân hoặc một tổ chức ở bên ngoài lĩnh vực nghiên cứu của hệ thống. Tác nhân ngoài là phần sống còn của hệ thống, bởi vì chúng là nguồn cung cấp thông tin cho hệ thống và là nguyên nhân kích hoạt hệ thống. Ví dụ: một luồng dữ liệu là “Đơn đặt hàng” đến một tác nhân ngoài là “Nhà cung cấp”. Nhà cung cấp Đơn đặt hàng 104 2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG b. Các thành phần của một DFD: Tác nhân ngoài (extenal entity): Là một cá nhân hoặc một tổ chức ở bên ngoài hệ thống. Tác nhân trong (intenal entity): Là một cá nhân, chức năng hoặc một hệ thống con của hệ thống. Ví dụ: một luồng dữ liệu là “Phiếu xuất/nhập” đến một tác nhân trong là “Thủ kho” Phiếu nhập/xuất Thủ kho 105 2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG c. Các chú ý khi xây dựng một DFD Dựa vào biểu đồ chức năng nghiệp vụ Sử dụng BFD để xác định các tiến trình theo từng mức cho DFD. Bởi vì BFD được thực hiện phân rã thành các mức nên nó dùng để chỉ ra các mức tương ứng trong DFD. Tuy nhiên để kiểm tra tính đúng đắn của các thành phần trong một DFD cần phải dựa vào các đặc trưng dưới đây. 106 2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG Tiến trình: Không một tiến trình nào chỉ có thông tin vào mà không có thông tin ra. Nếu một đối tượng nào đó mà chỉ có thông tin vào mà không có thông tin ra thì đó có thể là một tác nhân ngoài (đích-thu nhận thông tin). Không một tiến trình nào chỉ có thông tin ra mà không có thông tin vào. Nếu một đối tượng nào đó mà chỉ có thông tin ra mà không có thông tin vào thì đó có thể là một tác nhân trong (nguồn-phát sinh thông tin). Thông tin vào của một tiến trình phải khác với thông tin ra của tiến trình đó. Tên một tiến trình phải duy nhất và là một mệnh đề chỉ hành động. 107 2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG Kho dữ liệu:  Tên một kho dữ liệu phải là một mệnh đề danh từ.  Dữ liệu không thể di chuyển trực tiếp từ một kho dữ liệu này đến một kho dữ liệu khác.  Không thể di chuyển trực tiếp dữ liệu từ một tác nhân đến một kho dữ liệu.  Không thể di chuyển trực tiếp dữ liệu từ một kho dữ liệu đến một tác nhân. Tác nhân:  Tên một tác nhân phải là một mệnh đề danh từ.  Dữ liệu không thể di chuyển trực tiếp từ một tác nhân này đến một tác nhân khác. 108 2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG Luồng dữ liệu:  Tên một luồng dữ liệu phải là một mệnh đề danh từ.  Một luồng dữ liệu chỉ có một hướng chỉ hướng di chuyển của dữ liệu.  Một luồng dữ liệu không thể quay lui nơi nó vừa đi khỏi.  Một luồng dữ liệu đi vào một kho có nghĩa là kho được cập nhật dữ liệu.  Một luồng dữ liệu đi ra khỏi một kho có nghĩa là dữ liệu được đọc từ kho. 109 2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG d. Kỹ thuật phân mức trong DFD Căn cứ vào việc phân rã chức năng của một BFD: Mô tả một DFD theo nhiều mức khác nhau. Mỗi mức được thể hiện trong một hoặc nhiều trang. Mức 0: còn gọi là mức bối cảnh  Chỉ gồm một DFD, trong đó chỉ có một chức năng duy nhất (chức năng tổng quát của hệ thống) trao đổi các luồng thông tin với các tác nhân ngoài. Tên của trang mức 0 là tên của hệ thống. Mức 1: còn gọi là mức đỉnh  Chỉ gồm một DFD 110 2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG Các mức 2,3,4,... mỗi mức gồm nhiều DFD được thành lập như sau:  Cứ mỗi chức năng ở mức trên, ta thành lập một DFD ở mức dưới, gọi là biểu diễn DFD ở mức con.  Phân rã chức năng đó thành nhiều chức năng con  Vẽ lại các luồng dữ liệu vào và ra chức năng trên, nhưng bây giờ phải vào hoặc ra chức năng con thích hợp.  Nghiên cứu các quan hệ về dữ liệu giữa các chức năng con, nhờ đó bổ sung các luồng dữ liệu nội bộ hoặc các kho dữ liệu nội bộ.  Các chức năng được đánh số theo ký pháp chấm (.) để tiện theo dõi vệt triển khai từ trên xuống. 111 2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG 112 2.2. PHÂN TÍCH HỆ THỐNG VỀ CHỨC NĂNG  Tổng quát, có thể định nghĩa một cách quy nạp biểu đồ luồng dữ liệu các mức như sau: Biểu đồ luồng dữ liệu mức n là biểu đồ luồng dữ liệu nhận được từ việc phân rã một tiến trình thuộc biểu đồ luồng dữ liệu mức n-1. Như vậy biểu đồ luồng dữ liệu ở mỗi mức là tập hợp các DFD ở mức đó. 113 VÍ DỤ- Kỹ thuật phân mức 114 VÍ DỤ- Kỹ thuật phân mức Mức 0: chức năng tổng quát của HT: “Quản lý tín dụng”. Tác nhân của hệ thống: “Khách vay”. Trả lời đơn vay Khách vay Đơn vay QUẢN LÝ TÍN DỤNG Nợ hoàn trả DFD ở mức 0 (mức bối cảnh) 115 VÍ DỤ- Kỹ thuật phân mức Mức 1 Chức năng ở mức 0 được phân rã thành 2 chức năng con là “Cho vay” và “Thu nợ”. Ngoài ba luồng dữ liệu đã có ở mức 0 phải được bảo toàn, thì ta thấy luồng dữ liệu trao đổi giữa hai chức năng “Cho vay” và “Thu nợ” không trực tiếp mà phải thông qua một kho dữ liệu đó là “Sổ nợ”. Ta có DFD mức đỉnh như hình dưới đây. Trả lời đơn vay 1.Cho vay Sổ nợ Đơn vay Khách vay Nợ hoàn trả 2. Thu nợ DFD ở mức 1 (mức đỉnh) 116 VÍ DỤ- Kỹ thuật phân mức Mức 2: Chức năng “Cho vay” ở mức 1 được phân rã thành 3 chức năng con là “Nhận đơn”, “Duyệt vay” và “Trả lời đơn”; Chức năng “Thu nợ” ở mức 1 được phân rã thành 3 chức năng con là “Xác định kỳ hạn trả”, “Xử lý nợ trả trong hạn” và “Xử lý nợ trả ngoài hạn”. Để bảo toàn các luồng dữ liệu vào/ra và thêm các luồng dữ liệu nội bộ ta thành lập được hai DFD định nghĩa cho hai chức năng 1 và 2 như sau: 117 VÍ DỤ- Kỹ thuật phân mức Mức 2 Đơn đã kiểm tra Đơn vay Khách vay 1.1 Nhận đơn 1.2 Duyệt vay Đơn đã duyệt Sổ nợ Từ chối vay 1.3 Trả lời đơn Đáp ứng vay DFD ở mức 2 (định nghĩa chức năng 1: Chovay) 118 VÍ DỤ- Kỹ thuật phân mức Mức 2 Nợ trả trong hạn 2.2 Xử lý nợ trả trong hạn Nợ hoàn trả Khách vay 2.1 Xác định kỳ hạn trả Nợ trả ngoài hạn Sổ nợ 2.3 Xử lý nợ trả ngoài hạn DFD ở mức 2 (định nghĩa chức năng 2: Thu nợ) 119 2.3. MÔ HÌNH QUAN NIỆM CỦA HTTT Mô hình quan niệm của một HTTT được thiết lập từ hai mô hình liên quan đến nhau là mô hình quan niệm về dữ liệu và mô hình quan niệm về xử lý. a. Mô hình quan niệm về dữ liệu:  là sự mô tả toàn bộ dữ liệu của hệ thống, những mô tả này độc lập với các lựa chọn môi trường cài đặt  là công cụ cho phép người phân tích thể hiện dữ liệu của hệ thống ở mức quan niệm.  Mô hình có thể mô tả bằng ngôn ngữ tự nhiên hoặc bằng hình vẽ. b. Mô hình quan niệm về xử lý:  mô tả toàn bộ các quy tắc xử lý được áp dụng cho dữ liệu của hệ thống. Mô hình quan niệm cũng là cơ sở để trao đổi giữa những người phân tích thiết kế hệ thống. 120 2.3. MÔ HÌNH QUAN NIỆM CỦA HTTT 2.3.1 Mô hình quan niệm về dữ liệu Nhắc lại một số kiến thức cần thiết  Mô hình thực thể-mối quan hệ (ER)  Các tập thực thể  Các mối quan hệ giữa các tập thực thể  Các thuộc tính của các tập thực thể và các mối quan hệ: thuộc tính đơn, phức hợp, đa trị  Các loại quan hệ giữa các tập thực thể (1-1, 1-n, n-n, isa) Chiều của mối quan hệ  Mối quan hệ một chiều (đệ quy-phản xạ)  Mối quan hệ hai chiều  Mối quan hệ nhiều chiều  Bản số 121 2.3.2 Một vài nhận xét để rà soát lại mô hình ER a. Đối tượng nào có thể làm tập thực thể? Một đối tượng có thể làm tập thực thể nếu nó được tạo thành từ một lớp các cá thể tương ứng. b. Yếu tố TT gì có thể làm thuộc tính cho một tập thực thể? Các thông tin đặc trưng để xác định các thực thể trong một tập thực thể đều có thể làm thuộc tính cho tập thực thể đó. c. Loại bỏ các thuộc tính vô nghĩa Loại bỏ các thông tin không bao giờ sử dụng đến. 122 2.3.2 Một vài nhận xét để rà soát lại mô hình ER d.Tính độc lập của các thuộc tính Thuộc tính của một tập thực thể không được suy từ những thuộc tính khác của tập thực thể đó. 123 2.3.2 Một vài nhận xét để rà soát lại mô hình ER d.Tính độc lập của các thuộc tính Thuộc tính của một tập thực thể không được suy từ những thuộc tính khác của tập thực thể đó. e. Xác định thuộc tính khóa Trong mỗi tập thực thể nên chọn khóa chỉ có một thuộc tính để tiện việc xử lý. Nếu trong tập thực thể không có một thuộc tính nào để làm khóa thì nên áp đặt một thuộc tính bên ngoài để làm khóa. Thông thường thuộc tính áp đặt này có dạng: Mã + <Tên tập thực thể> 124 2.3. MÔ HÌNH QUAN NIỆM CỦA HTTT 2.3.2 Một vài nhận xét để rà soát lại mô hình ER d.Tính độc lập của các thuộc tính Thuộc tính của một tập thực thể không được suy từ những thuộc tính khác của tập thực thể đó. f. Tách thuộc tính có dung lượng lớn Nếu một thuộc tính của tập thực thể có nhiều giá trị, mỗi giá trị chiếm một dung lượng lớn và lặp lại nhiều lần thì nên tách thành một tập thực thể riêng có tên là <tên thuộc tính> và có hai thuộc tính là:  Mã + <tên thuộc tính>  Tên + <tên thuộc tính> 125 2.3.2 Một vài nhận xét để rà soát lại mô hình ER g. Xử lý một thuộc tính lặp nằm trong một tập thực thể Nếu trong tập thực thể có thuộc tính lặp (đa trị) thì tách thuộc tính này thành một tập thực thể có tên: <tên thuộc tính đa trị> và có hai thuộc tính là: • Mã + <tên thuộc tính> và • Tên + <tên thuộc tính> Ví dụ: một nhân viên có thể có nhiều sđt 126 2.3.2 Một vài nhận xét để rà soát lại mô hình ER h. Xử lý 1 nhóm thuộc tính lặp nằm trong 1 tập th.thể Nếu trong một tập thực thể có một nhóm thuộc tính lặp thì tách chúng (các thuộc tính lặp) thành một tập thực thể riêng. Tập thực thể này nhận các thuộc tính lặp làm thuộc tính và nhận thuộc tính khóa của tập thực thể gốc làm khóa. Ví dụ: 127 2.3.2 Một vài nhận xét để rà soát lại mô hình ER h. Các tập thực thể có mối quan hệ ISA  Khi một thuộc tính của tập thực thể mà chỉ có một số phần tử có giá trị, nếu phần tử nào có giá trị thì có thêm một số thuộc tính riêng của nó thì chuyển thành một tập thực thể riêng có tên là <tên thuộc tính> và có thuộc tính là các thuộc tính riêng của nó. Tập thực thể gốc gọi là tập thực thể Cha, tập thực thể được tách ra gọi là tập thực thể Con.  Ví dụ 128 2.3.3 Cách mô tả mô hình quan niệm về dữ liệu Mô hình quan niệm dữ liệu là mô hình liên hoàn các tập thực thể và mối quan hệ của hệ thống. Để mô tả mô hình quan niệm về dữ liệu của một HTTT, cần mô tả thông tin theo các bước sau: B1: Mô tả toàn bộ các tập thực thể và các thuộc tính tương ứng của chúng. B2: Mô tả toàn bộ các mối quan hệ. Ý nghĩa của mỗi mối quan hệ và các thuộc tính tương ứng của chúng (nếu có). Bản số của mỗi tập thực thể qua mối quan hệ. Loại mối quan hệ: một chiều, hai chiều (1-1, 1-n, n-n, isa,...), nhiều chiều. 129 B3: Vẽ mô hình thực thể - mối quan hệ. 2.3.4 Mô hình quan niệm về xử lý a. Mục đích: Mô hình quan niệm xử lý nghiên cứu mặt động của hệ thống thông tin, nhằm xác định hệ thống gồm những chức năng gì, các chức năng đó liên hệ với nhau như thế nào? b. Một số thuật ngữ và khái niệm a. Biến cố (event): một sự việc gây ra sự thay đổi trạng thái của hệ thống. Một biến cố có thể xuất hiện bên trong hay bên ngoài hệ thống, tạo phản ứng cho hệ thống thông qua một qui tắc quản lý nào đó. 130 2.3.4 Mô hình quan niệm về xử lý Phân loại biến cố :  Biến cố vào: biến cố tham gia vào việc kích hoạt một công việc nào đó của hệ thống.  Biến cố ra: biến cố được sinh ra sau khi thực hiện một hoặc nhiều công việc của hệ thống.  Biến cố trong: biến cố xảy ra bên trong hệ thống để các hệ thống con trao đổi thông tin cho nhau.  Biến cố ngoài: biến cố đến từ môi trường bên ngoài hệ thống.  Biến cố thời gian: biến cố gắn liền với thời gian, có tính chu kỳ. 131 2.3.4 Mô hình quan niệm về xử lý b. Công việc:  Là một xử lý nhỏ nhất mà hệ thống thực hiện khi một biến cố trong hệ thống xuất hiện.  Thông thường một công việc chưa đủ để xác định được một chức năng hoặc một nhiệm vụ của hệ thống.  Ví dụ, công việc "Kiểm tra hàng nhập về" chưa đủ điều kiện để thực hiện nhiệm vụ "nhập kho", bởi vì nhiệm vụ này chỉ được hoàn tất sau khi các công việc kiểm tra và làm phiếu nhập được thực hiện xong.  Sau khi một công việc được thực hiện thì thông thường một trong hai trạng thái sẽ xảy ra: thành công (OK) và không thành công (⌐OK). Hai trạng 132 thái này sẽ kèm theo các biến cố ra tương ứng. 2.3.4 Mô hình quan niệm về xử lý c. Điểm đợi Thời điểm để đợi các biến cố xảy ra thì công việc mới thực hiện được gọi là điểm đợi. Các biến cố này kích hoạt công việc theo hai chế độ: Chế độ AND: khi tất cả các biến cố tại điểm đợi cùng xảy ra thì công việc mới được thực hiện. Chế độ OR: khi một trong các biến cố tại điểm đợi xảy ra thì công việc mới được thực hiện. Ví dụ: Biến cố "sách đã cho mượn" được thực hiện bởi công việc "CHO MƯỢN SÁCH" nếu tại điểm đợi các biến cố xảy ra: [(Độc giả yêu cầu)(Đủ tư cách độc giả)(có lệnh của GĐ)] (có sách) 133 2.3.4 Mô hình quan niệm về xử lý Mô tả một công việc, biến cố, điểm đợi 134 2.3.4 Mô hình quan niệm về xử lý Chức năng của một hệ thống thông tin được mô tả một cách tổng quát như sau: 135 2.3.4 Mô hình quan niệm về xử lý Ví dụ, trong hệ thống thông tin “Quản lý kho hàng” Chức năng “Bán hàng” sẽ bao gồm các công việc: kiểm tra tư cách khách hàng, kiểm tra hàng tồn kho, viết phiếu xuất, thanh toán, xuất kho. 136 2.3.4 Mô hình quan niệm về xử lý 137 2.4. MÔ HÌNH TỔ CHỨC CỦA HTTT 2.4.1. Khái niệm: Mô hình tổ chức được thiết lập từ hai mô hình: a. Mô hình tổ chức về dữ liệu: Mô hình này được hình thành do sự chuyển đổi các tập thực thể và các mối quan hệ trong mô hình ER. Ở mức tổ chức thông tin được mô tả theo giải pháp cơ sở dữ liệu và thực chất chính là quan hệ logic của chúng, nên mức tổ chức còn được gọi mức logic. b. Mô hình tổ chức về xử lý: Mô tả về mặt tổ chức của các xử lý. Mô hình này trả lời cho các câu hỏi: Ai?, Khi nào?, Ở đâu?, Như thế 138 nào? 2.4. MÔ HÌNH TỔ CHỨC CỦA HTTT Nhắc lại một số kiến thức về CSDL quan hệ  Cơ sở khoa học – Nền tảng - Lịch sử  Quan hệ  Lược đồ quan hệ  Phụ thuộc hàm  Phép tách: Bảo toàn thông tin Bảo toàn phụ thuộc hàm  Lý thuyết chuẩn hóa: 1NF, 2NF, 3NF, BCNF 139 2.4.2. Mô hình tổ chức dữ liệu Các quy tắc chuyển đổi từ mô hình ER sang mô hình dữ liệu quan hệ a. Chuyển một tập thực thể thành quan hệ Quy tắc 1: Mỗi tập thực thể trong mô hình quan niệm dữ liệu được chuyển thành một quan hệ: có tên là tên của tập thực thể; có thuộc tính và khóa là thuộc tính và khóa của tập thực thể và có thể có thêm thuộc tính là khóa ngoại nếu có. Nhân viên -Mã NV -Họ tên -Ngày sinh -Mã đơn vị Chuyển thành Nhân viên (Mã NV , Họ tên, Ngày sinh, Mã đơn vị) 140 2.4.2. Mô hình tổ chức dữ liệu Quy tắc 2: Tập thực thể tham gia vào mối quan hệ hai ngôi có cặp bản số (1,1) ----- (1,n) thì quan hệ sinh ra bởi tập thực thể ở nhánh (1,1) sẽ nhận khóa của tập thực thể ở nhánh (1,n) làm khóa ngoại Nhân viên -Mã NV -Họ Tên -Ngày Sinh (1,1) Thuộc (1,n) Đơn vị -Mã đơn vị -Tên đơn vị Chuyển thành Nhân viên (Mã NV , Họ Tên, Ngày Sinh, Mã đơn vị) Đơn vị (Mã đơn vị, Tên đơn vị) 2.4.2. Mô hình tổ chức dữ liệu Quy tắc 3: Chuyển tập thực thể trong mối quan hệ ISA  Tập thực thể con trong mối quan hệ ISA của mô hình quan niệm dữ liệu được chuyển thành một quan hệ, với tên là tên của tập thực thể con, có các thuộc tính là thuộc tính của tập thực thể con và nhận khóa của tập thực thể cha làm khóa. Trường hợp xảy ra quan hệ ISA trong một quan hệ ISA thì lược đồ quan hệ sinh ra từ tập thực thể "cháu" nhận thuộc tính khóa của tập thực thể "Ông" làm thuộc tính khóa. 2.4.2. Mô hình tổ chức dữ liệu Quy tắc 3: Chuyển tập thực thể trong mối quan hệ ISA Ví dụ: Bộ đội -Ngày NN -Ngày XN n is a 1 Nhân viên -Mã NV -Họ NV -Tên NV -Ngày sinh 1 is a n Đảng viên -Ngày VĐ -Ngày CT Chuyển thành Đảng viên Bộ đội Nhân viên (Mã NV,Ngày VĐ, Ngày CT) (Mã NV,Ngày NN, Ngày XN) (Mã NV,Họ NV, Tên NV, Ngày sinh) 2.4.2. Mô hình tổ chức dữ liệu a. Chuyển một mối quan hệ thành quan hệ Quy tắc 4: i. Mối quan hệ hai ngôi không có thuộc tính riêng, có cặp bản số (1,1) ---- (1,n) thì không chuyển thành một quan hệ. Huyện -Mã huyện -Tên huyện (1,1) H-T (1,n) Tỉnh -Mã tỉnh -Tên tỉnh Chuyển thành Huyện (Mã huyện, Tên huyện, Mã tỉnh) Tỉnh (Mã tỉnh,Tên tỉnh) 2.4.2. Mô hình tổ chức dữ liệu Quy tắc 4: ii. Mối quan hệ hai ngôi có thuộc tính riêng, có cặp bản số (1,1) ---- (1,n) thì chuyển thành một quan hệ, có tên là tên của mối quan hệ, có thuộc tính là thuộc tính của mối quan hệ và có khoá là khoá của các tập thực thể tham gia vào mối quan hệ. Cán bộ -Mã CB -Tên CB -HSL (1,1) Thuộc - Năm (1,n) chuyển thành Cán bộ Đơn vị Thuộc (Mã CB, Tên CB, HSL) (Mã ĐV, Tên ĐV) (Mã CB, Mã ĐV, Năm) Đơn vị -Mã ĐV -Tên ĐV 2.4.2. Mô hình tổ chức dữ liệu Quy tắc 5: Mối quan hệ hai ngôi có cặp bản số (1,n) ---- (1,n) hay mối quan hệ nhiều hơn hai ngôi (không phân biệt bản số) được chuyển thành một quan hệ: có tên là tên của mối quan hệ có khóa là khóa của tất cả các tập thực thể tham gia vào mối quan hệ có thuộc tính là các thuộc tính riêng của nó (nếu có). 2.4.2. Mô hình tổ chức dữ liệu Quy tắc 5: Mối quan hệ hai ngôi có cặp bản số (1,n) ---- (1,n) hay mối quan hệ nhiều hơn hai ngôi (không phân biệt bản số) được chuyển thành một quan hệ: có tên là tên của mối quan hệ có khóa là khóa của tất cả các tập thực thể tham gia vào mối quan hệ có thuộc tính là các thuộc tính riêng của nó (nếu có). 2.4.2. Mô hình tổ chức dữ liệu Định nghĩa Mô hình tổ chức dữ liệu, còn gọi là mô hình cơ sở dữ liệu, là toàn bộ các quan hệ của bài toán được chuyển đổi từ mô hình quan niệm dữ liệu theo các quy tắc chuyển đổi trên. Ví dụ: Mô hình tổ chức dữ liệu của HTTT “Quản lý kho hàng” 2.4.2. Mô hình tổ chức dữ liệu 2.4.2. Mô hình tổ chức dữ liệu Mô tả dưới dạng bảng 2.4.2. Mô hình tổ chức dữ liệu Nhắc lại các dạng chuẩn a. Mục đích của chuẩn hóa Chuẩn hóa dữ liệu là một quá trình chuyển một cấu trúc dữ liệu phức hợp thành các cấu trúc dữ liệu đơn giản, rõ ràng và nhằm các mục đích sau: Tối ưu hóa lưu trữ Tránh dư thừa dữ liệu Thông tin nhất quán Đảm bảo các phụ thuộc dữ liệu theo đúng mô hình mà vẫn không làm tổn thất thông tin. Nhắc lại các dạng chuẩn •Dạng chuẩn 1 (1NF) Một lược đồ quan hệ được gọi là ở dạng chuẩn 1 nếu mọi thuộc tính của nó là thuộc tính đơn (các thuộc tính không có nhu cầu phân rã trong các xử lý). Ví dụ: lược đồ quan hệ dưới đây không phải ở 1NF: SINHVIEN(MSSV, HTEN, QQUAN, SOTHICH) •Dạng chuẩn 2 (2NF) Một lược đồ quan hệ được gọi là ở dạng chuẩn 2 nếu nó là dạng chuẩn 1 và mọi thuộc tính không khoá phải phụ thuộc hàm đầy đủ vào khoá chính. Ví dụ: lược đồ quan hệ R(ABCD) với tập phụ thuộc hàm F={AB  C, B  D, C  D} không phải ở 2NF vì D không phụ thuộc hàm đầy đủ vào khóa. Nhắc lại các dạng chuẩn •Dạng chuẩn 3 (1NF) Phụ thuộc hàm bắc cầu: cho lược đồ quan hệ R và tập phụ thuộc hàm F xác định trên R; X, Y R, AR. Nếu ta có: X  Y , Y X, Y A và AXY thì ta nói A phụ thuộc hàm bắc cầu vào X. A được gọi là thuộc tính phụ thuộc bắc cầu, Y là các thuộc tính cầu. Định nghĩa 1: Lược đồ quan hệ R với tập phụ thuộc hàm F xác định trên R được gọi là ở 3NF nếu nó là 2NF và không tồn tại thuộc tính không khoá phụ thuộc hàm bắc cầu vào khoá. Định nghĩa 2: Lược đồ quan hệ R với tập phụ thuộc hàm F xác định trên R được gọi là ở 3NF nếu mọi phụ thuộc hàm XA đúng trong R, AX thì X phải là siêu 2.4.3. Chuẩn hoá và kiểm tra lại mô hình ER a. Trường hợp LĐQH chưa là 1NF: Khi một LĐQH chưa là 1NF thì nó có chứa thuộc tính lặp hoặc thuộc tính phức hợp. Nếu lược đồ có thuộc tính lặp thì ta tách thành hai lược đồ con: LĐ quan hệ 1: gồm các thuộc tính lặp và khoá chính xác định chúng. LĐ quan hệ 2: gồm các thuộc tính còn lại (đơn) và khoá chính. Ví dụ 2.4.3. Chuẩn hoá và kiểm tra lại mô hình ER 1NF 0NF SỐPHIẾUXUẤT NGÀY NGƯỜI MUA ĐẠILÝ SỐCMND ĐỊACHỈ MỤCĐÍCH TÊNHÀNG (lặp) MÃHÀNG (lặp) ĐƠNVỊ (lặp) ĐƠNGIÁ (lặp) SỐLƯỢNG (lặp) SỐPHIẾUXUẤT NGÀY NGƯỜI MUA ĐẠILÝ SỐCMND ĐỊACHỈ MỤCĐÍCH 1NF SỐPHIẾUXUẤT TÊNHÀNG MÃHÀNG ĐƠNVỊ ĐƠNGIÁ SỐLƯỢNG 156 2.4.3. Chuẩn hoá và kiểm tra lại mô hình ER a. Trường hợp LĐQH chưa là 2NF: Khi một LĐQH là 1NF nhưng không là 2NF thì trong quan hệ sẽ tồn tại thuộc tính không khoá phụ thuộc vào một bộ phận của khoá chính. Khi đó ta tách thành hai lược đồ quan hệ con: LĐ quan hệ 1: gồm các thuộc tính phụ thuộc không đầy đủ vào khoá chính và phần khoá bị phụ thuộc. LĐ quan hệ 2: gồm các thuộc tính còn lại và khoá chính Ví dụ 2.4.3. Chuẩn hoá và kiểm tra lại mô hình ER 2NF 1NF SỐPHIẾUXUẤT NGÀY NGƯỜI MUA ĐẠILÝ SỐCMND ĐỊACHỈ MỤCĐÍCH 1NF SỐPHIẾUXUẤT TÊNHÀNG MẪHÀNG ĐƠNVỊ ĐƠNGIÁ SỐLƯỢNG SỐPHIẾUXUẤT NGÀY NGƯỜI MUA ĐẠILÝ SỐCMND ĐỊACHỈ MỤCĐÍCH 2NF SỐPHIẾUXUẤT MẪHÀNG SỐLƯỢNG 2NF MẪHÀNG TÊNHÀNG ĐƠNVỊ ĐƠNGIÁ 158 2.4.3. Chuẩn hoá và kiểm tra lại mô hình ER a. Trường hợp LĐQH chưa là 3NF: Khi một quan hệ là 2NF nhưng không là 3NF thì sẽ tồn tại phụ thuộc hàm bắc cầu trong quan hệ. Khi đó ta tách thành hai lược đồ quan hệ con: LĐ quan hệ 1: gồm các thuộc tính phụ thuộc bắc cầu và thuộc tính cầu. LĐ quan hệ 2: gồm các thuộc tính còn lại và thuộc tính cầu. Ví dụ 3NF 2NF SỐPHIẾUXUẤT NGÀY NGƯỜI MUA ĐẠILÝ SỐCMND ĐỊACHỈ MỤCĐÍCH 2NF SỐPHIẾUXUẤT MẪHÀNG SỐLƯỢNG 2NF MẪHÀNG TÊNHÀNG ĐƠNVỊ ĐƠNGIÁ SỐPHIẾUXUẤT NGÀY SỐCMND MỤCĐÍCH 3NF NGƯỜI MUA ĐẠILÝ SỐCMND ĐỊACHỈ 3NF SỐPHIẾUXUẤT MẪHÀNG SỐLƯỢNG 3NF MẪHÀNG TÊNHÀNG ĐƠNVỊ ĐƠNGIÁ 160 Quá trình chuẩn hoá có thể mô tả bằng sơ đồ dưới đây. Quan hệ với các thuộc tính lặp Tách các thuộc tính lặp Chuẩn hoá thành 1NF Tách các phụ thuộc hàm bộ phận Chuẩn hoá thành 2NF Tách các phụ thuộc hàm bắc cầu Chuẩn hoá thành 3NF 161 Ví dụ: chuẩn hóa một chứng từ nhập trong HTTT “Quản lý kho hàng” 3NF Ví0NF dụ: chuẩn hóa một 1NF chứng từ nhập trong2NF HTTT “Quản lý kho hàng” SỐPHIẾUNHẬP MÃSỐ_NCC TÊN_NCC ĐỊACHỈ_NCC NGÀY TÊNHÀNG (lặp) MẪHÀNG (lặp) ĐƠNVỊTÍNH (lặp) ĐƠNGIÁ (lặp) SỐLƯỢNG (lặp) SỐPHIẾUNHẬP MÃSỐ_NCC TÊN_NCC ĐỊACHỈ_NCC NGÀY 1NF SỐPHIẾUNHẬP TÊNHÀNG MẪHÀNG ĐƠNVỊTÍNH ĐƠNGIÁ SỐLƯỢNG Chuẩn hóa chứng từ nhập SỐPHIẾUNHẬP MÃSỐ_NCC TÊN_NCC ĐỊACHỈ_NCC NGÀY 2NF SỐPHIẾUNHẬP MẪHÀNG SỐLƯỢNG 2NF MẪHÀNG TÊNHÀNG ĐƠNVỊTÍNH ĐƠNGIÁ SỐPHIẾUNHẬP MÃSỐ_NCC NGÀY 3NF MÃSỐ_NCC TÊN_NCC ĐỊACHỈ_NCC 3NF SỐPHIẾUNHẬP MẪHÀNG SỐLƯỢNG 3NF MẪHÀNG TÊNHÀNG ĐƠNVỊTÍNH ĐƠNGIÁ 163 Chuyển sang mô hình dữ liệu quan hệ 164 2.4.4. Mô hình tổ chức về xử lý Mục đích: Mô hình tổ chức về xử lý nhằm xác định rõ các công việc do ai làm, làm ở đâu, làm khi nào, làm theo phương thức nào? Các khái niệm a. Nơi làm việc: • một hệ thống thông tin quản lý được chia thành nhiều bộ phận, mỗi bộ phận được gọi là một nơi làm việc. • Nơi làm việc bao gồm: vị trí, con người, trang thiết bị tại nơi làm việc. b. Phương thức xử lý: là cách thức thực hiện công việc. Mỗi công việc có thể được thực hiện bởi một trong ba phương thức xử lý: • Xử lý thủ công: do con người trực tiếp thao tác trên đối tượng. • Xử lý tự động • Xử lý tương tác người -máy 2.4.4. Mô hình tổ chức về xử lý c. Biến cố ở mức tổ chức: là biến cố của hệ thống nhưng được đặt ở nơi phát sinh ra nó hay là nơi nhận biết nó. Ở mức tổ chức, một biến cố còn phải quan tâm: • Thời gian phản ứng: là thời gian tối đa được chờ đợi từ khi biến cố xuất hiện cho đến khi công việc được kích hoạt. • Tần suất: số lần xuất hiện lại biến cố trong một đơn vị thời gian. • Chu kỳ: là khoảng thời gian mà biến cố sẽ xuất hiện trở lại 2.4.4. Mô hình tổ chức về xử lý d. Bảng công việc Ở mức tổ chức công việc phải được xác định rõ: nơi làm việc, phương thức làm việc, tần suất và chu kỳ của nó. Các đặc trưng này được thể hiện trong bảng công việc sau đây: 2.5. MÔ HÌNH VẬT LÝ Mô hình vật lý sẽ là thể hiện cụ thể trên máy tính cho giải pháp dữ liệu đã được lựa chọn. Nó được thể hiện ở hai khía cạnh: cấu trúc dữ liệu cụ thể và phương thức truy nhập. Cũng như các mô hình đã khảo sát ở trước, mô hình vật lý được mô tả qua mô hình vật lý về dữ liệu và mô hình vật lý về xử lý. Thiết kế cơ sở dữ liệu vật lý là quá trình ánh xạ cấu trúc dữ liệu logic được xây dựng ở mô hình tổ chức dữ liệu vào mô hình bên trong hệ thống. 2.5. MÔ HÌNH VẬT LÝ 2.5.1. Mô hình vật lý về dữ liệu Thiết kế cơ sở dữ liệu vật lý Đa số các hệ thống thông tin hiện nay đều sử dụng một hệ quản trị cơ sở dữ liệu nào đó để tạo ra cơ sở dữ liệu cho hệ thống. Thiết kế cơ sở dữ liệu vật lý bao gồm các bước sau: Thiết kế cơ sở dữ liệu: mô tả các file dữ liệu, file chỉ mục,... sẽ được truy cập trong bộ nhớ máy tính như thế nào. Thiết kế hệ thống và cấu trúc chương trình: mô tả các chương trình và các mô đun chương trình khác nhau tương ứng với sơ đồ luồng dữ liệu và những yêu cầu đặt ra trong các bước phân tích trước. 2.5.1. Mô hình vật lý về dữ liệu Thiết kế cơ sở dữ liệu a. Thiết kế các trường Các yêu cầu về việc thiết kế các trường Tiết kiệm không gian nhớ Biểu diễn được mọi giá trị có thể Cài đặt các ràng buộc toàn vẹn của dữ liệu Đặt giá trị mặc định (Default) để giảm thiểu thời gian nhập dữ liệu Chọn kiểu dữ liệu và độ rộng của trường Khai báo độ rộng vừa đủ Chọn đúng kiểu dữ liệu Không làm phức tạp cấu trúc dữ liệu của hệ thống. 2.5.1. Mô hình vật lý về dữ liệu a. Thiết kế các trường Các yêu cầu về việc thiết kế các trường Tiết kiệm không gian nhớ Biểu diễn được mọi giá trị có thể Cài đặt các ràng buộc toàn vẹn của dữ liệu Đặt giá trị mặc định (Default) để giảm thiểu thời gian nhập dữ liệu Chọn kiểu dữ liệu và độ rộng của trường Khai báo độ rộng vừa đủ Chọn đúng kiểu dữ liệu Không làm phức tạp cấu trúc dữ liệu của hệ thống. 2.5.1. Mô hình vật lý về dữ liệu b. Thiết kế các file File giao dịch ( transaction file): là file dữ liệu tạm thời phục vụ cho các hoạt động hằng ngày của tổ chức. File này thường được thiết kế để phục vụ việc xử lý nhanh các tình huống có thể xảy ra. File làm việc (work file): file tạm thời để lưu kết quả trung gian, file này tự động xoá đi khi không cần thiết. File bảo vệ (protection file): file được thiết kế để lưu trữ các file khác nhau có nguy cơ bị sai hỏng trong quá trình làm việc. File lịch sử (history file): file chứa những dữ liệu cũ hiện không sử dụng, nhưng có thể sử dụng để làm một việc gì đó khi cần thiết. 2.5.1. Mô hình vật lý về dữ liệu c. Một ví dụ về thiết kế file dữ liệu Trong hệ thống thông tin “Quản lý kho hàng ” chúng ta đã có mô hình tổ chức dữ liệu của hệ thống là các quan hệ sau: c. Một ví dụ về thiết kế file dữ liệu c. Một ví dụ về thiết kế file dữ liệu c. Một ví dụ về thiết kế file dữ liệu 2.5.2. Mô hình vật lý về xử lý a. Mục đích: Trả lời cho câu hỏi cuối cùng là: các công việc hoạt động như thế nào? Từ mô hình tổ chức xử lý đã có, người phân tích sẽ tiến hành xem xét, biến các chức năng, công việc thành các đơn vị chương trình. Ứng với mỗi đơn vị chương trình này người phân tích phải viết một đặc tả chi tiết để chuẩn bị cho việc lập trình. 2.5.2. Mô hình vật lý về xử lý b. Mô đun xử lý Mô đun xử lý là thể hiện các công việc có liên quan với nhau và được thực hiện liền mạch nhằm thực hiện một chức năng nào đó. Thông thường một mô đun xử lý thể hiện một công việc có bản chất là cập nhật hoặc tra cứu dữ liệu và thao tác trên một nhóm dữ liệu nhỏ. Ví dụ, Chức năng làm phiếu xuất kho sẽ bao gồm các mô đun sau: Tra cứu danh sách các đại lý để kiểm tra khách hàng Kiểm tra hàng tồn kho Lấy yêu cầu để lập phiếu xuất và cập nhật tồn kho 2.5.2. Mô hình vật lý về xử lý ... c. Phân rã mô đun Mục đích: Để dễ dàng trong việc mã hoá, cài đặt chương trình và sửa chữa Phân rã mô đun nhỏ đến một mức nào đó có thể xuất hiện các mô đun chung, điều này sẽ giảm nhẹ công sức lập trình sau này Phân rã mô đun cũng gợi ra giao diện chọn chức năng theo kiểu thực đơn trong chương trình tổng thể 2.5.2. Mô hình vật lý về xử lý d. Sơ đồ phân rã chức năng Một mô đun có thể phân rã thành nhiều mô đun con. Mô đun con không thể phân rã thêm được nữa được gọi là mô đun sơ cấp. Việc phân rã này phải bảo đảm mối liên hệ giữa mô đun lớn với các mô đun con... Dùng sơ đồ phân rã chức năng để mô tả việc phân rã: 2.5.2. Mô hình vật lý về xử lý d. Sơ đồ tổng thể phân rã chức năng Dựa trên kết quả phân rã mô đun, người phân tích phải lên một sơ đồ tổng thể các chức năng để hướng đến cấu trúc hoá chương trình. Hiện nay có một vài quan điểm về việc gộp các mô đun thành từng nhóm chức năng trong chương trình. Gộp các mô đun theo hướng đối tượng: nhóm các chức năng theo dữ liệu hoặc theo tập thực thể Gộp các mô đun theo hướng chức năng: Gộp theo sự kiện là gộp theo hoạt động của hệ thống Gộp các mô đun theo sự tiện lợi: gộp các mô đun theo tiêu chuẩn tiện dụng hoặc theo người sử dụng cụ thể hoặc theo mạch công việc Gộp các mô đun theo hướng đối tượng: ĐÀO TẠO SINH VIÊN CẬP NHẬT LÝ LỊCH SINH VIÊN CẬP NHẬT ĐIỂM THI THÔNG KÊ KẾT QUẢ HỌC TẬP GIÁO VIÊN CẬP NHẬT LÝ LỊCH GIÁO VIÊN GHI NHẬN KHỐI LƯỢNG GDẠY THÔNG KÊ GIẢNG DẠY MÔN HỌC CẬP NHẬP MÔN HỌC LẬP CHƯƠNG TRÌNH ĐÀO TẠO PHÂN CÔNG GIẢNG DẠY Gộp các chức năng theo đối tượng Gộp các mô đun theo hướng chức năng: QUẢN LÝ KHO NHẬP HÀNG CẬP NHẬT SỐ LIỆU, CẬP NHẬT PHIẾU NHẬP, CẬP NHẬT TỒN KHO IN PHIẾU NHẬP XUẤT HÀNG CẬP NHẬT SỐ LIỆU, CẬP NHẬT PHIẾU XUẤT, CẬP NHẬT TỒN KHO IN PHIẾU XUẤT BÁO CÁO BÁO CÁO TỒN KHO CÂN ĐỐI KHO Gộp các chức năng theo hướng chức năng Gộp các mô đun theo mạch công việc Gộp các chức năng theo mạch công việc 2.5.2. Mô hình vật lý về xử lý e. Mô tả các mô đun Sau khi phân rã các mô đun, người phân tích phải chuyển giao các kết quả phân tích thiết kế cho người lập trình để chuẩn bị cài đặt. Các mô đun này phải được mô tả một cách chi tiết thông qua các biểu đồ được gọi là IPO Chart như sau: 2.5.2. Mô hình vật lý về xử lý e. Mô tả các mô đun 2.6. THIẾT KẾ GIAO DIỆN CỦA HỆ THỐNG 2.6.1. Mục đích Thiết kế môi trường giao tiếp giữa người sử dụng và hệ thống, thoả mãn điều kiện: Dễ sử dụng: Giao diện dễ sử dụng ngay cả với những người không có kinh nghiệm. Dễ học: Các chức năng gần gũi với tư duy của người sử dụng để họ có thể nắm bắt dễ dàng nhanh chóng. Tốc độ thao tác: Giao diện không đòi hỏi các thao tác phức tạp hay dài dòng, hỗ trợ các phím tắt, phím nóng. Dễ phát triển: Giao diện được xây dựng dễ dàng, sẵn sàng đáp ứng các yêu cầu thay đổi của người sử dụng. 2.6. THIẾT KẾ GIAO DIỆN CỦA HỆ THỐNG 2.6.2. Các loại giao diện Hộp hội thoại: Là các giao diện phục vụ cho việc kiểm soát hệ thống, trao đổi thông tin giữa người sử dụng và hệ thống, kiểm tra quyền truy nhập (Tên, mật khẩu), các hướng dẫn sử dụng hệ thống, các thông báo lỗi sử dụng hay lỗi hệ thống nếu có... Màn hình nhập dữ liệu: là các khung nhập liệu cho phép người sử dụng tiến hành nhập dữ liệu cho hệ thống hay cung cấp thông tin cho việc tìm kiếm dữ liệu, đưa ra các báo cáo theo yêu cầu. Màn hình báo cáo: là các biểu mẫu hiển thị các thông tin được thu thập và tổng hợp theo yêu cầu của người sử dụng. 2.6. THIẾT KẾ GIAO DIỆN CỦA HỆ THỐNG 2.6.3. Các nguyên tắc chung khi thiết kế giao diện Thông tin phản hồi: Luôn cung cấp thông tin phản hồi về công việc đang tiến hành. Thông tin trạng thái: cung cấp cho người sử dụng thông tin về trạng thái của hệ thống. Công việc tối thiểu: Hạn chế tối đa sự cố gắng không cần thiết của người sử dụng. Trợ giúp: Sẵn sàng cung cấp các trợ giúp khi người sử dụng cần. Dễ dàng thoát ra: Cho phép người sử dụng thoát ra khỏi hộp thoại dễ dàng bằng các thao tác quen thuộc. Làm lại: Cho phép huỷ bỏ các thao tác đã tiến hành, tăng khả năng thứ lỗi của chương trình. 2.7. THIẾT KẾ BÁO BIỂU Hình thức tài liệu xuất: Đĩa, màn hình, giấy in,.. Dạng tài liệu xuất Có cấu trúc: Bảng biểu, phiếu Không có cấu trúc: Trả lời theo nhu cầu Yêu cầu đối với tài liệu xuất Đầy đủ, chính xác Dễ hiểu, dễ đọc Kích thước tài liệu phải phù hợp, các mục phải bố trí hợp lý. được người sử dụng đồng ý 2.7. THIẾT KẾ BÁO BIỂU Các hình thức xuất tài liệu Khung in sẵn Không có khung in sẵn Cách trình bày một tài liệu: gồm 3 phần Phần đầu: Các tiêu đề Phần thân: Chứa nội dung cơ bản thường được gom thành nhóm và có mối liên hệ logic với nhau Phần cuối: ngày tháng, các chữ ký nếu có Có hai loại đưa ra Đơn chiếc Tập thể 2.8. THIẾT KẾ AN TOÀN HỆ THỐNG 2.7.1 Thiết kế kiểm soát: Mục đích: nhằm hạn chế các lỗi sau:  Lỗi từ các thông tin thu thập  Lỗi do các sự cố kỹ thuật gây ra  Sự thâm nhập trái phép của người trong và ngoài hệ thống.  Rủi ro về môi trường như: cháy, bão lụt,...  Đề xuất các biện pháp nhằm đảm bảo:  Tính chính xác  Tính an toàn  Tính riêng tư 2.8. THIẾT KẾ AN TOÀN HỆ THỐNG 2.7.2 Kiểm soát các xâm phạm từ phía con người a. Xác định những điểm hở của hệ thống: Điểm hở của hệ thống là điểm mà tại đó thông tin của hệ thống có khả năng bị truy cập trái phép, bị sửa đổi, lấy cắp, thậm chí phá huỷ thông tin, có thể gây thiệt hại lớn cho cơ quan chủ quản hệ thống. Trong một hệ thống các điểm hở có thể là: Luồng dữ liệu đi và đến tác nhân của hệ thống Luồng dữ liệu cắt ngang giữa phần thực hiện bằng máy tính và phần thực hiện thủ công. Các kho dữ liệu hoặc các tệp. Các đường truyền trên mạng (đối với hệ phân tán), ... 2.8. THIẾT KẾ AN TOÀN HỆ THỐNG b. Các biện pháp phòng ngừa, khắc phục: Bảo mật vật lý: khoá, chuông báo động Nhận dạng nhân sự Mật khẩu Tạo mật mã: mã hoá dữ liệu sang dạng mã không hiểu được. Người hiểu được phải có quy tắc giải mã. Bảo mật bằng gọi lại: sự truy nhập thực hiện một cách gián tiếp, qua một trạm kiểm soát, tương tự như gọi điện thoại qua tổng đài, OTP. Phân biệt riêng tư Gán cho mỗi loại người dùng một số quyền truy nhập nhất định. Cho phép một số người dùng được phép uỷ quyền tức giao quyền truy nhập cho người khác. HẾT CHƯƠNG 2 195 CHƯƠNG 3 PHÂN TÍCH VÀ THIẾT KẾ HTTT THEO HƯỚNG ĐỐI TƯỢNG ANALYSIS AND DESIGN INFORMATION SYSTEMS IN OBJECT ORIENTED PGS.TS. Nguyễn Mậu Hân Khoa CNTT-ĐHKH HUẾ nmhan2005@yahoo.com 196 NỘI DUNG 3.1 QUÁ TRÌNH PHÁT TRIỂN PHẦN MỀM HƯỚNG ĐỐI TƯỢNG 3.2. PHÂN TÍCH YÊU CẦU HỆ THỐNG 3.3. ĐẶC TẢ CÁC YÊU CẦU CỦA HT 3.4. THIẾT KẾ HƯỚNG ĐỐI TƯỢNG 3.5. CÁC NHÓM MẪU THIẾT KẾ 3.6. THIẾT KẾ GIAO DIỆN, BÁO BIỂU, AN TOÀN HỆ THỐNG 3.1 QUÁ TRÌNH PHÁT TRIỂN PHẦN MỀM HĐT Nhận xét: Quá trình xây dựng một sản phẩm phần mềm hoặc nâng cấp một sản phẩm đã có được gọi là quá trình phát triển phần mềm (Software Development Process). Quá trình phát triển một phần mềm là quá trình xác định:  làm cái gì (WHAT?),  làm ở đâu (WHERE?)  làm khi nào (WHEN?)  làm như thế nào (HOW?). 198 3.1 QUÁ TRÌNH PHÁT TRIỂN PHẦN MỀM HĐT Có 5 bước chính cần thực hiện trong quá trình phát triển phần mềm theo hướng đối tượng: 1. Nghiên cứu hiện trạng và xác định các yêu cầu 2. Phân tích hệ thống 3. Thiết kế hệ thống 4. Lập trình và kiểm thử hệ thống 5. Vận hành và bảo trì hệ thống. 199 3.1. QUÁ TRÌNH PHÁT TRIỂN PHẦN MỀM HĐT ... 3.1.1 Nghiên cứu hiện trạng và xác định các yêu cầu Từ các yêu cầu của khách hàng chúng ta xác định được mục tiêu của phần mềm cần phát triển. Thường đó là các yêu cầu chức năng về những gì mà hệ thống phải thực hiện. Ở giai đoạn này chưa cần chỉ ra các chức năng đó thực hiện như thế nào. Việc xác định đúng và đầy đủ các yêu cầu của bài toán là nhiệm vụ rất quan trọng, nó làm cơ sở cho các bước tiếp theo. Do đó, phải đặc tả được các yêu cầu của hệ thống (Sử dụng các Use Case để đặc tả các yêu cầu). 200 3.1.1 Nghiên cứu hiện trạng và xác định các yêu cầu Các công việc cần phải làm trong giai đoạn này: Hiểu rõ miền xác định của bài toán (Domain Understanding) Nắm bắt các yêu cầu của khách hàng/người sử dụng Phân loại (Classification): theo tầm quan trọng hay theo chức năng chính của những người sử dụng. Thẩm định (Validation): Kiểm tra xem các yêu cầu có thống nhất với nhau và đầy đủ không, đồng thời tìm cách giải quyết các mối mâu thuẫn giữa các yêu cầu nếu có. 201 3.1.1 Nghiên cứu hiện trạng và xác định các yêu cầu Nghiên cứu khả thi (Feasibility Study): Tính khả thi của một dự án tin học phải được thực hiện dựa trên các yếu tố bao gồm các khía cạnh:  tài chính  chiến lược  thị trường  con người, đối tác  kỹ thuật  công nghệ và phương pháp mô hình hoá, v.v. 202 3.1.1 Nghiên cứu hiện trạng và xác định các yêu cầu Tóm lại, giai đọan nghiên cứu sơ bộ, cần xem xét: Các yêu cầu của NSD, những nguồn tài nguyên có thể sử dụng, công nghệ, các ý tưởng của người sử dụng đối với hệ thống mới. Có thể thực hiện thảo luận, nghiên cứu, xem xét khía cạnh thương mại, phân tích khả năng lời-lỗ Thường trong giai đoạn này người ta cũng tiến hành tạo một phiên bản thô của lịch trình và kế hoạch sử dụng tài nguyên. Kết quả của giai đoạn nghiên cứu sơ bộ là bản Báo Cáo Kết Quả Nghiên Cứu Tính Khả Thi. Khi hệ thống tương lai được chấp nhận dựa trên bản báo cáo này cũng là lúc giai đoạn Phân tích bắt 203 đầu. 3.1.1 Nghiên cứu hiện trạng và xác định các yêu cầu Mục đích cụ thể của bước xác định yêu cầu: Đi đến thỏa thuận với khách hàng và người dùng về các chức năng của hệ thống-Những gì mà hệ thống phải thực hiện Cho phép các System Developer hiểu rõ hơn các yêu cầu đối với hệ thống Phân định ranh giới của hệ thống Cung cấp cơ sở để hoạch định nội dung kỹ thuật của các vòng lặp Xác định giao diện người dùng cho hệ thống 204 3.1.1 Nghiên cứu hiện trạng và xác định các yêu cầu Khi nào thì kết thúc giai đoạn này? Khách hàng/người sử dụng (NSD) và những người phát triển đã hiểu hoàn toàn hệ thống chưa? Đã nêu được đầy đủ các yêu cầu về chức năng (dịch vụ), đầu vào/ra và những dữ liệu cần thiết chưa? 205 3.1.1 Nghiên cứu hiện trạng và xác định các yêu cầu Mối quan hệ giữa các công việc trong pha phân tích các yêu cầu 206 3.1.2 Phân tích hướng đối tượng  Là giai đoạn quan trọng của quá trình phát triển phần mềm, trong đó mô hình khái niệm phải được mô tả chính xác. Phân tích hướng đối tượng tập trung vào việc tìm kiếm các đối tượng, khái niệm trong lĩnh vực bài toán và xác định mối quan hệ của chúng trong hệ thống. Phân tích hệ thống cần trả lời các câu hỏi sau:  Hệ thống gồm những thành phần, bộ phận, đối tượng nào?  Hệ thống cần thực hiện những cái gì? Kết quả chính của việc phân tích hệ thống hướng đối tượng là: biểu đồ lớp, biểu đồ trạng thái, biểu đồ trình tự, biểu đồ cộng tác và biểu đồ thành phần. 207 3.1.2 Phân tích hướng đối tượng ... Tóm lại, mục tiêu cụ thể của giai đoạn phân tích là: Xác định hệ thống cần phải làm gì. Nghiên cứu đầy đủ các chức năng cần cung cấp và những yếu tố liên quan. Xây dựng một mô hình nêu bật bản chất vấn đề từ một hướng nhìn có thực (trong đời sống thực). Nhờ chuyên gia lĩnh vực đánh giá, góp ý. Kết quả của giai đoạn phân tích là bản Đặc Tả Yêu Cầu (Requirements Specifications). 208 3.1.3 Thiết kế hướng đối tượng  Hệ thống được tổ chức thành tập các đối tượng tương tác với nhau và mô tả được cách để hệ thống thực thi nhiệm vụ của bài toán.  Giai đoạn này cần trả lời các câu hỏi: Hệ thống làm như thế nào? (HOW?)  Trong hệ thống có những lớp đối tượng nào, trách nhiệm của chúng như thế nào?  Các đối tượng tương tác với nhau như thế nào?  Các nhiệm vụ mà mỗi lớp đối tượng phải thực hiện như thế nào?  Dữ liệu nghiệp vụ và các giao diện được xây dựng như thế nào?  Kiến trúc và cấu hình của hệ thống như thế nào? 209 3.1.3 Thiết kế hướng đối tượng Tóm lại, nhiệm vụ chính của thiết kế hệ thống là: Xây dựng các thiết kế chi tiết mô tả các thành phần của hệ thống ở mức cao hơn (khâu phân tích) để phục vụ cho việc cài đặt. Đưa ra được kiến trúc của hệ thống để đảm bảo cho hệ thống có thể thay đổi, có tính mở, dễ bảo trì, thân thiện với NSD, ... Những kết quả trên được thể hiện trong các biểu đồ: biểu đồ lớp (chi tiết), biểu đồ hành vi, biểu đồ thành phần và biểu đồ triển khai. Trong các tài liệu thiết kế phải mô tả cụ thể những thành phần nào, làm những gì và làm như thế nào. 210 3.1.3 Thiết kế hướng đối tượng Một số các công việc thường được thực hiện trong giai đoạn thiết kế: Thiết kế database Thiết kế các chức năng, thủ tục mô tả các quá trình xử lý từ input đến output. Thiết kế các forms nhập dữ liệu tùy theo các thành phần dữ liệu cần nhập. Thiết kế các reports và những output mà hệ thống mới phải sản sinh Kết quả giai đoạn thiết kế là bản Đặc Tả Thiết Kế (Design Specifications). Bản Đặc Tả Thiết Kế Chi Tiết sẽ được chuyển sang cho các lập trình viên để thực hiện giai đoạn xây 211 dựng phần mềm. 3.1.4 Lập trình và kiểm thử hệ thống Trong giai đoạn này, mỗi thành phần đã được thiết kế sẽ được lập trình thành những mô đun chương trình (chương trình con). Mỗi mô đun này sẽ được kiểm chứng hoặc thử nghiệm theo các tài liệu đặc tả của giai đoạn thiết kế.  Công việc này được mô tả như sau: Quá trình xây dựng phần mềm 212 3.1.4 Lập trình và kiểm thử hệ thống Phần kiểm thử được chia thành hai bước chính: Thử nghiệm đơn vị: Người viết code chạy thử các phần chương trình của mình với dữ liệu giả (test/dummy data). Mục đích chính trong giai đoạn kiểm thử này là xem chương trình có cho ra những kết quả mong muốn. Giai đoạn thử nghiệm đơn vị còn được gọi là “Kiểm thử hộp trắng" (White Box Testing) 213 3.1.4 Lập trình và kiểm thử hệ thống Kiểm thử đơn vị độc lập Công việc này do một thành viên khác đảm trách. Cần chọn người không có liên quan trực tiếp đến việc viết code của đơn vị chương trình cần thử nghiệm để đảm bảo tính “độc lập”. Kiểm thử hệ thống Sau khi các thủ tục đã được thử nghiệm riêng, cần phải thử nghiệm toàn bộ hệ thống. Mọi thủ tục được tích hợp và chạy thử, kiểm tra xem mọi chi tiết ghi trong Đặc Tả Yêu Cầu. Dữ liệu kiểm thử cần được chọn lọc đặc biệt, kết quả cần được phân tích để phát hiện các sai sót so 214 với bản thiết kế. 3.1.5 Vận hành và bảo trì hệ thống Cài đặt hệ thống phần mềm trong môi trường sử dụng của khách hàng Chỉnh sửa phần mềm đúng như những gì đã thiết kế và yêu cầu của người sử dụng Về bảo trì phần mềm:  Nâng cao hiệu quả của hệ thống  Đảm bảo sự thích nghi đối với sự thay đổi của môi trường của hệ thống hay sự sửa đổi cho phù hợp với những thay đổi của chính sách, qui chế mới 215 3.1. QUÁ TRÌNH PHÁT TRIỂN PHẦN MỀM HĐT ... 216 Qui trình xây dựng các biểu đồ UML trong phân tích, thiết kế hệ thống HĐT 3.2. PHÂN TÍCH YÊU CẦU HỆ THỐNG BÀI TOÁN 1: HỆ THỐNG BÁN HÀNG (HBH) Một Công ty muốn xây dựng HTTT để phục vụ và quản lý các hoạt động kinh doanh. Công ty có nhiều điểm bán hàng đầu cuối (POST: Point Of Sale Terminal), đó là những cửa hàng, siêu thị, ... Do đó hệ thống cần phải ghi nhận các hoạt động bán hàng và xử lý các công việc thanh toán với khách hàng, chủ yếu khách hàng mua lẻ. Ngoài ra hệ thống còn giúp lãnh đạo Công ty theo dõi được các hoạt động kinh doanh, tự động kiểm kê các mặt hàng tồn đọng trong kho, các mặt hàng bán chạy,... để hỗ trợ ra quyết định trong các hoạt động kinh doanh của Công ty. Trong mỗi cửa hàng đầu cuối đều có các thiết bị phần cứng như: máy tính, máy đọc mã vạch và phần mềm hệ thống để chạy hệ thống sẽ được xây dựng”. 217 Mục đích của hệ thống HBH  Tăng nhanh hoặc tự động hoá việc bán hàng, ghi nhận các mặt hàng: loại sản phẩm, mô tả sản phẩm, số lượng và xác định giá bán, tính tiền, v.v., đáp ứng mọi yêu cầu của khách hàng,  Thanh toán nhanh với khách hàng bằng các phương thức: tiền mặt, thẻ tín dụng, hay séc.  Phân tích, xử lý các kết quả bán hàng nhanh và chính xác để hỗ trợ quyết định trong các hoạt động kinh doanh.  Thực hiện tự động kiểm kê các mặt hàng trong kho, theo dõi được những mặt hàng bán chạy, những mặt hàng tồn kho để có được những quyết định kịp thời trong kinh doanh.  Tóm lại, hệ thống xây dựng nhằm tự động hoá các hoạt động kinh doanh, phục vụ khách hàng nhanh hơn, tốt hơn và rẻ hơn. 218 Trong giai đoạn phân tích Đối với bài toán 1, giai đoạn OOA sẽ nhận biết được các đối tượng như: - Cửa hàng, siêu thị - Khách hàng - Mặt hàng - Người thanh toán - ... Tương tác và quan hệ giữa các đối tượng trên là: - Khách hàng chọn hàng - Khách hàng trả tiền - ... 219 BÀI TOÁN 2: HỆ THỐNG ATM Ngân hàng VietinBank có các máy rút tiền tự động (ATM) đặt ở những vị trí khác nhau trong thành phố. Chúng được nối với Trung tâm tại trụ sở Ngân hàng thông qua hệ thống mạng máy tính. Máy tính trung tâm lưu trữ và quản trị CSDL khách hàng, xử lý những công việc chuyên ngành của ngân hàng và yêu cầu ATM trả tiền. Máy rút tiền tự động bao gồm máy đọc thẻ từ, màn hình và bàn phím để tương tác với người sử dụng. Khách hàng có thể rút tiền tự động, chuyển tiền, xem số dư trong tài khoản và thực hiện thanh toán với hệ thống tín dụng của Ngân hàng. 220 BÀI TOÁN 2: HỆ THỐNG ATM ... Trong những trường hợp đặc biệt như bị mất thẻ, hay muốn thay đổi số thẻ thì khách hàng có thể thay đổi mật khẩu cá nhân (PIN) và tương tự như vậy, khi khách hàng báo bị mất thẻ thì Ngân hàng cũng có thể quyết định thay đổi số thẻ và báo cho khách hàng biết để đảm bảo không cho những người không phải chủ sở hữu rút được tiền. 221 BÀI TOÁN 3: HỆ THỐNG ĐĂNG KÝ HỌC PHẦN  Đại học Huế cần xây dựng một hệ thống thông tin giúp sinh viên (SV) đăng ký học phần (HP) mới. Hệ thống cho phép SV đăng ký học phần và xem điểm từ một máy tính cá nhân được kết nối vào hệ thống mạng của ĐHH. Các giáo viên cũng có thể truy cập vào hệ thống này để biết được lớp dạy và nhập điểm cho các HP.  Vào đầu mỗi học kỳ SV dựa vào TKB và giáo viên sẽ phụ trách môn học để đăng ký HP được giảng dạy trong học kỳ đó. Thông tin về mỗi HP bao gồm: tên HP, tên giáo viên giảng dạy, Khoa chuyên môn, các HP tiên quyết,... để giup SV đăng ký.  Hệ thống mới cho phép SV chọn 4 học phần được mở trong học kỳ tới. SV cũng có thể chọn 2 HP tự chọn trong trường hợp không thể đăng ký theo nguyện vọng chính.  Số tối thiểu và tối đa SV cho mỗi HP là 30 và 60. Các HP có ít hơn 30 SV sẽ bị hủy. Đầu mỗi HP SV có một khoảng thời gian để thay đổi các HP đã đăng ký. BÀI TOÁN 3: HỆ THỐNG ĐĂNG KÝ HỌC PHẦN  Khi quá trình đăng ký hoàn tất cho mỗi SV hệ thống sẽ gửi thông tin đến ngân hàng VietinBank để SV có thể đóng học phí qua thẻ ATM  Nếu một lớp bị hết chỗ trong quá trình đăng ký, SV sẽ được thông báo về sự thay đổi trước khi xác nhận đăng ký HP  Cuối học kỳ SV có thể truy cập vào hệ thống để xem phiếu điểm. Hiễn nhiên, mỗi SV được hệ thống cung cấp một tài khoản cá nhân để bảo mật thông tin của mình.  Các giáo viên có thể truy cập vào hệ thống để biết TKB và danh sách SV của HP sẽ dạy  Giáo viên có nhiệm vụ nhập các điểm QTHT, điểm thi, kiểm tra sau khi HP kết thúc 223 Các công cụ để mô tả yêu cầu người dùng 224 Các chức năng, nhiệm vụ của hệ thống là gì? Chức năng của hệ thống là những gì mà hệ thống được yêu cầu thực hiện. Các chức năng có thể phân loại theo lĩnh vực chức năng để tránh sự nhầm lẫn giữa chúng. Các chức năng hệ thống có thể chia thành:  Chức năng hiển (Evident): chọn hàng, tính tiền,...  Chức năng ẩn (Hiddent): cập nhật dữ liệu, tồn kho  Chức năng tuỳ chọn (optional): tăng mức độ thân thiện của hệ thống nhưng không ảnh hưởng tới giá trị cũng như các chức năng khác. 225 Các chức năng, nhiệm vụ của hệ thống là gì? Chú ý: Các chức năng của hệ thống phải được chia thành các nhóm theo các mối liên hệ với nhau. Dựa vào cách phân chia các chức năng để sau này chia nhỏ hệ thống thành các gói, các hệ thống con trong quá trình phân tích và thiết kế hệ thống. Ví dụ: Các chức năng của hệ thống HBH có thể chia thành hai nhóm chính:  Các chức năng bán hàng  Các chức năng thanh toán. 226 Bảng liệt kê các chức năng 227 Bảng liệt kê các chức năng  Các chức năng hệ thống thường được đánh số theo các qui tắc tham chiếu (Reference Rule) để tiện cho việc sử dụng tham chiếu trong các mục phân tích sau này. 228 3.3. ĐẶC TẢ CÁC YÊU CẦU CỦA HỆ THỐNG 1. Use Case Use Case mô tả tập các hoạt động của hệ thống theo quan điểm của các tác nhân (Actor). Nó mô tả các yêu cầu của hệ thống và trả lời cho câu hỏi: Hệ thống phải làm gì (What ?) Một Use Case có thể bao gồm nhiều biểu đồ Use Case Use Case mô tả rõ ràng và nhất quán về việc hệ thống cần phải làm gì (What?). Use Case mô tả các yêu cầu về mặt chức năng của hệ thống -các chức năng này có từ sự thỏa thuận giữa khách hàng và nhóm phát triển phần mềm. 229 2. Mục tiêu của Use Case Làm cơ sở để:  người phân tích viên hiểu  người thiết kế xây dựng các kiến trúc  người lập trình cài đặt các chức năng  người kiểm thử kiểm tra các kết quả thực hiện của hệ thống. Làm công cụ giao tiếp cho những người phát triển, đảm bảo hệ thống thỏa mãn đúng những yêu cầu của Users 230 3. Ai cần Use Case? - Để làm gì? Nhà phát triển cần đến các mô hình Use Case để hiểu hệ thống cần phải làm gì, và qua đó có được một nền tảng cho những công việc tương lai Customers/Users quan tâm đến Use Case vì nó đặc tả chức năng của hệ thống và mô tả xem hệ thống có thể và sẽ được sử dụng như thế nào. Tester cần đến Use Case để thử nghiệm và kiểm tra xem hệ thống có đảm bảo sẽ thực hiện đúng chức năng đã được đặc tả trong giai đoạn đầu. Những người liên quan đến những hoạt động liên kết đến chức năng của hệ thống như nhóm tiếp thị, bán hàng, hỗ trợ khách hàng và nhóm soạn thảo tài liệu.231 4. Cách thể hiện một biểu đồ Use Case Một biểu đồ Use Case thể hiện: Hệ thống Actors Hệ thống Tác nhân Use Case. Ví dụ biểu đồ Use Case trong UML: Use Case 232 a. Hệ thống Hệ thống là một thành phần của Use Case nên ranh giới của hệ thống cần phải được xác định rõ ràng. Một hệ thống không nhất thiết là một hệ thống phần mềm; nó có thể là một chiếc máy, hoặc là một doanh nghiệp. Ký hiệu của hệ thống: hình chữ nhật có kèm theo tên hệ thống System Boundary UseCase 233 b. Tác nhân Người hoặc một vật nào đó tương tác với hệ thống, sử dụng hệ thống. Một tác nhân có thể là người, thiết bị mà cũng có thể là một hệ thống khác. Tên gọi của tác nhân được mô tả bằng các danh từ (chung) và thường phải đặc tả được vai trò của nó đối với hệ thống. Một tác nhân là một dạng tập thực thể (một lớp) chứ không phải một thực thể. Tác nhân mô tả và đại diện cho một vai trò, chứ không phải là một người sử dụng thật sự và cụ thể của hệ thống. 234 c. Bảng chú giải  Dùng để giải thích các khái niệm, định nghĩa, thuật ngữ, ngôn ngữ công việc trong hệ thống 235 5. Cách xác định các tác nhân và các Use Case a. Để xác định các tác nhân là dựa trên các câu trả lời những câu hỏi sau: Ai sẽ sử dụng các chức năng chính của hệ thống? Ai cần sự hỗ trợ của hệ thống để thực hiện các công việc hàng ngày? Ai quản trị, bảo dưỡng để đảm bảo cho hệ thống hoạt động thường xuyên? Hệ thống quản lý, sử dụng những thiết bị nào? Hệ thống cần tương tác với những bộ phận, hệ thống nào khác? Ai hay cái gì quan tâm đến kết quả xử lý của hệ thống? 236 5. Cách xác định các tác nhân và các Use Case b. Có hai phương pháp để xác định các Use Case  Xác định Use Case dựa vào các tác nhân: Xác định những tác nhân liên quan đến hệ thống hoặc đến tổ chức, nghĩa là tìm và xác định những tác nhân là NSD hay những hệ thống khác tương tác với hệ thống cần xây dựng. Với mỗi tác nhân, tìm những tiến trình (chức năng) được khởi đầu, hay giúp các tác nhân thực hiện, giao tiếp/tương tác với hệ thống. 237 Xác định các Use Case và các sự kiện Xác định những sự kiện bên ngoài có tác động đến hệ thống hay hệ thống phải trả lời. Tìm mối liên quan giữa các sự kiện và các UC. Hãy trả lời những câu hỏi sau để tìm ra các UC:  Nhiệm vụ chính của các tác nhân là gì?  Tác nhân cần phải đọc, ghi, sửa đổi, cập nhật, hay lưu trữ thông tin hay không?  Những thay đổi bên ngoài hệ thống thì tác nhân có cần phải thông báo cho hệ thống hay không?  Những tác nhân nào cần được thông báo về những thay đổi của hệ thống?  Hệ thống cần có những đầu vào/ra nào? từ đâu và đến đâu? 238 Ví dụ1: Xác định các Actor và Use Case của HBH a. Xác định các actor: Danh sách các actor + Khách hàng: là những người được hệ HBH phục vụ, là khách hàng. + Người bán hàng: những người cần sử dụng chức năng bán hàng của hệ thống để thực hiện nhiệm vụ của mình. + Người quản lý: những người được phép khởi động hay kết thúc cả hệ thống tại các điểm bán hàng đầu cuối. + Người quản trị hệ thống: có thể bổ sung, thay đổi những NSD. 239 Ví dụ1: Xác định các Actor và Use Case của HBH ... b. Xác định các Use Case: Danh sách các Use Case  Bán hàng, mua hàng (Buy Items) là nhiệm vụ của hệ thống HBH liên quan trực tiếp tới khách hàng và người bán hàng. Use Case Use Case này liên quan đến cả người bán hàng và khách hàng.  Thanh toán, trả tiền mua hàng hay thu tiền là chức năng của hệ thống phải thực hiện để thanh toán với khách hàng bằng phương thức mà họ lựa chọn: trả tiền mặt, thẻ tín dụng, hay trả bằng séc. Use Case này cũng liên quan đến cả người bán hàng và khách hàng. 240 Ví dụ1: Xác định các Actor và Use Case của HBH ... b. Xác định các Use Case: Danh sách các Use Case  Đăng nhập hệ thống (Log in): Người bán hàng cần sử dụng để nhập vào hệ thống và sử dụng nó để bán hàng.  Khởi động, đóng hệ thống: Người quản lý thực hiện để khởi động hay kết thúc hoạt động của hệ thống.  Bổ sung NSD mới, Loại bỏ NSD: Người quản trị hệ thống có thể bổ sung thêm người sử dụng mới hay loại bỏ những NSD không còn cần sử dụng hệ thống. 241 Các Actor và Use Case của hệ thống HBH Tác nhân Người bán hàng (Cashier) Use Case Đăng nhập hệ thống (Log In) Thu tiền bán hàng (Cash Out) Khách hàng (Customer) Mua hàng (Buy Items) Thu tiền, thanh toán (Refund Items) Người quản lý (Manager) Hay gian hàng trưởng Quản trị hệ thống (System Adminitrator) Khởi động hệ thống (Start Up) để người bán hàng có thể sử dụng HT. Đóng hệ thống khi hết giờ Bổ sung NSD (Add New Users) Loại bỏ NSD (Delete User) 242 Biểu đồ Use Case của hệ thống HBH 243 Ví dụ2: Các Actor và Use Case của hệ thống ATM a. Xác định các actor: Danh sách các actor Khách hàng: những đối tượng chính mà hệ thống ATM phục vụ việc rút/gửi tiền tự động. Hệ thống tín dụng: bộ phận tín dụng của Ngân hàng quản lý và phục vụ tín dụng cho khách hàng. Nhân viên ngân hàng: những người được quyền thay đổi PIN của khách hàng khi cần thiết, chuyển tền vào máy. 244 Ví dụ2: Các Actor và Use Case của hệ thống ATM b. Xác định các Use Case: Danh sách các Use Case Rút tiền: những khách hàng có tiền trong tài khoản của Ngân hàng, khi cần rút tiền thì nhập số PIN, nhập số lượng tiền cần rút. Chuyển tiền: khách hàng có thể chuyển tiền từ một tài khoản khác về tài khoản của mình hoặc gửi tiền trực tiếp vào tài khoản. Xem số dư trong tài khoản: khách hàng biết được mình còn bao nhiêu tiền trong tài khoản. Thanh toán: khách hàng có thể sử dụng để thanh toán với hệ thống tín dụng của Ngân hàng. Thay đổi PIN: khách hàng, hoặc nhân viên Ngân hàng 245 có thể thay đổi PIN khi cần thiết. Biểu đồ Use Case của hệ thống ATM 246 6. Đặc tả các Use Case b. Mục đích : Để hiểu rõ hơn về tiến trình xử lý các yêu cầu của hệ thống. Mẫu đặc tả Use Case có dạng: Tên Use Case: tên của Use Case bắt đầu bằng động từ, gợi nhớ. Các tác nhân: danh sách các tác nhân liên quan đến Use Case.  Mô tả mục đích :Mô tả tóm tắt tiến trình xử lý công việc cần thực hiện. Tham chiếu: Các chức năng, Use Case và những hệ thống liên quan. 247 Ví dụ Use Case: Bán hàng (Buy Items) Tác nhân: Khách hàng, người bán hàng. Mô tả: Khách hàng sau khi đã chọn đủ các mặt hàng cần mua để ở trong giỏ hàng thì đưa hàng đến quầy thu tiền. Người bán (cashier) lần lượt ghi nhận các mặt hàng trong giỏ hàng của khách và thu tiền. Sau khi thanh toán xong khách hàng được mang số hàng đã mua đi ra khỏi cửa hàng. Tham chiếu tới: Các chức năng R1.1, R1.2, R1.3, R1.6, R1.7, R1.8, R3.1, R3.2, R3.3. 248 Ví dụ Use Case cho chức năng Bán hàng (Buy items) Bán hàng Khách hàng Người bán hàng 249 Ví dụ Use Case: Thu tiền (Cash Out) Tác nhân: Khách hàng, người bán hàng. Mô tả: Khách hàng có thể trả tiền theo 3 phương thức: 1. Trả tiền mặt (Pay by Cash) 3. Trả bằng thẻ tín dụng (Pay by Credit) 3. Trả bằng séc (Pay by Check) Người bán nhận tiền mặt/thẻ tín dụng/sec rồi thanh toán tiền thừa cho khách hàng sau khi thẻ tín dụng/sec đã được kiểm duyệt. Tham chiếu tới: Các chức năng R1.1, R1.2, R1.3, R1.9, R3.1, R3.2, R3.3. 250 Use Case cho chức năng Thu tiền (Cash Out) Pay by Check Bộ phận kiểm duyệt thẻ Bộ phận kiểm duyệt sec Pay by Credit <<uses>> Pay by Cash <<uses>> <<uses>> Khách hàng Cash Out Người bán hàng 251 Use Case cho chức năng Thu tiền (Cash Out) Chú ý: Ngoài những đặc tả nêu trên, ta còn có thể xây dựng các kịch bản (scenario) hành động để mô tả các sự kiện xảy ra trong hệ thống. Mỗi kịch bản có thể mô tả theo hai luồng:  Luồng thực hiện của các tác nhân  Luồng tương ứng với hệ thống. (Xem thêm phần xây dựng kịch bản ở trang 57, 58 của giáo trình) 252 7. Mối quan hệ giữa các Use Case Giữa các Use Case có ba quan hệ chính:  Quan hệ mở rộng (extends) <<extends>>  Quan hệ sử dụng (uses/include) <<uses>>  Quan hệ theo nhóm hay theo gói (package). 253 8. Checkpoint - Use Case Model Kiểm tra đã hoàn tất việc xác định yêu cầu của người dùng chưa? a. Kiểm tra về Use Case Model và Use Case 1.Use-case model có dễ hiểu không? 2.Sau khi nghiên cứu Use Case model, bạn có hình thành được một ý tưởng rõ ràng về các chức năng của hệ thống và cách thức mà chúng liên hệ với nhau? 3.Đã xác định hết các actor chưa? Tất cả các yêu cầu chức năng được thỏa mãn chưa? 4.Use-case model có chứa các hành vi vô dụng nào không? 8. Checkpoint 5. Việc chia các Use Case thành các Package có xác đáng không? 6. Mỗi Use Case có ít nhất một actor tương tác? 7. Các Use Case có độc lập với nhau? 8. Tồn tại các Use Case có các luồng sự kiện và các hành vi tương tự nhau không? 9. Liệu các Use Case có tên duy nhất, gợi nhớ, dễ hiểu để chúng không bị nhầm lẫn trong các giai đọan sau? 10.Các customers và users có hiểu tên và mô tả của các Use Case không? 8. Checkpoint - Actors b. Kiểm tra các Actors 1. Đã xác định hết các actor chưa? 2. Mỗi actor có tham gia vào ít nhất một Use Case? 3. Mỗi actor thật sự có một vai trò (role)? Có cần ghép hoặc tách các actor không? 4. Có tồn tại 2 actor đóng cùng một vai trò đối với 1 Use Case không? 5. Tên của các actor có gợi nhớ không? Users và customers có hiểu tên của chúng? 8. Checkpoint - Glossary c. Kiểm tra các Glossary 1. Các thuật ngữ có định nghĩa rõ ràng và súc tích? 2. Mỗi thuật ngữ có sử dụng đâu đó trong các mô tả Use Case? 3. Các thuật ngữ có được sử dụng hợp lý trong các mô tả ngắn về các actors và Use Case? 3.4. THIẾT KẾ HƯỚNG ĐỐI TƯỢNG 3.4.1. Vai trò của thiết kế  Thiết kế là 1 công đoạn quan trọng trong qui trình phát triển phần mềm; là bước chuyển tiếp của giai đoạn phân tích và là bước chuẩn bị trước khi tiến hành xây dựng phần mềm.  Thiết kế là tiến trình mà ở đó xuất hiện mô hình các kiểu mẫu của phần mềm. Các mô hình này chính là những nét phác thảo nên phần mềm. Nó cho chúng ta biết phần mềm chúng ta đang xây dựng là gì, đã có, đang có và sẽ có những gì.  Thiết kế là nơi mà ta có thể trả lời câu hỏi :  “Liệu phần mềm này có thể chạy được không?”  “Phần mềm có thể đáp ứng được các yêu cầu của khách hàng hay không?” mà không cần đợi đến công đoạn phát triển sau. 258 3.4. THIẾT KẾ HƯỚNG ĐỐI TƯỢNG ... 3.4.2. Các nguyên lý thiết kế Nguyên lý ‘đóng mở’: một modun cần “mở” đối với việc phát triển thêm tính năng nhưng phải “đóng” đối với việc sửa đổi mã nguồn Nguyên lý thay thế Liskov: Các chức năng của hệ thống vẫn thực hiện đúng đắn nếu ta thay bất kì một lớp đối tượng nào bằng một lớp đối tượng kế thừa. Nguyên lý nghịch đảo phụ thuộc: phụ thuộc vào mức trừu tượng, không phụ thuộc vào mức chi tiết. Nguyên lý phân tách giao diện: nên có nhiều giao diện đặc thù với bên ngoài hơn là chỉ có một 259 giao diện dùng chung cho một mục đích. 3.5. CÁC NHÓM MẪU THIẾT KẾ 3.5.1. Sự quan trọng của mẫu thiết kế Trong bất kỳ một hệ thống hướng đối tượng nào cũng có thể gặp các vấn đề lặp lại. Do đó, một mẫu thiết kế là một giải pháp tổng thể cho các vấn đề chung trong thiết kế phần mềm.  Mẫu thiết kế tuân thủ nghiêm ngặt các nguyên lý thiết kế hướng đối tượng ở trên.  Mẫu thiết kế không phụ thuộc vào ngôn ngữ lập trình, công nghệ, và nó có các quy tắc biểu diễn của ngôn ngữ UML. 260 3.5. CÁC NHÓM MẪU THIẾT KẾ ... 3.5.2. Sự quan trọng của mẫu thiết kế ... Mẫu thiết kế sẽ giúp cho việc giải quyết vấn đề nhanh, gọn hơn và hợp lý hơn. Mẫu thiết kế còn được sử dụng nhằm cô lập các thay đổi trong mã nguồn, từ đó làm cho hệ thống có khả năng tái sử dụng cao. Chúng ta sẽ tìm hiểu một số mẫu thiết kế kinh điển GoF - Gang of Four - bốn tác giả Erich Gamma, Richard Helm, Ralph Johnson và John Vlissides của cuốn sách Design Patterns: Elements of Reusable Object-Oriented Software (Download ở site: http://www.uml.org.cn/c++/pdf/DesignPatterns.pdf) 261 3.5. CÁC NHÓM MẪU THIẾT KẾ ... 3.5.3. Các loại mẫu thiết kế GoF đề xuất 23 mẫu thiết kế được chia theo 3 nhóm theo mục đích sử dụng:  Creational Patterns – Các mẫu kiến tạo  Structural Patterns – Các mẫu kiến trúc  Behavioral Patterns – Các mẫu tương tác 262 a. CÁC NHÓM MẪU THIẾT KẾ 1. Các mẫu thuộc nhóm kiến tạo - Creational Patterns 2. Các mẫu thuộc nhóm kiến trúc - Structural Patterns 263 a. CÁC NHÓM MẪU THIẾT KẾ ... 1. Các mẫu thuộc nhóm tương tác - Behavioral Patterns 264 b. CÁC MẪU THUỘC NHÓM KIẾN TẠO - CREATIONAL PATTERNS Mục đích chung: Các mẫu này được dùng để khởi tạo các đối tượng trong hệ thống. Hầu hết các hệ thống hướng đối tượng phức tạp yêu cầu nhiều đối tượng được thể hiện theo thời gian, và các mẫu này hỗ trợ cho việc tạo các tiến trình bằng việc cung cấp các khả năng:  Sự thể hiện chung – Điều này cho phép các đối tượng được tạo ra trong hệ thống không cần phải định nghĩa một đặc tả kiểu lớp trong mã nguồn  Đơn giản – Một vài mẫu làm cho việc khởi tạo đối tượng trở nên dễ dàng, vì vậy lớp “gọi” khởi tạo đối tượng không phải viết mã nhiều cũng như phức tạp 265 Mẫu Abstract Factory 1.Ý nghĩa: Abstract Factory cung cấp 1 giao diện để tạo ra đối tượng mà không phải mô tả các lớp cụ thể. Abstract Factory dùng để đóng gói một nhóm gồm những lớp đóng vai trò là “phân xưởng” (Factory) trong ứng dụng, đây là những lớp được dùng để tạo lập các đối tượng. Các lớp “phân xưởng” này có chung một giao diện lập trình được kế thừa từ một lớp cha thuần ảo gọi là “lớp phân xưởng ảo” 266 2. Cấu trúc mẫu: 267 Trong đó:  AbstractFactory: là lớp trừu tượng, tạo ra các đối tượng thuộc 2 lớp trừu tượng là: AbstractProductA và AbstractProductB  ConcreteFactoryX: là lớp kế thừa từ AbstractFatory, lớp này sẽ tạo ra một đối tượng cụ thể  AbstractProduct: là các lớp trừu tượng, các đối tượng cụ thể 268 sẽ là các thể hiện của các lớp dẫn xuất từ lớp này. 2. Cấu trúc mẫu: 1 game, trong đó có thú ăn thịt và thú ăn cỏ Thú ăn thịt: Sư tử, Sói Thú ăn cỏ: Linh dương, Bò rừng Phân biệt theo các châu Châu Phi: Sư tử, Linh dương Châu Mỹ: Sói, Bò rừng 269 The classes and/or objects participating in this pattern are: AbstractFactory (ContinentFactory) declares an interface for operations that create abstract products ConcreteFactory (AfricaFactory, AmericaFactory) implements the operations to create concrete product objects AbstractProduct (Herbivore, Carnivore) declares an interface for a type of product object Product (Wildebeest, Lion, Bison, Wolf) defines a product object to be created by the corresponding concrete factory implements the AbstractProduct interface Client (AnimalWorld) uses interfaces declared by AbstractFactory and AbstractProduct classes Xem code in C# tại: http://www.dofactory.com/Patterns/PatternAbstract.aspx 270 Mẫu Abstract Factory 3. Tình huống áp dụng Phía trình khách sẽ không phụ thuộc vào việc những sản phẩm được tạo ra như thế nào. Ứng dụng sẽ được cấu hình với một hoặc nhiều họ sản phẩm. Các đối tượng cần phải được tạo ra như một tập hợp để có thể tương thích với nhau. Chúng ta muốn cung cấp một tập các lớp và chúng ta muốn thể hiện các ràng buộc, các mối quan hệ giữa chúng mà không phải là các thực thi của chúng (interface). 271 Mẫu Abstract Factory ... 4. Ví dụ: Giả sử ta cần viết một ứng dụng quản lý địa chỉ và số điện thoại cho các quốc gia trên thế giới. Điạ chỉ và số địa thoại của mỗi quốc gia sẽ có 1 số điểm giống nhau và 1 số điểm khác nhau. Ta xây dựng sơ đồ lớp như sau: 272 Ta sẽ xây dựng các phương thức tạo Address, và PhoneNumber cụ thể trong các lớp: • USAAddressPhoneFactory • FrechAddressPhoneFactory. Với phương thức createProductAddress() của lớp USAAddressPhoneFactory sẽ trả về đối tượng của lớp USAAddress Với phương thức createProductAddress() của lớp FrechAddressPhoneFactory sẽ trả về đối tượng của lớp FrechAddress Tương tự với PhoneNumber. 273 Mẫu Builder 1.Ý nghĩa: Tách các thành phần của một đối tượng phức hợp, để có thể cùng khởi tạo một lần mà có thể tạo nên nhiều định dạng khác nhau. 274 2. Cấu trúc mẫu: Trong đó,  Director: là lớp điều khiển tạo ra một đối tượng Product  Builder: là lớp trừu tượng cho phép tạo ra đối tượng Product từ các phương thức nhỏ khởi tạo từng thành phần của Product  ConcreteBuilder: là lớp dẫn xuất của Builder, khởi tạo từng đối tượng cụ thể, lớp này sẽ khởi tạo đối tượng. 275 Mẫu Builder ... 3. Tình huống áp dụng Có cấu trúc bên trong phức tạp (đặc biệt là một biến là một tập các đối tượng liên quan với nhau) Có các thuộc tính phụ thuộc vào các thuộc tính khác Sử dụng các đối tượng khác trong hệ thống mà có thể khó khởi tạo hoặc khởi tạo phức tạp. 4. Ví dụ Ta lại xét đối tượng Address, có các thành phần sau: Street, City và Region. Ta phân tách việc khởi tạo 1 đối tượng Address thành các phần : buildStreet, buildCity và buildRegion. 276 Mẫu Builder ... Trong đó:  AddressDirector: là lớp tạo ra đối tượng Address  AddressBuilder: là lớp trừu tượng cho phép tạo ra 1 đối tượng Address bằng các phương thức khởi tạo từng thành phần của Address  USAddressBuilder: là lớp tạo ra các Address. USAddressBuilder 277 sẽ tạo ra địa chỉ theo chuẩn của USA Mẫu Factory Method 1.Ý nghĩa: Định nghĩa một phương thức chuẩn để khởi tạo đối tượng, như là một phần của phương thức tạo, nhưng việc quyết định kiểu đối tượng nào được tạo ra thì phụ thuộc vào các lớp con. 278 2. Cấu trúc mẫu: Trong đó,  Creator là lớp trừu tượng, khai báo phương thức factoryMethod() nhưng không cài đặt  Product cũng là lớp trừu tượng  ConcreteCreatorA và ConcreteCreatorB là 2 lớp kế thừa từ lớp Creator để tạo ra các đối tượng riêng biệt  ConcreteProductA và ConcreteProductB là các lớp kế thừa của lớp Product, các đối tượng của 2 lớp này sẽ do 2 lớp ConcreteCreatorA và 279 ConcreteCreatorB tạo ra Mẫu Factory Method ... 3. Tình huống áp dụng Khi bạn muốn tạo ra một framework có thể mở rộng, có nghĩa là nó cho phép tính mềm dẻo trong một số quyết định như chỉ ra loại đối tượng nào được tạo ra Khi bạn muốn 1 lớp con, mở rộng từ 1 lớp cha, quyết định lại đối tượng được khởi tạo. Khi bạn biết khi nào thì khởi tạo một đối tượng nhưng không biết loại đối tượng nào được khởi tạo Bạn cần một vài khai báo chồng phương thức tạo với danh sách các tham số như nhau, điều mà Java không cho phép. Thay vì điều đó ta sử dụng các Factory Method với các tên khác nhau. 280 4. Ví dụ: Xét lại ví dụ về các địa chỉ ở phần Abstract Pattern 281 4.3.4. Mẫu Prototype 1.Ý nghĩa: Giúp khởi tạo đối tượng bằng cách copy một đối tượng khác đã tồn tại (đối tượng này là “prototype” – nguyên mẫu). 282 Mẫu Prototype 2. Cấu trúc mẫu: Trong đó: Prototype là lớp trừu tượng cài đặt phương thức myClone() là phương thức copy bản thân đối tượng đã tồn tại. ConcretePrototype1 và ConcretePrototype2 là các lớp kế thừa lớp Prototype. 283 Mẫu Prototype 3. Tình huống áp dụng Khi bạn muốn khởi tạo một đối tượng bằng cách sao chép từ một đối tượng đã tồn tại. 4. Ví dụ: Xét lại ví dụ về các địa chỉ ở phần Abstract Pattern 284 Mẫu Singleton 1.Ý nghĩa: Mẫu này được thiết kế để đảm bảo cho một lớp chỉ có thể tạo ra duy nhất một thể hiện của nó. 2. Cấu trúc mẫu: Trong đó: Singleton cung cấp một phương thức tạo private, duy trì một thuộc tính tĩnh để tham chiếu đến một thể hiện của lớp Singleton này, và nó cung cấp thêm một phương thức tĩnh trả về thuộc tính tĩnh này. 285 Mẫu Singleton ... 3. Tình huống áp dụng Khi bạn muốn lớp chỉ có 1 thể hiện duy nhất và nó có hiệu lực ở mọi nơi. 286 c. NHÓM CÁC MẪU CẤU TRÚC- Structural Patterns Mục đích chung: Đề cập đến việc các đối tượng kết hợp với nhau để tạo thành các cấu trúc hữu dụng hơn Các mẫu Structural diễn tả một cách có hiệu quả cả việc phân chia hoặc kết hợp các phần tử trong một ứng dụng. Những cách mà các mẫu Structural áp dụng vào ứng dụng rất rộng: chẳng hạn,  Mẫu Adapter có thể làm cho hai hệ thống không tương thích có thể giao tiếp với nhau,  Mẫu Façade cho phép bạn làm đơn giản hóa một giao tiếp để sử dụng mà không cần gỡ bỏ tất cả các tùy biến đã có trong hệ thống. 287 Mẫu Adapter 1. Ý nghĩa: Tạo một giao diện trung gian để gắn kết vào hệ thống một lớp đối tượng mong muốn nào đó. 2. Cấu trúc mẫu: Tagret là một interface định nghĩa chức năng, yêu cầu mà Client cần sử dụng Adaptee là lớp chức các chức năng mà Target cần sử dụng để tạo ra được chức năng mà Target cần cung cấp cho Client Adapter thực thi từ Target và sử dụng đối tượng lớp Adaptee, Apdater có nhiệm vụ gắn kết Adaptee vào Target để có được chức năng mà Client mong muốn 288 Mẫu Adapter 3. Tình huống áp dụng  Muốn sử dụng 1 lớp có sẵn nhưng giao tiếp của nó không tương thích với yêu cầu hiện tại  Muốn tạo 1 lớp có thể sử dụng lại mà lớp này có thể làm việc được với những lớp khác không liên hệ gì với nó, và là những lớp không cần thiết tương thích trong giao diện. 4. Ví dụ:  Có một hệ thống PhoneTarget cần thực hiện một chức năng gì đó, trong đó có một phương thức trả về số điện thoại trong một chuỗi đầu vào  Trước đó ta đã có một lớp có một chức năng là lấy các kí tự số trong một chuỗi  Giờ ta muốn sử dụng chức năng lấy kí tự số vào hệ thống lấy số điện thoại 289 Mẫu Bridge 1. Ý nghĩa: Một thành phần trong OOP thường có 2 phần: phần ảo – định nghĩa các chức năng và phần thực thi – thực thi các chức năng được định nghĩa trong phần ảo. Hai phần này liên hệ với nhau qua quan hệ kế thừa. Những thay đổi trong phần ảo dẫn đến các thay đổi trong phần thực thi. Mẫu Bridge được sử dụng để tách thành phần ảo và thành phần thực thi riêng biệt, do đó các thành phần này có thể thay đổi độc lập và linh động. Thay vì liên hệ với nhau bằng quan hệ kế thừa hai thành phần này liên hệ với nhau thông qua quan hệ “chứa trong”. 2. Cấu trúc mẫu: 290 4.4.2 Mẫu Bridge Trong đó: o Abstraction: là lớp trừu tượng khai báo các chức năng và cấu trúc cơ bản, trong lớp này có 1 thuộc tính là 1 thể hiện của giao tiếp Implementation, thể hiện này bằng các phương thức của mình sẽ thực hiện các chức năng abstractionOp() của lớp Abstraction o Implementation: là giao tiếp thực thi của lớp các chức năng nào đó của Abstraction o RefineAbstraction: là định nghĩa các chức năng mới hoặc các chức năng đã có trong Absrtaction. o ConcreteImplement: là các lớp định nghĩa tường minh các thực thi trong lớp 291 giao tiếp Implementation Mẫu Bridge 3. Tình huống áp dụng Khi bạn muốn tạo ra sự mềm dẻo giữa 2 thành phần ảo và thực thi của một thành phần, và tránh đi mối quan hệ tĩnh giữa chúng. Khi bạn muốn những thay đổi của phần thực thi sẽ không ảnh hưởng đến client. Bạn định nghĩa nhiều thành phần ảo và thực thi. Phân lớp con một cách thích hợp, nhưng bạn muốn quản lý 2 thành phần của hệ thống một các riêng biệt 292 Mẫu Composite 1. Ý nghĩa: Mẫu này nhằm gom các đối tượng vào trong một cấu trúc cây để thể hiện được cấu trúc tổng quát của nó. Trong khi đó cho phép mỗi phần tử của cấu trúc cây có thể thực hiện một chức năng theo một giao tiếp chung. 2. Cấu trúc mẫu: 293 Mẫu Composite Trong đó: Component: là một giao tiếp định nghĩa các phương thức cho tất cả các phần của cấu trúc cây. Component có thể được thực thi như một lớp trừu tượng khi bạn cần cung cấp các hành vi cho tất cả các kiểu con. Bình thường, các Component không có các thể hiện, các lớp con hoặc các lớp thực thi của nó, gọi là các nốt, có thể có thể hiện và được sử dụng để tạo nên cấu trúc cây. Composite: là lớp được định nghĩa bởi các thành phần mà nó chứa. Composite chứa một nhóm động các Component, vì vậy nó có các phương thức để thêm vào hoặc loại bổ các thể hiện của Component trong tập các Component của nó. Những phương thức được định nghĩa trong Component được thực thi để thực hiện các hành vi đặc tả cho lớp Composite và để gọi lại phương thức đó trong các nốt của nó. Lớp Composite được gọi là lớp nhánh hay lớp chứa Leaf: là lớp thực thi từ giao tiếp Component. Sự khác nhau giữa lớp Leaf và Composite là lớp Leaf không chứa các tham chiếu đến các Component khác, lớp Leaf 294 đại diện cho mức thấp nhất của cấu trúc cây. Mẫu Composite 3. Tình huống áp dụng Khi có một mô hình thành phần với cấu trúc nhánh – lá, toàn bộ – bộ phận, … Khi cấu trúc có thể có vài mức phức tạp và động Bạn muốn thăm cấu trúc thành phần theo một cách qui chuẩn, sử dụng các thao tác chung thông qua mối quan hệ kế thừa. 4. Ví dụ:  Trở lại ví dụ về dự án, một Project (Composite) có nhiều tác vụ Task (Leaf), ta cần tính tổng thời gian của dự án thông qua thời gian của tất cả các tác vụ 295 Mẫu Decorator 1.Ý nghĩa: Bổ sung trách nhiệm cho đối tượng tại thời điểm thực thi. Đây được xem là sự thay thế hiệu quả cho phương pháp kế thừa trong việc bổ sung trách nhiệm cho đối tượng và mức tác động là ở mức đối tượng thay vì ở mức lớp như phương pháp kế thừa. 2. Cấu trúc mẫu: 296 Mẫu Decorator Trong đó: Component: là một interface chứa các phương thức ảo (ở đây là defaultMethod) ConcreteComponent: là một lớp kế thừa từ Component, cài đặt các phương thức cụ thể (defaultMethod được cài đặt tường minh) Decorator: là một lớp ảo kế thừa từ Component đồng thời cũng chứa 1 thể hiện của Component, phương thức defaultMethod trong Decorator sẽ được thực hiện thông qua thể hiện này. ConcreteDecoratorX: là các lớp kế thừa từ Decorator, khai báo tường minh các phương thức, đặc biệt trong các lớp này khai báo tường minh các “trách nhiệm” cần thêm vào khi run-time 297 Mẫu Decorator 3. Tình huống áp dụng Khi bạn muốn thay đổi động mà không ảnh hưởng đến người dùng, không phụ thuộc vào giới hạn các lớp con. Khi bạn muốn thành phần có thể thêm vào hoặc rút bỏ đi khi hệ thống đang chạy Có một số đặc tính phụ thuộc mà bạn muốn ứng dụng một cách động và bạn muốn kết hợp chúng vào trong một thành phần. 298 4. Ví dụ:  Giả sử trong thư viện có các tài liệu: sách, video… Các loại tài liệu này có các thuộc tính khác nhau, phương thức hiển thị của giao tiếp LibraryItem sẽ hiển thị các thông tin này. Giả sử, ngoài các thông tin thuộc tính trên, đôi khi ta muốn hiển thị độc giả mượn một cuốn sách (chức năng hiển thị độc giả này không phải lúc nào cũng muốn hiển thị), hoặc muốn xem đoạn video(không thường xuyên). 299 Mẫu Façade 1.Ý nghĩa: Cung cấp một giao tiếp hợp nhất của một tập các giao tiếp trong hệ thống con. Façade định nghĩa một giao tiếp mức cao hơn để làm cho hệ thống con dễ sử dụng 2. Cấu trúc mẫu: 300 Mẫu Façade Trong đó: Class1 và Class2 là các lớp đã có trong hệ thống Façade là lớp sử dụng các phương thức của Class1 và Class2 để tạo ra một giao diện mới, thường được sử dụng, đỡ phức tạp hơn khi sử dụng riêng Class1 và Class2 301 Mẫu Façade 3. Tình huống áp dụng Làm cho một hệ thống phức tạp dễ sử dụng hơn bằng cách cung cấp một giao tiếp đơn gian mà không cần loại bỏ các lựa chọn phức tạp Giảm bớt sự ràng buộc giữa client và các hệ thống con. 302 Mẫu Façade 4. Ví dụ:  Giả sử hệ thống cũ đã có các lớp: Địa chỉ, Số điện thoại, Tên tuổi về thông tin của một người, giờ ta muốn quản lý các thông tin trên của một người, ta tận dụng lại hệ thống cũ, xây một lớp Người sử dụng lại các lớp ở trên. 303 Mẫu Flyweight 1.Ý nghĩa: Làm phương tiện dùng chung để quản lý một cách hiệu quả một số lượng lớn các đối tượng nhỏ có các đặc điểm chung, mà các đối tượng nhỏ này lại được sử dụng tuỳ thuộc vào hoàn cảnh, điều kiện ngoài. 304 4.4.6 Mẫu Flyweight 2. Cấu trúc mẫu: Trong đó: o FlyweightFactory: tạo ra và quản lý các đối tượng Flyweight o Flyweight là một giao tiếp định nghĩa các phương thức chuẩn o ConcreteFlyweightX: là các lớp thực thi của Flyweight, các thể hiện của305 các lớp này sẽ được sử dụng tuỳ thuộc vào điều kiện ngoài. Mẫu Flyweight 3. Tình huống áp dụng Ứng dụng sử dụng nhiều đối tượng giống hoặc gần giống nhau Với các đối tượng gần giống nhau, những phần không giống nhau có thể tách rời với các phần giống nhau để cho phép các phần giống nhau có thể chia sẻ Nhóm các đối tượng gần giống nhau có thể được thay thế bởi một đối tượng chia sẻ mà các phần không giống nhau đã được loại bỏ Nếu ứng dụng cần phân biệt các đối tương gần giống nhau trong trạng thái gốc của chúng 306 Mẫu Flyweight 4. Ví dụ: Một ví dụ cổ điển của mẫu flyweight là các kí tự được lưu trong một bộ xử lí văn bản (word processor). Mỗi kí tự đại diện cho một đối tượng mà có dữ liệu là loại font (font face), kích thước font, và các dữ liệu định dạng khác. Bạn có thể tưởng tượng là, với một tài liệu (document) lớn với cấu trúc dữ liệu như thế này thì sẽ bộ xử lí văn bản sẽ khó mà có thể xử lí được. Hơn nữa, vì hầu hết dữ liệu dạng này là lặp lại, phải có một cách để giảm việc lưu giữ này – đó chính là mẫu Flyweight. Mỗi đối tượng kí tự sẽ chứa một tham chiếu đến một đối tượng định dạng riêng rẽ mà chính đối tượng này sẽ chứa các thuộc tính cần thiết. Điều này sẽ giảm một lượng lớn sự lưu giữ bằng cách kết hợp mọi kí tự có định dạng giống nhau trở thành các đối tượng đơn chỉ chứa tham chiếu đến cùng một đối tượng đơn chứa định dạng chung đó. 307 Mẫu Flyweight 308 Mẫu Proxy 1.Ý nghĩa: Đại diện một đối tượng phức tạp bằng một đối tượng đơn giản, vì các mục đích truy xuất, tốc độ và bảo mật 2. Cấu trúc mẫu: 309 Mẫu Proxy Trong đó: o Service: là giao tiếp định nghĩa các phương thức chuẩn cho một dịch vụ nào đó o RealService: là một thực thi của giao tiếp Service, lớp này sẽ khai báo tường minh các phương thức của Service, lớp này xem như thực hiện tốt tất cả các yêu cầu từ Service 310 o Proxy: kế thừa Service và sử dụng đối tượng của RealService Mẫu Proxy 3. Tình huống áp dụng Sử dụng mẫu Proxy khi bạn cần một tham chiếu phức tạp đến một đối tượng thay vì chỉ một cách bình thường Remote proxy – sử dụng khi bạn cần một tham chiếu định vị cho một đối tượng trong không gian địa chỉ(JVM) Virtual proxy – lưu giữ các thông tin thêm vào về một dịch vụ thực vì vậy chúng có thể hoãn lại sự truy xuất vào dịch vụ này Protection proxy – xác thực quyền truy xuất vào một đối tượng thực 311 Mẫu Proxy 4. Ví dụ: Ví dụ lớp Image là một interface định nghĩa các phương thức xử lý ảnh, nó có các lớp con là GIFImage và JPGImage. Theo hướng đối tượng thì thiết kế như thế có vẻ hợp lý, Client chỉ cần sử dụng lớp Image là đủ, còn tuỳ thuộc vào loại ảnh sẽ có các phương thức khác nhau Nhưng trong trường hợp, trên ứng dụng web chẳng hạn, một lúc ta đọc lên hàng trăm ảnh các loại và ta còn muốn xử lý tuỳ vào một điều kiện nào đó (ví dụ chỉ xử lý khi là ảnh JPG hoặc GIF). Nếu ta đặt điều kiện IF Image (sau đó sẽ tùy điều kiện này rồi xử lý riêng) thì không hợp lý, nếu đặt trong Client, nếu mỗi lần cần thay đổi IF ta lại sửa Client => không hợp lý khi Client là một ứng dụng lớn. Ta sử dụng Proxy, lớp ImageProxy chỉ là lớp đại diện cho Image, kế thừa từ Image và sử dụng các lớp GIFImage hay JPGImage. Khi cần thay đổi ta chỉ cần thay đổi trên Proxy mà không cần tác động đến Client và Image. 312 Mẫu Proxy 313 d. NHÓM CÁC MẪU TƯƠNG TÁC- Behavioral Patterns 1. Mục đích chung: mục đích mô tả sự tương tác giữa các đối tượng 314 Mẫu Chain of Responsibility 1. Ý nghĩa: Mẫu này thiết lập một chuỗi bên trong một hệ thống, nơi mà các thông điệp hoặc có thể được thực hiện ở tại một mức nơi mà nó được nhận lần đầu hoặc là được chuyển đến một đối tượng mà có thể thực hiện điều đóTạo một giao diện trung gian để gắn kết vào hệ thống một lớp đối tượng mong muốn nào đó. 2. Cấu trúc mẫu: 315 Mẫu Chain of Responsibility Trong đó: o Handler: là một giao tiếp định nghĩa phương thức sử dụng để chuyển thông điệp qua các lần thực hiện tiếp theo. o ConcreteHandler: là một thực thi của giao tiếp Handler. Nó giữ một tham chiếu đến một Handler tiếp theo. Việc thực thi phương thức handleMessage có thể xác định làm thế nào để thực hiện phương thức và gọi một handlerMethod, chuyển tiếp thông điệp đến cho Handler tiếp theo hoặc kết hợp cả hai 316 Mẫu Chain of Responsibility 3. Tình huống áp dụng Có một nhóm các đối tượng trong một hệ thống có thể đáp ứng tất cả các loại thông điệp giống nhau Các thông điệp phải được thực hiện bởi một vài các đối tượng trong hệ thống Các thông điệp đi theo mô hình “thực hiện – chuyển tiếp”, một vài sự kiện có thể được thực hiện tại mức mà chúng được nhận hoặc tại ra, trong khi số khác phải được chuyển tiếp đến một vài đối tượng khác 317 Mẫu Chain of Responsibility 4. Ví dụ: Hệ thống quản lý thông tin cá nhân có thể được sử dụng để quản lý các dự án như là các liên hệ. Ta hình dung một cấu trúc cây như sau; đỉnh là một dự án, các đỉnh con là các tác vụ của dự án đó, và cứ như vậy, mỗi đỉnh con tác vụ lại có một tập các đỉnh con tác vụ khác. Để quản lý cấu trúc này ta thực hiện như sau: -Ở mỗi đỉnh ta lưu các thông tin như sau: tên tác vụ, đỉnh cha, tập các đỉnh con -Ta xét thông điệp sau: duyệt từ đỉnh gốc (project cở sở) in ra các thông tin -Như vậy với thông điệp này, việc in thông tin ở một đỉnh là chưa đủ, ta phải chuyển tiếp đến in thông tin các đỉnh con của đỉnh gốc và chuyển tiếp cho đến khi không còn đỉnh con thì mới dừng 318 Mẫu Chain of Responsibility 319 Mẫu Command 1. Ý nghĩa: Gói một mệnh lệnh vào trong một đối tượng mà nó có thể được lưu trữ, chuyển vào các phương thức và trả về một vài đối tượng khác. 2. Cấu trúc mẫu: Trong đó: o Command: là một giao tiếp định nghĩa các phương thức cho Invoker sử dụng o Invoker: lớp này thực hiện các phương thức của đối tượng Command o Receiver: là đích đến của Command và là đối tượng thực hiện hoàn tất yêu cầu, nó có tất cả các thông tin cần thiết để thực hiện điều này o ConcreteCommand: là một thực thi của giao tiếp Command. Nó lưu giữa một tham chiếu Receiver mong muốn 320 Mẫu Command Luồng thực thi của mẫu Command như sau: 321 Mẫu Command Client gửi yêu cầu đến GUI của ứng dụng Ứng dụng khởi tạo một đối tượng Command thích hợp cho yêu cầu đó (đối tượng này sẽ là các ConcreteCommand) Sau đó ứng dụng gọi phương thức executeCommand() với tham số là đối tượng Command vừa khởi tạo Invoker khi được gọi thông qua phương thức executeCommand() sẽ thực hiện gọi phương thức execute() của đối tượng Command tham số Đối tượng Command này sẽ gọi tiếp phương thức doAction() của thành phần Receiver của nó, được khởi tạo từ đầu, doAction() chính là phương thức chính để hoàn tất yêu cầu của Client 322 Mẫu Command 3. Tình huống áp dụng Hỗ trợ undo, logging hoặc transaction Thực hiện hàng đợi lệnh và thực hiện lệnh tại các thời điểm khác nhau Hạn chế sự chặt chẽ của yêu cầu với đối tượng thực hiện hoàn tất yêu cầu đó 323 Mẫu Interpreter 1. Ý nghĩa:  Ý tưởng chính của Interpreter là triển khai ngôn ngữ máy tính đặc tả để giải quyết nhanh một lớp vấn đề được định nghĩa. Ngôn ngữ đặc tả thường làm cho vấn đề được giải quyết nhanh hơn ngôn ngữ thông thường từ một cho đến vài trăm lần.  Ý tưởng tương tự như vậy biểu diễn các biểu thức tính toán theo cú pháp Ba Lan 2. Cấu trúc mẫu: 324 Mẫu Command Trong đó: Expression: là một giao tiếp mà thông qua nó, client tương tác với các biểu thức o TerminalExpression: là một thực thi của giao tiếp Expression, đại diện cho các nốt cuối trong cây cú pháp o NonterminalExpression: là một thực thi khác của giao tiếp Expression, đại diện cho các nút chưa kết thúc trong cấu trúc của cây cú pháp. Nó lưu trữ một tham chiếu đến Expression và triệu gọi phương thức diễn giải cho mỗi phần tử con o Context: chứa thông tin cần thiết cho một vài vị trí trong khi diễn giải. Nó có thể phục vụ như một kênh truyền thông cho các thể hiện của Expression o Client: hoặc là xây dựng hoặc là nhận một thể hiện của cây cú pháp ảo. Cây cú pháp này bao gồm các thể hiện của TerminalExpression và NoterminalExpression để tạo nên câu đặc tả. Client triệu gọi các phương thức 325 diễn giải với ngữ cảnh thích hợp khi cần thiết Mẫu Interpreter 3. Tình huống áp dụng Có một ngôn ngữ đơn giản để diễn giải vấn đề Các vấn đề lặp lại có thể được diễn giải nhanh bằng ngôn ngữ đó 4. Ví dụ: Xét biểu thức 5 + 3 x 3 + 6, với bài tóan này ta có thể chia thành các bài các bài tóan nhỏ hơn -Tính 3 x 3 = a -Sau đó tính 5 + a = b -Sau đó tính b + 6 Ta biểu diễn bài tóan thành cấu trúc cây và duyệt cây theo Ba Lan 326 Mẫu Interpreter 327 References 1. http://www.uml.org.cn/c++/pdf/DesignPatterns.pdf 2. http://duydo.com/design-patterns-l%E1%BA%ADp-trinhvien-c%E1%BA%A7n-ph%E1%BA%A3i-bi%E1%BA%BFt/ Giới thiệu các mẫu thiết kế hướng đối tượng (Design Pattern) 3. http://duriangroup.wordpress.com/2007/10/27/gi%E1%BB% 9Bi-thi%E1%BB%87u-cac-m%E1%BA%AButhi%E1%BA%BFt-k%E1%BA%BFh%C6%B0%E1%BB%9Bng-d%E1%BB%91it%C6%B0%E1%BB%A3ng-design-pattern/ 328 HẾT CHƯƠNG 3 329