Academia.eduAcademia.edu
Viện Điện tử - Viễn thông Bộ Môn Điện tử - Kỹ thuật máy tính Kỹ thuật phần mềm ứng dụng Giới thiệu tổng quan 1 Các nội dung chính • • • • Mục đích môn học Các nội dung chính của môn học Các yêu cầu của môn học Tài liệu tham khảo 2 Mục đích môn học • Các khái niệm cơ bản trong kỹ thuật phần mềm (software engineering) • Các bước cơ bản xây dựng phần mềm, từ lập kế hoạch, thu thập các yêu cầu, phân tích, thiết kế cho đến bảo trì phần mềm • Có kỹ năng thực hành làm phần mềm theo nhóm 3 Các nội dung chính của môn học • Các khái niệm cơ bản về kỹ thuật phần mềm • Các mô hình phát triển phần mềm • Các giai đoạn trong mô hình phát triển PM 4 Viện Điện tử - Viễn thông Bộ Môn Điện tử - Kỹ thuật máy tính Kỹ thuật phần mềm ứng dụng Chương 1: Tổng quan môn học Các nội dung chính • • • • Giới thiệu chung Các khái niệm cơ bản Các loại phần mềm Giới thiệu các mô hình tiến trình phổ biến 2 Giới thiệu chung • Kỹ thuật phần mềm (hay kỹ nghệ phần mềm – software engineering) là một chuyên ngành kỹ thuật (engineering discipline) với trọng tâm nhằm phát triển các hệ thống phần mềm chất lượng cao một cách hiệu quả • Phần mềm có đặc điểm là trừu tượng và không chạm đến được (intangible). Điều này làm cho phần mềm rất dễ trở nên phức tạp và khó hiểu 3 Giới thiệu chung • Khái niệm “Software Engineering” xuất hiện lần đầu vào năm 1968 trong một cuộc họp bàn về một vấn đề được gọi là “Cuộc khủng hoảng phần mềm” (Software crisis) • Chuyên ngành SE ra đời trong hoàn cảnh đó, với sứ mạng tìm ra các biện pháp giúp ngành công nghiệp phần mềm tránh được nguy cơ khủng hoảng. Và thực sự, nó đã hoàn thành sứ mạng này, và cái gọi là “cuộc khủng hoảng phần mềm” đã không thực sự xảy ra. 4 Các khái niệm cơ bản • Phần mềm (sản phẩm phần mềm), bao gồm: – Chương trình (Program): là phần được thi hành trên máy tính – Dữ liệu (Data): gồm các cấu trúc dữ liệu, cơ sở dữ liệu lưu giữ các dữ liệu vào và ra của chương trình – Tài liệu (Documentation): tài liệu hệ thống, tài liệu người dùng 5 Các khái niệm cơ bản • Kỹ thuật phần mềm (Software Engineering): Là một chuyên ngành kỹ thuật mà quan tâm đến tất cả các khía cạnh của việc sản xuất phần mềm, với mục tiên sản xuất ra các sản phẩm phần mềm đa dạng, chất lượng cao, một cách hiệu quả nhất. 6 Các tầng của SE Tools Methods Process Quality Focus 7 Các tầng của SE • Đảm bảo chất lượng (quality focus) sản phẩm hay dịch vụ luôn là một nhiệm vụ sống còn của các công ty hay tổ chức. Do đó, mọi nền tảng công nghệ và kỹ thuật đều phải lấy việc đảm bảo chất lượng là mục tiêu hướng tới, và kỹ thuật phần mềm cũng không thể nằm ngoài mục tiêu này • Tầng Tiến trình (process) có nhiệm vụ định nghĩa một khung các giai đoạn và các hoạt động cần thực hiện, cũng như các kết quả kèm theo chúng. Tầng này đóng vai trò nền tảng để kết nối các phương pháp, công cụ trong các bước thực hiện cụ thể, để có thể tạo ra các phần mềm có chất lượng và đúng thời hạn • Các phương pháp (methods) kỹ thuật phần mềm cung cấp các chi tiết kỹ thuật là làm thế nào để xây dựng được phần mềm • Các công cụ (tools) cung cấp các phương tiện hỗ trợ tự động hoặc bán tự động cho các giai đoạn hay các phương pháp. Các hệ thống phần mềm hỗ trợ trong công nghệ phần mềm được gọi là CASE (computer-aided software engineering) 8 Tiến trình phần mềm • Là một dãy các giai đoạn và các hoạt động trong đó, cũng như các kết quả kèm theo. Kết quả cuối cùng chính là phần mềm cần phải xây dựng, đáp ứng được các yêu cầu của người dùng, và hoàn thành theo đúng kế hoạch về thời gian và ngân sách • Có ba giai đoạn chính trong tiến trình phần mềm: – Giai đoạn định nghĩa (definition phase) – Giai đoạn phát triển (development phase) – Giai đoạn hỗ trợ (support phase) 9 Tiến trình phần mềm • Giai đoạn định nghĩa: tập trung vào làm rõ Cái gì, bao gồm: – Thông tin gì cần xử lý, bao gồm thông tin đầu vào và đầu ra. – Các chức năng gì cần thực hiện. – Hành vi nào của hệ thống sẽ được mong đợi. – Các tiêu chuẩn hợp lệ nào để đánh giá được sự đúng đắn và thành công của hệ thống. 10 Tiến trình phần mềm • Giai đoạn phát triển: tập trung vào Làm thế nào, bao gồm: – Kiến trúc hệ thống (system architecture) được tổ chức thế nào. – Các chức năng được cài đặt và liên kết với nhau thế nào. – Tổ chức các cấu trúc dữ liệu, cơ sở dữ liệu thế nào. – Chuyển từ thiết kế sang cài đặt thế nào? – Việc kiểm thử sẽ được thực hiện thế nào? 11 Tiến trình phần mềm • Giai đoạn hỗ trợ: còn gọi là giai đoạn bảo trì, tập trung vào việc ứng phó với các thay đổi của hệ thống phần mềm, bao gồm: – Sửa lỗi (Correction) – Làm thích ứng (Adaptation) – Nâng cấp (Upgrade) – Phòng ngừa (Prevention), còn gọi là tái kỹ thuật phần mềm (software reengineering) 12 Tiến trình phần mềm Lập kế hoạch dự án Giai đoạn định nghĩa Thu thập các yêu cầu Phân tích Giai đoạn Phát triển Giai đoạn Hỗ trợ Thiết kế Cài đặt và kiểm thử Bảo trì 13 Tiến trình phần mềm 14 Tiến trình phần mềm • Khung tiến trình chung (common process framework): là mô hình chung cho các dự án phần mềm khác nhau trong một tổ chức. Nó bao gồm: – Các công việc trong khung (Framework activities) gồm: • • • • Các nhiệm vụ cụ thể (tasks) Các mốc thời gian (milestones) Các kết quả bàn giao (deliverables) Các điểm kiểm tra chất lượng hệ thống (SQA points) – Các công việc bao trùm (Umbrella activities) gồm: • Quản lý chất lượng phần mềm • QL cấu hình phần mềm 15 Mô hình tiến trình phần mềm • Mô hình tiến trình (process model) Là một chiến lược phát triển phần mềm , bao gồm các cách thức kết hợp, sử dụng tiến trình phần mềm, cách vận dụng các phương pháp và các công cụ trong mỗi giai đoạn phát triển. • Mô hình tiến trình cũng còn được gọi là mẫu tiến trình (process paradigm), hay mô hình phát triển phần mềm. 16 Các loại phần mềm • Phần mềm hệ thống (system software) • Phần mềm thời gian thực (real time sw) • Phần mềm quản lý (business sw): cũng được gọi là hệ thông tin quản lý (management information system – MIS) • Phần mềm khoa học và công nghệ (engineering and scientific sw) • Phần mềm nhúng (embedded sw) • Phần mềm văn phòng (office sw) • Phần mềm Web (Web-based sw) • Phần mềm trí tuệ nhân tạo (artificial intelligence sw) • V.v. 17 Các mô hình tiến trình • Mô hình tuyến tính cổ điển (mô hình thác nước – Waterfall model) • Mô hình bản mẫu (Prototyping model) • Mô hình RAD (Rapid Application Development model) • Mô hình tăng trưởng (Incremental model) • Mô hình xoáy ốc (Spiral model) 18 Mô hình tuyến tính cổ điển* Thu thập các yêu cầu Các yêu cầu hệ thống Các yêu cầu phần mềm Phân tích Thiết kế chương trình Cài đặt Kiểm thử Vận hành 19 Mô hình tuyến tính cổ điển • Mô hình này có một số đặc điểm như sau: – Các bước được tiến hành tuần tự, kết thúc bước trước thì mới thực hiện đến bước sau – Thời gian thực hiện mỗi bước thường kéo dài do phải làm thật hoàn chỉnh – Thường chỉ tiếp xúc với người dùng vào giai đoạn đầu và giai đoạn cuối. Người dùng thường không tham gia vào các bước ở giữa, như từ thiết kế, cài đặt và đến tích hợp 20 Mô hình tuyến tính cổ điển • u điểm: – Đơn giản và rõ ràng – Đóng vai trò như một mẫu tham chiếu cho các mô hình khác – Vẫn còn được sử dụng rộng rãi cho đến nay • Nhược điểm: – Không dễ dàng cho việc thu thập đầy đủ và tường minh tất cả các yêu cầu hệ thống ngay từ ban đầu – Người dùng phải chờ đến cuối cùng mới có được hệ thống để dùng, nên thời gian chờ đợi là khá lâu, có khi đến hàng năm. Khi đó có thể có các yêu cầu mới đã phát sinh, dễ dẫn khả năng hệ thống không còn đáp ứng được kỳ vọng của người dùng. – Dễ dẫn đến tình trạng “blocking states”, tức là khi có một nhóm bị chậm tiến độ, thì các nhóm khác phải chờ, và thời gian chờ đợi thậm chí vượt quá thời gian làm việc. 21 Mô hình bản mẫu • Thông thường trong thực tế, các yêu cầu của hệ thống khó có thể xác định rõ ràng và chi tiết ngay trong gia đoạn đầu của dự án phần mềm vì: – Người dùng cũng chỉ đưa ra các mục tiêu tổng quát của phần mềm, chứ cũng chưa định rõ được một cách chi tiết các chức năng cụ thể, hay các thông tin chi tiết đầu vào, đầu ra như thế nào. – Nhà phát triển cũng chưa xác định rõ ràng ngay các yêu cầu, cũng như chắc chắn về chất lượng phần mềm, cũng như khả năng thỏa mãn của khách hàng  mô hình bản mẫu 22 Mô hình bản mẫu 23 Mô hình bản mẫu Gồm các giai đoạn: – Thu thập các yêu cầu (requirements gathering): khách hàng và nhà phát triển sẽ gặp nhau để xác định ra các mục tiêu tổng thể của phần mềm. Sau đó họ sẽ định ra phần nào đã rõ, phần nào cần phải định nghĩa thêm. – Thiết kế nhanh (quick design): thiết kế này tập trung vào những phần mà khách hàng có thể nhìn thấy được (giao diện, các dữ liệu vào, ra). Sau đó, từ thiết kế này, một bản mẫu sẽ được xây dựng. – Kiểm tra và đánh giá bản mẫu: Bản mẫu này sẽ được dùng để cho phép người dùng đánh giá, nhằm làm rõ hơn các yêu cầu của họ. Đồng thời, thông qua bản mẫu, người phát triển hệ thống cũng hình dung cụ thể hơn về những yêu cầu của khách hàng, cũng như khả năng cài đặt và hiệu quả hoạt động của hệ thống. 24 Mô hình bản mẫu • u điểm: – Cho phép người dùng xác định yêu cầu của mình rõ ràng và cụ thể hơn, đồng thời nhà phát triển cũng nắm được chính xác hơn các yêu cầu đó. – Cả người dùng và nhà phát triển thường đều thích mô hình này, do người dùng luôn cảm nhận được hệ thống thực sẽ như thế nào, và nhà phát triển cũng luôn có cái để xây dựng và dần hoàn thiện. • Nhược điểm: – Để có được bản mẫu nhanh, việc thiết kế cũng được làm nhanh, nên thường được làm không cẩn thận. Điều này dễ dẫn đến các thiết kế có tính chắp vá, không có cái nhìn tổng thể và dài hạn. – Việc làm bản mẫu nhanh cũng thường kéo theo việc lựa chọn các công cụ cài đặt vội vàng, không cẩn thận, (như ngôn ngữ lập trình, hệ quản trị cơ sở dữ liệu,v.v). Điều này sẽ ảnh hưởng đến các giai đoạn phát triển sau khi quy mô và yêu cầu của hệ thống ngày càng lớn lên 25 Mô hình RAD • Là mô hình tiến trình phát triển phần mềm tăng trưởng, nhưng nhấn mạnh vào chu trình phát triển phần mềm có thời gian rất ngắn. Mô hình này gồm các giai đoạn: – Mô hình hóa nghiệp vụ (Business modeling): mô hình hóa các luồng thông tin nghiệp vụ giữa các chức năng nghiệp vụ – Mô hình hóa dữ liệu (Data modeling): từ các thông tin nghiệp vụ, các thực thể dữ liệu, các thuộc tính của chúng, và các liên kết giữa các thực thể này sẽ được xác định và được mô hình hóa. – Mô hình hóa xử lý (Process modeling): Mô tả các chức năng xử lý trên các đối tượng dữ liệu đã được xác định ở giai đoạn trên. – Sản sinh ứng dụng (Application generation): RAD sử dụng các kỹ thuật công nghệ phần mềm thế hệ thứ 4, cho phép dễ dàng sản sinh mã chương trình từ các đặc tả và thiết kế trừu tượng. Các kỹ thuật này cũng cho phép tái sử dụng các thành phần chương trình có sẵn (kết hợp mô hình Component-based development). – Kiểm thử và bàn giao (Testing and turnover): phần ứng dụng đã xây dựng sẽ được kiểm tra và bàn giao cho bên tích hợp hệ thống. 26 Mô hình RAD 27 Mô hình RAD • u điểm: – Tận dụng các công nghệ mới trong phát triển hệ thống, cho phép hoàn thành hệ thống trong thời gian ngắn hơn đáng kể. – Khuyến khích việc tái sử dụng các thành phần của chương trình • Nhược điểm: – Không phù hợp với các phần mềm mà không có sự phân chia modul rõ ràng, – Đòi hỏi tài nguyên và chi phí phát triển cao như số lượng nhân lực nhiều, công cụ CASE thế hệ 4 đắt tiền 28 Mô hình tăng trưởng • Là sự kết hợp của mô hình tuyến tính và triết lý lặp lại của mô hình bản mẫu • Phần mềm được chia thành các phần tăng trưởng (increment), trong đó mỗi phần là một sản phẩm hoàn chỉnh (đã chạy được và có thể bàn giao cho người dùng). Đồng thời phần tăng trưởng sau sẽ bổ sung thêm tính năng còn thiếu trong những phần trước 29 Mô hình tăng trưởng 30 Mô hình tăng trưởng • u điểm – Kết hợp được các ưu điểm của các mô hình tuyến tính và làm bản mẫu – Rất phù hợp khi số lượng nhân viên hạn chế, và người dùng có đòi hỏi phải sớm có hệ thống thử nghiệm • Nhược điểm – Việc gấp gáp đưa ra các thành phần tăng trưởng cũng có thể gây ra sự manh mún trong phân tích và thiết kế – Khó khăn trong việc đảm bảo tính tương thích (compatibility) giữa các thành phần tăng trưởng. 31 Mô hình xoáy ốc • Cũng là một mô hình tiến hóa kết hợp đặc tính lặp lại của mô hình bản mẫu và tính hệ thống của mô hình thác nước cổ điển • Mô hình này cũng cho phép tạo ra một dãy các phiên bản tăng trưởng (incremental release). Tuy nhiên khác với mô hình tăng trưởng, các phiên bản đầu tiên của mô hình xoáy ốc thường chỉ là các mô hình trên giấy hoặc bản mẫu (prototype). Đến các phiên bản sau thì mới là các bản chạy được và càng ngày càng hoàn chỉnh. 32 Mô hình xoáy ốc 33 Mô hình xoáy ốc • Mô hình này phân chia thành các giai đoạn, được gọi là các vùng nhiệm vụ (task regions). • Số lượng vùng nhiệm vụ có thể thay đổi, và thường có từ 3 cho đến 6 vùng. • Mỗi vùng lại bao gồm một tập các nhiệm vụ (set of tasks), và số lượng cũng thay đổi tùy theo tính chất của dự án. 34 Mô hình xoáy ốc • u điểm: – Linh hoạt, dễ thích ứng với các loại phần mềm và các nhu cầu sử dụng khác nhau, nhất là các phần mềm quy mô lớn – Có khá đầy đủ các bước trong tiến trình phát triển, nhất là việc chú trọng phân tích tính rủi ro (risk) của phần mềm cả về mặt kỹ thuật và quản lý • Hạn chế: – Phức tạp, cần khá nhiều thời gian để hiểu và vận dụng được một cách hiệu quả – Khó khăn trong việc quản lý nhiều chu trình phát triển 35 Tóm tắt • Các khái niệm cơ bản • Các loại phần mềm • Các mô hình tiến trình phổ biến 36 Thank you! 37 Viện Điện tử - Viễn thông Bộ Môn Điện tử - Kỹ thuật máy tính Kỹ thuật phần mềm ứng dụng Chương 2: Quản trị dự án phần mềm 1 Các nội dung chính • Các khía cạnh cần quản lý gồm 4 P: – Con người (People) – Sản phẩm phần mềm (Product) – Tiến trình phần mềm (Process) – Dự án (Project) 2 Con người • Những người tham gia trong một dự án: – Nhà quản trị cao cấp (senior managers): là người xác định vấn đề nghiệp vụ và có ảnh hưởng rất quan trọng đến dự án. – Nhà quản trị (về kỹ thuật) dự án (project managers): là người lên kế hoạch, tổ chức, khuyến khích và kiểm tra công việc của những nhân viên khác trong dự án. – Nhân viên kỹ thuật (practitioners): là những người có những kiến thức kỹ thuật cần thiết để tạo ra phần mềm – Khách hàng (customers): là người xác định các yêu cầu cho phần mềm và những cổ đông (stakeholders) có lợi ích liên quan – Những người dùng cuối (end-users) • Tổ chức về nhân sự trong một dự án: – Thường tổ chức thành một hoặc nhiều team (nhóm), mỗi nhóm có 1 team leader (trưởng nhóm). 3 Team – Vấn đề tổ chức • Các cách tổ chức team: – Dân chủ phi tập trung (Democratic decentralized – DD): • Không có team leader thường trực • Quyết định dựa trên sự thống nhất của nhóm • Sự trao đổi diễn ra theo chiều ngang (horizontal communication) – Phi tập trung có kiểm soát (Controlled decentralized CD): • Có team leader thường trực • Quyết định cũng hoạt động theo nhóm • Sự trao đổi diễn ra theo cả hai chiều ngang và dọc – Tập trung có kiểm soát (Controlled centralized – CC) • Có leader thường trực • Ra quyết định và điều phối là trách nhiệm của leader • Sự trao đổi giữa leader và các thành viên khác là theo chiều dọc 4 Team – Vấn đề tổ chức • Các tiêu chí quyết định cách tổ chức team: – Mức độ khó của vấn đề cần giải quyết – Kích thước của chương trình (size of the resultant program) – Thời gian tồn tại của nhóm – Mức độ modul hóa của vấn đề – Yêu cầu về chất lượng và độ tin cậy của hệ thống – V.v. 5 Team • Mục đích của việc tổ chức và quản lý team là để tạo ra một team có năng suất làm việc cao (highperformance) và gắn kết (cohesiveness)  tạo ra một Team gắn bó (Jelled Team): – Cần làm: • • • • Có tổ chức phù hợp Tin tưởng lẫn nhau Các thôn g tin luôn rõ ràng và cởi mở Phân chia công việc phù hợp – Cần tránh: • Chủ nghĩa làm việc đơn độc • Thiếu tinh thần trách nhiệm • Thái độ bất mãn 6 Team - Vấn đề điều phối và trao đổi • Điều phối (coordination) và trao đổi (communication) là rất cần thiết và quan trọng do một số nhân tố: – Mức độ của các nỗ lực phát triển (scale of development efforts) là rất lớn – Sự không chắc chắn thường xuyên xảy ra – Tính tương thông (interoperability) là đặc tính quan trọng của đa số các hệ thống 7 Team - Vấn đề điều phối và trao đổi • Các kỹ thuật điều phối và trao đổi: – Hình thức và không hình thức (formal & informal) – Không liên quan và có liên quan đến cá nhân (impersonal & interpersonal) – Trao đổi điện tử – Mạng xã hội 8 9 Sản phẩm • Xác định phạm vi của sản phẩm phần mềm (software scope), liên quan đến các mặt: – Khung cảnh (context): là cái nhìn tổng quan về đường ranh giới giữa sản phẩm cần phát triển và các thành phần khác bên ngoài. – Các mục đích về thông tin (information objectives): là các yêu cầu cụ thể hơn về thông tin đầu vào và ra của người dùng – Các chức năng và hiệu năng (functions and performance): là các yêu cầu về các chức năng cần thực hiện, các ràng buộc về hiệu năng của chúng nếu có. 10 Sản phẩm – Xác định phạm vi Chức năng A Chức năng B Chức năng C 11 Tiến trình phần mềm - Chọn tiến trình phù hợp • Chọn mô hình tiến trình phù hợp với phần mềm cần phát triển – Mô hình tuyến tính cổ điển – Mô hình bản mẫu – Mô hình RAD – Mô hình tăng trưởng – Mô hình xoáy ốc 12 Tiến trình phần mềm - Kết hợp tiến trình và phần mềm 13 Tiến trình phần mềm – Chia tiến trình thành các nhiệm vụ phù hợp • Các bước trong các mô hình tiến trình thường tương đối khái quát và trừu tượng, nên chúng cần phải được xác định chi tiết hơn cho phù hợp với từng dự án cụ thể. • Điều này dẫn đến việc, từng công ty, tùy theo loại hình phần mềm và dự án của mình, họ thường đưa ra các mô hình tiến trình đầy đủ và chi tiết phù hợp với hoàn cảnh thực tế của họ, và nó sẽ trở thành Phương pháp luận phát triển phần mềm của công ty đó. 14 Dự án (Project) • Để quản lý thành công các dự án phần mềm, các nhà quản lý cần nắm được các vấn đề giúp dự án thành công, cũng như các vấn đề có thể dẫn đến thất bại. • Có một số dấu hiệu giúp phát hiện việc quản lý dự án đang có vấn đề nguy hại: – Không hiểu rõ các yêu cầu của khách hàng – Phạm vi của hệ thống xác định không đầy đủ – Không có hay bất hợp lý trong việc ứng phó với các thay đổi – Thời gian thực hiện theo kế hoạch không hiện thực – Thiếu nhân viên có các kinh nghiệm phù hợp – V.v. 15 Tóm tắt • Có 4 lĩnh vực mà nhà quản trị dự án cần quan tâm: – Con người – Sản phẩm phần mềm – Tiến trình phát triển – Bản thân dự án 16 Thank you! 17 Viện Điện tử - Viễn thông Bộ Môn Điện tử - Kỹ thuật máy tính Kỹ thuật phần mềm ứng dụng Chương 3: Kỹ thuật hệ thống (System Engineering) Các nội dung chính • • • • • Các khái niệm cơ bản Sự phân cấp của kỹ thuật hệ thống Kỹ thuật tiến trình nghiệp vụ Kỹ thuật sản phẩm phần mềm Kỹ thuật thu thập và xử lý yêu cầu (requirements engineering) Các khái niệm cơ bản • Hệ thống máy tính (computer-based system): – Định nghĩa: Là một tập hợp hay bố trí các phần tử mà được tổ chức sao cho hoàn thành một mục tiêu xác định nào đó qua việc xử lý thông tin [Pressman, p246] – Các thành phần của hệ thống máy tính: • • • • • • Phần mềm Phần cứng Con người Cơ sở dữ liệu Tài liệu Thủ tục Kỹ thuật hệ thống – Tính phân cấp Business or Product World view Domain of interest System element v Domain view Element view Detail view Kỹ thuật hệ thống – Phân loại • Kỹ thuật tiến trình nghiệp vụ (Business Process Engineering) – Là kỹ thuật tập trung vào mặt nghiệp vụ của một tổ chức – Mỗi nghiệp vụ có thể tạo ra nhiều sản phẩm phần mềm • Kỹ thuật sản phẩm phần mềm (Product Engineering) – Là kỹ thuật tập trung vào việc sản xuất ra 1 sản phẩm phần mềm cho một nghiệp vụ nào đó Kỹ thuật tiến trình nghiệp vụ • Mục đích: Là quá trình xác định các kiến trúc cho phép một nghiệp vụ sử dụng thông tin một cách hiệu quả. • Các kiến trúc cần xác định: – Kiến trúc dữ liệu (data architecture) – Kiến trúc ứng dụng (application architecture) – Hạ tầng thông tin (information infrastructure)) Kỹ thuật sản phẩm phần mềm • Mục đích: là chuyển các yêu cầu của khách hàng thành tập các tính năng (capabilities) trong sản phẩm phần mềm. • Tính chất: – Nó cũng có tính phân cấp tương tự như kỹ thuật tiến trình nghiệp vụ và kỹ thuật hệ thống Kỹ thuật thu thập và xử lý yêu cầu • Mục đích: là cơ chế phù hợp để giúp hiểu rõ khách hàng cần gì, phân tích các yêu cầu, đánh giá tính khả thi, đàm phán để đưa ra giải pháp hợp lý. • Kỹ thuật này bao gồm 4 bước: – – – – Thu thập các yêu cầu Phân tích và đàm phán Kiểm tra tính hợp lệ của các yêu cầu Quản lý các yêu cầu Requirements Engineering: Thu thập các yêu cầu • Mục đích: thu thập đầy đủ các loại yêu cầu của hệ thống cần xây dựng • Stakeholders: là bất kỳ cá nhân hay nhóm người bị ảnh hưởng bởi hệ thống một cách trực tiếp hay gián tiếp. Đây là những nguồn cung cấp các yêu cầu cho hệ thống. Requirements Engineering: Thu thập các yêu cầu • Phân loại các yêu cầu: – Yêu cầu về chức năng (functional requirements): mô tả các dịch vụ mà hệ thống có thể thực hiện – Yêu cầu phi chức năng (non-functional requirements): là các y/c liên quan đến các ràng buộc như độ tin cậy, thời gian đáp ứng, độ an toàn, tuân theo các tiêu chuẩn, v.v Requirements Engineering: Thu thập các yêu cầu • Các khó khăn của việc thu thập y/c: – Vấn đề xác định không rõ phạm vi của hệ thống: • Không xác định rõ biên của hệ thống – Vấn đề thấu hiểu hệ thống không đầy đủ: • • • • Không rõ hệ thống cần làm gì Không rõ vấn đề thực sự của hệ thống là gì Mức độ hiểu khác nhau, dễ dẫn đến hiểu lầm, hiểu sai Thường số lượng và chủng loại y/c khá nhiều, thậm chí có thể mâu thuẫn với nhau – Các yêu cầu lại luôn thay đổi: • Do nhu cầu của người dùng • Do sự thay đổi trong môi trường Requirements Engineering: Thu thập các yêu cầu • Một số chỉ dẫn: – Xác định rõ những người dùng có thể giúp mô tả chi tiết các yêu cầu, cũng như các vấn đề của hệ thống – Xác định rõ môi trường kỹ thuật mà hệ thống sẽ hoạt động trong đó (như kiến trúc tính toán, hệ điều hành,v.v.) – Tạo ra các kịch bản sử dụng (usage scenarios hay use cases) nhằm giúp mô tả các y/c rõ ràng và chi tiết hơn Requirements Engineering: Phân tích và đàm phán • Phân tích y/c gồm: – Phân loại các y/c: y/c chức năng, y/c dữ liệu, mức độ ưu tiên của y/c – Mô hình hóa các y/c: mô hình phân cấp chức năng, biểu đồ luồng dữ liệu, mô hình thực thể-liên kết, biểu đồ chuyển trạng thái – Đặc tả các y/c – Kiểm tra sự nhất quán (consistency), sự rõ ràng (không nhập nhằng) của các y/c Requirements Engineering: Phân tích và đàm phán • Đàm phán nhằm: – Dung hòa các xung đột về y/c lợi ích giữa các khách hàng với nhau cũng như với và nhà phát triển – Đánh giá lại các y/c, nhằm chọn giải pháp phù hợp đáp ứng các y/c để giảm thiểu các rủi ro Requirements Engineering: Kiểm tra tính hợp lệ của các y/c • Giai đoạn này nhằm kiểm tra: – Tính rõ ràng, không nhập nhằng của các y/c – Các y/c là nhất quán – Các y/c tuân thủ các quy định của tổ chức, của các tiêu chuẩn mà tổ chức đang tuân theo hoặc hướng tới. Requirements Engineering: Quản lý các y/c • Giai đoạn này nhằm xác định và kiểm soát hiệu quả các thay đổi của các y/c. Nó gồm các công việc: – Phân loại và đánh số các y/c – Xây dựng các bảng theo dõi (traceability tables), có khả năng theo dõi các thay đổi của các y/c và ảnh hưởng của chúng – Cập nhật thường xuyên các bảng theo dõi khi có thay đổi trong các y/c Tóm tắt • Tính phân cấp của kỹ thuật hệ thống cho phép nhìn hệ thống ở nhiều mức khác nhau • Mối liên hệ giữa Kỹ thuật tiến trình nghiệp vụ và Kỹ thuật sản phẩm phần mềm • Các bước cơ bản trong Kỹ thuật thu thập và xử lý yêu cầu Thank you! Viện Điện tử - Viễn thông Bộ Môn Điện tử - Kỹ thuật máy tính Kỹ thuật phần mềm ứng dụng Chương 4: Các khái niệm và các nguyên tắc phân tích Các nội dung chính • • • • Giới thiệu về giai đoạn phân tích Các bước trong giai đoạn phân tích Một số kỹ thuật phân tích Các nguyên tắc phân tích Giới thiệu về giai đoạn phân tích • Mục đích: – Xác định rõ vấn đề của hệ thống hiện tại • Thời gian thực hiện kéo dài quá mức • Thường xuyên có sai sót do thực hiện thủ công – Từ đó đề xuất các giải pháp khả thi cho vấn đề • Nhà phân tích cần chỉ rõ cho khách hàng tính khả thi của giải pháp phần mềm đối với các vấn đề trên Các bước phân tích • • • • Xác định vấn đề Đánh giá và tổng hợp các giải pháp Mô hình hóa Đặc tả Các kỹ thuật phân tích • Đặt câu hỏi: – Chọn các câu hỏi từ khái quát cho đến chi tiết • Câu hỏi khái quát: là những câu hỏi không trực tiếp đến hệ thống đang làm cụ thể những gì, mà khái quát hệ thống làm gì, ai đang dùng hệ thống, và những vấn đề nổi cộm là gì • Câu hỏi chi tiết: sẽ làm rõ hơn từng chức năng, từng thông tin vào/ra hệ thống, từng hành vi của hệ thống, rồi từng nghiệp vụ của từng người dùng Các kỹ thuật phân tích • FAST (Facilitated Application Specification Techniques): kỹ thuật này có một số đặc điểm: – Tạo nhóm liên kết (joint team): gồm các thành viên là khách hàng và nhà phát triển – Tổ chức các cuộc họp của nhóm liên kết: để các thành viên có thể gặp nhau và thảo luận để cùng phân tích các vấn đề và cùng tìm ra các giải pháp Các kỹ thuật phân tích • Use-case: còn gọi là kịch bản – Là bản mô tả việc sử dụng hệ thống của một người sử dụng • Các bước xây dựng một UC: – Xác định những người dùng (user) và vai trò của mỗi người (actor). Mỗi người dùng có thể có nhiều vai trò khác nhau – Với mỗi vai trò của người dùng, xây dựng chi tiết kịch bản sử dụng của người đó với hệ thống Các nguyên tắc phân tích • Thông tin của bài toán cần được biểu diễn và được hiểu thấu • Các chức năng của phần mềm phải được xác định • Hành vi của phần mềm (dãy các sự kiện bên ngoài) phải được biểu diễn • Các mô hình mô tả thông tin, các chức năng và hành vi phải được phân chia phân mức để có thể làm rõ các thông tin chi tiết • Tiến trình phân tích nên chuyển dần từ các thông tin thiết yếu sang các chi tiết cài đặt Thank you! Chương 5 Mô hình dữ liệu quan hệ Phần 1 Nội dung chính Giới thiệu về Mô hình dữ liệu Tổng quan về Mô hình dữ liệu quan hệ 2 2/19 Tổng quan về Mô hình dữ liệu 3/19 Mô hình dữ liệu là gì?  Mô hình dữ liệu (Data Model) là cách ký hiệu để mô tả dữ liệu hay thông tin. Nói chung, nó gồm có ba phần:    Cấu trúc của dữ liệu (Structure of the data) Các thao tác trên dữ liệu (Operations on data) Các ràng buộc (Constraints) 4/19 Tóm tắt lịch sử của các Mô hình dữ liệu 5/19 Tóm tắt lịch sử của các Mô hình dữ liệu 6/19 Tổng quan về Mô hình dữ liệu quan hệ 7/19 Quan hệ là gì? Quan hệ (relation) là một bảng hai chiều:  Các cột gọi là các thuộc tính (attribute)  Các hàng gọi là các bản ghi (record) hay bộ (tuple) 8/19 Quan hệ là gì? Ví dụ: bảng Customers:  Mỗi hàng biểu diễn cho một CUSTOMER  Mỗi cột biểu diễn cho một thuộc tính của CUSTOMER và được gọi là “thuộc tính” 9/19 Lược đồ (Schema) Lược đồ của một quan hệ là thông tin về cấu trúc của quan hệ đó Nó bao gồm tên và tập các thuộc tính của quan hệ đó, cùng một số thông tin ràng buộc của các thuộc tính. Ví dụ: Lược đồ của quan hệ Customers ở trên:  Customers(Customers ID, tax ID, name, address) 10/19 Bộ và thành phần Một hàng của một quan hệ được gọi là một bộ (tuple) hay bản ghi (record) Một giá trị của một thuộc tính trong một bộ được gọi là một thành phần (component) 11/19 Miền giá trị (Domains) Miền giá trị của một thuộc tính là tập tất cả các giá trị mà thuộc tính đó có thể nhận Nên khái niệm miền giá trị tương đương với khái niệm kiểu dữ liệu (data type)  mức cài đặt trong một hệ quản trị CSDL, thì miền giá trị của các thuộc tính của một quan hệ cần phải chọn sao cho nằm trong số các kiểu dữ liệu mà hệ QT CSDL đó hỗ trợ 12/19 Biểu diễn tương đương của quan hệ Quan hệ là tập hợp của các bộ (sets of tuples), chứ không phải danh sách của các bộ (lists of tuples). Do vậy, thứ tự của các bộ trong quan hệ KHÔNG quan trọng, mà quan trọng là nội dung của các bộ. Đồng thời nếu có 2 bộ có giá trị bằng nhau trên mọi thuộc tính thì coi như 1 bộ bị thừa. 13/19 Thể hiện của quan hệ Thể hiện của quan hệ (instance of a relation) là tập các bộ của quan hệ đó tại một thời điểm Thể hiện của một quan hệ phản ánh nội dung của quan hệ đó, và nó thay đổi khi có các thao tác cập nhật nội dung quan hệ như thêm, sửa hay xóa bộ. 14/19 Khóa của quan hệ Khóa (key) của một quan hệ r là một hoặc một tập hợp các thuộc tính của r, sao cho với một thể hiện của r, thì không tồn tại 2 bộ nào mà giá trị của các thành phần bằng nhau trên khóa. Hay nói cách khác, giá trị của các thành phần trên Khóa của mỗi bộ trong một thể hiện của quan hệ r là duy nhất. 15/19 Khóa của quan hệ  Có hai loại Khóa của quan hệ  Khóa của một thể hiện của quan hệ  Khóa của lược đồ của quan hệ: là khóa của mọi thể hiện của QH đó  VD: với thể hiện s1 của quan hệ Student sau: ID_SV Name Address Class 20091111 Nguyễn Văn A Hà nội ĐT1 20091112 Nguyễn Hồng B Quảng ninh ĐT2 20091113 Trần Lê C Hà tây ĐT1 20091114 Võ Thị D Bắc giang ĐT2 Có các Khóa là: K1 = ID_SV K2 = Name K3 = Address 16/19 Khóa của quan hệ  VD: nhưng với thể hiện s2 của quan hệ Student sau: ID_SV Name Address Class 20091111 Nguyễn Văn A Hà nội ĐT1 20091112 Nguyễn Hồng B Quảng ninh ĐT2 20091113 Nguyễn Văn A Hà tây ĐT1 20091114 Võ Thị D Hà nội ĐT2 thì chỉ còn một Khóa là:  K1 = ID_SV  K1 = ID_SV là Khóa của lược đồ Sinh viên, Còn K2 và K3 chỉ là Khóa của thể hiện s1 17/19 Khóa của quan hệ Tính chất:  Khóa của thể hiện thì chưa chắc đã là Khóa của lược đồ  Còn Khóa của lược đồ thì cũng là Khóa của mọi thể hiện của quan hệ Khóa của lược đồ không phụ thuộc vào nội dung của quan hệ, còn khóa của thể hiện thì phụ thuộc 18/19 Cơ sở dữ liệu quan hệ CSDL quan hệ (Relational Database): Là tập hợp các quan hệ và các ràng buộc giữa chúng, mà có liên quan đến một hệ thống thông tin (phần mềm) nào đó 19/19 Tóm tắt  Quan hệ = bảng.  Cột của bảng = thuộc tính của quan hệ.  Bộ = hàng = bản ghi  Lược đồ QH = tên + tập các thuộc tính  Thể hiện của QH = nội dung của QH tại một thời điểm  Khóa của QH = tập con các thuộc tính của QH  Khóa của thể hiện  Khóa của lược đồ  Cơ sở dữ liệu quan hệ = tập các quan hệ 20/19 Chương 5: Mô hình dữ liệu quan hệ Đại số quan hệ - Một ngôn ngữ truy vấn Nội dung chính 1. 2. 3. Giới thiệu Đại số quan hệ là gì? Các phép toán trong đại số QH 1. Giới thiệu    Các thao tác dữ liệu trên mô hình quan hệ dựa trên đại số quan hệ. Đại số quan hệ là một phương pháp đơn giản và hữu hiệu để xây dựng các quan hệ mới từ các quan hệ hiện có. Đại số quan hệ cũng là nền tảng lý thuyết của ngôn ngữ truy vấn SQL. 2. Môn đại số là gì?   Môn đại số bao gồm:   Các phép toán (operators) Các toán hạng nguyên tố (atomic operands) Môn đại số cho phép chúng ta xây dựng các biểu thức đại số. Đại số quan hệ là gì?  Đại số quan hệ bao gồm:   Các phép toán trên đại số quan hệ Các toán hạng có thể là:   Các biến đại diện cho các quan hệ Các hằng 3. Các phép toán trong đại số QH  Tổng quan về các phép toán:     Các phép toán tập hợp: hợp, giao, hiệu Các phép toán làm phân chia quan hệ: chọn nhằm lọc ra một số bộ, và chiếu nhằm loại ra một vài thuộc tính. Các phép toán trộn hai quan hệ: tích, và các phép nối khác nhau Phép đổi tên nhằm thay đổi tên và các thuộc tính của quan hệ, nhưng không làm thay đổi nội dung của nó Ký hiệu các phép toán Phép toán Hợp (Union)  Giao (Intersection)  Hiệu (Difference) - or \ Chiếu (Projection)  Chọn (Selection)  (sigma) Tích đề các (Product) x Đổi tên (Renaming)  (rô) Ký hiệu Ký hiệu các phép toán Phép toán Nối (Join) Nối ngoài trái (Left outer join) Nối ngoài phải (Right outer join) Nối ngoài đầy đủ (Full outer join) Nối nửa (Semi-join) Ký hiệu Các phép toán nguyên thủy (Primitive operations)   Trong bất kỳ đại số nào, đều có các phép toán nguyên thủy (cơ bản nhất), còn các phép toán khác đều có thể được suy ra từ các phép toán nguyên thủy này Trong đại số quan hệ, có 6 phép toán nguyên thủy:       Phép Chọn, Phép Chiếu, Phép Tích Đề Các, Phép Hợp, Phép Hiệu, Phép Đổi tên  Các phép toán tập hợp (Set operations) Điều kiện tiên quyết: để thực hiện được các phép toán này, 2 quan hệ R và S trước hết cần phải thỏa mãn 2 điều kiện:  Chúng phải có lược đồ có số thuộc tính giống nhau, và miền giá trị tương ứng của các thuộc tính cũng phải giống nhau.  Thứ tự của các thuộc tính của 2 QH này cũng phải giống nhau.  Khi đó 2 QH này gọi là Khả hợp. Các phép toán tập hợp   Hợp (Union):  Giao (Intersection):   RS RS Hiệu (Difference):  R – S (R \ S) Phép hợp  Ví dụ: {1,2} U {1,3} = {1,2,3} Phép hiệu  Vd: {1,2,3,5} – {1,3,4} = {2,5}. Phép giao Intersection  Vd: {1,2,4,6} ∩ {1,2,6,7,8} = {1,2,6} Phép chọn  R1 := σC (R2)   C là một biểu thức logic (điều kiện chọn). R1 là tất cả các bộ có trong R2 mà thỏa mãn điều kiện C (C nhận giá trị Đúng). Phép chọn: ví dụ Quan hệ Sells: bar Joe’s Joe’s Sue’s Sue’s JoeMenu := bar Joe’s Joe’s beer Bud Miller Bud Miller price 2.50 2.75 2.50 3.00 σbar=“Joe’s”(Sells): beer Bud Miller price 2.50 2.75 Phép chiếu  R1 := πL (R2)    L là một danh sách các thuộc tính của quan hệ R2. R1 được tạo ra bằng cách trích ra từ mỗi bộ trong R2, các thành phần thuộc các thuộc tính L. Từ mỗi bộ được trích ra đó sẽ tạo thành một bộ mới của R1. Loại bỏ các bộ giống nhau nếu có trong R1. Phép chiếu: ví dụ Quan hệ Sells: bar Joe’s Joe’s Sue’s Sue’s beer Bud Miller Bud Miller Prices := πbeer, price(Sells): beer price Bud 2.50 Miller 2.75 Miller 3.00 price 2.50 2.75 2.50 3.00 Phép tích Đề các  R3 := R1 Χ R2   Ghép đôi từng bộ t1 của R1 với từng bộ t2 của R2, thành một bộ của R3 Lược đồ của R3 là ghép các thuộc tính của R1 và R2, theo đúng thứ tự. Tích Đề Các: ví dụ R1( A, 1 3 B) 2 4 R2( B, 5 7 9 C) 6 8 10 R3( A, 1 1 1 3 3 3 R1.B, 2 2 2 4 4 4 R2.B, C ) 5 6 7 8 9 10 5 6 7 8 9 10 Phép đổi tên    Phép đổi tên ρ sẽ thay đổi tên của quan hệ và các thuộc tính của nó R1 := ρR1(A1,…,An)(R2): sẽ đổi tên R2 thành R1; và các thuộc tính của R2 tương ứng sẽ thành A1,…,An . Ký hiệu ngắn gọn: R1(A1,…,An) := R2. Phép đổi tên: ví dụ Bars( name, addr ) Joe’s Maple St. Sue’s River Rd. R(bar, addr) := Bars R( bar, addr ) Joe’s Maple St. Sue’s River Rd. Các phép nối (joins)  Nối bằng:   Nối tự nhiên Nối theta R S R.A = S.B R S R S C Nối tự nhiên (natural join)  Là phép toán kết nối hai quan hệ bằng cách:    So sánh bằng giữa các thuộc tính cùng tên của 2 quan hệ này, Loại bỏ đi một trong 2 thuộc tính bằng nhau này. Ký hiệu R3 := R1 ⋈ R2 Nối tự nhiên: ví dụ Sells( bar, Joe’s Joe’s Sue’s Sue’s beer, price ) Bud 2.50 Miller 2.75 Bud 2.50 Coors 3.00 BarInfo := Sells BarInfo( bar, Joe’s Joe’s Sue’s Sue’s Bars( bar, addr ) Joe’s Maple St. Sue’s River Rd. ⋈ Bars beer, Bud Milller Bud Coors price, 2.50 2.75 2.50 3.00 addr ) Maple St. Maple St. River Rd. River Rd. Thank you! Chương 5: Mô hình dữ liệu quan hệ - Lý thuyết thiết kế Phần 3: Các bất thường trong quan hệ và phụ thuộc hàm 1 Mục đích Nắm được các vấn đề và khái niệm  Các bất thường trong một quan hệ (Anomalies)  Phụ thuộc hàm (Functional Dependencies)  Sự tách lược đồ quan hệ (Decomposition) 2/26 Các nội dung chính 1. 2. 3. 4. Giới thiệu về các bất thường trong một quan hệ Các phụ thuộc hàm Các nguyên nhân gây ra các bất thường Phép tách lược đồ QH 3/26 1. Các bất thường trong quan hệ  Hãy quan sát bảng Student ID Name Class Department Subject Mark 1 E1-001 Nguyen Van A E1 Electronics Electronic Circuit 8 2 E1-001 Nguyen Van A E1 Electronics Digital Technique 7 3 E1-002 Tran Thi B E1 Electronics Digital Technique 9 4 E1-002 Tran Thi B E1 Electronics Electronic Circuit 8 5 E2-001 Nguyen Ho C E2 Electronics Digital Technique 6 6 IT1-001 Tran Thi B IT1 IT Electronic Circuit 10 7 IT1-002 Le Van D IT1 IT Digital Technique 8 4/26 1. Các bất thường trong quan hệ Từ bảng trên có thể nhận thấy một số bất thường:     Dư thừa (Redundancy): giá trị của một số thành phần trong các bộ bị lặp lại không cần thiết như : Name, Class, Department Bất thường khi cập nhật (Update Anomalie): xuất hiện khi cập nhật giá trị cho một bộ hiện có, vì thực tế thực hiện của thao tác có vẻ phức tạp hơn rất nhiều so với logic của thao tác đó. Bất thường khi bổ sung (Insertion Anomalie): xuất hiện khi bổ sung thêm một bộ mới. Bất thường khi xóa (Deletion Anomalie): xuất hiện khi xóa một bộ hiện có trong quan hệ. 5/26 1. Các bất thường trong quan hệ Hậu quả của các bất thường trên    Sự không nhất quán dữ liệu có nguy cơ rất cao Tốn chỗ lưu trữ do dư thừa Các thao tác cơ bản trên CSDL không hiệu quả 6/26 1. Các bất thường trong quan hệ  Vậy nguyên nhân của các bất thường này là gì?  Khái niệm Phụ thuộc hàm có thể giúp chúng ta hiểu nguyên nhân, cũng như giúp tìm ra giải pháp cho vấn đề trên. 7/26 2. Phụ thuộc hàm      Định nghĩa Ý nghĩa của PTH Hệ tiên đề Amstrong Một số loại PTH đặc biệt Khóa và thuộc tính khóa 8/26 2. Phụ thuộc hàm  Định nghĩa về PTH (Functional Dependency)  Cho lược đồ quan hệ R(A1,A2,…An), và A = A1A2 … An, và 2 tập các thuộc tính X và Y  A. Chúng ta nói rằng:   X  Y (X xác định hàm Y, hay Y phụ thuộc hàm vào X), nếu  thể hiện r của R, thì không tồn tại 2 bộ t1, t2, sao cho t1[X]=t2[X] và t1[Y]  t2[Y] X được gọi là Quyết định (determinant) của PTH. 9/26 2. Phụ thuộc hàm – ví dụ  Một số PTH từ bảng Student:  ID  Name;  ID  Class;  Class  Department;  ID,Subject  Mark 10/26 2. Phụ thuộc hàm – Ý nghĩa  Ý nghĩa của một PTH X  Y trong lược đồ R:  thể hiện r của R thì:  Hoặc không có bất kỳ 2 bộ t 1, t2 nào, sao cho t1[X]=t2[X]  Hoặc nếu tồn tại 2 bộ t 1, t2 mà t1[X]=t2[X], thì t1[Y]=t2[Y] Trong cả hai trường hợp,  bộ t, với mỗi giá trị của t[X] thì chỉ có một giá trị của t[Y], do đó nếu biết trước giá trị t[X], thì có thể xác định giá trị t[Y]. 11/26 2. Phụ thuộc hàm – Ý nghĩa  Ý nghĩa của PTH X  Y:  Thế thì PTH đến từ đâu?  Nó xuất phát các quy tắc nghiệp vụ (hay logic nghiệp vụ) của cơ sở dữ liệu. Các quy tắc nghiệp vụ này sẽ quy định các phụ thuộc giữa các thuộc tính, và từ đó sẽ tạo ra các phụ thuộc hàm. 12/26 2. Phụ thuộc hàm – Ý nghĩa  Ví dụ: một số quy tắc nghiệp vụ trong lược đồ Student:   r1: Mỗi sinh viên có một ID duy nhất. r2: Mỗi sinh viên chỉ có duy nhất 1 tên và chỉ thuộc về một lớp.   Từ r1 và r2, ta có các PTH sau: ID  Name; ID  Class r3: Với mỗi môn học, mỗi sinh viên chỉ thi một lần  Từ r3, ta có PTH: (ID, Subject)  Mark; 13/26 2. Phụ thuộc hàm  Hệ tiên đề Amstrong     Tính phản xạ:  Y  X thì X  Y (PTH tầm thường) Tính tăng trưởng:  X, Y, Z, nếu X  Y thì XZ  YZ (XZ = X  Z) Tính bắc cầu:  X, Y, Z, nếu X  Y và Y  Z thì X  Z Các hệ quả:    Tính hợp : nếu X  Y và X  Z thì X  YZ Tính tách: nếu X  Y và Z  Y thì X  Z Tính tựa bắc cầu: nếu X  Y và YW  Z thì XW  Z 14/26 2. Phụ thuộc hàm  Một số loại PTH đặc biệt   PTH bộ phận và PTH đầy đủ: X  Y được gọi là PTH bộ phận nếu X’  X sao cho X’  Y. Trái lại, nếu không tồn tại X’ như trên thì PTH này là đầy đủ. PTH bắc cầu và PTH trực tiếp: X  Y được gọi là PTH bắc cầu (hay gián tiếp) nếu  Z  XY sao cho X Z và Z  Y. Trái lại, nếu không tồn tại Z như trên thì PTH này là trực tiếp. 15/26 2. Phụ thuộc hàm   Khóa và thuộc tính khóa Khóa: Cho 1 lược đồ R. Một hay một tập thuộc tính K của R được gọi là Khóa của R nếu nó thỏa mãn 2 điều kiện: 1. 2.   KR K  R là một PTH đầy đủ Siêu khóa (SuperKey): K được gọi là siêu khóa của R nếu nó chứa ít nhất một khóa của R. Thuộc tính khóa (Prime attribute): 1 thuộc tính A là thuộc tính khóa nếu nó thuộc một khóa bất kỳ. Trái lại, thì nó là thuộc tính không khóa (hay thuộc tính mô tả) 16/26 2. Phụ thuộc hàm  Khóa và thuộc tính khóa  Một số thuộc tính của Khóa   Một lược đồ quan hệ luôn có ít nhất một khóa, và thường là có nhiều khóa. Giá trị của mỗi bộ trên khóa/siêu khóa là duy nhất. Đó là vì sao nó được gọi là Khóa. 17/26 3. Nguyên nhân gây ra các bất thường ID Name Class Department Subject Mark 1 E1-001 Nguyen Van A E1 Electronics Electronic Circuit 8 2 E1-001 Nguyen Van A E1 Electronics Digital Technique 7 3 E1-002 Tran Thi B E1 Electronics Digital Technique 9 4 E1-002 Tran Thi B E1 Electronics Electronic Circuit 8 5 E2-001 Nguyen Ho C E2 Electronics Digital Technique 6 6 IT1-001 Tran Thi B IT1 IT Electronic Circuit 10 7 IT1-002 Le Van D IT1 IT Digital Technique 8 18/26 3. Nguyên nhân gây ra các bất thường  Khóa của quan hệ Student: K = (ID, Subject)  Nhận xét: các thuộc tính dư thừa là các thuộc tính phụ thuộc hàm bộ phận hoặc bắc cầu vào Khóa, ví như:   (ID, Subject)  Name; PTH bộ phận vì ID  Name (ID, Subject)  Department; PTH bắc cầu vì (ID, Subject)  Class và Class  Department 19/26 3. Nguyên nhân gây ra các bất thường  Là sự tồn tại của các phụ thuộc bộ phận hoặc bắc cầu vào khóa  Giải pháp: Cần loại bỏ các loại PTH này trong quan hệ, nhưng làm thế nào?  Phép tách lược đồ! 20/26 4. Phép tách  Định nghĩa: cho một LĐQH R. Một phép R là sự thay thế nó bằng các LĐ con (sub-schema) R1, R2, …, Rn sao cho R = R1R2 …Rn. Ký hiệu phép tách là: (R) = (R1,R2, ..., Rn) ( called rho)  Một số tính chất muốn có của phép tách:   Tách nối không mất thông tin (Loseless-join decomposition) Bảo toàn các PTH (Preservation of FDs) 21/26 4. Phép tách   Tách nối không mất thông tin: giả sử cho  = (R1,R2, ..., Rn) là 1 phép tách R.  được gọi là tách nối không mất thông tin nếu nó thỏa mãn:  thể hiện r của R thì biểu thức sau luôn thỏa mãn: : r =  R1(r)  R2(r) ...  Rn(r) Bảo toàn các PTH: cho LĐ R với tập các PTH F. Phép tách  = (R1,R2, ..., Rn) được gọi là bảo toàn PTH nếu nó thỏa mãn: F =  R1(F)   R2(F)  …   Rn(F) Với  Ri(F) = {X  Y | X  Y and XY  Ri} 22/26 Ví dụ: tách bảng Student thành 3 bảng S1, S2 và S3 S3 S1 ID Name Class E1-001 Nguyen Van A E1 E1-002 Tran Thi B E1 E2-001 Nguyen Ho C E2 IT1-001 Tran Thi B IT1 IT1-002 Le Van D IT1 S2 Class Department E1 Electronics E2 Electronics IT1 IT ID Subject Mark E1-001 Electronic Circuit 8 E1-001 Digital Technique 7 E1-002 Digital Technique 9 E1-002 Electronic Circuit 8 E2-001 Digital Technique 6 IT1-001 Electronic Circuit 10 IT1-002 Digital Technique 8 23/26 4. Phép tách  Một phép tách tốt cần phải::    Loại bỏ tất cả các bất thường Lưu giữ được các tính chất mong muốn Làm thế nào đạt được?  Quá trình chuẩn hóa và các dạng chuẩn (Normalization and Normal Forms) 24/26 Tóm tắt    Các bất thường trong lược đồ quan hệ Phụ thuộc hàm và nguyên nhân của các bất thường Phép tách và các tính chất của nó 25/26 Thank you! 26/26 Chương 5: Mô hình dữ liệu quan hệ - Lý thuyết thiết kế Phần 4: Chuẩn hóa và các dạng chuẩn (Normalization & Normal Forms) Mục đích Giúp nắm được các khái niệm và vấn đề:  Các dạng chuẩn (Normal Forms): 1NF, 2NF, 3NF, BCNF  Bao đóng (Closure)  Giải thuật tìm tất cả các khóa  Tại sao và làm thế nào để chuẩn hóa 2/33 Các nội dung chính 1. 2. 3. 4. 5. Các dạng chuẩn Bao đóng Thuật toán tìm toàn bộ các khóa Tập phụ thuộc hàm tối thiểu Các phương pháp chuẩn hóa 3/33 1. Chuẩn hóa và các dạng chuẩn  Định nghĩa các dạng chuẩn      Dạng chuẩn 1 (1NF - First NF) Dạng chuẩn 2 (2NF - Second NF) Dạng chuẩn 3 (3NF - Third NF) Dạng chuẩn Boyce-Codd (BCNF - Boyce-Codd NF) Các phương pháp chuẩn hóa   Phép tách (Decomposition) Phép ghép (Composition) 4/33 1. Dạng chuẩn 1 (1NF)  Định nghĩa:    Giá trị nguyên tố (Atomic Value): Là giá trị mà không thể bị chia nhỏ hơn được nữa Một thuộc tính là nguyên tố nếu miền giá trị của nó là nguyên tố. Thuộc tính nguyên tố cũng còn được gọi là thuộc tính đơn. Dạng chuẩn 1: một LĐQH R là ở dạng chuẩn 1 nếu như mọi thuộc tính của nó đều nhận giá trị nguyên tố. Lưu ý: sau này mặc định ta coi các LĐQH đều đã ở dạng chuẩn 1. 5/33 1. Dạng chuẩn 2 (2NF)  Định nghĩa: một LĐQH R là ở dạng chuẩn 2 nếu nó thỏa mãn 2 điều kiện:    R đã ở dạng chuẩn 1 Mọi thuộc tính không khóa của R đều phụ thuộc hàm đầy đủ vào khóa của R Vd1: cho QH R(A,B,C,D) với tập các PTH F: AB  C; B  D; Hỏi R có ở dạng chuẩn 2 không? 6/33 1. Dạng chuẩn 2   Vd2: cho QH R(A,B,C,D) với tập các PTH F: A  B; B  C; C  D; Hỏi R có ở dạng chuẩn 2 không? Vd3: QH Student(ID, Name, Class, Dept, Subject, Mark) với các PTH F: ID  Name,Class; Class  Dept; ID, Subject  Mark Hỏi Student có ở dạng chuẩn 2 không? 7/33 1. Dạng chuẩn 3 (3NF)  Định nghĩa: có 2 cách tương đương để đ/n dạng chuẩn 3:  Cách thứ nhất: 1 QH R là ở dạng chuẩn 3 nếu thỏa mãn: 1. 2. R đã ở dạng chuẩn 2 Mọi thuộc tính không khóa của R đều phụ thuộc hàm trực tiếp vào khóa 8/33 1. Dạng chuẩn 3  Định nghĩa:  Cách thứ hai: 1 QH R là ở dạng chuẩn 3 nếu thỏa mãn: 1. 2. R đã ở dạng chuẩn 1 Với mọi PTH có dạng XA thuộc R (với X là một tập các thuộc tính, còn A là một thuộc tính) thì Hoặc X là một siêu khóa, hoặc A là thuộc tính khóa. 9/33 1. Dạng chuẩn 3  Vd2: Xét QH R(A,B,C,D) với tập các PTH F: A  B; B  C; C  D; Hỏi R có ở dạng chuẩn 2, chuẩn 3 không?  Vd4: Xét QH R(A,B,C,D) với tập các PTH F: AB  C; CD  A; Hỏi R có ở dạng chuẩn 2, chuẩn 3 không? 10/33 1. Dạng chuẩn Boyce-Codd (BCNF)  Định nghĩa: một LĐ QH R là ở dạng chuẩn BC nếu nó thỏa mãn: 1. 2. R đã ở dạng chuẩn 1, Với mọi PTH có dạngXA in R (với X là một tập thuộc tính, và A là một thuộc tính) thì X là siêu khóa. 11/33 1. Dạng chuẩn Boyce-Codd  Vd4: Xét QH R(A,B,C,D) với tập các PTH F:  Vd5: xét QH R(A,B,C,D) với các PTH F: AB  C; CD  A; Hỏi R có ở dạng chuẩn 3, chuẩn BC không? AB  C; AB  D; Hỏi R có ở dạng chuẩn BC không? 12/33 So sánh giữa các dạng chuẩn 1NF 2NF 3NF BCNF 13/33 2. Bao đóng (Closure)  Định nghĩa: cho QH R với tập PTH F, và tập thuộc tính XR. Ta gọi bao đóng của X (ký hiệu X+) được định nghĩa như sau: X+ = {B | X  B  F} Vd: cho R(A,B,C,D), với các PTH F: AB; BCAD; X=(A) thì X+=(A,B) X=(AC) thì X+=(A,B,C,D) 14/33 2. Bao đóng – Thuật toán tìm bao đóng    Đầu vào: R(A1,A2,…An) với tập PTH F; XR Đầu ra: X+ Giải thuật:    Bước 1: X+ := X; Bước 2: While ( YA  F so that (YX+and AX+)) X+:=X+A Bước 3: return X+ 15/33 2. Bao đóng - ứng dụng  Giúp tìm khóa trong quan hệ, bởi vì K+ = R 16/33 3. Giải thuật tìm tất cả các khóa của lược đồ quan hệ  Một tính chất của khóa: cho LĐQH R với tập các PTH F. Ta gọi AL, AR tương ứng là các hợp (unions) của các thuộc tính thuộc vế trái và vế phải của các PTH trong F. Chúng ta có thể giả sử rằng R=ALAR. Nếu K là một khóa của R thì nó luôn thỏa mãn: AL\AR  K  AL AL AR 17/33 3. Giải thuật tìm tất cả các khóa của lược đồ quan hệ  Vd: R(A,B,C,D,E), với F: AB; BCAD;CDE; Ta có: AL=(ABCD); AR=(ABDE) AL\AR = C; Ta tìm được 2 khóa của R là: K1=AC; K2=BC; 18/33 3. Giải thuật tìm tất cả các khóa của lược đồ quan hệ    Đầu vào: QH R(A1,A2,…An) với tập các PTH F; Đầu ra: Tất cả các khóa của R Giải thuật:   Bước 1: Tính AL và AR của R. Bước 2: K := AL\ AR; X:= AL AR Nếu (K+=R) thì K là khóa duy nhất; Return K; Else   Bước 3: While (K+R) { Lấy ra một thuộc tính Ai từ X; K:=KAi; } Ta sẽ có thêm một khóa K ở đây; Lặp lại Bước 3 cho đến khi đã lấy hết các trường hợp 19/33 Bài tập  Tìm tất cả các khóa của LĐQH: R (A,B,C,D,E,F) với các PTH F: ABC; BCD; BDAE; ACF;  Lời giải: AL = ABCD; AR = CDAEF  AL\AR = B; ALAR = ACD B+ = B  R (BA)+=BACDEF=R  K1= AB (BC)+=BCDAEF=R  K2=BC (BD)+=BDAECF=R  K3=BD Kết luận: Lược đồ R có 3 khóa K1,K2 và K3 như trên 20/33 4. Tập PTH cơ sở tối thiểu (Minimal Basis)   Tập PTH cơ sở (Basis): cho QH R với tập các PTH F. Một tập PTH bất kỳ mà tương đương với F thì được gọi là một cơ sở của F. Tập cơ sở tối thiểu (Minimal basis /canonical set): là một tập PTH thỏa mãn 3 điều kiện:    Vế phải của tất cả các PTH chỉ có một thuộc tính. Nếu loại bỏ đi bất kỳ PTH nào, thì các PTH còn lại không đủ là cơ sở của F (không có PTH dư thừa). Với mọi PTH, nếu loại bỏ đi bất kỳ thuộc tính nào khỏi vế trái của PTH đó, thì các PTH còn lại không đủ là cơ sở của F (không chứa PTH bộ phận) 21/33 Ví dụ   Cho LĐQH R(A,B,C,D,E,F) với tập F: ABCD; CEF; BCDE; EF; Hãy tìm cơ sở tối thiểu của F? Giải: Sử dụng tính chất tách ta có: 1. ABC; 5. BCD; 2. ABD; 6. BCE; 3. CE; 7. EF; 4. CF; Do 3., nên PTH 6. bị loại ra. Do 3. và 7., nên 4. bị loại ra. Do 1. và 5., nên 2. bị loại ra. Cuối cùng, ta có tập cơ sở tối thiểu của F là: 1. ABC; 2. BCD; 3. CE; 4. EF; 22/33 4. Tập PTH cơ sở tối thiểu  Giải thuật tìm tập cơ sở tối thiểu:    Đầu vào : QH R với tập PTH F. Đầu ra: tập PTH cơ sở tối thiểu của F Giải thuật:     Bước 0: Loại bỏ các PTH tầm thường (XY mà YX). Bước 1: Với mỗi PTH có vế phải nhiều hơn 1 thuộc tính, thì chuyến nó thành các PTH có vế phải có 1 thuộc tính theo tính chất tách. Bước 2: Loại bỏ các PTH dư thừa từ Bước 1. Bước 3: Loại bỏ các PTH bộ phận từ Bước 2. 23/33 5. Các phương pháp chuẩn hóa (Normalization Mehods) Có 2 cách tiếp cận trái ngược nhau:   Tách (Decomposition): tách một lược đồ lớn thành các lược đồ con nhỏ hơn ở dạng chuẩn mong muốn (thường là dạng chuẩn 3). Ghép (Composition): Từ các thuộc tính đơn lẻ, ta xây dựng các lược đồ quan hệ ở dạng chuẩn 3. 24/33 5. Chuẩn hóa- Phương pháp tách R 1NF Loại bỏ các PTH bộ phận R1 R2 … Rm 2NF Loại bỏ các PTH bắc cầu R1 R2 … Rn 3NF 25/33 5. Chuẩn hóa- Phương pháp tách  Giải thuật:    Đầu vào: QH R với tập các PTH F mà chưa ở dạng chuẩn 3. Đầu ra: một phép tách R sao cho bảo toàn F, nối không mất thông tin, và mọi LĐ con đều ở dạng chuẩn 3. Giải thuật: - Bước 1: Với mỗi PTH bộ phận hay bắc cầu của một thuộc tính không khóa A vào khóa K của R, ta có thể tìm được một tập các thuộc tính XK sao cho XA là PTH đầy đủ hay trực tiếp và không tồn tại YX mà YA. Từ XA, ta tách thành 2 QH R1 và R2 sao cho: R1=XA; R2=R\A; - Bước 2: Lặp lại bước 1 cho mỗi lược đồ con mà chưa ở dạng chuẩn 3. Lưu ý 1: điều kiện “không tồn tại YX sao cho YA” nhằm đảm bảo rằng không có PTH nào bị mất trong quá trình tách. Lưu ý 2: Các LĐ mà có chung khóa có thể lại được ghép lại thành một lược đồ với khóa chung đó, và hợp các thuộc tính của các lược đồ. 26/33 Ví dụ  QH Student(ID, name, class, dept, subject, mark) với tập các PTH F: IDname; IDclass; classdept; ID,subjectmark; QH này đã ở dạng chuẩn 3 chưa? Nếu chưa, hãy tách nó thành các lược đồ con ở dạng chuẩn 3? 27/33 Ví dụ (tiếp)  Giải:      Trước tiên tìm khóa của QH K=(ID,subject). Do đó các thuộc tính không khóa gồm (name, class, dept, mark) Do name PTH bộ phận vào K, ta tìm thấy IDname là PTH đầy đủ. Từ đây, ta chia QH thành 2 QH: S1(ID,name) và S2(ID, class, dept, subject, mark). S1 đã ở dạng chuẩn 3, nhưng S2 thì chưa. Tương tự trên, S2 có thể được chia thành các QH sau: S3(ID,class); S4(class, dept); S5(ID,subject,mark); Sau khi đổi lại tên các QH, rồi gộp các QH có chung khóa, cuối cùng ta có các QH sau: S1(ID,name,class); S2(class, dept); S3(ID,subject,mark); 28/33 5. Chuẩn hóa – Phương pháp ghép  Giải thuật:  Đầu vào: một QH R chưa ở dạng chuẩn 3, với tập các PTH F.  Đầu ra: phép tách R mà bảo toàn các PTH, nối không mất, và các lược đồ con đều ở dạng chuẩn 3.  Giải thuật: 1. 2. 1. Tìm tập cơ sở tối thiểu của F. Sau đó đánh thứ tự các PTH từ 1 đến n. Với mỗi PTH thứ i X  A, i=1..n, ta tạo một QH với lược đồ Ri = (XA). Nếu chưa có lược đồ nào trong số được tạo ra ở bước 2 chứa siêu khóa của R, thì bổ sung thêm một lược đồ là khóa của R. 29/33 Ví dụ  QH Student(ID, name, class, dept, subject, mark) với tập các PTH F: IDname; IDclass; classdept; ID,subjectmark; QH này đã ở dạng chuẩn 3 chưa? Nếu chưa, hãy tách nó thành các lược đồ con ở dạng chuẩn 3? 30/33 Ví dụ (tiếp)  Giải:    Tìm cơ sở tối thiểu: F đã là cơ sở tối thiểu. Từ 4 PTH của F, ghép lại ta sẽ có 4 quan hệ: S1(ID,name); S2(ID,class); S3(class, dept); S4(ID,subject,mark); Do S1 và S2 có chung khóa ID, nên có thể ghép chúng lại thành một quan hệ mới: S1(ID,name,class). Cuối cùng, ta có 3 quan hệ: S1(ID,name,class); S2(class, dept); S3(ID,subject,mark); 31/33 Ví dụ (tiếp) S1: Student ID S3: Examination Name Class E1-001 Nguyen Van A E1 E1-002 Tran Thi B E1 E2-001 Nguyen Hong C E2 IT1-001 Tran Thi B IT1 IT1-002 Le Van D IT1 S2: Class Class Department E1 Electronics E2 Electronics IT1 IT ID Subject Mark E1-001 Electronic Circuit 8 E1-001 Digital Technique 7 E1-002 Digital Technique 9 E1-002 Electronic Circuit 8 E2-001 Digital Technique 6 IT1-001 Electronic Circuit 10 IT1-002 Digital Technique 8 32/33 Thank you! 33/33 Chương 6 Mô hình Thực thể & Liên kết Phần 1: Giới thiệu Mục đích Nắm được: Ý nghĩa của mô hình thực thể liên kết (MH TTLK) Cấu tạo của MH TTLK Cách xây dựng MH TTLK Vận dụng MH TTLK vào giai đoạn mô hình hóa dữ liệu 2 Các nội dung chính 1. Mục đích của mô hình thực thể liên kết 2. Cấu tạo của MH TTLK 3 1. Mục đích của mô hình thực thể liên kết Nó được dùng trong giai đoạn Phân tích hệ thống, ngay sau giai đoạn Thu thập các yêu cầu của hệ thống. Nó được dùng để phân tích yêu cầu về dữ liệu, nhằm làm rõ loại y/c này của người sử dụng. Nó được dùng làm công cụ để hỗ trợ việc trao đổi, thống nhất các y/c về dữ liệu giữa nhà phát triển và người dùng. Nó đóng vai trò trung gian giữa các y/c dữ liệu trừu tượng ở giai đoạn khảo sát và các chi tiết dữ liệu ở giai đoạn thiết kế. 4 1. Mục đích của mô hình thực thể liên kết Khảo sát hệ thống Thu thập các yêu cầu Các Kịch bản sử dụng Từ điển dữ liệu Phân tích hệ thống Phân tích dữ liệu Mô hình thực thể liên kết Thiết kế hệ thống Thiết kế dữ liệu Mô hình quan hệ 5 1. Mục đích của mô hình thực thể liên kết Cụ thể hơn, mô hình này sẽ giúp: Xác định rõ các đơn vị thông tin nghiệp vụ của hệ thống Xác định rõ các mối quan hệ, ràng buộc giữa các đơn vị thông tin này Trình bày rõ ràng và cô đọng các thông tin trên Từ đó giúp phát hiện sớm, và tránh được các sai sót, hiểu lầm về các y/c hệ thống 6 2. Cấu tạo của Mô hình Thực thể Liên kết Gồm có 3 thành phần chính: 1.Thực thể (Entities) 2.Liên kết (Relationships) 3.Thuộc tính (Attributes) 7 Thực thể và tập thực thể  Một thực thể là:  Điều gì đó mà quan trọng đối với nghiệp vụ, nên dữ liệu về nó cần phải được biết.  Tên của các thứ mà bạn có thể liệt kê.  Có thể là một đối tượng cụ thể hoặc trừu tượng.  Thường là danh từ.  Một tập thực thể (Entity Set): là một tập hợp các thực thể cùng một loại. Tập thực thể còn được gọi là Kiểu thực thể (entity type).  Ký hiệu: thực thể và kiểu thực thể đều được biểu diễn bằng một hình chữ nhật.  Ví dụ: The movie “Mission Movies Impossible” 8 Ví dụ Tập thực thể PERSON PRODUCT JOB SKILL LEVEL Thực thể Bill Clinton, Obama Chair, Table, Motor Violinist, Programmer Good, Bad 9 Các thuộc tính của thực thể Khái niệm:  Một thuộc tính (an attribute) của một thực thể là một chi tiết thông tin về thực thể đó.  Thuộc tính cũng biểu diễn các thông tin cần thiết cho nghiệp vụ, nhưng gắn liền với thực thể, chứ không đứng độc lập như thực thể.  Một thuộc tính có các giá trị mà thuộc một miền giá trị nào đó (kiểu dữ liệu của nó). Ký hiệu: Year of production Title Movies 10 Ví dụ: Các thuộc tính 11 Thuộc tính khóa ID Year of production Title Movies 12 Ví dụ – Thực thể, Tập thực thể, Thuộc tính ID Title Year of production Movies Title = “Mission Impossible” ID = 1 The movie “Mission Impossible” Year of production = 1996 13 Liên kết (Relationship) Khái niệm:  Nó biểu diễn mối quan hệ (ràng buộc) giữa hai hay nhiều thực thể.  Nó cần thiết cho nghiệp vụ Ví dụ:  Đạo diễn chỉ đạo làm Phim  Diễn viên tham gia đóng Phim  Đào diễn mời Diễn viên tham gia đóng Phim 14 Liên kết (Relationship) Số ngôi của liên kết:  Là số thực thể tham gia liên kết đó  Ví dụ: • Đạo diễn chỉ đạo làm Phim: liên kết 2 ngôi; • Đào diễn mời Diễn viên tham gia đóng Phim: LK 3 ngôi 15 Liên kết (Relationship) Ký hiệu: • Đạo diễn chỉ đạo làm Phim: liên kết 2 ngôi; • Đào diễn mời Diễn viên tham gia đóng Phim: LK 3 ngôi Directors Directs Movies Directors Invites Movies Actors 16 Liên kết (Relationship) Thuộc tính của liên kết: thông tin chi tiết bổ sung thêm cho liên kết Duration Directors Directs Movies Cost 17 Các loại liên kết Tự liên kết (Self-relationship): là liên kết giữa các thực thể của cùng một tập thực thể. Liên kết 2 ngôi (Binary relationship): là liên kết giữa các thực thể thuộc 2 tập thực thể.  Liên kết Lớp con (Subclass, hay còn gọi là ISA): là một loại liên kết 2 ngôi đặc biệt. Liên kết nhiều ngôi (Multiway relationship): là liên kết giữa các thực thể thuộc từ 3 tập thực thể trở lên. 18 Ví dụ về các loại liên kết Tự liên kết elder brother brotherhood Person Liên kết 2 ngôi Class younger brother has Student 19 Ví dụ về các loại liên kết Liên kết ISA: name address dob Person isa roll# school Student 20 Ví dụ về các loại liên kết Liên kết nhiều ngôi:  Một sinh viên tham gia một khóa học trong một lớp học Class attends Student Course 21 Lực lượng của Liên kết Khái niệm:  Lực lượng (multiplicity) của một liên kết là số lượng các thực thể của từng tập thực thể tham gia vào liên kết đó. Thường có 3 trường hợp:  Không (0): khi có thể không có thực thể nào của tập thực thể tham gia liên kết, hay cũng nói việc tham gia liên kết của tập thực thể này là không bắt buộc.  Một: khi có đúng một thực thể của một tập thực thể tham gia  Nhiều: khi có nhiều hơn 1 thực thể của một tập thực thể tham gia 22 Ví dụ về lực lượng Xét liên kết: Đạo diễn chỉ đạo làm Phim:  Một đạo diễn có thể chỉ đạo Không, Một, hoặc Nhiều bộ phim  Một bộ phim phải được chỉ đạo bởi ít nhất Một đạo diễn Directors 1..N Directs 0..N Movies 23 Lực lượng của Liên kết 2 ngôi Có 3 loại liên kết 2 ngôi giữa hai tập thực thể X và Y:  Một Một (1:1): mỗi thực thể trong X có quan hệ với đúng một thực thể trong Y và tương tự ngược lại.  Một Nhiều (1:N): mỗi thực thể trong X có quan hệ với nhiều thực thể trong Y. Nhưng ngược lại mỗi thực thể trong Y có quan hệ với đúng một thực thể trong X.  Nhiều Nhiều (M:N): mỗi thực thể trong X có quan hệ với nhiều thực thể trong Y và tương tự ngược lại. 24 Lực lượng của Liên kết 2 ngôi Ký hiệu 1:1 1:N M:N X X X 1 1 1 N M N Y X Y Y X Y Y X Y 25 Xây dựng mô hình thực thể liên kết Gồm các bước: 1. Xác định các thực thể và các thuộc tính của chúng 2. Xác định các liên kết và các thuộc tính 3. Hoàn thiện mô hình 26 Xác định các thực thể Phương pháp:  Rà soát trong các Kịch bản sử dụng, và nhất là Từ điển dữ liệu để xác định các đơn vị dữ liệu, đó sẽ là các thực thể và các thuộc tính tiềm năng  Cân nhắc mức độ quan trọng của các thực thể và các thuộc tính tiềm năng đó đối với hệ thống  Chọn ra các thực thể và các thuộc tính của chúng Lưu ý: cần phân biệt giữa các thực thể và thuộc tính. 27 Xác định các liên kết Phương pháp:  Xác định các mối quan hệ giữa các thực thể, để từ đó xác định ra loại liên kết  Xác định lực lượng của các thực thể tham gia  Xác định các thuộc tính của các liên kết nếu có 28 Hoàn thiện mô hình Cân nhắc rồi thống nhất việc lựa chọn Thực thể | Liên kết | Thuộc tính trong mô hình Cân nhắc việc bổ sung/loại bỏ các thành phần của mô hình Trong quá trình này, có thể cần phải chuyển đổi giữa Liên kết và Thực thể, hoặc giữa Thuộc tính và Thực thể Vẽ mô hình cuối cùng gồm toàn bộ các thành phần của nó 29 Ví dụ: Mô hình TT LK – Từ điển dữ liệu Tên dữ liệu Bí danh Khoa Bộ môn Giáo viên BM GV Trưởng BM TBM Lớp học LH Phòng học PH Thời khóa biểu TKB Khối lượng giảng dạy KLGD Mô tả = Tên khoa + Văn phòng + Điện thoại + Fax = Tên BM + Văn phòng =TênGV + Ngày sinh + Địa chỉ + Chức danh + (Chức vụ) Là một giáo viên có chức vụ là trưởng BM = Tên lớp + Khóa học + Số Lượng SV Tên phòng + SL chỗ ngồi = Năm học + Học kỳ + {Khoa + {lớp học + phòng học + tiết học}m}n = TKB + {Giáo viên}mxn 30 Ví dụ: Mô hình TT LK – Các thực thể Tên thực thể Khoa Tên sử dụng TKhoa Bộ môn Giáo viên TBoMon TGiaoVien Lớp học Phòng học Trưởng BM TLopHoc TPhong TTrBM Các thuộc tính Tên khoa, Văn phòng, Điện thoại, Fax Tên BM, Văn phòng TênGV, Ngày sinh, Địa chỉ, Chức danh, Chức vụ Tên lớp, Khóa học, Số Lượng SV Tên phòng, SL chỗ ngồi Gồm các thuộc tính của Giáo viên, Ngày nhậm chức, Ngày thôi chức 31 Ví dụ: Mô hình TT LK – Các liên kết  Liên kết 1:N giữa Khoa và Bộ môn: Một Khoa có nhiều Bộ môn, nhưng ngược lại một Bộ môn thuộc đúng một Khoa.  Liên kết 1:N giữa Bộ môn và Giáo viên: Một Bộ môn có nhiều Giáo viên, nhưng ngược lại một Giáo viên thuộc đúng một Bộ môn.  Liên kết 1:N giữa Khoa và Lớp học: Một Khoa có nhiều Lớp học, nhưng ngược lại một Lớp học thuộc đúng một Khoa.  Liên kết ISA giữa Trưởng Bộ môn với Giáo viên: vì Trưởng Bộ môn cũng là một Giáo viên.  Liên kết 1:1 giữa Trưởng Bộ môn và Bộ môn: mỗi Bộ môn có một Trưởng Bộ môn, và ngược lại mỗi Trưởng Bộ môn lãnh đạo một Bộ môn. 32 Ví dụ: Mô hình TT LK – Các liên kết Thời khóa biểu là liên kết nhiều ngôi giữa các thực thể: Khoa, Lớp học và Phòng học. Liên kết này sẽ bổ sung thêm các thuộc tính là Năm học, Học kỳ và Tiết học. Khối lượng giảng dạy là liên kết M:N giữa TKB và Giáo viên: Một TKB sẽ phân KLGD cho nhiều nhiều Giáo viên, và ngược lại một Giáo viên tham gia giảng dạy theo nhiều TKB. 33 Ví dụ: Mô hình TT LK – Các liên kết Khoa Khoa Giáo viên 1 1 N Có Có Thuộc N Bộ môn N Lớp học 1 Bộ môn 1 ISA Trưởng Bộ môn 1 LĐạo 34 Ví dụ: Mô hình TT LK – Các liên kết Năm học Khoa Học kỳ Tiết học Lớp học TKB Phòng học TKB N KLGD M Giáo viên 35 Ví dụ: Mô hình TT LK – Hoàn thiện 1 Khoa N 1 N N TKB 1 N 1 Lớp học 1 N 1 KLGD Phòng học N N Bộ môn 1 1 N Giáo viên 1 1 Trưởng Bộ môn 36 Tóm tắt Ý nghĩa của Mô hình TTLK Các thành phần của Mô hình:  Thực thể  Liên kết  Các thuộc tính Cách xây dựng Mô hình 37 38 Chương 6 Mô hình thực thể liên kết Phần 2: Các nguyên tắc thiết kế và chuyển đổi sang mô hình quan hệ Nội dung chính Các nguyên tắc thiết kế cơ bản Cách chuyển từ mô hình thực thể liên kết sang mô hình quan hệ 3 4 2 Nhắc lại các giai đoạn phát triển hệ thống Khảo sát hệ thống Thu thập các yêu cầu Các Kịch bản sử dụng Từ điển dữ liệu Phân tích hệ thống Phân tích dữ liệu Mô hình thực thể liên kết Thiết kế hệ thống Thiết kế dữ liệu Mô hình quan hệ 3 Các nguyên tắc thiết kế 1. 2. 3. 4. 5. Trung thành Tránh dư thừa Giữ cho mô hình đơn giản Chọn đúng loại liên kết Chọn loại thành phần phù hợp 4 Nguyên tắc 1: Trung thành Luôn luôn, các phân tích và thiết kế cần phải phản ánh chân thực các mô tả của hệ thống nghiệp vụ. Với mô hình TTLK, điều này có nghĩa là các thành phần của nó cũng phải phản ánh sự thực này.  Nên đặt tên các Thực thể, Liên kết và Thuộc tính càng gần với thực tế càng tốt. 5 Nguyên tắc 2: Tránh dư thừa Không để tình trạng cùng một thông tin lại xuất hiện ở nhiều chỗ khác nhau trong mô hình Có thể gộp các thực thể có thông tin chung, và kết hợp với liên kết ISA để giảm dư thừa 6 Ví dụ: dư thừa name Beers name N ManfBy 1 addr Manfs manf Thông tin về nhà sản xuất đã xuất hiện 2 lần, ở thuộc tính và ở thực thể 7 Ví dụ: không còn dư thừa name Beers name N ManfBy 1 addr Manfs Thông tin về nhà sản xuất chỉ còn xuất hiện đúng 1 lần 8 Ví dụ: giảm dư thừa với liên kết ISA name dob roll# name Student school ID addr Person school name emp# dob addr company dob Student Employee Employee company addr 9 Nguyên tắc 3: Giữ mô hình đơn giản  Không bổ sung thêm các thành phần mới khi không thực sự cần thiết. Cần lưu ý cân bằng việc phát triển hệ thống hiện tại và nhu cầu nâng cấp hệ thống trong tương lai. 10 Ví dụ: Thực thể không cần thiết  Trong hệ thống quản lý Khối lượng giảng dạy cho một Trường, thì có thể có thực thể Trường và Khoa, và một Trường thì có thể có nhiều Khoa. Nhưng trong hệ thống chỉ có 1 thực thể Trường nên việc tạo ra tập thực thể Trường là không cần thiết. Trường 1 Có N Khoa 11 Nguyên tắc 4: Chọn đúng loại liên kết Khi giữa các thực thể có thể tồn tại nhiều liên kết khác nhau, thì chỉ cần chọn các liên kết cơ bản nhất. Còn các liên kết còn lại mà có thể suy được từ các liên kết cơ bản thì nên bỏ đi. 12 Ví dụ: Chọn đúng loại liên kết title Salary year Movies Contracts N length genre 1 Studios name addr name addr Stars  Liệu có cần thêm các liên kết giữa Movies và Studios, cũng như giữa Movies và Stars không?  Nếu có thì liên kết Contracts có cần thiết nữa không? 13 Nguyên tắc 5: Chọn loại thành phần phù hợp Đôi khi không dễ quyết định xem biểu diễn một thông tin dưới dạng nào của mô hình TTLK, vì dường như dạng nào cũng có thể được. Khi đó cần chọn dạng nào phù hợp nhất, mà tiêu chuẩn có thể dựa vào các nguyên tắc trên. Cần phân biệt giữa thực thể, thuộc tính và liên kết để chọn cho phù hợp:  Thực thể có thể tồn tại độc lập và cần có thêm thông tin chi tiết cho nó (các thuộc tính).  Các thuộc tính không đứng độc lập, mà cần bổ sung, hay là bộ phận của thực thể hay liên kết nào đó.  Liên kết cũng không tồn tại độc lập, mà phụ thuộc vào các thực thể thành phần 14 Chuyển đổi từ mô hình thực thể liên kết sang mô hình quan hệ 1. Chuyển từ thực thể sang quan hệ 2. Chuyển từ liên kết sang quan hệ 15 Chuyển từ thực thể sang quan hệ Quy tắc:  Tên thực thể  Tên quan hệ  Các thuộc tính của thực thể Các thuộc tính của QH. name dob roll# Student school Student (roll#, name, dob, addr, school) addr 16 Chuyển từ liên kết sang quan hệ Chuyển liên kết nhiều ngôi thành các liên kết hai ngôi:  Coi liên kết như tập thực thể Sinh viên Sinh viên 1 N Khoa Học Học N 1 Khoa N 1 Khóa Khóa 17 Chuyển từ liên kết sang quan hệ Chuyển liên kết 2 ngôi:  Liên kết 1:1: nên ghép 2 thực thể này lại để thành một thực thể chung, rồi chuyển thực thể chung này thành QH  Liên kết M:N: • Tên liên kết  Tên quan hệ • Thuộc tính của quan hệ =  các thuộc tính khóa của các thực thể thành viên.  Liên kết 1:N: chỉ cần thêm thuộc tính khóa của thực thể ở đầu 1 vào thực thể ở đầu N, thì liên kết này có thể được bỏ đi. 18 Ví dụ ID_SV Sinh viên ID_Khóa M Học N Tên SV Khóa Tên khóa ID_SV Sinh viên Sinh viên (ID_SV, Tên SV); ID_Lớp M Học 1 Lớp Khóa (ID_Khóa, Tên khóa); Học (ID_SV, ID_Khóa); Sinh viên (ID_SV, Tên SV, ID_Lop); Lớp (ID_Lớp, Tên lớp); Tên SV Tên lớp 19 Chuyển từ liên kết sang quan hệ Với liên kết ISA: không cần phải tạo quan hệ mới cho loại liên kết này, nhưng các thực thể tham gia một cây liên kết này cần được xử lý đặc biệt theo 1 trong 3 cách như sau:  Theo góc nhìn Thực thể/Liên kết: với mỗi thực thể E trong cây liên kết, tạo một quan hệ mà chứa các thuộc tính khóa của gốc và các thuộc tính thuộc về E.  Theo cách tiếp cận hướng đối tượng: Coi các thực thể như các đối tượng thuộc về một lớp. Với mỗi cây con của cây liên kết, thì tạo ra một quan hệ mà chứa tất cả các thuộc tính của cây con đó.  Sử dụng giá trị rỗng (NULL values): tạo ra một quan hệ duy nhất bao gồm tất cả các thuộc tính của các thực thể trong cây liên kết. 20 Ví dụ - Theo góc nhìn Thực thể/Liên kết Chuyển cây liên kết sau: name address dob Ta sẽ có 3 quan hệ: ID Person Person(ID, name, address, dob) isa roll# emp# Student school isa Employee Student(ID, roll#, school) Employee(ID, emp#, company) company 21 Ví dụ - Theo Hướng đối tượng Cây liên kết trên có 4 cây con:     Một mình Person Person và Student Person và Employee Cả 3 tập thực thể Từ đó ta sẽ có 4 quan hệ:     Person(ID, name, address, dob) PersonS(ID, name, address, dob, roll#, school) PersonE(ID, name, address, dob, emp#, company) PersonSE(ID, name, address, dob, roll#, school , emp#, company) 22 Ví dụ - Sử dụng giá trị NULL Từ cây liên kết, ta tạo ra 1 quan hệ duy nhất: Person(ID, name, address, dob, roll#, school , emp#, company)) 23 Tóm tắt chương Các thành phần cơ bản của mô hình thực thể liên kết Các nguyên tắc xây dựng mô hình Các phương pháp chuyển đổi từ mô hình TTLK sang mô hình quan hệ. 24 Viện Điện tử - Viễn thông Bộ Môn Điện tử - Kỹ thuật máy tính Kỹ thuật phần mềm ứng dụng Chương 7: Phân tích hệ thống Phần 1: Giới thiệu chung Các nội dung chính • Xác định lại vấn đề của hệ thống hiện tại • Đề xuất giải pháp phù hợp • Các thành phần cần phân tích: – Phân tích chức năng – Phân tích dữ liệu – Phân tích hành vi Xác định lại vấn đề của hệ thống hiện tại • Sau giai đoạn khảo sát kỹ lưỡng các y/c và hoạt động của hệ thống hiện tại, thì bắt đầu giai đoạn phân tích là giai đoạn thích hợp để làm rõ hơn vấn đề của hệ thống hiện tại, để từ đó xác định chi tiết và đầy đủ hơn giải pháp phần mềm để giải quyết các vấn đề đó. • Các vấn đề của HT hiện tại chủ yếu nảy sinh do phương thức làm việc cũ, cũng như theo các cơ chế QL cũ không hiệu quả. Xác định lại vấn đề của hệ thống hiện tại • Các vấn đề cần phát hiện: – Chu trình làm việc cũ có chỗ không hợp lý – Công việc chồng chéo – Tốc độ thực hiện thường xuyên chậm chạp, không đáp ứng được y/c của người dùng và khách hàng – Thường xảy ra sai sót do phải thực hiện thủ công – Việc kiểm tra, kiểm soát gặp khó khăn Đề xuất giải pháp phù hợp • Đề xuất giải pháp phần mềm cho hệ thống mới nhằm giải quyết các vấn đề đã xác định ở trên: – Đưa ra chu trình làm việc hợp lý hơn nếu cần – Phân công nhiệm vụ cụ thể và rõ ràng hơn để tránh chồng chéo – Phần mềm nên tập trung vào các khâu mà đang có vấn đề chậm chạp, hoặc thường xuyên có sai sót – Hệ thống mới cũng nên bổ sung các tính năng hỗ trợ việc kiểm tra, giám sát của các nhà quản lý Đề xuất giải pháp phù hợp • Sau khi đề xuất giải pháp cho HT mới, cần có các cuộc gặp chính thức với khách hàng để thống nhất giải pháp: – Trình bầy giải pháp mới cho khách hàng – Kiến nghị với KH về các điều chỉnh cần thiết đối với chu trình cũ nếu có – Lắng nghe ý kiến phản hồi, để có các điều chỉnh cần thiết, nhằm làm tăng tính khả thi của giải pháp đó. – Cùng nhau đi đến thống nhất giải pháp mới Phân tích chức năng • Mục đích: – Làm rõ các thành phần chức năng của hệ thống mới và các thành phần liên quan như đối tượng sử dụng, dữ liệu trao đổi, trong đó chức năng đóng vai trò trung tâm – Làm rõ mối quan hệ giữa các chức năng với nhau và với các thành phần khác Phân tích chức năng • Các phương pháp: – Theo mức độ trừu tượng: • Phân tích đại thể • Phân tích chi tiết – Theo góc nhìn: • Phân tích tĩnh: chỉ tập trung xác định các chức năng của hệ thống, không quan tâm việc thực hiện các chức năng đó như thế nào • Phân tích động: ngoài chức năng, còn xác định các thành phần khác như đối tượng sử dụng, dữ liệu, và mối quan hệ giữa chúng khi thực hiện chức năng như thế nào Phân tích chức năng • Công cụ sử dụng: – Phân tích tĩnh và đại thể: biểu đồ phân cấp chức năng (BPC) – Phân tích động: biểu đồ luồng dữ liệu (BLD) – Phân tích chi tiết: các đặc tả chức năng: • Đặc tả chức năng (PSpec) • Các bảng quyết định Phân tích chức năng – Biểu đồ phân cấp chức năng • Là mô hình phân tích đại thể và tĩnh về các chức năng của hệ thống • Xác định mối quan hệ bao hàm giữa các chức năng: chức năng đại thể bao hàm các chức năng chi tiết hơn  tạo ra cây phân cấp các chức năng • Việc phân cấp chức năng này thường được dùng để xác định menu chính của phần mềm sau này Phân tích chức năng – Biểu đồ luồng dữ liệu (BLD) • Là mô hình phân tích động hệ thống • Xác định rõ những đối tượng mà hệ thống mới sẽ phục vụ (người dùng, tác nhân ngoài) • Làm rõ các thành phần chức năng của hệ thống mới • Xác định rõ mối quan hệ giữa các đối tượng và các chức năng: đối tượng nào dùng chức năng nào và dùng như thế nào  các luồng dữ liệu vào/ra hệ thống • Xác định mối quan hệ giữa các chức năng như: thứ tự thực hiện, đồng bộ, thông tin trao đổi  các luồng thông tin nội bộ Phân tích chức năng – Các đặc tả chức năng • Đặc tả chức năng (PSpec): Mô tả chi tiết hoạt động bên trong của mỗi chức năng, có vai trò như giải thuật thực hiện chức năng đó • Các bảng quyết định: Dùng để mô tả chi tiết các tình huống có nhiều lựa chọn trong các đặc tả chức năng Phân tích dữ liệu • Mục đích: – Làm rõ các thành phần dữ liệu của hệ thống và mối quan hệ giữa chúng • Phương pháp: – Phân tích hướng dữ liệu: chỉ tập trung làm rõ phần dữ liệu và các ràng buộc nghiệp vụ trong đó • Công cụ: – Từ điển dữ liệu – Mô hình thực thể liên kết Phân tích hành vi • Mục đích: – Xác định các trạng thái của hệ thống, và các sự kiện gây ra sự thay đổi các trạng thái đó – Xác định các hành động cần làm khi có một sự kiện nào đó xảy ra – Thường được dùng để mô tả các hệ thống mà thời điểm, thứ tự xuất hiện các sự kiện là không xác định (ngẫu nhiên bất kỳ), như các hệ thống điều khiển thời gian thực • Công cụ: – Biểu đồ chuyển trạng thái Tóm tắt • Xác định chi tiết và cụ thể hơn các vấn đề của hệ thống hiện tại • Đưa ra giải pháp phần mềm hợp lý giải quyết thỏa đáng các vđ trên • Đi vào phân tích các thành phần của hệ thống: – Phân tích chức năng – Phân tích dữ liệu – Phân tích hành vi Xin cảm ơn! Viện Điện tử - Viễn thông Bộ Môn Điện tử - Kỹ thuật máy tính Kỹ thuật phần mềm ứng dụng Chương 7: Phân tích hệ thống Phần 2: Phân tích về chức năng 1 Các nội dung chính • Phân tích tĩnh thuần túy chức năng: Biểu đồ phân cấp chức năng • Phân tích động và tổng thể: các biểu đồ luồng dữ liệu • Phân tích chi tiết: đặc tả tiến trình • Phân tích hành vi: biểu đồ chuyển trạng thái 2 Biểu đồ phân cấp chức năng • Mục đích: – Xác định mối quan hệ bao hàm giữa các chức năng: chức năng đại thể bao hàm các chức năng chi tiết hơn  tạo ra cây phân cấp các chức năng – Việc phân cấp chức năng này thường được dùng để xác định menu chính của phần mềm sau này 3 Biểu đồ phân cấp chức năng • Cấu trúc: Mức 0 CN chính CN con 1 CN con 2 CN con 3 CN con 1.1 CN con 2.1 CN con 3.1 CN con 1.2 CN con 2.2 CN con 3.2 Mức 1 Mức 2 CN con 2.3 4 Biểu đồ phân cấp chức năng • Phương pháp xây dựng: – Đầu vào: • các kịch bản sử dụng; • phần mô tả khái quát các chức năng của hệ thống; – Đầu ra: BPC – Nội dung: • Xác định mối quan hệ bao hàm giữa các chức năng, từ đó xác định số mức của biểu đồ • Xác định các chức năng của từng mức 5 Biểu đồ phân cấp chức năng • Bản chất mối quan hệ bao hàm: chức năng A bao hàm chức năng B: – Ý nghĩa 1: chức năng B là một bộ phận cần thiết của chức năng A – Ý nghĩa 2: chức năng A là trừu tượng để gộp nhóm các chức năng, trong đó có chức năng B • Các phương pháp gộp nhóm: – Gộp theo người dùng – Gộp theo loại chức năng: đầu vào (nhập DL), đầu ra (báo cáo), xử lý 6 Ví dụ: BPC cho hệ thống QL KLGD QLKLGD Cập nhật Danh mục Cập nhật KLGD Khoa Thời KB Bộ môn Cập nhật KLGD Lớp học Môn học Phòng học Phân công KLGD Báo cáo BC KLGD Khoa BC KLGD Bộ môn BC KLGD Giáo viên Phân cho BM Phân cho GV 7 Biểu đồ luồng dữ liệu • Mục đích: – Là mô hình phân tích động hệ thống – Xác định rõ những đối tượng mà hệ thống mới sẽ phục vụ (người dùng, tác nhân ngoài) – Làm rõ các thành phần chức năng của hệ thống mới – Xác định rõ mối quan hệ giữa các đối tượng và các chức năng: đối tượng nào dùng chức năng nào và dùng như thế nào  các luồng dữ liệu vào/ra hệ thống – Xác định mối quan hệ giữa các chức năng như: thứ tự thực hiện, đồng bộ, thông tin trao đổi  các luồng thông tin nội bộ 8 Biểu đồ luồng dữ liệu – Cấu tạo • Tác nhân ngoài/trong Người dùng • Chức năng/tiến trình Xử lý • Luồng dữ liệu • Kho dữ liệu Tên luồng dữ liệu Kho dữ liệu 9 Biểu đồ luồng dữ liệu - Cấu tạo • Tác nhân ngoài (đối tác – actor): là đối tượng ở bên ngoài hệ thống, nhưng có nhu cầu trao đổi thông tin với hệ thống. Đây thường là những người dùng cuối của hệ thống • Tác nhân trong: là một chức năng hoặc hệ con đã được mô tả ở trang khác của mô hình, nhưng lại có trao đổi thông tin với các thành phần trong trang hiện tại 10 Biểu đồ luồng dữ liệu - Cấu tạo • Chức năng/tiến trình: – Có nhiệm vụ tiếp nhận và biến đổi luồng dữ liệu vào theo một quy tắc nào đó, rồi đưa thông tin ra • Luồng dữ liệu: – Biểu diễn luồng thông tin trao đổi từ nguồn thông tin đến đích thông tin. Trong đó nguồn và đích có thể là các thành phần của biểu đồ • Kho dữ liệu: – Biểu diễn nơi lưu trữ thông tin trong một thời gian nào đó, và cũng đồng thời giúp đồng bộ hoạt động của các tiến trình 11 Biểu đồ luồng dữ liệu – Ví dụ Đăng nhập Thông tin đăng nhập Sinh viên Cập nhật hồ sơ Kq HS SV Hồ sơ SV Tìm kiếm hồ sơ 12 Biểu đồ luồng dữ liệu – Các mức • Biểu đồ mức 0 (mức khung cảnh): là biểu đồ mức cao nhất. mức này chỉ có 1 tiến trình duy nhất là hệ thống cần xây dựng, được nối với các tác nhân bằng các luồng dữ liệu ngoài • Biểu đồ mức 1 (mức đỉnh): là kết quả của việc phân rã chức năng duy nhất trong mức 0, thành các tiến trình con. mức này có thể bắt đầu có nhu cầu xuất hiện các Kho dữ liệu • Các biểu đồ mức 2,3,v.v: làm tương tự như cho biểu đồ mức đỉnh 13 Biểu đồ luồng dữ liệu – Mức 0 (1) Sinh viên (2) Quản lý Sinh viên (3) (4) Giáo vụ •(1): là dữ liệu mà SV có thể cập nhật như hồ sơ SV; cũng có các thông tin mà SV muốn tìm kiếm như Lịch học, Lịch thi, Kết quả thi,v.v •(2): là dữ liệu về các kết quả tìm kiếm trên •(3): là dữ liệu mà GVụ có thể cập nhật và tìm kiếm như hồ sơ SV, hồ sơ GV, Kết quả kiểm tra, thi của SV, Lịch giảng dạy, Lớp học,v,v •(4): là dữ liệu về các kết quả tìm kiếm trên 14 Biểu đồ luồng dữ liệu – Mức 1 Giáo vụ Quản lý hồ sơ Hồ sơ SV Quản lý học Lịch học Sinh viên Quản lý thi 15 Đặc tả tiến trình • Xem tài liệu tham khảo 16 Biểu đồ chuyển trạng thái • Xem tài liệu tham khảo 17 Cảm ơn! 18 Viện Điện tử - Viễn thông Bộ Môn Điện tử - Kỹ thuật máy tính Kỹ thuật phần mềm ứng dụng Chương 8: Thiết kế hệ thống Phần 1: Giới thiệu chung 1 Nội dung chính • Mục đích của thiết kế • Các nguyên tắc thiết kế • Các phần cần thiết kế – Thiết kế CSDL  CSDL ít nhất ở dạng chuẩn 3 – Thiết kế kiến trúc  Lược đồ cấu trúc chương trình – Thiết kế giao diện  các menu, form nhập, mẫu báo cáo, thông báo 2 Mục đích của giai đoạn Thiết kế • Là quá trình chuyển các y/c của phần mềm sang dạng biểu diễn của phần mềm mà nó có thể được đánh giá về chất lượng trước khi cài đặt. • Thiếu thiết kế, việc cài đặt có thể gặp các vấn đề: – Thiếu kế hoạch cài đặt: không biết rõ thứ tự cài đặt các thành phần, do đó gây ra sự lộn xộn và khó khăn trong việc ước lượng và phân công công việc – Không rõ ràng: chưa hiểu rõ các y/c sẽ được cài đặt thế nào – Khó nâng cấp và bảo trì: khi có lỗi, rất khó xác định nó nằm ở phần nào. Khi muốn nâng cấp cũng không biết cần nâng cấp ở đâu, ảnh hưởng của nó đến hệ thống hiện tại thế nào  nh hưởng xấu đến chất lượng và tiến độ làm phần mềm 3 Các nguyên tắc thiết kế • Sự trừu tượng (abstraction) • Làm mịn (tinh chỉnh từng bước - refinement) • Modul hóa (modularity) 4 Các nguyên tắc thiết kế • Sự trừu tượng: – Là sự tập trung vào một vấn đề ở một mức khái quát nào đó, và bỏ qua các chi tiết không liên quan – Quá trình thiết kế hệ thống đòi hỏi nhiều mức trừu tượng khác nhau – Với phần mềm thì có 3 loại trừu tượng • Trừu tượng thủ tục • Trừu tượng dữ liệu • Trừu tượng điều khiển 5 Các nguyên tắc thiết kế • Làm mịn (tinh chỉnh từng bước - refinement) – Là quá trình làm chi tiết hóa từng thành phần của một biểu diễn nào đó, để dần đưa nó sang biểu diễn ở dạng chi tiết hơn (giảm mức độ trừu tượng) – Việc làm mịn giúp cho việc chuyển đổi này diễn ra một cách không đột ngột và dễ dàng quản lý. 6 Các nguyên tắc thiết kế • Modul hóa (modularity): – Là quá trình phân chia hệ thống/phần mềm thành các thành phần riêng rẽ có tên và tương đối độc lập – Là một kỹ thuật cơ bản nhất để quản lý một cách hiệu quả độ phức tạp của hệ thống – Modul hóa tốt có thể giúp giảm thiểu thời gian và chi phí phát triển hệ thống 7 Modul hóa Quan hệ giữa modul hóa và chi phí phần mềm 8 Module hóa hiệu quả • Che dấu thông tin – Là cách thiết kế làm sao để thông tin trong một modul (cả chức năng và dữ liệu) là không nhìn thấy và không truy nhập được từ các thành phần bên ngoài mà không có nhu cầu về thông tin đó • Độc lập chức năng (functional independence) – Là tính chất phản ánh mức độ đơn nhất về chức năng và đơn giản về giao diện của một modul. Nó được đo lường theo 2 tiêu chuẩn: • Mức độ cố kết (cohesion) • Mức độ tương liên (coupling) 9 Mức độ cố kết • Khái niệm: Mức độ cố kết của một modul là một đơn vị đo về sức mạnh chức năng của modul đó. Mức độ này càng cao thì tính độc lập chức năng cũng càng cao. 10 Các loại cố kết và mức độ của chúng Mức độ Thấp Vừa Cao Loại cố kết Ý nghĩa Cố kết trùng khớp Modul bao gồm một dãy các công việc mà liên quan rất ít đến nhau Cố kết logic Modul bao gồm một dãy các công việc mà có liên quan đến nhau một cách logic Cố kết thời gian Modul bao gồm một dãy các công việc mà phải hoàn thành trong cùng một khoảng tg. Cố kết thủ tục Các công việc trong modul đó liên quan đến nhau và phải được thực hiện theo một trật tự nhất định Cố kết truyền thông Khi các công việc trong một modul cùng sử dụng một phần nào đó của một cấu trúc dữ liệu Cố kết thủ tục rõ ràng Khi modul đó chỉ thực hiện một công việc 11 Ví dụ về mức độ cố kết • Bài toán: viết một chương trình tính giá trị một biểu thức số học mà có thể được nhập từ bàn phím hay từ một tệp văn bản. Kết quả đưa ra cũng có thể đưa ra màn hình hoặc ghi vào tệp văn bản. • Sơ đồ cho giải thuật của bài toán trên được cho ở hình sau: 12 Ví dụ về mức độ cố kết Chọn cách nhập Nhập từ bàn phím BT dạng trung tố Nhập từ tệp In ra màn hình Ghi ra tệp Chuyển bt sang dạng hậu tố BT dạng hậu tố Chọn cách xuất Giá trị BT Tính giá trị biểu thức 13 Mức độ cố kết thấp: trùng khớp Chọn cách nhập Nhập từ bàn phím BT dạng trung tố Nhập từ tệp In ra màn hình Ghi ra tệp Chuyển bt sang dạng hậu tố BT dạng hậu tố Chọn cách xuất Giá trị BT Tính giá trị biểu thức Một modul làm toàn bộ các công việc 14 Mức độ cố kết vừa: thủ tục modul nhập BT Chọn cách nhập Nhập từ bàn phím BT dạng trung tố Nhập từ tệp In ra màn hình Ghi ra tệp modul xuất BT Chuyển bt sang dạng hậu tố BT dạng hậu tố Chọn cách xuất Giá trị BT Tính giá trị biểu thức modul tính giá trị BT 15 Mức độ cố kết cao: thủ tục rõ ràng Nhập từ bàn phím Chọn cách nhập BT dạng trung tố Nhập từ tệp In ra màn hình Chuyển bt sang dạng hậu tố BT dạng hậu tố Chọn cách xuất Giá trị BT Tính giá trị biểu thức Ghi ra tệp 16 Mức độ tương liên • Khái niệm: Mức độ tương liên của một modul đơn vị đo lường mức độ kết nối của modul đó với các modul khác. Điều này phụ thuộc vào độ phức tạp của giao diện, điểm truy nhập hay tham chiếu của modul. 17 Mức độ tương liên Mức độ Loại Thấp Tương liên dữ liệu Là khi một modul truyền tham số đến modul khác Tương liên điều khiển Là khi một modul truyền một thông tin điều khiển (cờ điều khiển) đến modul khác Tương liên ngoài Là khi một modul phụ thuộc vào một thiết bị bên ngoài (như các t/b nhập/xuất) Tương liên chung dữ liệu Là khi một số modul tham chiếu/chia sẻ đến cùng một đối tượng dữ liệu toàn cục Tương liên nội dung Là khi một modul sử dụng dữ liệu hay điều khiển thông tin trong phạm vi của một modul khác; Nó cũng xuất hiện khi có tồn tại lệnh rẽ nhánh trong modul Vừa Cao Ý nghĩa 18 Cảm ơn! 19 Viện Điện tử - Viễn thông Bộ Môn Điện tử - Kỹ thuật máy tính Kỹ thuật phần mềm ứng dụng Chương 8: Thiết kế hệ thống Phần 2: TK cơ sở dữ liệu Các nội dung chính • Các bước thiết kế một CSDL • Ví dụ minh họa Thiết kế Cơ sở dữ liệu 1. Chuyển từ mô hình thực thể liên kết sang mô hình quan hệ. 2. Xác định các phụ thuộc hàm từ các ràng buộc dữ liệu và các quy tắc nghiệp vụ. 3. Chuẩn hóa các lược đồ quan hệ, đưa chúng về các lược đồ ở dạng chuẩn 3. 4. Bổ sung thêm các thuộc tính khóa nếu cần, nhất là khi quan hệ có nhiều thuộc tính khóa. 5. Xác định chi tiết các miền giá trị cho các thuộc tính, từ đó xác định kiểu dữ liệu cho chúng. Lập bảng mô tả chi tiết các kiểu dữ liệu của từng thuộc tính cho từng quan hệ (bảng) 3 Ví dụ về TK CSDL Tên thực thể Tên sử dụng Khoa Bộ môn Giáo viên TKhoa TBoMon TGiaoVien Lớp học Phòng học TLopHoc TPhong Trưởng BM TTrBM Thời khóa biểu TKB Khối lượng giảng dạy KLGD Các thuộc tính Tên khoa, Văn phòng, Điện thoại, Fax Tên BM, Văn phòng TênGV, Ngày sinh, Địa chỉ, Chức danh, Chức vụ, Ngày chức danh, Ngày chức vụ Tên lớp, Khóa học, Số Lượng SV Tên phòng, SL chỗ ngồi Gồm các thuộc tính của Giáo viên, Ngày nhậm chức, Ngày thôi chức Năm học, Học kỳ, Khoa, Lớp học, Phòng học, Môn học, Tiết học TKB, Giáo viên 4 Ví dụ về TK CSDL 1 N Khoa 1 N N TKB 1 N 1 Lớp học 1 N 1 KLGD Phòng học N N Bộ 1 ôn 1 N Giáo viên 1 1 Trưởng Bộ môn 5 Các bảng được suy ra Bảng Khoa Thuộc tính Tên khoa, Văn phòng, Điện thoại, Fax Ràng buộc & Quy tắc nghiệp vụ Mỗi khoa có 1 văn phòng Và thường mỗi VP thuộc về một khoa, vì việc chuyển địa điểm làm việc của khoa rất hiếm khi xảy ra Mỗi văn phòng có một số fax và có thể có nhiều số điện thoại Chuẩn hóa: Khóa: K = (Tên khoa, Điện thoại); Vi phạm chuẩn 2 và 3 Tách thành 3 quan hệ: Khoa (Tên khoa, Văn phòng); VănPhòng (Văn phòng, Fax); ĐiệnThoạiKhoa (Tên khoa, Điện thoại); Phụ thuộc hàm Tên khoa  Văn phòng; Văn phòng  Fax Ghi chú: có thể cân nhắc việc ghép 2 bảng Khoa và Văn phòng do mối qhệ giữa 2 bảng này. 6 Các bảng được suy ra Bảng Giáo viên Thuộc tính Ràng buộc & Quy tắc nghiệp vụ Mỗi GV có 1 ngày sinh Mỗi GV có thể có nhiều địa chỉ, nhưng ở mỗi thời điểm thì chỉ có 1 chức danh và nhiều nhất là 1 chức vụ (có thể không có). TênGV, Ngày sinh, Địa chỉ, Chức danh, Ngày chức danh, Chức vụ, Ngày chức vụ Phụ thuộc hàm TênGV  Ngày sinh; TênGV, Ngày chức danh  Chức danh; TênGV, Ngày chức vụ  Chức vụ Chuẩn hóa: Khóa duy nhất: K = (TênGV, Địa chỉ, Ngày chức danh, Ngày chức vụ) Vi phạm chuẩn 2;  Tách thành 4 quan hệ: GiáoViên (TênGV, Ngày sinh); GV-Địa chỉ (TênGV, Địa chỉ, Ngày chức danh, Ngày chức vụ); GV-Chức danh (TênGV, Ngày chức danh, chức danh); GV-Chức vụ (TênGV, Ngày chức vụ, chức vụ); 7 Ghép 2 bảng Bộ môn và Trưởng BM Bảng Bộ môn Thuộc tính Ràng buộc & Quy tắc nghiệp vụ Mỗi Bộ môn có 1 Văn phòng Mỗi trưởng BM có 1 ngày nhậm chức và 1 ngày thôi chức mỗi thời điểm thì 1 BM chỉ có 1 trưởng BM TênBM, Văn phòng, Trưởng BM, Ngày nhậm chức, Ngày thôi chức Phụ thuộc hàm TênBM Văn phòng; Trưởng BM  Ngày nhậm chức, ngày thôi chức Tên BM, Ngày nhậm chức  Trưởng BM Chuẩn hóa: Khóa: K1 = (TênBM, Trưởng BM); K2 = (Tên BM, Ngày nhậm chức) Vi phạm chuẩn 2;  Tách thành các quan hệ: Bộ môn (Tên BM, Văn phòng); TrưởngBM (TrưởngBM, Ngày nhậm chức, Ngày thôi chức); BM-TrưởngBM (Tên BM, Ngày nhậm chức, Trưởng môn); 8 Các bảng được suy ra Bảng TKB Thuộc tính Ràng buộc & Quy tắc nghiệp vụ Mỗi lớp học thuộc một khoa Mỗi môn học của một lớp trong một năm học và 1 học kỳ thì học ở 1 tiết học phải học ở 1 phòng Năm học, Học kỳ, Tên Khoa , Tên lớp, Tên phòng, Môn học, Tiết học Phụ thuộc hàm Tên lớp  Tên Khoa; Năm học, Học kỳ, Tên lớp, Môn học, Tiết học  Tên phòng; Chuẩn hóa: Khóa duy nhất: K = (Năm học, Học kỳ, Tên lớp, Tên phòng, Tiết học) Vi phạm chuẩn 2;  Tách thành các quan hệ: Lớp học (Tên lớp, Tên khoa); TKB (Năm học, Học kỳ, Tên lớp, Tên phòng, Tiết học, Tên phòng); 9 Bổ sung các thuộc tính khóa và xác định miền giá trị cho các thuộc tính Bảng Khoa Bảng Văn phòng Thuộc tính Kiểu dữ liệu Ràng buộc Thuộc tính Kiểu dữ liệu Ràng buộc ID int PK ID int PK TênKhoa Varchar(200) Not NULL Tên VP Varchar(200) Not NULL ID_VP int FK to VănPhòng(ID) Fax Varchar(20) Dãy các chữ số liên tiếp Bảng ĐiệnThoạiKhoa Thuộc tính Kiểu dữ liệu Ràng buộc ID int PK ID_Khoa Int FK to Khoa(ID) ĐiệnThoại Varchar(20) Dãy các chữ số liên tiếp 10 Cảm ơn! Viện Điện tử - Viễn thông Bộ Môn Điện tử - Kỹ thuật máy tính Kỹ thuật phần mềm Chương 8: Thiết kế phần mềm Phần 3: Thiết kế kiến trúc Thiết kế kiến trúc phần mềm • Khái niệm về kiến trúc phần mềm: • Các phong cách kiến trúc • Các phương pháp thiết kế 2 Kiến trúc phần mềm • Khái niệm: “Là một cấu trúc bao gồm các thành phần phần mềm, các tính chất có thể thấy được từ bên ngoài của các thành phần này, và các liên kết giữa chúng” * • Các thành phần phần mềm có thể gồm: – Các module – Các cấu trúc dữ liệu, cơ sở dữ liệu 3 Kiến trúc phần mềm • Mục đích sử dụng: – Để đánh giá tính hiệu quả của phần mềm trong việc đáp ứng các y/c của hệ thống – Cân nhắc để chọn ra kiến trúc phù hợp nhất giữa các kiến trúc khác nhau – Giúp dự trù sớm và tương đối chính xác các tài nguyên cần chuẩn bị cho giai đoạn cài đặt phần mềm – Đóng vai trò như thiết kế tổng thể, làm nền tảng cho các thiết kế chi tiết sau đó – Giúp giảm thiểu các rủi ro trong quá trình xây dựng phần mềm sau này 4 Kiến trúc phần mềm • Các phong cách kiến trúc – Kiến trúc lấy dữ liệu làm trung tâm (data-centered architectures) – Kiến trúc luồng dữ liệu (data flow architectures) – Kiến trúc gọi và trả về (call and return architectures) • Main module/sub module • Remote procedure call 5 Kiến trúc lấy dữ liệu làm trung tâm 6 Kiến trúc luồng dữ liệu 7 Kiến trúc gọi và trả về 8 Kiến trúc gọi và trả về • Kiến trúc này còn được gọi là “cấu trúc chương trình”, hay “phân cấp điều khiển” • Một số khái niệm liên quan: – Fan-in: của một module là độ đo số lượng module khác mà điều khiển/gọi module đó – Fan-out: của một module là độ đo số lượng module mà module đó điều khiển/gọi – Chiều sâu (depth): xác định số mức điều khiển/gọi – Độ rộng (width): xác định phạm vi điều khiển/gọi 9 Thiết kế kiến trúc phần mềm • Phương pháp được sử dụng: “Thiết kế có cấu trúc” (structured design) • Đặc điểm của phương pháp: Có hướng luồng dữ liệu, cung cấp cách thuận tiện để chuyển từ các biểu đồ luồng dữ liệu sang mô hình kiến trúc phần mềm 10 Thiết kế có cấu trúc Các biểu đồ luồng DL 1. Xác định kiểu luồng thông tin 2. Xác định các biên của luồng 3. Chuyển BLD sang lược đồ cấu trúc chương trình 5. Đặc tả các module và luồng điều khiển 4. Tinh chỉnh lược đồ cấu trúc CT Các đặc tả module LĐ cấu trúc chương trình 11 Các kiểu luồng thông tin • Luồng biến đổi (transform flow) Luồng vào Trung tâm biến đổi Luồng ra • Luồng giao tác (transaction flow) – Là loại luồng biến đổi đặc biệt, trong đó có một luồng vào và có nhiều luồng ra 12 Luồng giao tác 13 Chuyển luồng biến đổi • Bước 1: Làm mịn các biểu đồ luồng dữ liệu đến mức cần thiết • Bước 2: Xác định các biên của luồng dữ liệu để xác định trung tâm biến đổi và các luồng vào và ra • Bước 3: Chuyển đổi BLD sang lược đồ cấu trúc • Bước 4: Tinh chỉnh LĐCT 14 Chuyển luồng biến đổi – Bước 1 15 Chuyển luồng biến đổi – Bước 1 16 Chuyển luồng biến đổi – Bước 1 17 Chuyển luồng biến đổi – Bước 2 18 Chuyển luồng biến đổi – Bước 3 19 20 Chuyển luồng biến đổi – Bước 4 21 Chuyển luồng biến đổi – Bước 4 22 Chuyển luồng giao tác – Bước 2 23 Chuyển luồng giao tác – Bước 3 24 Chuyển luồng giao tác – Bước 3 25 Tóm tắt • Kiến trúc phần mềm và vai trò của việc thiết kế KTPM • Các phong cách kiến trúc • Phương pháp thiết kế có cấu trúc • Các loại luồng dữ liệu – Luồng biến đổi – Luồng giao tác • Cách chuyển đổi từ BLD sang lược đồ cấu trúc chương trình 26 Cảm ơn! 27 Viện Điện tử - Viễn thông Bộ Môn Điện tử - Kỹ thuật máy tính Kỹ thuật phần mềm Chương 8: Thiết kế phần mềm Phần 4: Thiết kế giao diện Các nội dung chính • • • • Các loại giao diện Tầm quan trọng của giao diện Các quy tắc thiết kế giao diện Các bước thiết kế 2 Các loại giao diện • Giao diện giữa các module chương trình • Giao diện giữa các modul và các thiết bị/hệ thống bên ngoài • Giao diện người máy: giao diện giữa người sử dụng và phần mềm 3 Tầm quan trọng của giao diện • Là bộ mặt của phần mềm: cần rõ ràng, sáng sủa, thân thiện. • Là nơi cung cấp các chức năng cho người dùng: cần đầy đủ các chức năng, dễ sử dụng và sử dụng an toàn. • Là nơi cung cấp các trợ giúp: cần hiểu được các nhu cầu trợ giúp và giúp đỡ kịp thời và hiệu quả. • Là công cụ sử dụng hàng ngày: nên cần khả năng tùy biến và linh hoạt để tránh nhàm chán và sử dụng ngày càng hiệu quả. 4 Các quy tắc thiết kế • Các quy tắc vàng: 1. Luôn đặt người dùng vào vị trí điều khiển 2. Giảm thiểu gánh nặng ghi nhớ của người dùng 3. Tạo giao diện nhất quán 5 Quy tắc 1: Luôn đặt người dùng vào vị trí điều khiển • Ý nghĩa: – Giao diện cần phải giúp người dùng luôn duy trì quyền điều khiển chương trình, chứ không phải bị điều khiển bởi chương trình – Việc thiết kế giao diện cần đứng từ góc độ người dùng và vì người dùng, chứ không chỉ ở góc độ của người phát triển hệ thống dùng chương trình. 6 Quy tắc 1: Luôn đặt người dùng vào vị trí điều khiển • Các nguyên tắc cho phép cụ thể hóa quy tắc 1: – Xác định các chế độ tương tác (interaction modes) phù hợp, sao cho chúng không bắt người dùng phải thực hiện các hành động không mong muốn hay không cần thiết – Cung cấp nhiều loại tương tác linh hoạt: cho phép người dùng có nhiều lựa chọn loại hình tương tác, như bàn phím, chuột, cảm ứng, giọng nói,v.v. – Cho phép tương tác có thể bị ngắt và làm lại (undo) – Cho phép giao diện có thể tùy biến và tiến hóa theo sở thích và kinh nghiệm của người dùng – Che dấu các chi tiết kỹ thuật bên trong không cần thiết khỏi người dùng thông thường 7 Quy tắc 2: Giảm thiểu gánh nặng ghi nhớ của người dùng • Ý nghĩa: – Quy tắc này giúp người dùng sử dụng hệ thống cảm thấy thoải mái hơn, chính xác hơn, giảm thiểu công sức phải nhớ, cũng như các lỗi do việc nhớ không chính xác 8 Quy tắc 2: Giảm thiểu gánh nặng ghi nhớ của người dùng • Các nguyên tắc cụ thể: – Giảm thiểu yêu cầu ghi nhớ ngắn hạn: như các hành động đã thực hiện, các dữ liệu đã nhập, các cửa sổ trước,v.v – Thiết lập các giá trị mặc định có ý nghĩa – Xác định các shortcut trực quan và dễ nhớ – Hé mở thông tin theo một cách dần dần 9 Quy tắc 3: Tạo giao diện nhất quán • Ý nghĩa: – Các giao diện của một hệ thống cần phải theo một phong cách thống nhất nào đó, như các form nhập liệu theo một cách bố trí nhất định, các báo cáo có cùng định dạng nhất định, các cửa sổ có cùng phong cách nhất định – Tính nhất quán của giao diện sẽ làm người dùng cảm thấy thân thiện hơn, dễ sử dụng hơn, thích nghi nhanh hơn. Đồng thời nó cũng giảm thiểu các sai sót, thời gian làm quen của người dùng với hệ thống 10 Quy tắc 3: Tạo giao diện nhất quán • Các nguyên tắc cụ thể: – Cho phép người dùng đặt công việc hiện tại trong khung cảnh có ý nghĩa: giao diện luôn cho phép NSD biết họ đang ở đâu và đang làm gì, cái gì đã làm, cái gì sẽ làm tiếp theo – Duy trì sự nhất quán trong một họ các ứng dụng – Hạn chế thay đổi các phong cách giao diện mà đã tạo được ấn tượng tốt với người dùng. Chỉ nên thay đổi khi có lý do chính đáng 11 Các bước thiết kế giao diện • Phân tích môi trường, người dùng, các công việc • Thiết kế giao diện • Cài đặt giao diện • Kiểm tra tính hợp lệ của giao diện 12 Các bước thiết kế giao diện 13 Các bước thiết kế giao diện • Tham khảo chi tiết trong sách “Software Engineering – A practitioner’s approach” 14 Cảm ơn! 15 Đại học Bách khoa Hà Nội Viện Điện tử - Viễn thông Kỹ thuật phần mềm ứng dụng Chương 9: Ngôn ngữ SQL Phần 1: Câu truy vấn đơn Nội dung chính Tổng quan về SQL Transact SQL (T-SQL) của Microsoft 2 Tổng quan về SQL  SQL (viết tắt của “Structured Query Language” – Ngôn ngữ truy vấn có cấu trúc) là tập các lệnh cho phép người dùng và cả các chương trình thực hiện các truy vấn dữ liệu trong cơ sở dữ liệu.  Về mặt lịch sử, ban đầu nó có tên gọi là SEQUEL, (Structured English Query Language) do Donald D. Chamberlin và Raymond F. Boyce tại hãng IBM phát triển vào đầu những năm 70 của thế kỷ trước. Sau này nó mới được đổi tên thành SQL (và vẫn được phát âm là "sequel").  Ngày nay, nó là ngôn ngữ chuẩn hóa của các hệ quản trị cơ sở dữ liệu quan hệ. 3 Các phiên bản SQL* Year Name Alias Comments 1986 SQL-86 SQL-87 First published by ANSI. Ratified by ISO in 1987. 1989 SQL-89 FIPS 127-1 Minor revision, adopted as FIPS 127-1. 1992 SQL-92 SQL2, FIPS 127-2 Major revision (ISO 9075), Entry Level SQL-92 adopted as FIPS 127-2. 1999 SQL:1999 SQL3 Added regular expression matching, recursive queries, triggers, support for procedural and control-of-flow statements, non-scalar types, and some objectoriented features. 2003 SQL:2003 Introduced XML-related features, window functions, standardized sequences, and columns with auto-generated values (including identity-columns). 2006 SQL:2006 ISO/IEC 9075-14:2006 defines ways in which SQL can be used in conjunction with XML. It defines ways of importing and storing XML data in an SQL database, manipulating it within the database and publishing both XML and conventional SQL-data in XML form. In addition, it provides facilities that permit applications to integrate into their SQL code the use of XQuery, the XML Query Language published by the World Wide Web Consortium (W3C), to concurrently access ordinary SQL-data and XML documents. 2008 SQL:2008 Defines more flexible windowing functions, clarifies SQL 2003 items that were still unclear [1] 4 Transact SQL (T-SQL) Transact-SQL (T-SQL) *: là mở rộng của ngôn ngữ SQL do Microsoft và Sybase phát triển, được sử dụng trong các hệ quản trị CSDL như SQL Server T-SQL SQL 5 Các thành phần ngôn ngữ của TSQL T - SQL DDL (Data Definition Language) DML (Data Manipulation Language) DCL (Data Control Language) 6 Các thành phần ngôn ngữ của TSQL 7 Lệnh SELECT Lệnh SELECT là một lệnh đa năng để truy vấn dữ liệu trong CSDL. Nó cho phép thực hiện tất cả các thao tác cơ bản trong đại số quan hệ như: Chiếu (Projection) Chọn (Selection) Nối (Joining) Hợp (Union) Trừ (Except) Lệnh SQL đơn giản nhất: in ra toàn bộ nội dung của 1 bảng: SELECT * FROM table-name; 8 Phân loại: Lệnh SELECT  Lệnh đơn: là câu lệnh mà chỉ truy vấn thông tin từ 1 bảng  Lệnh phức: là câu lệnh truy vấn thông tin từ nhiều bảng  Lệnh truy vấn con (sub-query, hay còn gọi là lệnh SELECT lồng nhau): là câu lệnh SELECT mà bên trong nó cũng lại chứa 1 hay nhiều câu lệnh SELECT khác 9 Ghi chú Mỗi một lệnh (statement) trong SQL bao gồm một số mệnh đề (clause) Ví dụ: SELECT * FROM employees là một câu lệnh gồm có 2 mệnh đề Cú pháp trong SQL KHÔNG phân biệt chữ hoa với chữ thường Với các từ khóa nên viết hoa để dễ phân biệt với các từ khác 10 Lệnh đơn 1. 2. 3. 4. 5. Phép chiếu trong SQL Phép chọn trong SQL Đối sánh mẫu (Pattern matching) trong SQL Giá trị NULL và ‘Unknown’ Sắp xếp đầu ra 11 Cú pháp lệnh SELECT SELECT [ ALL | DISTINCT ] * | {column_name | expression [alias],…} FROM table  SELECT xác định các thuộc tính (cột) cần xuất ra  ALL: là lựa chọn mặc định, cho phép các hàng có giá trị trùng nhau cũng được xuất ra  DISTINCT: các hàng có giá trị trùng nhau chỉ được xuất ra 1 lần  FROM xác định một hay nhiều bảng chứa các thông tin cần tìm 12 Ví dụ: SELECT tất cả các cột SELECT * FROM PC 13 Phép chiếu trong SQL Trong mệnh đề SELECT, thay vì sử dụng “*” để liệt kê toàn bộ các thuộc tính, ta có thể liệt kê từng thuộc tính mà muốn xuất ra. VD: SELECT model, speed, price FROM PC 14 Có thể mở rộng phép chiếu sử dụng bí danh và biểu thức SELECT model, price [price in USD], price*20000 [price in VND] FROM PC 15 Bí danh (Alias) Là biện pháp cho phép đổi tên các thuộc tính (cột), hay tên các bảng trong câu lệnh SELECT Nó có thể đi kèm với từ khóa AS (không bắt buộc) Trong trường hợp bí danh có khoảng trắng thì cần đặt nó trong cặp “bí danh” hoặc [bí danh] 16 Loại bỏ các bộ trùng lặp với từ khóa DISTINCT Bảng PC SELECT DISTINCT speed FROM PC SELECT DISTINCT speed,hdd FROM PC 17 Phép chọn trong SQL SELECT [ ALL | DISTINCT ] * | {column_name | expression [alias],…} FROM table WHERE condition Trong đó: [condition ]: biểu thức logic biểu diễn điều kiện chọn. 18 Các ví dụ cho lệnh chọn 19 Các ví dụ cho lệnh chọn 20 Các phép toán trong SQL Các phép toán số học: +,-,*,/, Các phép toán so sánh: <,>,<=,>=,=,<> hoặc !=, BETWEEN .. AND Phép đối sánh mẫu: LIKE Các phép toán logic: AND, OR, NOT Các phép toán tập hợp: IN, UNION, INTERSECTION, EXCEPT (MINUS) 21 Đối sánh mẫu Khi so sánh các chuỗi, ngoài các phép toán quan hệ thông thường (<,>,=,v.v), SQL còn cung cấp khả năng so sánh theo mẫu (pattern), nó được gọi là “đối sánh mẫu” (pattern matching). Cú pháp như sau: trong đó: s LIKE p  s: là chuỗi ta muốn đem so sánh  p: là một mẫu cần so sánh. Nó có thể chứa các ký bất kỳ và 2 loại ký tự mẫu đại diện đặc biệt: • “%”: đại diện cho một chuỗi bất kỳ, kể cả chuỗi rỗng • “_”: đại diện cho đúng 1 ký tự bất kỳ 22 Một số ví dụ Bảng Employees trong CSDL NorthWind 23 Một số ví dụ Tìm các nhân viên có FirstName bắt đầu là ký tự ‘A’? SELECT EmployeeID, LastName, FirstName,Title FROM Employees WHERE FirstName LIKE 'A%' 24 Một số ví dụ Tìm các nhân viên có LastName có độ dài ít nhất 2 ký tự và có ký tự cuối cùng là ‘n’ ? SELECT EmployeeID, LastName, FirstName,Title FROM Employees WHERE LastName LIKE '%_n' 25 Giá trị NULL và logic UNKNOWN  NULL là giá trị đặc biệt được đưa vào để biểu diễn giá trị cho các thuộc tính mà không có giá trị.  NULL không thuộc miền giá trị của bất kỳ kiểu dữ liệu nào, nên thực ra nó không được coi như một “giá trị” thực sự cho một thuộc tính, mà chỉ có ý nghĩa đánh dấu là thuộc tính này chưa có giá trị (chưa được khởi tạo, cũng như chưa được cập nhật giá trị).  Do đó, việc so sánh một giá trị với NULL có thể không trả về giá trị logic TRUE hay FALSE như các giá trị thông thường. Chính vì vậy, các hệ QTCSDL đưa thêm vào một giá trị logic thứ ba để biểu diễn tình huống này và gọi nó là Unknown 26 Bảng giá trị logic với ‘Unknown’ 27 Sắp xếp kết quả tìm kiếm SELECT [ ALL | DISTINCT ] * | {column_name | expression [alias],…} FROM table [WHERE conditions] [ORDER BY {expression [ASC | DESC] ,…} ]  Sử dụng mệnh đề ORDER BY, nó phải là mệnh đề cuối cùng trong lệnh SELECT.  Expression: Xác định một hoặc nhiều thuộc tính trong số các thuộc tính mà ta muốn sắp xếp. Khi có nhiều thuộc tính, thì việc sắp xếp sẽ lần lượt theo thứ tự xuất hiện của các thuộc tính. 28 Ví dụ In d/s nhân viên có sắp xếp theo LastName: SELECT EmployeeID, LastName, FirstName, Title, TitleOfCourtesy FROM Employees ORDER BY LastName 29 Ví dụ In d/s nhân viên có sắp xếp theo TitleOfCourtesy (theo thứ tự giảm dần) và FirstName: SELECT EmployeeID, LastName, FirstName, Title, TitleOfCourtesy FROM Employees ORDER BY TitleOfCourtesy DESC, 3 30 Tóm tắt 31 Đại học Bách khoa Hà Nội Viện Điện tử - Viễn thông Viện Điện tử - Viễn thông Bộ môn Điện tử - Kỹ thuật máy tính Kỹ thuật phần mềm ứng dụng Chương 9: Ngôn ngữ SQL Phần 2: Câu truy vấn trên nhiều bảng Lệnh SELECT Lệnh SELECT là một lệnh đa năng để truy vấn dữ liệu trong CSDL. Nó cho phép thực hiện tất cả các thao tác cơ bản trong đại số quan hệ như: •Chiếu (Projection) •Chọn (Selection) •Nối (Joining) •Các phép toán tập hợp (Hợp, giao, trừ) Phép nối (join) Phép nối (join) • Phân loại: – Tích Đề các: cross join – Nối bằng: equi-join • Nối tự nhiên: natural join – Nối không bằng: theta-join – Nối trong: inner join – Nối ngoài: outer join Tích Đề các Bảng PC Bảng Product Tính PC x Product SELECT * FROM PC, Product Tích Đề các: PC x Product Tránh trùng tên bảng và thuộc tính đặt bí danh Bảng PC Tìm các cặp PC có ổ cứng bằng nhau: SELECT p1.model [model 1], p2.model [model 2] FROM PC p1, PC p2 WHERE (p1.model < P2.model ) AND (p1.hdd = P2.hdd) Nối bằng Bảng PC Bảng Product Liệt kê chi tiết thông tin về các sản phẩm của các nhà sản xuất Product ⋈ PC Product.model = PC.model Nối bằng Product ⋈ PC Product.model = PC.model SELECT * FROM PC, Product WHERE PC.model = Product.model SELECT * FROM PC JOIN Product ON PC.model = Product.model Cách 1: dùng logic chọn Cách 2: dùng lệnh JOIN Kết quả SELECT * FROM PC, Product WHERE PC.model = Product.model SELECT * FROM PC JOIN Product ON PC.model = Product.model Sử dụng bí danh trong lệnh JOIN SELECT Pr.maker, PC.model, speed, hdd, screen, price FROM PC JOIN Product Pr ON PC.model = Pr.model Nối không bằng • Trong t/h nối không bằng, thì tương tự như t/h nối bằng, ta cũng có thể sử dụng 1 trong 2 cách: – Sử dụng điều kiện nối trong mệnh đề WHERE, – Hoặc sử dụng lệnh JOIN với điều kiện nối (ON) không bằng Nối trong và nối ngoài • Nối trong (INNER JOIN): – kết quả chỉ ghép các bộ khớp nhau (matching tuples) trong 2 bảng thành phần (phép JOIN ở trên mặc định chính là INNER JOIN) • Nối ngoài (OUTER JOIN): Kết quả chứa 2 thành phần: – Thành phần 1 như INNER JOIN – Thành phần 2 chứa cả các bộ không khớp nhau trong 2 bảng thành phần Nối ngoài SELECT * FROM A OUTER JOIN B ON A.X = B.Y; • Phân loại: – Left Outer Join: chứa các bộ không khớp của bảng bên trái A – Right Outer Join: chứa các bộ không khớp của bảng bên phải B – Full Outer Join: chứa các bộ không khớp của cả hai bảng A và B Ví dụ CLASS CLASS_ID CLASS_NAME 106 Lop 106 107 Lop 107 201 Lop 201 202 Lop 202 Các bộ không khớp STUDENT CLASS_ID ID NAME 106 1A 106 2B 107 3C 107 4D 5E 6F 7G 8H Left Outer Join SELECT * FROM Class LEFT OUTER JOIN Student ON Class.Class_ID = Student.Class_ID; CLASS CLASS_ID CLASS_NAME 106 Lop 106 106 Lop 106 107 Lop 107 107 Lop 107 201 Lop 201 202 Lop 202 STUDENT CLASS_ID ID NAME 106 1A 106 2B 107 3C 107 4D RIGHT OUTER JOIN SELECT * FROM Class RIGHT OUTER JOIN Student ON Class.Class_ID = Student.Class_ID; CLASS CLASS_IDCLASS_NAME 106 Lop 106 106 Lop 106 107 Lop 107 107 Lop 107 STUDENT CLASS_ID ID 106 1 106 2 107 3 107 4 5 6 7 8 NAME A B C D E F G H FULL OUTER JOIN SELECT * FROM Class FULL OUTER JOIN Student ON Class.Class_ID = Student.Class_ID; CLASS CLASS_IDCLASS_NAME 106 Lop 106 106 Lop 106 107 Lop 107 107 Lop 107 201 202 Lop 201 Lop 202 STUDENT CLASS_ID ID 106 1 106 2 107 3 107 4 5 6 7 8 NAME A B C D E F G H Tóm tắt • Các phép nối – Nối trong – Nối ngoài – Nối bằng – Nối không bằng – Tích Đề Các