Giáo trình Nhập môn kỹ nghệ phần mềm (Phần 2) - Nguyễn Văn Huân
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Nhập môn kỹ nghệ phần mềm (Phần 2) - Nguyễn Văn Huân", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- giao_trinh_nhap_mon_ky_nghe_phan_mem_phan_2_nguyen_van_huan.pdf
Nội dung text: Giáo trình Nhập môn kỹ nghệ phần mềm (Phần 2) - Nguyễn Văn Huân
- TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG KHOA HỆ THỐNG THÔNG TIN KINH TẾ Nguyễn Văn Huân Vũ Xuân Nam NHẬP MÔN KỸ NGHỆ PHẦN MỀM Thái Nguyên, 2011 0
- Chương 4 THIẾT KẾ DỮ LIỆU 4.1. Tổng quan Mục tiêu chính của thiết kế dữ liệu là mô tả cách thức tổ chức lưu trữ các dữ liệu của phần mềm. Có hai dạng lưu trữ chính mà người thiết kế cần phải cân nhắc và lựa chọn. - Lưu trữ dưới dạng tập tin - Lưu trữ dưới dạng cơ sở dữ liệu Lưu trữ dưới dạng tập tin thường chỉ thích hợp với một số phần mềm đặc thù (cờ tướng, trò chơi, v.v.) đặc điểm chung của các phần mềm này là chú trọng rất nhiều vào xử lý, hình thức giao diện và không chú trọng nhiều đến việc lưu trữ lại các thông tin được tiếp nhận trong quá trình sử dụng phần mềm (thông thường các thông tin này được tiếp nhận và xử lý ngay). Cách tiếp cận dùng cơ sở dữ liệu rất thông dụng và giáo trình này sẽ giới hạn trình bày chi tiết các phương pháp kỹ thuật liên quan đến việc tổ chức lưu trữ dữ liệu dùng cơ sở dữ liệu quan hệ. Giáo trình này sẽ không nhắc lại các khái niệm cơ bản về cơ sở dữ liệu và giả sử rằng người xem đã biết qua các khái niệm này. Tuy nhiên chúng ta cũng nên xem lại các bước để hình thành nên mô hình dữ liệu quan hệ trong quá trình thiết kế dữ liệu 4.2. Kết quả của thiết kế Cách thức tổ chức lưu trữ dữ liệu của phần mềm được mô tả thông qua 2 loại thông tin sau: Thông tin tổng quát Cung cấp góc nhìn tổng quan về các thành phần lưu trữ Danh sách các bảng dữ liệu: Việc lưu trữ cần sử dụng bao nhiêu bảng dữ liệu và đó là các bảng nào ? Danh sách các liên kết: Các bảng dữ liệu có quan hệ, có mối liên kết giữa chúng ra sao? Thông tin chi tiết: Danh sách các thuộc tính của từng thành phần: Các thông tin cần lưu trữ của thành phần ? 84
- Danh sách các Miền giá trị toàn vẹn: Các qui định về tính hợp lệ của các thông tin được lưu trữ Có nhiều phương pháp, nhiều đề nghị khác nhau về việc mô tả các thông tin trên. Giáo trình này chọn sơ đồ logic để biểu diễn các thông tin tổng quát và bảng thuộc tính. Miền giá trị để mô tả chi tiết các thành phần trong sơ đồ logic. Sơ đồ logic là sơ đồ cho phép thể hiện hệ thống các bảng dữ liệu cùng với quan hệ mối nối liên kết giữa chúng. Các ký hiệu được dùng trong sơ đồ rất đơn giản như sau: Bảng: hình chủ nhật Liên kết: (xác định duy nhất một): Mũi tên Mũi tên hình trên có ngữ nghĩa: 1 phần tử A sẽ xác định duy nhất 1 phần tử B, ngược lại 1 phần tử B có thể tương ứng với nhiều phần tử A. Ví dụ: Với phần mềm quản lý thư viện có sơ đồ logic sau: Theo sơ đồ này việc lưu trữ các dữ liệu của phần mềm quản lý thư viện được tổ chức 3 bảng (DOCGIA, MUONSACH, SACH) vùng với 2 liên kết giữa chúng Tất nhiên sơ đồ trên chỉ là một trong các cách thức tổ chức lưu trữ dữ liệu còn nhiều cách khác có thể có. Chi tiết các cách này sẽ được trình bày trong phương pháp thiết kế cơ sở dữ liệu. Bảng thuộc tính cho phép mô tả chi tiết thành phần trong sơ đồ logic theo dạng như sau: Thành phần Ý nghĩa STT Thuộc tính Kiểu Miền giá trị Ý nghĩa Ghi chú 1 2 85
- Bảng miền giá trị cho phép mô tả các Miền giá trị giữa các thuộc tính cùng một thành phần hay nhiều thành phần khác nhau. MSố Mô tả miền giá trị Thành phần liên quan Ghi chú RB1 RB2 Ví dụ: Ghi chú: - Bảng thuộc tính cho phép mô tả chi tiết thanh phần cần lưu trữ và sẽ được dùng trong báo cáo về thiết kế dữ liệu của phần mềm. Tuy nhiên cách mô tả trên khá dài dòng, trong giáo trình này sẽ sử dụng một dạng trình bày cô đọng hơn theo dạng lược đồ quan hệ. Với dạng trình bày này gồm tên bảng và thuộc tính đi kèm, các thuộc tính khóa được gạch chân. Ví dụ: DOC_GIA(MDG,Hoten,Loaidg,Ngsinh, Nglapthe, Diachi) SACH(MSACH,Tensach,Theloai, NgNhap, Tacgia, Nhaxb, Namxb) MUON(MDG,MSACH,NgMuon,Ngtra) 4.3. Quá trình thiết kế Có 2 cách tiếp cận chính để thiết kế dữ liệu: Phương pháp trực tiếp: Từ các yêu cầu đã xác định, tạo lập trực tiếp sơ đồ logic cùng với bảng thuộc tính, bảng miền giá trị. Các tiếp cận này rất khó thực hiện đối với sơ đồ logic phức tạp. Phương pháp gián tiếp: Từ các yêu cầu đã xác định, tạo lập mô hình quan niệm dữ liệu, và sau đó đưa vào mô hình này sẽ tạo lập sơ đồ logic, bảng thuộc tính, bảng miền giá trị. Các tiếp cận này dễ thực hiện hơn vì mô hình quan niệm dữ liệu thường đơn giản (chứa các thành phần dữ liệu bản chất nhất của phần mềm). Khái niệm chi tiết về mô hình quan niệm dữ liệu cùng với các bước cụ thể sẽ được trình bày chi tiếp trong phần sau. 86
- Tương ứng với 3 yêu cầu của phần mềm, quá trình thiết kế dữ liệu bao gồm 3 bước lớn: - Thiết kế với tính đúng đắn - Thiết kế với yêu cầu chất lượng - Thiết kế với yêu cầu hệ thống Thiết kế với tính đúng đắn - Đảm bảo đầy đủ và chính xác về mặt ngữ nghĩa các thông tin liên quan đến các công việc trong yêu cầu. - Các thông tin phục vụ cho các yêu cầu chất lượng sẽ không được xét đến trong bước thiết kế này. Thiết kế với yêu cầu chất lượng - Vẫn đảm bảo tínhh đúng đắn nhưng thỏa mãn thêm các yêu cầu chất lượng khác (tiến hóa, tốc độ nhanh, lưu trữ tối ưu). - Cần chú ý bảo đảm tính đúng đắn khi cải tiến sơ đồ logic. Thiết kế với yêu cầu hệ thống - Vẫn đảm bảo tính đúng đắn và các yêu cầu chất lượng khác nhưng thỏa mãn thêm các yêu cầu hệ thống (phân quyền, cấu hình phần cứng, môi trường phần mềm, v.v) Ví dụ: phần mềm quản lý thư viện: Với phương pháp trực tiếp sẽ cho kết qủa như sau: Sơ đồ logic: 87
- Các bảng thuộc tính: DOC_GIA(MDG,MLDG,HoTen,NgaySinh,DiaChi,DienThoai) SACH(MSACH,MTG,MNXB,MLSACH,MNN,TenSach, Ngàymua, SoTrang) PHIEU_MUON(MPHM, NgayMuon) CHITIETMUON(MPHM, MSACH, NgayTra) LOAISACH(MLSACH,TenLS, GhiChu) LOAIDOCGIA(MLDG,TenLDG,GhiChu) NHAXB(MNXB,TenNXB, GhiChu) TACGIA(MTG,Ten, Ghichu) NGONNGU(MNN,Ten,Ghichu) Với phương pháp gián tiếp, ngoài kết qủa cuối cùng tương tự như phương pháp trực tiếp, còn có kết quả trung gian là mô hình quan niệm dữ liệu như sau: + Sơ đồ lớp đối tượng với 2 đối tượng chính Sách, Độc giả và 1 quan hệ Mượn giữa 2 lớp đối tượng trên + Mô hình chi tiết các thành phần trong sơ đồ lớp: Xem chi tiết ở phụ lục B Ví dụ : Xét phần mềm với 4 yêu cầu: Lập thẻ độc giả, Nhận sách, Cho mượn sách, Trả sách Thiết kế dữ liệu với tính đúng đắn Sơ đồ logic Chi tiết các bảng DOCGIA(MDG,MLDG,HoTen,NgaySinh,DiaChi,DienThoai) SACH(MSACH,MTG,MNXB,MLSACH,MNN,TenSach, Ngàymua, SoTrang) MUON_SACH(MDG,MSACH,NgMuon,NgTra,Tienphat) Thiết kế dữ liệu với tính tiến hóa Sơ đồ logic 88
- Chi tiết các bảng: DOC_GIA(MDG,MLDG,HoTen,NgaySinh,DiaChi,DienThoaiNg_lapthe, Ng_hethan) SACH(MSACH,Tensach,MTL,ng_Nhap, Tacgia,NamXB, NhaXB) MUON_SACH(MDG,MSACH,NgMuon,NgTra,Tienphat THE_LOAI(MTL,Tentheloai,GhiChu) LOAI_DG(MLDG,TenLDG,GhiChu) Thiết kế với tính hiệu quả (truy xuất nhanh) Sơ đồ logic Cũng với sơ đồ logic như trên nhưng ta có các bảng thuộc tính: DOC_GIA(MDG,MLDG,HoTen,NgaySinh,DiaChi,DienThoaiNg_lapthe,Ng_ hethan, SosachMuon, TinhTrangtra) SACH(MSACH,Tensach,MTL,ng_Nhap, Tacgia,NamXB, NhaXB, TinhTrangMuon) MUON_SACH(MDG,MSACH,NgMuon,NgTra,Tienphat) THE_LOAI(MTL,Tentheloai,GhiChu) LOAI_DG(MLDG,TenLDG,GhiChu) Thiết kế dữ liệu với tính hiệu quả (lưu trữ tối ưu) Sơ đồ logic Chi tiết các bảng thuộc tính DOC_GIA(MDG,MLDG,HoTen,NgaySinh,DiaChi,DienThoaiNg_lapthe, Ng_hethan, SosachMuon, TinhTrangtra) SACH(MSACH,Tensach,MTL,ng_Nhap, Tacgia,NamXB, NhaXB, TinhTrangMuon) MUON_SACH(MDG,MSACH,NgMuon,NgTra,Tienphat) CHITIET_MUON(MMUON,MSACH,NgTra,Tienphat) THE_LOAI(MTL,Tentheloai,GhiChu) LOAI_DG(MLDG,TenLDG,GhiChu) 89
- Thiết kế dữ liệu với yêu cầu phân quyền hệ thống (phân quyền) Sơ đồ logic Chi tiết các bảng DOC_GIA(MDG,MLDG,HoTen,NgaySinh,DiaChi,DienThoaiNg_lapthe,Ng_ hethan, SosachMuon, TinhTrangtra) SACH(MSACH,Tensach,MTL,ng_Nhap, Tacgia,NamXB, NhaXB, TinhTrangMuon) MUON_SACH(MDG,MSACH,NgMuon,NgTra,Tienphat) CHITIET_MUON(MMUON,MSACH,NgTra,Tienphat) THE_LOAI(MTL,Tentheloai,GhiChu) LOAI_DG(MLDG,TenLDG,GhiChu) NGUOI_DUNG(MND, HoTen, Ghichu) CHUC_NANG(MCN,Ten_Chucnang, Ghichu) QUYEN_HAN(MND,MCN) 4.4. Phương pháp thiết kế dữ liệu 4.4.1 Phương pháp trực tiếp Bước 1: - Lập sơ đồ với 1 thành phần duy nhất - Đánh giá tính đúng đắn so với các yêu cầu và chuyển sang bước 2 nếu cần thiết Bước 2: - Tách 1 số thuộc tính để tạo ra các thành phần mới - Xác định liên kết giữa các thành phần - Đánh giá tính đúng đắn so với các yêu cầu và lặp lại bước 2 nếu cần thiết Ví dụ: phần mềm quản lý thư viện Cách 1: Chỉ dùng 1 thành phần SÁCH 90
- Masach, Ten, Theloai, Ngaymua, Tacgia, NhaXB, NamXB HotenDG, LoaiDG, Ngaylamthe, Ngaymuon, Ngaytra Cách 2: Dùng 2 thành phần SACH, DOCGIA Cách 2.1 : Chỉ lưu trừ lần mượn sách cuối cùng SACH MSACH, MADG, Ten, Theloai, NgayMua, TacGia, NhaXB, NamXB, Ngaymuon, NgayTra. DOCGIA MDG, HoTen, LoaiDG,Ngaylamthe, Cách 2.2: Chỉ cho phép độc giả mượn tối đa 1 quyển sách SACH MSACH, MADG, Ten, Theloai, NgayMua, TacGia, NhaXB, NamXB, Ngaymuon, NgayTra. MDG, MSACH,HoTen, LoaiDG,Ngaylamthe, Ngaymuon Cách 3: Dùng 3 thành phần SACH,DOCGIA, MUONSACH SACH MSACH, Ten, Theloai, NgayMua, TacGia, NhaXB, NamXB, Ngaymuon, NgayTra. DOCGIA MDG, HoTen, LoaiDG,Ngaylamthe, MUONSACH Mmuon,MDG,MSACH, Ngaymuon, Ngaytra Ví dụ: Phần mềm quản lý học sinh Cách 1: Dùng 1 thành phần HOCSINH HOCSINH MAHS, HoTen, Ngaysinh, GioiTinh, Lop, Monhoc, LoaiKT, HocKy,Diem, Ngayvang, Lydo Cách 2: Dùng 3 bảng HOCSINH, KIEMTRA, DIEMDANH HOCSINH MAHS, Hoten, Ngaysinh, GioiTinh, Lop KIEMTRA MAKT,MAHS, Monhoc,LoaiKT,Hocky, Diem 91
- DIEMDANH MADD,MAHS,Ngayvang, Lydo 4.4.2 Phương pháp gián tiếp Bước 1: - Lập sơ đồ lớp - Xác định các lớp đối tượng - Xác định quan hệ giữa các lớp đối tượng và lập sơ đồ Bước 2: - Ánh xạ từ sơ đồ lớp vào sơ đồ logic - Ánh xạ các lớp đối tượng - Ánh xạ các quan hệ giữa các lớp đối tượng Bước 3: - Hoàn chỉnh sơ đồ logic - Bổ sung các thành phần theo yêu cầu - Mô tả chi tiết các thuộc tính của các thành phần 4.4.2.1 Lập sơ đồ lớp Ví dụ: Với phần mềm quản lý thư viện 2 đối tượng chính là Độc giả, Sách và quan hệ giữa chúng là quan hệ mượn sách Với phần mềm quản lý học sinh trường phổ thông trung học 2 đối tượng chính là Học sinh, Môn học và quan hệ giữa chúng là quan hệ kiểm tra Với phần mềm xếp thời khóa biểu trường trung học phổ thông 2 đối tượng chính là Giáo Viên, Môn học và quan hệ giữa chúng là quan hệ dạy. 92
- 4.4.2.2 Ánh xạ sơ đồ lớp Ánh xạ lớp đối tượng. Mỗi đối tượng trong sơ đồ lớp tương ứng với 1 thành phần trong sơ đồ logic 4.4.2.3 Ánh xạ quan hệ Quan hệ 1-n: Quan hệ 1-n trong sơ đồ lớp giữa 2 lớp đối tượng A,B (1 A nhiều B) tương ứng với liên kết xácđịnh duy nhất vừ A sang B trong sơ đồ logic. Quan hệ m-n: Quan hệ m-n C trong sơ đồ lớp giữa 2 lớp đối tượng A,B tương ứng với 1 thành phần C trong sơ đồ logic. Thành phần này có liên hệ xác định duy nhất A,B. 4.4.2.4 Hoàn chỉnh sơ đồ logic 1. Bổ sung các thành phần + Đối tượng phụ: Mỗi đối tượng phụ tương ứng với 1 thành phần trong sơ đồ logic + Các thành phần khác: Xem xét lại tính đúng đắn và bổ sung thêm nếu cần thiết 93
- 2. Mô tả chi tiết thuộc tính các thành phần + Thuộc tính khóa chính: - Mỗi thành phần ứng với đối tượng (chính, phụ) cần 1 thuộc tính khóa riêng) - Các thành phần còn lại, tùy theo ý nghĩa sử dụng sẽ có thuộc tính khóa riêng hay dùng tổ hợp thuộc tính khóa của các thành phần khác Ví dụ: Các thành phần Độcgiả, Sách, Nhà xuất bản, Tác giả sẽ có thuộc tính khóa chính tương ứng là MDG, MSACH, MNXB, MTG. Thành phần mượn cũng sẽ có khóa chính là MMUON (không dùng tổ hợp các thuộc tính khóa ngoại được ?) + Thuộc tính khóa ngoại: - Thể hiện đúng liên kết giữa các thành phần trong sơ đồ logic: nếu A xác định duy nhất B thì A có thuộc tính là khoá chính của B ( đó là khóa ngoại của A) Ví dụ: Thành phần Mượn có 2 khóa ngoại: MDG,MSACH Thành phần Sách có 2 khoá ngoại: MNXB, MTG, MDG + Các thuộc tính khác: Dựa vào yêu cầu lưu trữ, chú ý các loại thuộc tính sau: - Định danh: Tên - Loại: Sự phân loại - Thời gian: Ngày tháng - Không gian: vị trí - Định lượng: độ đo, tính chất, v.v.v Ví dụ: Độc giả sẽ có thuộc tính khác như: HoTen (định danh) LoaiDG (loại) Ngaysinh (thời gian) 94
- Ngayhethan (thời gian) Diachi (không gian) Sách sẽ có thuộc tính khác như: TenSach (định danh) LoaiSach (loại) NgayMua (thời gian) GiaTien (định lượng) 4.5. Thiết kế dữ liệu với tính đúng đắn Các bước thực hiện: Bước 1: Chọn một yêu cầu và xác định sơ đồ logic cho yêu cầu đó Bước 2: Bổ sung thêm một yêu cầu và xem xét lại sơ đồ logic + Nếu sơ đồ logic vẫn đáp ứng được thì tiếp tục bước 3 + Nếu sơ đồ logic không đáp ứng được thì bổ sung vào sơ đồ thuộc tính mới (ưu tiên 1) hoặc thành phần mới (ưu tiên 2) cùng với các thuộc tính và liên kết tương ứng Bước 3: Quay lại bước 2 cho đến khi đã xem xét đầy đủ các yêu cầu Ghi chú: - Với mỗi yêu cầu cần xác định rõ cần lưu trữ các thông tin gì? dựa vào luồng dữ liệu đọc/ghi trong sơ đồ luồng dữ liệu tương ứng) và tìm cách bổ sung các thuộc tính để lưu trữ các thông tin này - Chỉ xem xét tính đúng đắn - Cần chọn các yêu cầu theo thứ tự từ đơn giản đến phức tạp (thông thường yêu cầu tra cứu là đơn giản nhât) - Với yêu cầu phức tạp có thể phải bổ sung vào sơ đồ logic nhiều thành phần mới Khóa của các thành phần phải dựa trên ngữ nghĩa tương ứng trong thế giới thực 4.6. Thiết kế dữ liệu và yêu cầu chất lượng Mục tiêu Xem xét đánh giá sơ đồ logic theo các yêu cầu về chất lượng và tiến hành cập nhật lại sơ đồ để bảo đảm các tiêu chuẩn về chất lượng. Ngoài tính đúng đắn cần ưu tiên hàng đầu xem xét sự hơn kém nhau giữa các phần mềm chính là mức độ thỏa mãn các tiêu chuẩn chất lượng còn lại (đặc biệt là tính tiến hóa). 95
- 4.6.1 Xem xét tính tiến hóa Để bảo đảm tính tiến hóa, sơ đồ logic sẽ còn bổ sung cập nhật lại nhiều thành phần qua các bước thiết kế chi tiết. Trong các bước đầu tiên là thiết kế dữ liệu, chúng sẽ giới hạn xem xét đến các thuộc tính có giá trị rời rạc. Thuộc tính có giá trị rời rạc là các thuộc tính mà miền giá trị chỉ bao gồm một số giá trị nhất định. Các giá trị này thông thường thuộc về tập hợp có độ biến động rất ít trong quá trình sử dụng phần mềm. Ví dụ: LOAIDG (thành phần độc giả): Thư viện hiện tại chỉ có 3 loại độc giả là ‘A’, ‘B’,’C’ và khả năng có thêm loại độc giả mới rất thấp. Ngôn ngữ (thành phần Sách): Các sách trong thư viện hiện tại chỉ có 3 loại ngôn ngữ ‘Việt’, ‘Anh’, ‘Pháp’ và khả năng thêm sách thuộc ngôn ngữ mới rất thấp. Tuy nhiên cần lưu ý rằng khả năng biến động trên tập hợp giá trị của thuộc tính rời rạc là thấp nhưng không phải là không có. Và khi xảy ra biến động (thêm loại độc giả, thêm sách thuộc ngôn ngữ mới) nếu không chuẩn bị trước trong thiết kế thì người dùng sẽ không thể khai báo được các biến động này với phần mềm, và do đó có thể một số chức năng sẽ không thực hiện được (ví dụ khong thể thêm sách mới với ngôn ngữ tiếng Hoa). Để chuẩn bị tốt cho biến động về sau (nếu có) trong tập hợp các giá trị của thuộc tính rời rạc. Chúng ta sẽ tách các thuộc tính này thành một thành phần trong sơ đồ logic. Khi đó người dùng trong quá trình sử dụng hoàn toàn có thể cập nhật lại tập hợp các giá trị này tương ứng với các biến động thực tế trong thế giới thực. Sơ đồ logic khi tách các thuộc tính rời rạc như sau: 4.6.2 Xem xét tính hiệu quả (tốc độ) Phạm vi xem xét: 96
- - Chỉ giới hạn xem xét việc tăng tốc độ thực hiện của phần mềm bằng cách bổ sung thêm các thuộc tính vào các bảng dùng lưu trữ các thông tin đã tính toán trước (theo qui tắc nào đó từ các thông tin gốc đã được lưu trữ) Ví dụ: số sách đang mượn của độc giả - Các thông tin này phải được tự động cập nhật khi có bất kỳ thay đổi thông tin gốc liên quan Ví dụ độc giả mượn thêm hoặc trả sách Học sinh có thêm cột điểm Các bước tiến hành: - Bước 1: Chọn một yêu cầu và xem xét cần bổ sung thông tin gì trên bộ nhớ phụ để tăng tốc độ thực hiện của xử lý liên quan (các thông tin xử lý phải đọc mà không cần thực hiện việc tính toán) - Bước 2: Quay lại bước 1 cho đến khi đã xem xét đầy đủ các yêu cầu Ghi chú: - Sau mỗi bước nhất thiết phải lập bảng danh sách các thuộc tính tính toán cùng với thông tin liên quan + Thông tin gốc + Xử lý tự động cập nhật thông tin gốc (chi tiết về các xử lý này sẽ được mô tả trong phần thiết kế xử lý) - Nếu thông tin gốc thường xuyên bị thay đổi, việc bổ sung thuộc tính tính toán để tăng tốc độ thực hiện sẽ mất ý nghĩa (thậm chí theo chiều ngược lại) - Việc tăng tốc độ truy xuất có thể sẽ dẫn đến việc lưu trữ không tối ưu - Thứ tự xem xét các yêu cầu theo thứ tự từ đầu đến cuối (không cần chọn như các bước trong thiết kế dữ liệu) Ví dụ: Phần mềm quản lý giải vô địhc bóng đá quốc gia với bảng thuộc tính tính toán Thuộc tính: Tong_ban_thang, Tong_the_phat, Diem_so là những thuộc tính có thể xử lý tự động cập nhật 97
- 4.6.3 Xem xét tính hiệu quả (lưu trữ) Tính hiệu quả trong thiết kế dữ liệu sẽ được xem xét dưới góc độ lưu trữ tối ưu. Vấn đề đặt ra là xây dựng sơ đồ logic sao cho vẫn bảo đảm lưu trữ đầy đủ thông tin theo yêu cầu nhưng với dung lượng lưu trữ nhỏ nhất có thể có. Vấn đề này đặc biệt quan trọng với các phần mềm với hệ thống lưu trữ lớn và nhiều phát sinh thông tin cần lưu trữ theo thời gian. Khi đó cần đặc biệt quan tâm đến các thành phần mà dữ liệu tương ứng được phát sinh nhiều theo thời gian. Chúng ta sẽ tìm cách bố trí lại sơ đồ logic sao cho vẫn đảm bảo thông tin mà dung lượng lưu trữ lại ít hơn. Các bước tiến hành: Bước 1:Lập danh sách các bảng cần được xem xét để tối ưu hóa việc lưu trữ - Xem xét và xác định các công việc có tần suất thực hiện thường xuyên và bổ sung vào danh sách chọn các bảng được sử dụng tương ứng của công việc này - Xem xét các bảng mà khóa của bảng bao gồm nhiều thuộc tính và bổ sung bảng này vào danh sách được chọn Bước 2: Tối ưu hóa việc lưu trữ các bảng có khối lượng dữ liệu lưu trữ lớn thông qua việc tối ưu hóa lưu trữ từng thuộc tính trong bảng - Xác định các thuộc tính mà việc lưu trữ chưa tối ưu. Ưu tiên xem xét các thuộc tính có kiểu chuỗi - Tối ưu hóa việc lưu trữ tùy theo từng trường hợp cụ thể - Một trong các trường hợp thông dụng nhất là chuỗi có kích thước lớn và giá trị được sử dụng nhiều lần trong các mẫu tin khác nhau (ví dụ: thuộc tính tác giả, Nha_xb trong bảng SACH của phần mềm quản lý sách) - Với trường hợp trên việc tối ưu hoá có thể thực hiện thông qua việc bổ sung các bảng mới (bảng TAC_GIA, NHA_XB) và tổ chức cấu trúc bảng SACH (thay thuộc tính TAC_GIA bằng MTG, thay thuộc tính NHA_XB bằng MNXB) Bước 3: Tối ưu hóa các bảng mà khóa của bảng bao gồm nhiều thuộc tính. Phân rã bảng đang xét thành hai bảng. Trong đó, một bảng chứa các thuộc tính mà giá trị được lặp lại nhiều lần trong cùng một lần thực hiện công việc tương ứng trong thế giới thực. Bảng này cần có khóa riêng (sẽ được bảng còn lại sử dụng để tham chiếu đến) 98
- Ghi chú: - Việc phân rã giúp cho lưu trữ tối ưu tuy nhiên: - Tốc độ truy xuất có thể sẽ chậm hơn - Việc thực hiện xử lý khó khăn hơn (thuật giải phức tạp hơn) - Cần cân nhắc trước khi thực hiện phân rã - Việc đánh giá khóa riêng cho bảng đã phân ra có thể cần kiểm tra thêm số phụ thuộc hàm Ví dụ minh họa: Phần mềm quản lý bán sách Bước 1: Các bảng cần xem xét NHAP_SACH(MSACH, Ng_Nhap, So_luong, Don_gia, Thanh_tien) HOA_DON(MHD,MSACH, Khach_hang, Ng_lap_hd, So_Luong, Don_gia, Thanh_tien) Bước 2: - Bổ sung bảng KHACH_HANG KHACH_HANG(MKH,Ho_ten,Ghi_chu) - Tổ chức lại bảng HOA_DON HOA_DON (MHD,MSACH,MKH,Ng_lap_hd,So_luong, Don_gia, Thanh_tien) Bước 3: - Phân rã bảng NHAP_SACH thành 2 bảng NHAP_SACH, CT_NHAP NHAP_SACH(MNHAP,Ng_Nhap) CT_NHAP(MNHAP,MSACH,So_luong, Don_gia, Thanh_tien) - Phân rã bảng HOA_DON thành 2 bảng HOA_DON, CT_HOA_DON HOA_DON(MHD,MKH, Ng_lap_hd) CT_HD(MHD, MSACH,So_luong, Don_gia, Thanh_tien) Ví dụ: Xét phần mềm quản lý thư viện. 99
- Ví dụ: Xét phần mềm quản lý giải bóng đá Sơ đồ lớp Mô tả chi tiết các thuộc tính: Xem chi tiết phụ lục B Sơ đồ logic Mô tả chi tiết thuộc tính: Xem chi tiết phụ lục B 100
- Chương 5 THIẾT KẾ GIAO DIỆN 5.1. Tổng quan Chương này đi sâu tìm hiểu cách thức thiết kế giao diện là công đoạn không kém phần quan trọng trong quá trình làm phần mềm, đây cũng có thể xem là công đoạn phác thảo đồ hình hay prototype cho phần mềm và để sau đó nhận phản hồi yêu cầu của khách hàng đối với chương trình và để người thiết kế có thể điều chỉnh theo yêu cầu đề ra. Tùy theo mục đích yêu cầu, theo độ phức tạp của chương trình, người thiết kế giao diện có thể làm theo các những thiết kế sau và kết qủa thiết kế tương ứng. Thiết kế giao diện phải nắm bắt các điều chính yếu sau: 1. Hồ sơ cá nhân người dùng: Biết họ là ai, mục đích của người dùng là gì, Kỹ năng và kinh nghiệm của người dùng, nhu cầu của họ 2. Mượn những ứng xử từ những hệ thống quen thuộc đối với người dùng. 3. Cho người dùng thấy rõ các chức năng một cách sẵn sàng 4. ứng xử của chương trình từ trong ra ngoài phải kết dính, gắn kết 5. Thay đổi trong ứng xử nên tương phản với diện mạo của chương trình 6. Shortcut: Cung cấp cả cách thức cụ thể và tóm tắt tác vụ được làm 7. Tính tập trung: Một số giao diện GUI được tập trung chú ý nhiều hơn 8. Ngữ pháp: thông qua giao diện biết số luật thao tác 9. Trợ giúp, độ an toàn, hạn chế ngữ cảnh người dùng, giao diện đẹp, 5.1.1 Kết quả thiết kế Màn hình giao diện: Màn hình giao diện là một trong các hình thức giao tiếp giữa người sử dụng và phần mềm khi họ thực hiện các công việc của mình trên máy tính. Mục tiêu chính của thiết kế giao diện là mô tả hệ thống các màn hình giao diện này Kết quả thiết kế giao diện: bao gồm 2 phần o Sơ đồ màn hình: Mô tả các thông tin tổng quát về hệ thống các màn hình cùng với quan hệ về việc chuyển điều khiển giữa chúng o Mô tả chi tiết từng màn hình: Mô tả chi tiết nội dung, hình thức trình bày và các thao tác mà người dùng có thể thực hiện trên từng màn hình 101
- Ví dụ: Liệt kê các phần sau: màn hình, ý nghĩa sử dụng Danh sách các thao tác có thể thực hiện S Thao Ý nghĩa Xử lý liên Ghi 1 2 Sơ đồ màn hình Ký hiệu: Tên màn hình Màn hình với tên tương ứng Chuyển điều khiển đến màn hình khác Mô tả màn hình giao diện: Các thông tin cần mô tả môt màn hình giao diện bao gồm o Tên màn hình: Tên của công việc tương ứng muốn thực hiện trên máy tính. o Nội dung: Cấu trúc các thành phần bên trong màn hình. Các thành phần này có thể chia làm 2 loại: Thanh phần dữ liệu, thành phần xử lý. + Thành phần dữ liệu Các thông tin liên quan đến công việc đang xét như sau: a. Thông tin nhập liệu:loại thông tin người dùng chịu trách nhiệm cung cấp giá trị (ngày lập, hóa đơn, hàng bán, ) có thể là nhập liệu trực tiếp, nhập liệu với 102
- giá trị định sẵn(có thể sửa nếu muốn) hoặc chọn trong danh sách có trước. b. Thông tin kết xuất: loại thông tin này phần mềm chịu trách nhiệm cung cấp giá trị (ví dụ lượng hàn tồn hiện nay, tổng tiền trả, ). +Thành phần xử lý: Các nút điều khiển cho phép người dùng yêu cầu phần mềm thực hiện một xử lý nào đó. + Hình thức trình bày: Cách thức bố trí sắp xếp các thành phần trong màn hình (ví trí, màu sắc, kích thước, ) Với màn hình có biểu mẫu liên quan, tốt nhất là trình bày đúng với biểu mẫu tương ứng hoặc trình bày đúng như yêu cầu của khách hàng. Tuy nhiên cần lưu ý trong trường hợp biểu mẫu liên quan chỉ là kết quả cuối cùng cần ghi nhận trước khi đạt đến kết quả đó cần phải thực hiện một số công việc trung gian không có biểu mẫu rõ ràng. Với những trường hợp này cần bổ sung, sáng tạo hình thức trình bày các màn hình trung gian thể hiện các công việc trung gian. Với màn hình không có biểu mẫu liên quan hình thức trình bày màn hình hoàn toàn là sự sáng tạo khi thiết kế. + Các thao tác có thể thực hiện Mô tả hệ thống các thao tác mà người dùng có thể thực hiện trên màn hình cùng với ý nghĩa của chúng. Có rất nhiều loại thao tác khác nhau có thể cung cấp cho người dùng trên một màn hình giao diện, tuy nhiên giáo trình này chỉ giới hạn xem xét việc mô tả thao tác khi người dùng nhấn vào nút điều khiển hay nút lệnh hoặc kết thúc việc nhập liệu tại một thành phần nhập liệu nào đó. 5.1.2 Phân loại màn hình giao diện Quá trình sử dụng phần mềm bao gồm các bước sau: Chọn công việc muốn thực hiện trên máy tính. Cung cấp các thông tin cần thiết tương ứng với công việc đã chọn. Yêu cầu phần mềm thực hiện. Xem xét kết quả thực hiện. Dựa trên quá trình trên các màn hình giao diện có thể được chia thành nhiều loại tùy theo ý nghĩa sử dụng. o Màn hình chính: Cho phép người dùng sử dụng chọn lựa công việc mong 103
- muốn thực hiện trên máy tính từ danh sách các công việc o Màn hình nhập liệu lưu trữ: Cho phép người dùng thực hiện lưu trữ các thông tin được phát sinh trong thế giới thực. o Màn hình nhập liệu xử lý: Cho phép người sử dụng cung cấp các thông tin cần thiết cho việc thực hiện một công việc nào đó o Màn hình kết quả: Trình bày cho người sử dụng các kết quả việc thực hiện của một công việc nào đó o Màn hình thông báo: Thông báo, nhắc nhở người sử dụng trong quá trình thực hiện một công việc nào đó o Màn hình tra cứu: Cho phép tìm kiếm thông tin đã được lưu trữ với các tiêu chuẩn tìm kiếm Một màn hình giao diện có thể thuộc một trong các loại trên hay cũng có thể tích hợp từ nhiều màn hình cơ sở thuộc vào các loại trên tùy theo bản chất công việc liên quan. Trong thực tế còn có rất nhiều màn hình khác, tuy nhiên giáo trình chỉ giới hạn xem xét chủ yếu đến các loại màn hình đã trình bày phía trên, giáo trình sẽ chú trọng trình bày chi tiết 3 loại màn hình quan trọng và thông dụng nhất: màn hình chính, màn hình tra cứu, màn hình nhập liệu lưu trữ. 5.1.3 Quá trình thiết kế Qui trình chung: Dựa trên yêu cầu chức năng, đầu tiên người thiết kế sẽ xem xét thiết kế các giao diện từ tính đúng đắn, đến tính tiện dụng thõa yêu cầu về tiện dụng, và xét đến tính hiệu quả nếu yêu cầu về hiệu quả được đưa ra và một số thiết kế theo yêu cầu khác, v.v Thiết kế giao diện với tính đúng đắn Sơ đồ màn hình Giả sử cần thực hiện n công việc trên máy tính, sơ đồ màn hình trong trường hợp này chỉ bao gồm n+1 màn hình sau: + Một màn hình chính cho phép chọn công việc + n màn hình liên quan trực tiếp đén n công việc muốn thực hiện Mô tả chi tiết từng màn hình 104
- 1. Màn hình chính: Xác định chính xác nội dung dựa trên danh sách các công việc được yêu cầu và chọn hình thức trình bày đơn giản nhất. Ví dụ 1: Phần mềm thự viện Đây là thiết kế cho ứng dụng chạy độc lập có thể hiển thị tất cả danh sách các màn hình, còn đối với ứng dụng lập trình mạng web có thể tùy theo quyền hạn sử dụng màn hình chính hạn chế bởi các màn hình tương tác cho người sử dụng đó. Ví dụ 2: Phần mềm quản lý học sinh cấp 3 105
- Ví dụ 3: Phần mềm quản lý giải bóng đá 2. Màn hình tra cứu Chọn tiêu chuẩn tra cứu đơn giản nhất (chỉ có mã số) và kết quả tìm kiếm đơn giản (cho biết có hay không có mã số trên). Ví dụ 1: Tra cứu sách với phần mềm quản lý thư viện Ví dụ 2: Tra cứu học sinh với phần mềm quản lý học sinh 106
- Ví dụ 3: Tra cứu cầu thủ với phần mềm quản lý giải bóng đá 3. Màn hình nhập liệu Xác định chính xác nội dung dựa trên biểu mẫu hoặc thông tin liên quan đến công việc tương ứng và chọn hình thức trình bày đơn giản nhất có thể có (liệt kê tuần tự các nội dung) Ví dụ: Nhập sách, mượn sách với quản lý thư viện 107
- Ví dụ: Nhập học sinh, điểm số với phần mềm quản lý học sinh Ví dụ: Đăng ký cầu thủ với phần mềm quản lý giải bóng đá Thiết kế giao diện với tính tiện dụng 108
- Sơ đồ màn hình Bổ sung vào sơ đồ các màn hình công việc trung gian giúp cho việc sử dụng các màn hình công việc chính dễ dàng hơn, tự nhiên hơn. Mô tả chi tiết từng màn hình 1. Màn hình chính Phân chia các công việc theo từng nhóm tùy theo ý nghĩa và chọn hình thức trình bày tự nhiên nhất có thể có (menu, sơ đồ, ) Ví dụ 1: Màn hình chính phần mềm quản lý giải bóng đá. Có các nút điều khiển sau: Tổ chức: Sân, Trọng tài, Loại thẻ phạt, Loại bàn thắng, Qui chế tổ chức. Kế hoạch: Đăng ký đội bóng, Xếp lịch thi đấu, Phân trọng tài Thi đấu: Ghi nhận kết quả, tra cứu cầu thủ, xếp loại tạm thời Tổng kết: Xếp hạng chính thức, Lập báo cáo tổng kết Ví dụ 2: Màn hình quản lý học sinh. Có các nút điều khiển sau Tổ chức: Học kỳ, Lớp, Môn học, hình thức kiểm tra, danh hiệu, qui định chung, Thoát Khai giảng: Tiếp nhận hồ sơ, Xếp lớp Học tập: Điểm danh, Bảng điểm, tra cứu học sinh Tổng kết: Xếp loại học sinh, Báo cáo tổng hợp 109
- 2. Màn hình tra cứu Mở rộng các tiêu chuẩn tra cứu (các thông tin khác về đối tượng cần tìm). Mở rộng kết quả tìm kiếm (các thông tin liên quan đến đối tượng khi tìm thấy ). Cho phép người dung xem các kết quả tra cứu dưới nhiều hình thức trình bày khác nhau ( các thứ tự khác nhau với một danh sách, các dạng thể hiện biểu đồ, hình ảnh, v.v.) Ví dụ 1: Tra cứu học sinh Ví dụ 2: Tra cứu cầu thủ 110
- 3. Màn hình nhập liệu Chọn dạng trình bày là biểu mẫu liên quan (nếu có) và bổ sung vào đó các thông tin giúp việc sử dụng thuận tiện hơn. Nếu không có biểu mẫu liên quan, cố gắng thiết kế hình thức trình bày tự nhiên nhất có thể có. 5.2. Thiết kế màn hình 5.2.1 Mô tả màn hình chính Ý nghĩa sử dụng: Màn hình chính là màn hình cho phép ngừơi dùng chọn được công việc mà họ muốn thực hiện với phần mềm. Thông thường mỗi phần mềm chỉ có một màn hình chính duy nhất. Nội dung: Danh sách các công việc có thể thực hiện với phần mềm Hình thức trình bày Phím nóng: Hình thức này cho phép chọn nhanh một công việc cần thực hiện đối với người sử dụng chuyên nghiệp. Thông thường không được sử dụng riêng rẻ mà phải kết hợp với các hình thức khác. Thực đơn: nhóm từng công việc theo chức năng (ví dụ lưu trữ, kết xuất). Đây là dạng sử dụng thông dụng nhất. 111
- Biểu tượng: công việc thể trực quan qua biểu tượng (ký hiệu hay hình ảnh tượng trưng cho công việc. Tương tự như phím nóng nhưng thông dụng hơn và thường kết hợp với các hình thức khác. Sơ đồ: Dùng sơ đồ để hiển thị trực quan các đối tượng chính, được thể hiện qua các thao tác trực tiếp trên sơ đồ. Tích hợp: Sử dụng đồng thời nhiều hình thức, thông thường hình thức thực đơn sẽ được ưu tiên trước và kết hợp với nhiều hình thức khác. Thao tác người dùng Trên màn hình này thao tác chính của ngừoi dùng là chọn công việc trong danh sách các công việc được đưa ra bởi phần mềm. 5.2.2 Thiết kế màn hình chính dùng thực đơn (menu) Tổ chức của thực đơn Thực đơn bao gồm nhiều nhóm chức năng (tương ứng nhóm các công việc) mỗi nhóm chức năng bao gồm nhiều chức năng, mỗi chức năng tương ứng với một công việc. Phân loại thực đơn: có 3 loại - Thực đơn hướng chức năng: Các nhóm chức năng tương ứng với các loại yêu cầu Ví dụ: Tổ chức: các công việc liên quan đến tổ chức Lưu trữ: Các công việc liên quan đến lưu trữ Tra cứu: Các công việc liên quan đến tra cứu tìm kiếm - Thực đơn hướng đối tượng: Các nhóm chức năng tương ứng với các lớp đối tượng. Với sơ đồ lớp gồm n lớp đối tượng, thực đơn sẽ bao gồm (n+1) nhóm chức năng. Trong đó: + Một nhóm chức năng tương ứng với đối tượng thế giới thực. + n nhóm chức năng tương ứng n lớp đối tượng. - Thực đơn hướng qui trình: Các nhóm chức năng tương ứng với các giai đoạn trng hoạt động của thế giới thực. Thông thường thế giới thực bao gồm các giai đoạn sau như Tổ chức, Kế hoạch, Tiếp nhận, Hoạt động, Tổng kết. 112
- 5.3. Thiết kế màn hình tra cứu 5.3.1 Mô tả màn hình tra cứu Ý nghĩa sử dụng Màn hình tra cứu là màn hình cho phép người dùng tìm kiếm và xem các thông tin về các đối tượng. Nội dung + Tiêu chuẩn tra cứu: Các thông tin được sử dụng cho việc tìm kiếm (thông thường là các thuộc tính). + Kết quả tra cứu: Cho biết có tìm thấy hay không. Các thông tin cơ bản về đối tượng tìm kiếm (các thuộc tính). Các thông tin về quá trình hoạt động của đối tượng (quan hệ với các đối tượng khác). Hình thức trình bày +Tiêu chuẩn tra cứu: Biểu thức logic, Cây, tích hợp + Kết quả tra cứu: Thông báo, danh sách đơn, xâu các danh sách, cây danh sách. Thao tác người dùng: Nhập các giá trị cho các tiêu chuẩn tra cứu, yêu cầu bắt đầu tra cứu, xem chi tiết các kết quả tra cứu. 5.3.2 Thể hiện tiêu chuẩn tra cứu 5.3.2.1 Tra cứu với biểu thức logic Tiêu chuẩn tra cứu được thể hiện dưới dạng một biểu thức logic có dạng như sau: = Phép toán logic Phép toán AND, OR, NOT, phép so sánh 5.3.2.2 Tra cứu với hình thức cây Tiêu chuẩn tra cứu được thể hiện qua cây mà các nút chính là các bộ phận trong tổ chức của thế giới thực. Hình thức này rất thích hợp với các thế giới thực có cấu trúc tổ chức phân cấp. 5.3.2.3 Tích hợp Sử dụng đồng thời cả hai hình thức trên 113
- 5.3.3 Thể hiện kết quả tra cứu 5.3.3.1 Kết quả tra cứu dùng thông báo Với hình thức này kết quả tra cứu chỉ đơn giản là câu thông báo cho biết có hay không đối tượng cần tìm. Đây là hình thức đơn giản nhất và có tính tiện dụng thấp nhất. Với hình thức này người sử dụng không biết thêm thông tin gì của đối tượng tìm thấy. 5.3.3.2 Kết quả tra cứu dùng danh sách đơn Với hình thức này kết quả tra cứu là danh sách các đối tượng tìm thấy cùng với một số thông in cơ bản về đối tượng. Hình thức này cho phép người dùng biết thêm thông tin cơ bản về đối tượng tìm thấy nhưng không biết chi tiết về các hoạt động của đối tượng qua các quan hệ với đối tượng khác. 5.3.3.3 Kết quả tra cứu dùng xâu các danh sách Với hình thức này kết quả tra cứu bao gồm nhiều danh sách mà trong đó danh sách thứ k dsk chứa các mô tả cho một phẩn tử trong danh sách thứ k-1 dsk-1. Danh sách đầu tiên chính là danh sách đơn trong hình thức trên. Hình thức này không những cho phép xem các thông tin cơ bản về đối tượng tìm thấy mà còn cho biết chi tiết về hoạt động của đối tượng qua các quan hệ với các đối tượng khác. 5.3.3.4 Cây các danh sách Với hình thức này kết quả tra cứu là cây mà các nút chính là các danh sách. Danh sách tương ứng trong một nút con sẽ là các thông tin mô tả chi tiết về một phần tử được chọn trong danh sách của nút cha. Danh sách đầu tiên chính là danh sách đơn trong hình thức phía trên. Hình thức trình bày này cho phép xem được quá trình hoạt động của đối tượng với nhiều quan hệ, nhiều loại hoạt động khác. 5.3.4 Thao tác người dùng và xử lý của phần mềm Nhập giá trị cho các tiêu chuẩn tra cứu: - Có thể nhập một số hoặc tất cả tiêu chuẩn tra cứu -Với các tiêu chuẩn thường dùng có thể dùng giá trị định sẳn (loại sách thường tìm, loại hàng thường mua, ) để tiện dụng hơn cho người dùng. - Trong quá trình nhập liệu thông thường phần mềm sẽ không có xử lý tính 114
- toán nào ngoài việc chờ nhập giá trị cho các tiêu chuẩn tra cứu. Yêu cầu bắt đầu tra cứu: - Nhấn vào nút tra cứu. - Dựa vào giá trị các tiêu chuẩn tra cứu phần mềm sẽ tiến hành đọc và xuất các kết quả tra cứu tương ứng (xử lý tra cứu). Xem xét chi tiết các kết quả tra cứu - Chọn đối tượng cần xem chi tiết trong danh sách của kết quả tra cứu - Nhập phạm vi thời gian cần quan sát (thông thường là thời gian từ ngày đến này hoặc đơn vị thời gian cụ thể tháng năm ). - Dựa vào đối tượng được chọn và dựa vào phạm vị thời gian, phần mềm sẽ đọc và xuất các kết quả tra cứu cấp chi tiết hơn theo từng loại hoạt động. Yêu cầu kết xuất - Có thể bổ sung các nút điều khiển tương ứng với việc in ấn hoặc ghi lên tập tin các kết quả tra cứu. Thông thường mỗi kết quả tra cứu sẽ có một nút riêng, nhưng cũng có thể dùng chung một nút cho mọi kết quả tra cứu (dựa vào kết quả hiện hành). - Việc kết xuất thông thường là qua máy in, tuy nhiên cũng có thể cho phép người dùng xác định lại đích của kết xuất (tập tin Excel, trang web, ) tùy theo mục đích sử dụng. 5.4. Thiết kế màn hình nhập liệu 5.4.1 Mô tả màn hình nhập liệu Ý nghĩa sử dụng: Màn hình nhập liệu là màn hình cho phép người dùng thực hiện các công việc có liên quan đến ghi chép trong thế giới thực. Nội dung: - Các thông tin nhập liệu: Với loại thông tin này, người dùng chịu trách nhiệm nhập trực tiếp các giá trị, phần mềm sẽ tiến hành kiểm tra tính hợp lệ các giá trị nhập dựa vào qui định liên quan. - Các thông tin tính toán: Với thông tin này, phần mềm chịu trách nhiệm tính toán và xuất trên màn hình. Thông thường loại thông tin này giúp việc nhập 115
- liệu thuận tiện hơn (nhập số lượng hàng bán khi biết số lượng đang tồn tương ứng, nhập sách mượn khi biết số sách độc giả đang mượn ). Hình thức trình bày: Một số hình thức thông dụng - Danh sách: Màn hình nhập liệu có dạng một danh sách trong thế giới thực (danh sách các thể loại sách, danh sách các lớp học). - Hồ sơ: Màn hình nhập liệu có dạng một hồ sơ với nhiều thông tin chi tiết (hồ sơ học sinh, hồ sơ cầu thủ). - Phiếu: Màn hình nhập liệu có dạng phiếu với nhiều dòng chi tiết (hóa đơn bán hàng, phiếu nhập hàng, ). - Tích hợp: Sử dụng đồng thời các hình thức trên. Thao tác người dùng: Có 3 thao tác cơ bản trên màn hình nhập liệu. - Nút Ghi: Lưu trữ thông tin. - Nút Xóa: Xóa các thông tin đã lưu trữ. - Nút Tìm: Tìm và cập nhật lại thông tin đã lưu trữ. Ngoài ra để tăng tính tiện dụng có bổ sung các thao tác khác. - Tạo phím nóng: Định nghĩa các phím nóng tương ứng với các giá trị nhập liệu thường dùng, điều này cho phép tăng tốc độ nhập liệu. - Tạo các nút chuyển điều khiển: Chuyển điều khiển trực tiếp đến màn hình khác có liên quan đến việc nhập liệu hiện hành (bổ sung thể loại sách mới, nhà xuất bản mới, ). 5.4.2 Các hình thức trình bày màn hình nhập liệu 5.4.2.1 Thiết kế màn hình nhập liệu dạng danh sách Sử dụng: Dạng danh sách thích hợp khi cần nhập liệu các bảng danh sách với kích thước nhỏ (danh sách các thể loại sách, các môn học, ). Thành phần nhập liệu: - Thông tin nhập liệu: Các thuôc tính các bảng liên quan - Thông tin tính toán: Thông thường các mã số được tự động phát sinh. Thành phần xử lý: - Ghi: Ghi nhận các thay đổi trên danh sách (thêm mới, sửa đổi. 116
- - Xóa: Xóa 1 dòng trong danh sách. - Thoát: Quy về màn hình trước đó. Các thao tác: Người dùng có thể tùy ý sửa đổi các thông tin trên các dòng hoặc thêm dòng mới (nhập vào cuối danh sách), xóa dòng sau khi đã chọn dòng cần xóa và cuối cùng yêu cầu ghi các thay đổi trên bộ nhớ phụ. Tuy nhiên trong một số trường hợp đặc biệt một số thao tác có thể bị cấm (không cho xóa, không cho thay đổi một số thuộc tính ) tùy vào ý nghĩa cụ thể của danh sách. 5.4.2.2 Thiết kế màn hình nhập liệu dạng hồ sơ Sử dụng: Dạng hồ sơ thích hợp khi cần nhập liệu các hồ sơ các đối tượng trong thế giới thực (hồ sơ học sinh, đội bóng). Thành phần dữ liệu: - Thông tin nhập liệu: Các thuộc tính các bảng liên quan - Thông tin tính toán: Thông thường các mã số được tự động phát sinh. Thành phần xử lý: Thêm, Ghi, Xóa, Tìm, Thoát Các thao tác: Người dùng có thể thêm hồ sơ mới, tìm lại hồ sơ đã lưu trữ và sau đó tuỳ ý sửa đổi, các thông tin trên hồ sơ tìm thấy, xóa hồ sơ tìm thấy, và cuối cùng yêu cầu lưu trữ hồ sơ. Tuy nhiên để tăng tính tiện dụng một số thao tác chuyển điều khiển có thể được bổ sung cho phép di chuyển nhanh đến các màn hình nhập liệu liên quan khi cần thiết. 5.4.2.3 Thiết kế màn hình nhập liệu dạng phiếu Sử dụng: Dạng phiếu thích hợp khi cần nhập liệu các phiếu ghi nhận thông tin về hoạt động các đối tượng trong thế giới thực. Thành phần dữ liệu: - Thông tin nhập liệu: Các thông tin liên quan đến bảng. - Thông tin tính toán: Thông thường các mã số được tự động phát sinh. Thành phần xử lý: Thêm, Thêm chi tiết, Ghi, Xóa, Xóa chi tiết, Tìm, Sửa chi tiết, Thoát. 117
- Chương 6 CÀI ĐẶT 6.1. Tổng quan Trong cài đặt, chúng ta xuất phát từ kết quả của thiết kế và cài đặt hệ thống dưới dạng các thành phần, tức là các mã nguồn, các kịch bản, các tập tin nhị phân, các tập tin thực thi, thư viện, bảng, dữ liệu May thay, phần lớn kiến trúc của hệ thống đã được nắm bắt trong quá trình thiết kế. Mục tiêu chủ yếu của cài đặt là bổ sung thêm cho kiến trúc và hệ thống để trở thành một khối hoàn chỉnh. Cụ thể hơn, các mục tiêu cài đặt là: Lên kế hoạch tích hợp hệ thống (system integration) trong mỗi bước lặp một các tăng cường. Điều này có nghĩa là một hệ thống được cài đặt bởi một dãy các bước nhỏ liên tiếp và có thể quản lý được. Phân phối hệ thống bằng cách ánh xạ các thành phần thi hành được vào các nút trong mô hình triển khai. Công việc này chủ yếu dựa vào các lớp động được tìm thấy trong quá trình thiết kế. Cài đặt các lớp thiết kế và các hệ thống con đã tìm được trong quá trình thiết kế. Đặc biệt, các lớp thiết kế được cài đặt thành các thành phần file chứa mã nguồn. Kiểm thử đơn vị các thành phần, rồi sau đó tích hợp chúng bằng các biên dịch chúng và liên kết chúng lại với nhau thành một hoặc nhiều thành phần thi hành được trước khi kiểm thử tích hợp và kiểm thử hệ thống Để đạt được những mục tiêu trên, chương này sẽ đưa ra những bàn luận chung quá trình cài đặt phần mềm. Trước tiên chúng ta đưa ra khái quát chung của tiêu chí chất lượng và yếu tố then chốt của ngôn ngữ lập trình và chúng ta sẽ thảo luận trên những phần chính của kiểu lập trình như cấu trúc, những diễn giải, hình thức, và hiệu qủa. Cuối cùng chúng ta sẽ bàn đến thuộc tính chính của phần mềm như khả năng uyển chuyển và dùng lại. Một cài đặt tốt phản ánh những quyết định của thiết kế Cài đặt nên đảm bảo theo các mục sau: - Cấu trúc, cấu trúc dữ liệu và những định nghĩa được chọn lựa và thiết lập trong suốt thủ tục thiết kế cần được tổ chức dễ dàng nhận biết trong quá trình cài đặt. 118
- - Mức trừu tượng của thiết kế (các lớp (class), mô đun (module), thuật toán (algorithm), cấu trúc dữ liệu (data structure), và kiểu dữ liệu (data type)) cũng phải linh động trong thực hiện. - Giao diện giữa các thành phần (components) của hệ thống phần mềm được mô tả rõ ràng trong thực hiện. - Quá trình thực hiện cũng có thể được kiểm tra độ tin cậy của đối tượng và thao tác với trình biên dịch (trước khi qua giai đọan kiểm tra chương trình thực sự). Đảm bảo những đặc trưng ở trên phụ thuộc vào việc chọn lựa ngôn ngữ thực hiện và kiểu lập trình. 6.2. Môi trường lập trình Câu hỏi cho việc chọn lựa “đúng” ngôn ngữ lập trình luôn là chủ đề được đưa ra trong qui trình lập trình.Việc chọn lựa ngôn ngữ lập trình trong công đoạn thực thi của một dự án luôn đóng vai trò quan trọng. Trong trường hợp lý tưởng, thiết kế nên đảm trách mà không có bất cứ kiến thức liên quan đến ngôn ngữ thực hiện sau đó sao cho thiết kế có thể thực hiện được trên bất kỳ ngôn ngữ lập trình nào. 6.2.1 Chất lượng đòi hỏi cho một ngôn ngữ lập trình Tính mô đun hóa Giá trị của tài liệu Cấu trúc dữ liệu Control flow (luồng điều khiển) Tính hiệu quả Khả năng tích hợp (Integrity) Tính khả chuyển (Portability) Hỗ trợ hộp thoại Yếu tố ngôn ngữ chuyên biệt 6.2.2 Khả năng Mô đun hóa của ngôn ngữ lập trình Khả năng mô đun hóa là mức độ hỗ trợ những khả năng mô đun hóa chương trình. Phác thảo một chương trình lớn thành nhiều mô đun là điều kiện tiên quyết để thực thi trong dự án phần mềm. 119
- Không có khả năng mô đun hóa thì phân chia công việc trong giai đoạn thực hiện trở nên không thể được. Những chương trình đơn nhất trở nên không thể quản lý: chúng khó có thể bảo trì và sưu liệu và chúng thực hiện với thời gian biên dịch dài. Ngôn ngữ như Pascal chuẩn (không hỗ trợ mô đun, nhưng so sánh với Turbo Pascal và Mođun 2) để chứng minh tính không thích hợp cho những dự án lớn. Nếu một ngôn ngữ hỗ trợ phát thảo một chương trình thành những phần nhỏ, chúng phải đảm bảo những thành phần phải hoạt động với nhau. Nếu một thủ tục được thực thi ở mô đun khác, cũng được kiểm tra thủ tục có thực sự tồn tại và nó có được sử dụng chính xác hay không (nghĩa là số tham số và kiểu dữ liệu là chính xác). Những ngôn ngữ với việc biên dịch độc lập (ví dụ như C) nơi việc kiểm tra của ngôn ngữ chỉ thay thế ở quá trình run-time. Ngôn ngữ với việc biên dịch tách biệt (ví dụ Ada và Modula-2) mỗi mô đun có một mô tả giao diện cung cấp những phương thức cơ bản cho việc kiểm tra những thành phần của mô đun dùng tại thời điểm chạy chương trình (run time). 6.2.3 Giá trị sưu liệu của ngôn ngữ lập trình Ảnh hưởng của khả năng có thể đọc và bảo trì của chương trình. Điều quan trọng của giá trị sưu liệu được nâng lên đối với những chương trình lớn và cho những phần mềm mà khách hàng vẫn tiếp tục phát triển. Giá trị của sưu liệu cao mang lại kết quả hơn. Vì chương trình nói chung chỉ được 1 lần nhưng việc đọc nó có thể lặp lại, hiệu quả tối thiểu thêm vào trong cách viết sẽ chịu ảnh hưởng không đâu nhiều hơn là trong quá trình bảo trì. Giống như phạm vi ngôn ngữ ảnh hưởng đến khả năng đọc chương trình Nhiều ngôn ngữ mở rộng với quá nhiều chức năng chuyên biệt sẽ khó để hiểu thấu tất cả chi tiết, vì vậy dẫn đến giải thích sai. 6.2.4 Cấu trúc dữ liệu trong ngôn ngữ lập trình Dữ liệu phức tạp phải được xử lý, sự sẵn sàng trong cấu trúc dữ liệu trong ngôn ngữ lập trình đóng vai trò quan trọng. Ngôn ngữ như C cho phép khai báo con trỏ đối với cấu trúc dữ liệu. Điều này cho phép cấu trúc dữ liệu phức tạp, và phạm vi và cấu trúc của chúng có thể thay đổi ở thời điểm run- time. Tuy nhiên, việc drawback những cấu trúc dữ liệu 120
- chúng được mở và được phép truy xuất không nghiêm ngặt (nhưng so sánh với Java). Trọng tâm trong dự án lớn với nhiều nhóm dự án, dữ liệu trừu tượng mang nghĩa cụ thể. Mặc dù dữ liệu trừu tượng có thể phân biệt với bất kỳ mô đun ngôn ngữ, bởi khả năng đọc tốt hơn. Ngôn ngữ lập trình hướng đối tượng có những đặc trưng mở rộng loại kiểu dữ liệu trừu tượng cho phép hiện thực hoá những hệ thống phần mềm phức tạp. Đối với những giải pháp mở rộng và uyển chuyển, ngôn ngữ lập trình hướng đối tượng cung cấp tuỳ chọn đặc biệt tốt. 6.2.5 Ví dụ minh họa Ví dụ: Giai đoạn thực hiện phần mềm quản lý thư viện, các giai đoạn trước đã được minh họa ở các chương trước Giai đoạn 5: Thực hiện phần mềm Hệ thống lớp đối tượng: Tạo lập các lớp đối tượng (THU_VIEN, DOC_GIA, SACH) theo mô tả của phần thiết kế trong một môi trường cụ thể nào đó (Visual Basic, Visual C++, Java, ) Hệ thống giao diện: Tạo lập (vẽ) các màn hình giao diện (màn hình chính, màn hình lập thẻ, màn hình cho mượn sách, màn hình nhận sách, màn hình trả sách) theo mô tả của phần thiết kế trong một môi trường cụ thể nào đó (Visual Basic, Viusal C++, Java) Hệ thống lưu trữ: Tạo lập cấu trúc cơ sở dữ liệu (các bảng THU_VIEN, DOC_GIA, SACH, MUON_SACH) theo mô tả của phần thiết kế trong môi trường cụ thể nào đó(Access, SQL Server, Oracle, ) 6.3. Phong cách lập trình Sau khi thực hiện và kiểm tra, hệ thống phần mềm hiếm khi được sử dụng một thời gian dài mà không có sửa đổi điều chỉnh. Thực vậy, điều này luôn là đúng: khi yêu cầu được cập nhật hoặc mở rộng sau khi hoàn chỉnh sản phẩm và trongsuốt quá trình thực hiện thao tác, không phát hiện ra lỗi hay những thiếu sót phát sinh. Giai đoạn thực hiện chắc chắn phải được sửa đổi và mở rộng, đòi hỏi lặp lại việc đọc và hiểu chương trình nguồn. Trong trường hợp lý tưởng, chức năng của một thành phần chương trình được hiểu mà không có kiến thức từ tài liệu thiết kế mà chỉ từ chương trình nguồn. Chương trình nguồn chỉ là tài liệu luôn phản ánh hiện trạng của thực thị. 121
- Khả năng đọc được một chương trình phụ thuộc vào ngôn ngữ lập trình được dùng và vào phong cách lập trình của người thực hiện. Việc viết một chương trình có thể đọc được là tiến trình sáng tạo. Phong cách lập trình của người thực hiện ánh hưởng đến khả năng đọc được chương trình hơn là ngôn ngữ lập trình được sử dụng. Yếu tố quan trọng nhất của phong cách lập trình tốt là: Tính cấu trúc Sự trình bày diễn đạt Cách thức trình bày bên ngoài Hiệu suất 6.3.1 Tính cấu trúc Việc phân rã một hệ thống phần mềm dựa trên mục đích chính là độ phức tạp thông qua mức trừu tượng phần thành phần cô đọng rõ nét (cấu trúc chương trình lớn). Chọn lựa những thành phần chương trình phù hợp trong việc định ra những thuật toán của thủ tục con.(cấu trúc chương trình nhỏ). 6.3.2 Thế mạnh của diễn đạt Qui trình thực hiện một hệ thống phần mềm chứa đựng việc đặt tên đối tượng và mô tả các công việc thực thi của đối tượng này. Chọn lựa tên đặc biệt quan trọng trong việc viết thuật toán Một số đề nghị: Nếu dùng chữ viết tắt, thì sử dụng tên đặt này người đọc chương trình có thể hiểu mà không cần bất cứ sự giải thích nào. Việc sử dụng những từ viết tắt chỉ bao gồm ngữ cảnh. Với một hệ thống gán tên chỉ nên một ngôn ngữ (ví dụ đừng dùng lẫn lộn tiếng Anh và tiết Việt). Dùng chữ hoa chữ thường để phân biệt những loại định nghĩa khác nhau (ví dụ chữ hoa đầu tiên cho kiểu dữ liệu, lớp, mô đun, chữ thường đầu tiên cho biến) và đặt tên dài hơn có thể đọc (ví dụ CheckInputValue). Dùng danh từ cho giá trị, động từ cho hoạt động, và thuộc tính cho điều kiện để làm rõ ý nghĩa nhận diện (ví dụ width, ReadKey, valid). 122
- Thiết lập những qui luật cho chính bạn sử dụng theo chúng một cách thích hợp. Phong cách lập trình tốt được tìm thấy trong diễn giải sử dụng ghi chú: đóng góp cho khả năng đọc được chương trình và như vậy nó là thành phần quan trọng của chương trình. Hiệu chỉnh việc ghi chú chương trình không dễ dàng và đòi hỏi kinh nghiệm, sáng tạo và khả năng diễn đạt thông điệp gọn gàng và chính xác. Một số luật cho việc viết những ghi chú: Mỗi thành phần hệ thống (mỗi mô đun và lớp) nên bắt đầu với ghi chú chi tiết cho người đọc những thông tin với một vài vấn đề liên quan đến thành phần của hệ thống: -Thành phần này làm gì? -Thành phần này được sử dụng như thế nào trong những ngữ cảnh gì? -Những phương thức đặc biệt được sử dụng. -Ai là Tác giả của thành phần này? -Thành phần này được viết khi nào? -Những sửa đổi cập nhật nó được thực hiện. Mỗi thủ tục và phương thức cung cấp ghi chú mô tả công việc (có thể có). Điều này ứng dụng đặt biệt cho đặc tả giao diện. Giải thích ý nghĩa của biến với ghi chú. Những thành phần của chương chịu trách nhiệm cho những tác nhiệm riêng nên được đánh nhãn với những ghi chú. Những khối lệnh khó để hiểu (ví dụ thủ tục rắc rối hay những thành phần mà đặc trưng cho một máy tính cụ thể) nên được mô tả ghi chú sao cho người đọc dễ dàng hiểu chúng. Hệ thống phần mềm nên chứa mà một vài ghi chú gãy gọn súc tích như nếu có thể nhưng nhiều ghi chú chi tiết tương xứng nếu cần thiết. Đảm bảo những thay đổi chương trình không chỉ có tác động phần khai báo và khối lệnh mà còn phản ánh những cập nhật trong phần ghi chú. Những ghi chú không chính xác thì sẽ tệ hơn. Lưu ý: những luật trên tuân thủ cân nhắc bởi vì không có luật áp dụng đồng 123
- nhất cho tất cả các hệ thống phần mềm và mỗi phạm vi ứng dụng. Việc ghi chú hệ thống phần mềm là một nghệ thuật cũng giống như phần thiết kế cài đặt hệ thống phần mềm. 6.3.3 Cách thức trình bày bên ngoài Ngoài sự chọn tên và ghi chú, khả năng đọc được của hệ thống phần mềm cũng phụ thuộc vào cách thức trình bày bên ngoài. Một số luật đề nghị cho hình thức trình bày chương trình: Mỗi thành phần của chương trình (components), những khai báo (của kiểu dữ liệu, hằng biến, ) nên được tách biệt mỗi phần của khối lệnh. Phần khai báo nên có một cấu trúc đồng nhất khi có thể như thứ tự sau: hằng, kiểu dữ liệu, lớp, mô đun, phương thức và thủ tục. Mô tả giao diện (danh sách tham số cho phương thức và thủ tục) nên tách tham số nhập liệu, kết xuất và nhập/xuất. Phần ghi chú và chương trình nguồn nên tách bạch. Cấu trúc của chương trình nên được nhấn mạnh ở phần canh chỉnh lề (sử dụng phím tab cho từ mỗi đầu khối lệnh đến khối lệnh theo sau). 6.4. Đánh giá chất lượng công việc 6.4.1 Hiện thực tăng cường Ý tưởng cơ bản của việc hiện thực tăng cường gần với việc trộn giai đoạn thiết kế và cài đặt hơn là tách biệt hai giai đoạn này mà mô hình qui trình phát triển phần mềm tuần tự cổ điển đề ra. Điểm nhấn mạnh của phương pháp này được tìm thấy dựa trên thực nghiệm rằng những quyết định trong thiết kế và cài đặt có tác động lẫn nhau và vì vậy nếu tách bạch thiết kế khắt khe sẽ không đạt được mục tiêu. Trong nhiều trường hợp, chỉ có cài đặt mới quyết định việc phân rã cấu trúc của thiết kế chứng minh sự thõa mãn đầy đủ vấn đề. Hiện thực tăng cường nghĩa là sau mỗi bước thiết kế có liên quan đến kiến trúc, kiến trúc phần mềm hiện hành được thẩm định dựa trên những trường hợp thực. Sự tác động qua lại giữa các thành phần hệ thống cụ thể trong thiết kế (trong hình thức đặc tả giao diện) được thẩm định. Để có thể làm được điều này, những thành phần hệ thống (hành vi xuất/ nhập của chúng) được mô phỏng hay thực tế hóa như khuôn mẫu. Nếu có những nghi ngờ liên quan đến tính khả thi của thành 124
- phần thì tiến trình thiết kế được ngắt và những thành phần được thực hiện. Chỉ khi hiện thực và nhúng chúng vào trong kiến trúc hệ thống trước đó được kiểm tra thì tiến trình thiết kế tiếp tục hay kiến trúc được chấp nhận tương ứng kiến thức thu được trong hiện thực thành phần. Hiệu quả của phương pháp này phụ thuộc vào việc mở rộng vào khả năng tích hợp thành phần hệ thống mà được viết trong chuẩn mực khác nhau và được hoàn chỉnh ở nhữn cấp độ khác nhau, đối với toàn bộ hệ thống để thực hiện gần với thực tế. Một vài thành phần hệ thống, ví dụ giao diện người dùng và mô hình dữ liệu được thể hiện dưới dạng khuôn mẫu, những thành phần khác từ thư viện thành phần có sẵn hay tồn tại như hiện thực hoàn chỉnh được thể hiện dưới dạng mã nguồn thực thi còn các thành phần hệ thống khác có sẵn như đặc tả giao diện. Đối với sự hợp lệ của thiết kế hệ thống hiện hành, bất kỳ lúc nào giao diện người dùng triển khai thì tương ứng khuôn mẫu cần được kích hoạt. 6.4.2 Đánh giá lại thiết kế và chương trình (Design and Code Review) Với việc xem lại thiết kế và chương trình, sẽ giúp hoàn chỉnh chất lượng hiệu quả của công việc hơn là chúng ta chỉ điều chỉnh những thay đổi đơn lẻ trong quá trình phát triển phần mềm.Trong những chương trình lớn, đòi hỏi xem xét lại những yêu cầu, đặc tả, thiết kế, và cả chương trình của chúng ta. Giúp điều chỉnh thiếu sót, logic, cấu trúc, tính sáng tỏ. Khi chương trình không rõ hay mơ hồ xáo trộn, thêm những ghi chú thì tốt hơn hay viết lại nó một cách đơn giản hơn sẽ làm cho chương trình dễ đọc và dễ hiểu. Việc làm này sẽ tạo cho chúng ta sự tự tin xuất bản hay trình bày cho bạn bè hay tập thể. Mục đích của review để đảm bảo chương trình tạo ra đạt chất lượng cao nhất. Một trong việc review là kiểm duyệt, duyệt qua, xem xét mục riêng từ thiết kế đến từng dòng lệnh. Review có thể được dùng trên yêu cầu, thiết kế, hồ sơ tài liệu, hay bất kỳ yếu tố của sản phẩm. Nhiều dự án phần mềm trãi qua nữa qúa trình phát triển ở giai đoạn kiểm thử. Điều này không hiệu quả. Review thiết kế và chương trình là những cách thức hiệu quả tìm và sửa chữa thiếu sót. Với review, chúng ta có thể tìm ra những thiếu sót trực tiếp, trong khi chúng ta chỉ có thể tìm ra những dấu hiệu. Khi chúng ta xem lại chương trình, chúng ta biết nơi và những logic gì giả sử phải được làm.Những sửa lỗi của chúng ta sẽ hoàn chỉnh và chính xác. Công việc review cho phép quay trở lại bất cứ việc gì chúng ta đã làm. Nhóm phát triển nên ngồi lại với nhau để đọc lại mọi thiết kế và chương trình, nghiên cứu, 125
- hiểu nó. Sửa những sai sót: logic, cấu trúc, tính rõ ràng. Sau khi đã được xem xét và đánh giá, viết lại chương trình. Chỗ nào không rõ ràng hay lộn xộn, thêm ghi chú và viết lại hoàn chỉnh làm cho dễ đọc và dễ hiểu. 6.5. Ví dụ minh họa Ví dụ: Xét phần mềm hỗ trợ giải bài tập phương trình đại só với 4 yêu cầu: Soạn đề bài, Soạn đáp án, Giải bài tập, Chấm điểm. Nhằm thể hiện các giai đoạn thực hiện trong qui trình Giai đoạn 1: Xác định yêu cầu Yêu cầu 1: Soạn đề bài với qui định về Soạn đề bài Yêu cầu 2: Soạn đáp án với qui định về Soạn đáp án và biểu mẫu Soạn đáp án Yêu cầu 3: Giải bài tập với qui định về Giải bài tập và biểu mẫu Giải bài tập Yêu cầu 4: Chấm điểm với qui định về Chấm điểm Giai đoạn 2: Sơ đồ luồng dữ liệu cho công việc Soạn đề bài Sơ đồ luồng dữ liệu cho công việc Soạn đáp án Sơ đồ luồng dữ liệu cho công việc Giải bài tập 126