Love?

TRY TO MAKE DREAM COME TRUE

Quảng cáo

---

Thứ Tư, 25 tháng 11, 2009

WOL - Wake on LAN

Hai hôm nay rồi! Mình đang tìm hiểu về cách khởi động máy tính qua Lan! Nhưng đang vướt mắc ở chỗ làm sao lấy được tất cả các ip của các máy trong Lan. Nhờ bác google 2 hôm nay rồi mà mới thấy họ code lấy ip các máy trong cũng workgroup! Nản thật!Mình đành phải dùng cách ping từ IP đầu tới Ip cuối! Híc! Chậm quá!

Chủ Nhật, 22 tháng 11, 2009

Chẳng muốn nghĩ

00000000010010110000000001101000000000001111010000000000011011100000000001100111 0000000001100010000000000110100100011110101111110000000001110100 00000001000100010000000011100011 000000000110001000000000011000010000000001101111 000000000110110000000000111000100000000001110101 000000000111001000011110110100110000000001101001 0000000001101101000000001110110000000000011011100000000001101000 000000000110110000011110101000010000000001101001 00000000011000110000000011110011 000000000110001100011110101000110000000001101101 0000000001100111000000000110100100000000111000010000000001100011 0000000001101110000000001110000000000000011110010000000000100001 000000000100111000011110101000110000000001101110 00000000011101000000000001101000000111101010110100000000011101000000000000100001 00000000010000110000000011110011 0000000001101101000000000111010100011110110100010000000001101110 0000000100010001000000001110001000000000011101010000000000100001 000000000101010000011110101000010000000001101001 00000000011101000000000001101000000111101011000100000000011011100000000001100111 000000000110001000011110101000010000000001101110 000000000110011100011110111000110000000001101001 000000000110110000011110101000010000000001101001 000000000110001100000000011010000000000001110101000000000111100100011110110001110000000001101110 00000000011000110000000101101001 00000000011101000000000001101000000000001111010000000000011010010000000000100001 00000000010101000000000110110000000111101101111100000000011011100000000001100111 0000000001110010000111101011000100000000011011100000000001100111 0000000001110100000000001110110000000000011011100000000001101000 000000000110001100011110101000110000000001101101 00000001000100010000000011100011 00000000011010110000000001101111 000000000110001100000000111100100000000001101110 00000000011011100000000001101000000000011011000000000000011011100000000001100111 000000000111010000000000011010000000000011101100 00000000011100100000000001100001 00000000011011100000000011110011 00000001000100010000000011100011 00000000011010010000000001101110 000000010001000100011110101011010000000001101101 00000000011101000000000001110010000000000110111100000000011011100000000001100111 00000000011011010000000011101100000000000110111000000000011010000000000000100001 00000000010011100000000011110011 000000000111011000011110111010110000000001100001 00000000011011000000000011100000 00000000011010110001111011110111 0000000001101110000000000110100100011110110001110000000001101101 000000000110001100011110111001110000000001100001 0000000001110100000000001110110000000000011011100000000001101000 000000000111100100000000111010100000000001110101 000000010001000100000001101000010000000001101110 000000000111000000000000011010000000000110110000000000011010000100000000011011100000000001100111 000000000111011000011110111010110000000001100001 00000000011011000000000011100000 00000000011010110001111011110111 0000000001101110000000000110100100011110110001110000000001101101 000000000110001100011110111001110000000001100001 000000000110001000011110101000010000000001101110 00000000011000100000000001100101 0000000001110001000000000111010100000000111010100000000001101110 000000000111001100000000011000010000000001101111 0000000001101110000111101101010100000000011010010000000000100001 00000000010101000001111011110001 00000000011011100000000001101000000000000110100100000000111010100000000001101110 000000000110001100011110101000110000000001101101 0000000001110100000000000110100000011110101001010000000001111001 0000000001100010000000000111010100011110110100110000000001101110 0000000001101101000000000111010100011110110100010000000001101110 0000000001100011000000000110100000000000011010010000000001100001 00000000011100110001111010111011 0000000001100011000000001111100100000000011011100000000001100111 00000000011000010000000001101001 000000010001000100000000111100110000000000100001 00000000001110100000000001000100

Thứ Sáu, 20 tháng 11, 2009

Đồng thoại - Quang Lương



Lời nguyên bản tiếng Trung:
忘了有多久
再没听到你
对我说你最爱的故事
我想了很久
我开始慌了
是不是我又做错什么
你哭着对我说
童话里都是骗人的
我不可能是你的王子
也许你不会懂
从你说爱我以后
我的天空星星都亮了
我愿变成童话里
我要变成童话里
我会变成童话里
你爱的那个天使
张开双手
变成翅膀守护你
你要相信
相信我们会像童话故事里
幸福和快乐是结局

一起写我们的结局

Lời phiên âm tiếng Trung:
wang le you duo jiu zai mei ting dao ni dui wo shuo ni zui ai de gu shi wo xiang le hen jiu wo kai shi huang le shi bu shi wo you zuo cuo le shen me
[bridge] ni ku zhao dui wo shuo tong hua li du shi pian ren de wo bu ke neng shi ni de wang zi ye xu ni bu hui dong cong ni shuo ai wo yi hou wo de tian kong xing xing dou liang le

[chorus] wo yuan bian cheng tong hua li ni ai de na ge tian shi zhang kai shuang shou bian cheng chi bang shou hu ni ni yao xiang xin xiang xin wo men hui xiang tong hua gu shi li xin fu he kuai le shi jie ju
[Repeat bridge and chorus] wo yao bian cheng tong hua li ni ai de na ge tian shi zhang kai shuang shou bian cheng chi bang shou hu ni ni yao xiang xin xiang xin wo men hui xiang tong hua gu shi li xin fu he kuai le shi jie ju
wo hui bian cheng tong hua li ni ai de na ge tian shi zhang kai shuang shou bian cheng chi bang shou hu ni ni yao xiang xin xiang xin wo men hui xiang tong hua gu shi li xin fu he kuai le shi jie ju yi qi xie wo men de jie ju

Lời dich Việt:
Ngỡ rằng đã quên lâu rồi , vì không nghe được em kể với anh vềcâu chuyện em yêu thích nhất nữa . Anh đã nghĩ rất lâu , anh bắt đầu hoang mang , có phải là anh đã làm điều gì sai không ?

Em đã khóc khi nói với anh , sao trong đồng thoại toàn là kẻ lừa dối . Anh không thể là hoàng tử của em . Có lẽ em đã không hiểu , từ sau khi em nói yêu anh , thì bầu trời của anh , ngàn vì sao đều tỏa sáng .

Anh muốn hoá thành vị thiên sứ mà em yêu trong câu truyện cổ tích ,để có thể vươn đôi tay thành đôi cánh che chở cho em . Em cần phải tin , tin rằ ̀ng chúng ta sẽ như trong những câu chuyện đồng thoại , mà kết cục luôn luôn là hạnh phúc và vui vẻ .

... anh nhất định sẽ viết nên kết cục của chúng ta.

Thằng tàu lai

Kajima

Hoa đinh hương


Nguyên bản tiếng Trung:
Lời dịch Việt:
Em đã từng nói em yêu hoa Đinh Hương,
Vì nó cũng như tên của em, Đinh Hương
Một loài hoa ũ rũ,
Cũng như em một cô gái đa sầu, đa cảm

Khi bông hoa tàn lụi, héo khô
Khi tất cả khung cảnh như dừng lại,
Một loài hoa mỏng manh,
đã quen thuộc hứng chịu những cơn mưa phùn.
Mọi cuộc sống trên thiên địa,
Được tạo ra bởi những giấc mơ đẹp ,
Thì em...lại đột ngột ra đi,
Để lại cho anh cuộc đời dài đăng đẳng...

Xung quanh ngôi mộ, những bông hoa đang nỡ rộ
Một vẻ đẹp cũng như em trong suốt thời gian dài
Em nhìn xem, nó đã nở rộ khắp núi,
Em không còn thấy cô đơn nữa phải không ?
Em lắng nghe xem, một người nào đó đang hát cho em nghe
Bài hát em thích nhất đấy.
Em không còn phải lo lắng nữa.
Đinh Hương đã mọc khắp sân,
Một màu tím nở rộ
Anh vẫn nơi đây, bảo vệ em suốt cuộc đời em...


Note: bài này theo mọi người đánh giá là Lưu Phương hát hay nhất nhưng theo cảm nhận của mình Đường Lỗi hát hay hơn và tớ thấy cái này clip rất cảm động nên up lên

Thứ Ba, 10 tháng 11, 2009

Giải thuật tìm kiếm A*

Trong khoa học máy tính, A* (đọc là A sao) là một thuật toán tìm kiếm trong đồ thị. Thuật toán này tìm một đường đi từ một nút khởi đầu tới một nút đích cho trước (hoặc tới một nút thỏa mãn một điều kiện đích). Thuật toán này sử dụng một "đánh giá heuristic" để xếp loại từng nút theo ước lượng về tuyến đường tốt nhất đi qua nút đó. Thuật toán này duyệt các nút theo thứ tự của đánh giá heuristic này. Do đó, thuật toán A* là một ví dụ của tìm kiếm theo lựa chọn tốt nhất (best-first search).

Thuật toán A* được mô tả lần đầu vào năm 1968 bởi Peter Hart, Nils Nilsson, và Bertram Raphael. Trong bài báo của họ, thuật toán được gọi là thuật toán A; khi sử dụng thuật toán này với một đánh giá heuristic thích hợp sẽ thu được hoạt động tối ưu, do đó mà có tên A*.

Ý tưởng trực quan

Xét bài toán tìm đường - bài toán mà A* thường được dùng để giải. A* xây dựng tăng dần tất cả các tuyến đường từ điểm xuất phát cho tới khi nó tìm thấy một đường đi chạm tới đích. Tuy nhiên, cũng như tất cả các thuật toán tìm kiếm có thông tin (informed tìm kiếm thuật toán), nó chỉ xây dựng các tuyến đường "có vẻ" dẫn về phía đích.

Để biết những tuyến đường nào có khả năng sẽ dẫn tới đích, A* sử dụng một "đánh giá heuristic" về khoảng cách từ điểm bất kỳ cho trước tới đích. Trong trường hợp tìm đường đi, đánh giá này có thể là khoảng cách đường chim bay - một đánh giá xấp xỉ thường dùng cho khoảng cách của đường giao thông.

Điểm khác biệt của A* đối với tìm kiếm theo lựa chọn tốt nhất là nó còn tính đến khoảng cách đã đi qua. Điều đó làm cho A* "đầy đủ" và "tối ưu", nghĩa là, A* sẽ luôn luôn tìm thấy đường đi ngắn nhất nếu tồn tại một đường đi như thế. A* không đảm bảo sẽ chạy nhanh hơn các thuật toán tìm kiếm đơn giản hơn. Trong một môi trường dạng mê cung, cách duy nhất để đến đích có thể là trước hết phải đi về phía xa đích và cuối cùng mới quay lại. Trong trường hợp đó, việc thử các nút theo thứ tự "gần đích hơn thì được thử trước" có thể gây tốn thời gian.

Mô tả thuật toán

A* lưu giữ một tập các lời giải chưa hoàn chỉnh, nghĩa là các đường đi qua đồ thị, bắt đầu từ nút xuất phát. Tập lời giải này được lưu trong một hàng đợi ưu tiên (priority queue). Thứ tự ưu tiên gán cho một đường đi x được quyết định bởi hàm f(x) = g(x) + h(x).

Trong đó, g(x) là chi phí của đường đi cho đến thời điểm hiện tại, nghĩa là tổng trọng số của các cạnh đã đi qua. h(x) là hàm đánh giá heuristic về chi phí nhỏ nhất để đến đích từ x. Ví dụ, nếu "chi phí" được tính là khoảng cách đã đi qua, khoảng cách đường chim bay giữa hai điểm trên một bản đồ là một đánh giá heuristic cho khoảng cách còn phải đi tiếp.

Hàm f(x) có giá trị càng thấp thì độ ưu tiên của x càng cao (do đó có thể sử dụng một cấu trúc heap tối thiểu để cài đặt hàng đợi ưu tiên này).

function A*(điểm_xuất_phát,đích)
var đóng := tập rỗng
var q := tạo_hàng_đợi(tạo_đường_đi(điểm_xuất_phát))
while q không phải tập rỗng
var p := lấy_phần_tử_đầu_tiên(q)
var x := nút cuối cùng của p
if x in đóng
continue
if x = đích
return p
bổ sung x vào tập đóng
foreach y in các_đường_đi_tiếp_theo(p)
đưa_vào_hàng_đợi(q, y)
return failure

Trong đó, các_đường_đi_tiếp_theo(p) trả về tập hợp các đường đi tạo bởi việc kéo dài p thêm một nút kề cạnh. Giả thiết rằng hàng đợi được sắp xếp tự động bởi giá trị của hàm f.

"Tập hợp đóng" (đóng) lưu giữ tất cả các nút cuối cùng của p (các nút mà các đường đi mới đã được mở rộng tại đó) để tránh việc lặp lại các chu trình (việc này cho ra thuật toán tìm kiếm theo đồ thị). Đôi khi hàng đợi được gọi một cách tương ứng là "tập mở". Tập đóng có thể được bỏ qua (ta thu được thuật toán tìm kiếm theo cây) nếu ta đảm bảo được rằng tồn tại một lời giải hoặc nếu hàm các_đường_đi_tiếp_theo được chỉnh để loại bỏ các chu trình.

Các tính chất

Cũng như tìm kiếm theo chiều rộng (breadth-first search), A* là thuật toán đầy đủ (complete) theo nghĩa rằng nó sẽ luôn luôn tìm thấy một lời giải nếu bài toán có lời giải.

Nếu hàm heuristic h có tính chất thu nạp được (admissible), nghĩa là nó không bao giờ đánh giá cao hơn chi phí nhỏ nhất thực sự của việc đi tới đích, thì bản thân A* có tính chất thu nạp được (hay tối ưu) nếu sử dụng một tập đóng. Nếu không sử dụng tập đóng thì hàm h phải có tính chất đơn điệu (hay nhất quán) thì A* mới có tính chất tối ưu. Nghĩa là nó không bao giờ đánh giá chi phí đi từ một nút tới một nút kề nó cao hơn chi phí thực. Phát biểu một cách hình thức, với mọi nút x,y trong đó y là nút tiếp theo của x:

h(x) \le g(y) - g(x) + h(y)

A* còn có tính chất hiệu quả một cách tối ưu (optimally efficient) với mọi hàm heuristic h, có nghĩa là không có thuật toán nào cũng sử dụng hàm heuristic đó mà chỉ phải mở rộng ít nút hơn A*, trừ khi có một số lời giải chưa đầy đủ mà tại đó h dự đoán chính xác chi phí của đường đi tối ưu.

Quan hệ với tìm kiếm chi phí đều (uniform-cost search)

Thuật toán Dijkstra là một trường hợp đặc biệt của A* trong đó đánh giá heuristic là một hàm hằng h(x) = 0 với mọi x.

Độ phức tạp thuật toán

Độ phức tạp thời gian của A* phụ thuộc vào đánh giá heuristic. Trong trường hợp xấu nhất, số nút được mở rộng theo hàm mũ của độ dài lời giải, nhưng nó sẽ là hàm đa thức khi hàm heuristic h thỏa mãn điều kiện sau:

|h(x) - h^*(x)| \le O(\log h^*(x))

trong đó h * là heuristic tối ưu, nghĩa là hàm cho kết quả là chi phí chính xác để đi từ x tới đích. Nói cách khác, sai số của h không nên tăng nhanh hơn lôgarit của "heuristic hoàn hảo" h * - hàm trả về khoảng cách thực từ x tới đích (Russell và Norvig 2003, tr. 101).

Vấn đề sử dụng bộ nhớ của A* còn rắc rối hơn độ phức tạp thời gian. Trong trường hợp xấu nhất, A* phải ghi nhớ số lượng nút tăng theo hàm mũ. Một số biến thể của A* đã được phát triển để đối phó với hiện tượng này, một trong số đó là A* lặp sâu dần (iterative deepening A*), A* bộ nhớ giới hạn (memory-bounded A* - MA*) và A* bộ nhớ giới hạn đơn giản (simplified memory bounded A*).

Một thuật toán tìm kiếm có thông tin khác cũng có tính chất tối ưu và đầy đủ nếu đánh giá heuristic của nó là thu nạp được (admissible). Đó là tìm kiếm đệ quy theo lựa chọn tốt nhất (recursive best-first search - RBFS).

theo http://vi.wikipedia.org

Mô phỏng thuật toán trên visual studio C#




Download code

Thứ Hai, 2 tháng 11, 2009

Beginning SQL Server 2008 for Developers: From Novice to Professional



Robin Dewson, "Beginning SQL Server 2008 for Developers: From Novice to Professional"
Apress | 2008-07-24 | ISBN: 1590599586 | 496 pages | PDF | 14,3 MB

SQL Server 2008 is a first–rate database management system. It offers more capability than any previous release of SQL Server. More than just a classic relational database management system, SQL Server 2008 includes exciting and powerful features that make it useful for everything from large corporate data warehouses to ad hoc departmental databases. You’ll find enhanced support for XML, new support for spatial data, transparent data encryption, a policy–based management system, and more.
Author and developer Robin Dewson will show you the way from beginner to SQL Server 2008 professional. Learn to install SQL Server 2008 and navigate around Management Studio before getting right to the heart of mastering fundamental SQL Server 2008 tasks: creating tables, storing data, securing data, and retrieving it again. Dewson ensures you’ll be fully prepared to use all the basics and create a solid foundation for your own projects.
Don’t forget about backups! Your database will house important data, so backing up is essential to protect yourself from inevitable hardware failure. Dewson walks you through SQL Server 2008’s easy–to–use backup and recovery feature set, giving you the grounding that you need in order to set up a reliable plan for recovery in your own environment.
Learn to use Transact–SQL, a full–blown procedural language that is built right into the database system. Transact–SQL is the key to unlocking everything that SQL Server 2008 has to offer. Using Transact–SQL, you can write centrally encapsulated business logic through the use of stored procedures, automatically trigger processing through the use of triggers, and manipulate data within the server without having to move data back and forth across the network.
Finally, you’ll learn a bit about SQL Server 2008 Reporting Services, a powerful tool that allows enterprise reporting. Reporting Services enables you to develop and serve reports across your organization and even to business partners outside your company. Reporting Services also gives end users the ability to create their own reports, helping them transform business data into valuable, usable information to guide their day–to–day decisions.
What you’ll learn
Install and manage SQL Server on your system.
Create and secure tables.
Store and query data; use indexes to improve query performance.
“Sleep when the wind blows,” because you have a solid backup and recovery process.
Run procedural code inside your database in the form of Transact–SQL procedures and triggers.
Serve up business reports to in–house users and outside business partners via SQL Server 2008 Reporting Services.

Beginning C Sharp 2008 Databases From Novice to Professional Jan 2008, 512pages

Beginning C Sharp 2008 Databases From Novice to Professional Jan 2008, 512pages


CHAPTER 1
Getting Your Tools

CHAPTER 2 Getting to Know Your Tools

CHAPTER 3 Getting to Know Relational Databases

CHAPTER 4 Writing Database Queries

CHAPTER 5 Manipulating Database Data

CHAPTER 6 Using Stored Procedures

CHAPTER 7 Using XML.

CHAPTER 8 Understanding Transactions .

CHAPTER 9 Getting to Know ADO.NET .

CHAPTER 10 Making Connections .

CHAPTER 11 Executing Commands.

CHAPTER 12 Using Data Readers.

CHAPTER 13 Using Datasets and Data Adapters . .

CHAPTER 14 Building Windows Forms Applications

CHAPTER 15 Building ASP.NET Applications

CHAPTER 16 Handling Exceptions

CHAPTER 17 Working with Events .

CHAPTER 18 Working with Text and Binary Data .

CHAPTER 19 Using LINQ

CHAPTER 20 Using ADO.NET 3.5


Nguồn : Apress
Tác giả : Jonathan Hassell
Kiểu tập tin : PDF
Độ lớn tập tin : 11.9MB
Link download

Phân tích và thiết kế hệ thống làm bài thi trắc nghiệm trực tuyến (P.6)

2.4. Xây dựng biểu đồ lớp chi tiết



theo blog của NGUYEND

Phân tích và thiết kế hệ thống làm bài thi trắc nghiệm trực tuyến (P.5)

2.3. Xây dựng biểu đồ tuần tự /cộng tác của hệ thống
2.3.1. Các nhóm chức năng liên quan đến học sinh






2.3.2. Các nhóm chức năng liên quan đến giáo viên
Các Use Case Login và Xem thông tin cá nhân tương tự học sinh



2.3.3. Các nhóm chức năng liên quan đến quản trị viên
















theo blog của NGUYEND

Phân tích và thiết kế hệ thống làm bài thi trắc nghiệm trực tuyến (P.4)

2.1.2.3. Các Use Case liên quan đến tác nhân Administrator


2.1.2.3.1. Use Case Login to Admin Region
- Tóm tắt
  • Đây là trường hợp sử dụng quản trị viên đăng nhập vào hệ thống

- Tác nhân
  • Administrator

- Liên quan
  • Không có các Use Case liên quan

- Luồng sự kiện
  • Luồng sự kiện chính

- Quản trị viên chọn đăng nhập trên giao diện quản lý của hệ thống thi trực tuyến
- Hệ thống hiển thị hộp thoại đăng nhập
- Quản trị viên nhập ID tài khoản và mật khẩu đã được cấp, chọn đăng nhập vào chức năng quản trị
- Hệ thống xác nhận mật khẩu
- Hiển thị giao diện chức năng của quản trị viên
- Kết thúc Use Case

  • Luồng sự kiện rẽ nhánh

 - Luồng rẽ nhánh thứ nhất
• Quản trị viên hủy yêu cầu đăng nhập
• Hệ thống bỏ qua hộp thoại đăng nhập, hiển thị giao diện ban đầu của hệ thống
• Kết thúc Use Case
- Luồng rẽ nhánh thứ hai
• ID tài khoản và mật khẩu nhập vào không hợp lệ
• Hệ thống từ chối đăng nhập
• Hiển thị thông báo và hộp thoại đăng nhập
• Kết thúc Use Case
- Luồng rẽ nhánh thứ ba
• Hệ thống có lỗi trong quá trình xử lý xác nhận tài khoản
• Hiển thị thông báo lỗi
• Kết thúc Use Case

2.1.2.3.2. Use Case Create/Change course
- Tóm tắt
  • Đây là trường hợp sử dụng quản trị viên tạo hoặc thay đổi thông tin các khóa học

- Tác nhân
  • Administrator

- Liên quan
  • Use Case này phải sử dụng Use Case Login

- Luồng sự kiện
  • Luồng sự kiện chính

- Trên giao diện quản lý khóa học, quản trị viên chọn thay đổi thông tin một khóa học nào đó hoặc tạo mới một khóa học.
- Hệ thống hiển thị giao diện nhập thông tin khóa học. Nếu là chức năng thay đổi thông tin khóa học, hệ thống sẽ hiển thị thông tin của khóa học được chọn
- Quản trị viên nhập các thông tin: ID khóa học (nếu tạo mới), tên khóa học, sau đó chọn chức năng lưu thông tin
- Hệ thống xác nhận lại yêu cầu và dữ liệu vào. Hệ thống lưu thông tin
- Hiển thị thông báo
- Kết thúc Use Case

  • Luồng sự kiện rẽ nhánh

 - Luồng rẽ nhánh thứ nhất
• Quản trị viên hủy yêu cầu
• Hệ thống hiển thị giao diện quản lý khóa học
• Kết thúc Use Case
- Luồng rẽ nhánh thứ hai
• Thông tin nhập vào không hợp lệ, ID khóa học đã tồn tại (trong trường hợp tạo mới)
• Hệ thống từ chối lưu thông tin, hiển thị thông báo
• Kết thúc Use Case
- Luồng rẽ nhánh thứ ba
• Hệ thống có lỗi trong quá trình xử lý
• Hiển thị thông báo
• Kết thúc Use Case

2.1.2.3.3. Use Case Create/Change Class
- Tóm tắt
  • Đây là trường hợp sử dụng quản trị viên tạo hoặc thay đổi thông tin lớp

- Tác nhân
  • Administrator

- Liên quan
  • Use Case này phải sử dụng Use Case Login

- Luồng sự kiện
  • Luồng sự kiện chính

- Trên giao diện quản lý lớp, quản trị viên chọn thay đổi thông tin một lớp nào đó hoặc tạo mới một lớp.
- Hệ thống hiển thị giao diện nhập thông tin lớp. Nếu là chức năng thay đổi thông tin lớp, hệ thống sẽ hiển thị thông tin của lớp được chọn
- Quản trị viên nhập các thông tin: Chọn khóa học của lớp, ID lớp (nếu tạo mới), tên lớp, chọn các môn học và giáo viên của lớp, sau đó chọn chức năng lưu thông tin
- Hệ thống xác nhận lại yêu cầu và dữ liệu vào. Hệ thống lưu thông tin
- Hiển thị thông báo
- Kết thúc Use Case

  • Luồng sự kiện rẽ nhánh

 - Luồng rẽ nhánh thứ nhất
• Quản trị viên hủy yêu cầu
• Hệ thống hiển thị giao diện quản lý lớp
• Kết thúc Use Case
- Luồng rẽ nhánh thứ hai
• Thông tin nhập vào không hợp lệ, ID lớp đã tồn tại (trong trường hợp tạo mới)
• Hệ thống từ chối lưu thông tin, hiển thị thông báo
• Kết thúc Use Case
- Luồng rẽ nhánh thứ ba
• Hệ thống có lỗi trong quá trình xử lý
• Hiển thị thông báo
• Kết thúc Use Case

2.1.2.3.4. Use Case Create/Change Subject
- Tóm tắt
  • Đây là trường hợp sử dụng quản trị viên tạo hoặc thay đổi thông tin môn học

- Tác nhân
  • Administrator

- Liên quan
  • Use Case này phải sử dụng Use Case Login

- Luồng sự kiện
  • Luồng sự kiện chính

- Trên giao diện quản lý môn học, quản trị viên chọn thay đổi thông tin một môn học nào đó hoặc tạo mới một môn học.
- Hệ thống hiển thị giao diện nhập thông tin môn học. Nếu là chức năng thay đổi thông tin môn học, hệ thống sẽ hiển thị thông tin của môn học được chọn
- Quản trị viên nhập các thông tin: ID môn học (nếu tạo mới), tên môn học, sau đó chọn chức năng lưu thông tin
- Hệ thống xác nhận lại yêu cầu và dữ liệu vào. Hệ thống lưu thông tin
- Hiển thị thông báo
- Kết thúc Use Case

  • Luồng sự kiện rẽ nhánh

 - Luồng rẽ nhánh thứ nhất
• Quản trị viên hủy yêu cầu
• Hệ thống hiển thị giao diện quản lý môn học
• Kết thúc Use Case
- Luồng rẽ nhánh thứ hai
• Thông tin nhập vào không hợp lệ, ID môn học đã tồn tại (trong trường hợp tạo mới)
• Hệ thống từ chối lưu thông tin, hiển thị thông báo
• Kết thúc Use Case
- Luồng rẽ nhánh thứ ba
• Hệ thống có lỗi trong quá trình xử lý
• Hiển thị thông báo
• Kết thúc Use Case

2.1.2.3.5. Use Case Create/Change Teacher
- Tóm tắt
  • Đây là trường hợp sử dụng quản trị viên tạo hoặc thay đổi thông tin một giáo viên

- Tác nhân
  • Administrator

- Liên quan
  • Use Case này phải sử dụng Use Case Login

- Luồng sự kiện
  • Luồng sự kiện chính

- Trên giao diện quản lý giáo viên, quản trị viên chọn thay đổi thông tin một giáo viên nào đó hoặc tạo mới thông tin một giáo viên.
- Hệ thống hiển thị giao diện nhập thông tin giáo viên. Nếu là chức năng thay đổi thông tin giáo viên, hệ thống sẽ hiển thị thông tin của giáo viên được chọn
- Quản trị viên nhập các thông tin: ID đăng nhập (nếu tạo mới), mật khẩu, các thông tin chi tiết khác, sau đó chọn chức năng lưu thông tin
- Hệ thống xác nhận lại yêu cầu và dữ liệu vào. Hệ thống lưu thông tin
- Hiển thị thông báo
- Kết thúc Use Case

  • Luồng sự kiện rẽ nhánh

 - Luồng rẽ nhánh thứ nhất
• Quản trị viên hủy yêu cầu
• Hệ thống hiển thị giao diện quản lý giáo viên
• Kết thúc Use Case
- Luồng rẽ nhánh thứ hai
• Thông tin nhập vào không hợp lệ, ID đăng nhập đã tồn tại (trong trường hợp tạo mới)
• Hệ thống từ chối lưu thông tin, hiển thị thông báo
• Kết thúc Use Case
- Luồng rẽ nhánh thứ ba
• Hệ thống có lỗi trong quá trình xử lý
• Hiển thị thông báo
• Kết thúc Use Case

2.1.2.3.6. Use Case Create/Change Student
- Tóm tắt
  • Đây là trường hợp sử dụng quản trị viên tạo hoặc thay đổi thông tin một học sinh

- Tác nhân
  • Administrator

-Liên quan
  • Use Case này phải sử dụng Use Case Login

    • - Luồng sự kiện
  • Luồng sự kiện chính

- Trên giao diện quản lý học sinh, quản trị viên chọn thay đổi thông tin một học sinh nào đó hoặc tạo mới thông tin một học sinh.
- Hệ thống hiển thị giao diện nhập thông tin học sinh. Nếu là chức năng thay đổi thông tin học sinh, hệ thống sẽ hiển thị thông tin của học sinh được chọn
- Quản trị viên nhập các thông tin: ID đăng nhập (nếu tạo mới), mật khẩu, các thông tin chi tiết khác, lớp mà học sinh này học, sau đó chọn chức năng lưu thông tin
- Hệ thống xác nhận lại yêu cầu và dữ liệu vào. Hệ thống lưu thông tin
- Hiển thị thông báo
- Kết thúc Use Case

  • Luồng sự kiện rẽ nhánh

 - Luồng rẽ nhánh thứ nhất
• Quản trị viên hủy yêu cầu
• Hệ thống hiển thị giao diện quản lý học sinh
• Kết thúc Use Case
- Luồng rẽ nhánh thứ hai
• Thông tin nhập vào không hợp lệ, ID đăng nhập đã tồn tại (trong trường hợp tạo mới)
• Hệ thống từ chối lưu thông tin, hiển thị thông báo
• Kết thúc Use Case
- Luồng rẽ nhánh thứ ba
• Hệ thống có lỗi trong quá trình xử lý
• Hiển thị thông báo
• Kết thúc Use Case

2.1.2.3.7. Use Case Delete Student
- Tóm tắt
  • Đây là trường hợp sử dụng quản trị viên xóa thông tin một học sinh

- Tác nhân
  • Administrator

- Liên quan
  • Use Case này phải sử dụng Use Case Login, Use Case Delete Mark, Use Case Delete Exam Paper

- Luồng sự kiện
  • Luồng sự kiện chính

- Trên giao diện quản lý học sinh, quản trị viên chọn xóa thông tin một học sinh.
- Hệ thống hiển thị giao diện thông tin học sinh.
- Quản trị viên xác nhận lại yêu cầu
- Hệ thống thực hiện xóa thông tin học sinh, xóa toàn bộ điểm, các bài thi đã có trong thời gian trước của học sinh
- Hiển thị thông báo
- Kết thúc Use Case

  • Luồng sự kiện rẽ nhánh

 - Luồng rẽ nhánh thứ nhất
• Quản trị viên hủy yêu cầu
• Hệ thống hiển thị giao diện quản lý học sinh
• Kết thúc Use Case
- Luồng rẽ nhánh thứ hai
• Hệ thống có lỗi trong quá trình xử lý
• Hiển thị thông báo
• Kết thúc Use Case

2.1.2.3.8.Use Case Create/Change Admin
- Tóm tắt
  • Đây là trường hợp sử dụng quản trị viên tạo hoặc thay đổi thông tin một quản trị

- Tác nhân
  • Administrator

- Liên quan
  • Use Case này phải sử dụng Use Case Login

- Luồng sự kiện
  • Luồng sự kiện chính

- Trên giao diện quản lý quản trị viên, quản trị viên chọn thay đổi thông tin một quản trị viên nào đó hoặc tạo mới thông tin một quản trị viên.
- Hệ thống hiển thị giao diện nhập thông tin quản trị viên. Nếu là chức năng thay đổi thông tin, hệ thống sẽ hiển thị thông tin của quản trị được chọn
- Quản trị viên nhập các thông tin: ID đăng nhập (nếu tạo mới), mật khẩu, các thông tin chi tiết khác, sau đó chọn chức năng lưu thông tin
- Hệ thống xác nhận lại yêu cầu và dữ liệu vào. Hệ thống lưu thông tin
- Hiển thị thông báo
- Kết thúc Use Case

  • Luồng sự kiện rẽ nhánh

 - Luồng rẽ nhánh thứ nhất
• Quản trị viên hủy yêu cầu
• Hệ thống hiển thị giao diện quản lý quản trị viên
• Kết thúc Use Case
- Luồng rẽ nhánh thứ hai
• Thông tin nhập vào không hợp lệ, ID đăng nhập đã tồn tại (trong trường hợp tạo mới)
• Hệ thống từ chối lưu thông tin, hiển thị thông báo
• Kết thúc Use Case
- Luồng rẽ nhánh thứ ba
• Hệ thống có lỗi trong quá trình xử lý
• Hiển thị thông báo
• Kết thúc Use Case

2.1.2.3.9.Use Case Create/Change Exam
- Tóm tắt
  • Đây là trường hợp sử dụng quản trị viên tạo hoặc thay đổi thông tin các kỳ thi

- Tác nhân
  • Administrator

- Liên quan
  • Use Case này phải sử dụng Use Case Login

- Luồng sự kiện
  • Luồng sự kiện chính

- Trên giao diện quản lý các kỳ thi, quản trị viên chọn thay đổi thông tin một kỳ thi nào đó hoặc tạo mới một kỳ thi.
- Hệ thống hiển thị giao diện nhập thông tin kỳ thi. Nếu là chức năng thay đổi thông tin, hệ thống sẽ hiển thị thông tin của kỳ thi được chọn
- Quản trị viên nhập các thông tin: ID kỳ thi (nếu tạo mới), tên kỳ thi, các lớp sẽ tham gia vào kỳ thi, sau đó chọn chức năng lưu thông tin
- Hệ thống xác nhận lại yêu cầu và dữ liệu vào. Hệ thống lưu thông tin
- Hiển thị thông báo
- Kết thúc Use Case

  • Luồng sự kiện rẽ nhánh

 - Luồng rẽ nhánh thứ nhất
• Quản trị viên hủy yêu cầu
• Hệ thống hiển thị giao diện quản lý kỳ thi
• Kết thúc Use Case
- Luồng rẽ nhánh thứ hai
• Thông tin nhập vào không hợp lệ, ID kỳ thi đã tồn tại (trong trường hợp tạo mới)
• Hệ thống từ chối lưu thông tin, hiển thị thông báo
• Kết thúc Use Case
- Luồng rẽ nhánh thứ ba
• Hệ thống có lỗi trong quá trình xử lý
• Hiển thị thông báo
• Kết thúc Use Case

2.1.2.3.10.Use Set Current Exam Question
- Tóm tắt
  • Đây là trường hợp sử dụng quản trị viên thiết lập đề thi sắp tới cho một lớp nào đó

- Tác nhân
  • Administrator

- Liên quan
  • Use Case này phải sử dụng Use Case Login

- Luồng sự kiện
  • Luồng sự kiện chính

- Trên giao diện quản lý các kỳ thi, quản trị viên chọn chức năng thiết lập thông tin đề thi.
- Hệ thống hiển thị giao diện quản lý thông tin đề thi
- Quản trị viên chọn một kỳ thi, chọn lớp, chọn đề thi theo môn học.
- Hệ thống hiển thị các đề thi của môn học vừa được chọn theo từng lớp
- Quản trị viên nhập các thông tin: ngày thi cho đề thi sau đó chọn chức năng lưu thông tin
- Hệ thống xác nhận lại yêu cầu và dữ liệu vào. Hệ thống lưu thông tin
- Hiển thị thông báo
- Kết thúc Use Case

  • Luồng sự kiện rẽ nhánh

- Hệ thống có lỗi trong quá trình xử lý
- Hiển thị thông báo
- Kết thúc Use Case

2.1.2.3.11.Use Case Require to mark exam
- Tóm tắt
  • Đây là trường hợp sử dụng quản trị viên thiết lập yêu cầu hệ thống chấm điểm cho một môn thi nào đó

- Tác nhân
  • Administrator

- Liên quan
  • Use Case này phải sử dụng Use Case Login

- Luồng sự kiện
  • Luồng sự kiện chính

- Trên giao diện quản lý các kỳ thi, quản trị viên chọn chức năng chấm thi.
- Hệ thống hiển thị giao diện quản lý thông tin môn thi
- Quản trị viên chọn một kỳ thi, chọn đề thi theo môn học.
- Hệ thống hiển thị các đề thi của môn học đã thi xong nhưng chưa chấm bài
- Quản trị viên yêu cầu chấm đề thi
- Hệ thống thực hiện chấm bài và lưu lại thông tin
- Hiển thị thông báo
- Kết thúc Use Case

  • Luồng sự kiện rẽ nhánh

- Hệ thống có lỗi trong quá trình xử lý
- Hiển thị thông báo
- Kết thúc Use Case

2.1.2.3.12.Use Case Mark Exam
- Tóm tắt
  • Đây là trường hợp sử dụng được phát sinh khi Use Case Require to mark exam xảy ra

- Tác nhân
  • Administrator

- Liên quan
  • Use Case Require to mark exam

- Luồng sự kiện
  • Luồng sự kiện chính

- Quản trị viện chọn lớp, chọn môn thi cần chấm
- Hệ thống thực hiện kiểm tra từng câu trả lời của từng học sinh và đáp án trong bài thi của môn học được chọn
- Lưu thông tin tính điểm được vào thông tin điểm của học sinh
- Trả về thông báo
- Kết thúc Use Case

  • Luồng sự kiện rẽ nhánh

- Hệ thống có lỗi trong quá trình xử lý
- Hiển thị thông báo
- Kết thúc Use Case

2.1.2.3.13.Use Case Delete Mark
- Tóm tắt
  • Đây là trường hợp sử dụng được phát sinh khi Use Case Delete Student xảy ra

- Tác nhân
  • Administrator

- Liên quan
  • Use Case Delete Student

- Luồng sự kiện
  • Luồng sự kiện chính

- Hệ thống xóa toàn bộ thông tin điểm của học sinh
- Trả về thông báo
- Kết thúc Use Case

  • Luồng sự kiện rẽ nhánh

- Hệ thống có lỗi trong quá trình xử lý
- Hiển thị thông báo
- Kết thúc Use Case

2.1.2.3.14.Use Case Delete Exam Paper
- Tóm tắt
  • Đây là trường hợp sử dụng được phát sinh khi Use Case Delete Student xảy ra

- Tác nhân
  • Administrator

- Liên quan
  • Use Case Delete Student

- Luồng sự kiện
  • Luồng sự kiện chính

- Hệ thống xóa toàn bộ thông tin các bài thi của học sinh
- Trả về thông báo
- Kết thúc Use Case

  • Luồng sự kiện rẽ nhánh

- Hệ thống có lỗi trong quá trình xử lý
- Hiển thị thông báo
- Kết thúc Use Case


2.1.2.4. Biểu đồ Use Case tổng quát

theo blog của NGUYEND

Phân tích và thiết kế hệ thống làm bài thi trắc nghiệm trực tuyến (P.3)

2.1.2.2. Các Use Case liên quan đến tác nhân Teacher


2.1.2.2.1.Use Case Login To Teacher Region
- Tóm tắt
  • Đây là trường hợp sử dụng giáo viên đăng nhập vào hệ thống

- Tác nhân
  • Teacher

- Liên quan
  • Không có các Use Case liên quan

- Luồng sự kiện
  • Luồng sự kiện chính

- Giáo viên chọn đăng nhập trên giao diện quản lý của hệ thống thi trực tuyến
- Hệ thống hiển thị hộp thoại đăng nhập
- Giáo viên nhập ID tài khoản và mật khẩu đã được cấp, chọn đăng nhập vào chức năng giáo viên
- Hệ thống xác nhận mật khẩu
- Hiển thị giao diện chức năng của giáo viên
- Kết thúc Use Case

  • Luồng sự kiện rẽ nhánh

 - Luồng rẽ nhánh thứ nhất
• Giáo viên hủy yêu cầu đăng nhập
• Hệ thống bỏ qua hộp thoại đăng nhập, hiển thị giao diện ban đầu của hệ thống
• Kết thúc Use Case
- Luồng rẽ nhánh thứ hai
• ID tài khoản và mật khẩu nhập vào không hợp lệ
• Hệ thống từ chối đăng nhập
• Hiển thị thông báo và hộp thoại đăng nhập
• Kết thúc Use Case
- Luồng rẽ nhánh thứ ba
• Hệ thống có lỗi trong quá trình xử lý xác nhận tài khoản
• Hiển thị thông báo lỗi
• Kết thúc Use Case
[CODE]
2.1.2.2.2. Use Case Make Exam Question
- Tóm tắt
[LIST]
[*]Đây là trường hợp sử dụng giáo viên tạo đề thi cho các lớp trên hệ thống
[LIST]
- Tác nhân
[LIST]
[*]Teacher
[/LIST]
- Liên quan
[LIST]
[*]Use Case này phải sử dụng Use Case Login
[/LIST]
-Luồng sự kiện
[LIST]
[*]Luồng sự kiện chính
[/LIST]
[CODE]
- Giáo viên chọn chức năng tạo đề thi trên hệ thống các chức năng của giáo viên
- Hệ thống hiển thị giao diện chức năng tạo đề thi
- Giáo viên chọn kỳ thi, hệ thống sẽ hiển thị danh sách các môn học có kỳ thi vừa được chọn và do giáo viên đang làm việc với hệ thống giảng dạy
- Giáo viên chọn một môn học để tạo đề thi trong danh sách các môn học ở bước trên, hệ thống hiển thị giao diện tạo đề thi cùng danh sách các lớp có thi môn học được chọn trong kỳ thi hiện tại
- Giáo viên nhập các thông tin của đề thi: thời gian làm bài, từng câu hỏi, các phương án lựa chọn câu trả lời (có tối đa 7 phương án chọn), đáp án cho từng câu hỏi, điểm của từng câu hỏi
- Sau đó giáo viên tiếp tục chọn đề thi này dành cho các lớp nào, có thể 1 hoặc một vài hoặc tất cả các lớp trong danh sách hiển thị ra
- Giáo viên chọn lưu thông tin, hệ thống xác nhận yêu cầu, xác nhận tính hợp lệ của dữ liệu, thực hiện lưu thông tin, hiển thị thông báo cho giáo viên
- (Quá trình tạo đề thi cho một môn học có thể được lặp lại như trên cho các lớp khác nhau)
- Kết thúc Use Case
[CODE]
[LIST]
[*]Luồng sự kiện rẽ nhánh
[/LIST]
[CODE]
- Luồng rẽ nhánh thứ nhất
• Giáo viên hủy yêu cầu tạo đề thi
• Hệ thống chuyển sang giao diện chức năng của giáo viên
• Kết thúc Use Case
- Luồng rẽ nhánh thứ hai
• Các thông tin giáo viên nhập vào không hợp lệ
• Hệ thống hiển thị thông báo lỗi đối với các trường dự liệu không hợp lệ
• Kết thúc Use Case
- Luồng rẽ nhánh thứ ba
• Hệ thống lưu thông tin không thành công do lỗi xử lý
• Hiển thị thông báo lỗi
• Kết thúc Use Case

2.1.2.2.3. Use Case Manager Teacher Individual-infor
- Tóm tắt
  • Đây là trường hợp sử dụng giáo viên xem và thay đổi thông tin cá nhân của mình

- Tác nhân
  • Teacher

- Liên quan
  • Use Case này phải sử dụng Use Case Login

- Luồng sự kiện
  • Luồng sự kiện chính

    • - Giáo viên chọn xem thông tin cá nhân
      - Hệ thống hiển thị thông tin cá nhân của giáo viên
      - Giáo viên có thể thay đổi một số thông tin: mật khẩu đăng nhập, các thông tin mô tả khác, nhập lại mật khẩu cũ
      - Giáo viên chọn lưu thông tin thay đổi
      - Hệ thống xác nhận yêu cầu, kiểm tra dữ liệu và lưu thông tin mới
      - Hiển thị thông báo
      - Kết thúc Use Case

      • Luồng sự kiện rẽ nhánh

        •  - Luồng rẽ nhánh thứ nhất
          • Giáo viên hủy yêu cầu thay đổi thông tin
          • Hệ thống hiển thị lại thông tin ban đầu của giáo viên
          • Kết thúc Use Case
          - Luồng rẽ nhánh thứ hai
          • Mật khẩu cũ không hợp lệ
          • Hệ thống từ chối cập nhật
          • Hệ thống hiển thị lại thông tin đã nhập và yêu cầu nhập lại mật khẩu cũ
          • Kết thúc Use Case
          - Luồng rẽ nhánh thứ ba
          • Hệ thống có lỗi trong quá trình xử lý
          • Hiển thị thông báo lỗi
          • Kết thúc Use Case
          theo blog của NGUYEND

Phân tích và thiết kế hệ thống làm bài thi trắc nghiệm trực tuyến (P.2)

2.PHÂN TÍCH
2.1.Xây dựng biểu đồ Use Case
2.1.1.Các tác nhân của hệ thống

-Mô tả
  • Administrator: là nhân viên quản trị của hệ thống, có các quyền và chức năng như: tạo các tài khoản, quản lý thông tin các khóa học, kỳ thi,…
  • Teacher: là các giáo viên, có các chức năng: ra đề thi, đáp án
  • Student: là các sinh viên



2.1.2.Phân tích các Use Case
2.1.2.1.Các Use Case liên quan đến tác nhân Student

2.1.2.1.1.Use Case Login to Student Region
- Tóm tắt
  • Đây là trường hợp sử dụng học sinh đăng nhập vào hệ thống để làm bài thi

- Tác nhân
  • Student

- Liên quan
  • Không có các Use Case liên quan

- Luồng sự kiện
  • Luồng sự kiện chính

- Học sinh chọn đăng nhập trên giao diện của hệ thống thi trực tuyến
- Hệ thống hiển thị hộp thoại đăng nhập
- Học sinh nhập ID tài khoản và mật khẩu đã được cấp
- Hệ thống xác nhận mật khẩu
- Hiển thị giao diện chức năng của học sinh
- Kết thúc Use Case

  • Luồng sự kiện rẽ nhánh

- Luồng rẽ nhánh thứ nhất
• Học sinh hủy yêu cầu đăng nhập
• Hệ thống bỏ qua hộp thoại đăng nhập, hiển thị giao diện ban đầu của hệ thống
• Kết thúc Use Case
- Luồng rẽ nhánh thứ hai
• ID tài khoản và mật khẩu nhập vào không hợp lệ
• Hệ thống từ chối đăng nhập
• Hiển thị thông báo và hộp thoại đăng nhập
• Kết thúc Use Case
- Luồng rẽ nhánh thứ ba
• Hệ thống có lỗi trong quá trình xử lý xác nhận tài khoản
• Hiển thị thông báo lỗi
• Kết thúc Use Case

2.1.2.1.2. Use Case Manager Student Individual-infor
- Tóm tắt
  • Đây là trường hợp sử dụng học sinh xem và thay đổi thông tin cá nhân của mình

- Tác nhân
  • Student

- Liên quan
  • Use Case này phải sử dụng Use Case Login

- Luồng sự kiện
  • Luồng sự kiện chính

- Học sinh chọn xem thông tin cá nhân
- Hệ thống hiển thị thông tin cá nhân của học sinh
- Học sinh có thể thay đổi một số thông tin: mật khẩu đăng nhập, các thông tin mô tả khác, nhập lại mật khẩu cũ
- Học sinh chọn lưu thông tin thay đổi
- Hệ thống xác nhận yêu cầu, kiểm tra dữ liệu và lưu thông tin mới
- Hiển thị thông báo
- Kết thúc Use Case

  • Luồng sự kiện rẽ nhánh

 - Luồng rẽ nhánh thứ nhất
• Học sinh hủy yêu cầu thay đổi thông tin
• Hệ thống hiển thị lại thông tin ban đầu của học sinh
• Kết thúc Use Case
- Luồng rẽ nhánh thứ hai
• Mật khẩu cũ không hợp lệ
• Hệ thống từ chối cập nhật
• Hệ thống hiển thị lại thông tin đã nhập và yêu cầu nhập lại mật khẩu cũ
• Kết thúc Use Case
- Luồng rẽ nhánh thứ ba
• Hệ thống có lỗi trong quá trình xử lý
• Hiển thị thông báo lỗi
• Kết thúc Use Case

2.1.2.1.3.Use Case View Mark
- Tóm tắt
  • Đây là trường hợp sử dụng học sinh xem thông tin điểm các môn thi của mình

- Tác nhân
  • Student

- Liên quan
  • Use Case này phải sử dụng Use Case Login

- Luồng sự kiện
  • Luồng sự kiện chính

- Học sinh chọn xem điểm
- Hệ thống hiển thị thông tin điểm theo các môn thi của học sinh
- Kết thúc Use Case

  • Luồng sự kiện rẽ nhánh

- Hệ thống có lỗi trong quá trình xử lý
- Hiển thị thông báo lỗi
- Kết thúc Use Case

2.1.2.1.4.Use Case Take Exam
- Tóm tắt
  • Đây là trường hợp sử dụng học sinh thực hiện bài thi của mình

- Tác nhân
  • Student

- Liên quan
  • Use Case này phải sử dụng Use Case Login

- Luồng sự kiện
  • Luồng sự kiện chính

- Học sinh chọn chức năng làm bài thi môn thi hiện tại
- Hệ thống hiển thị thông tin đề thi môn thi hiện tại của học sinh
- Học sinh chọn các câu trả lời trong đề thi
- Kết thúc Use Case khi học sinh chọn nộp bài hoặc hết thời gian làm bài

  • Luồng sự kiện rẽ nhánh

    •  - Luồng rẽ nhánh thứ nhất
      • Hiện tại không có môn thi nào cho học sinh
      • Hệ thống hiển thị thông báo không có môn thi
      • Kết thúc Use Case
      - Luồng rẽ nhánh thứ hai
      • Hệ thống có lỗi trong quá trình xử lý
      • Hiển thị thông báo lỗi
      • Kết thúc Use Case

      2.1.2.1.5. Use Case Check Time
      - Tóm tắt
  • Đây là trường hợp sử dụng xuất hiện khi một học sinh làm bài thi

- Tác nhân
  • Student

- Liên quan
  • Use Case này phải sử dụng Use Case Login và Use Case Take Exam

- Luồng sự kiện
  • Luồng sự kiện chính

- Học sinh làm bài thi
- Hệ thống bắt đầu thực hiện chức năng kiểm tra thời gian làm bài, thời gian làm bài sẽ được hệ thống giảm dần cho đến hết
- Kết thúc Use Case khi học sinh chọn nộp bài hoặc hết thời gian làm bài

  • Luồng sự kiện rẽ nhánh

- Hệ thống có lỗi trong quá trình xử lý
- Hiển thị thông báo lỗi
- Kết thúc Use Case
theo blog của NGUYEND

Phân tích và thiết kế hệ thống làm bài thi trắc nghiệm trực tuyến (P.1)

Ta tiếp tục thực hành UML với hệ thống làm bài thi trắc nghiệm trực tuyến

Hệ thống thi trực tuyến cho phép các học sinh của các lớp vào làm bài thi của mình trên máy tính của mình, các thông tin của hệ thống được đặt ở một server cố định

- Mỗi học sinh sẽ được cấp 1 tài khỏan truy cập duy nhất trên hệ thống, tài khoản này bao gồm các thông tin: mã số học sinh (dùng để đăng nhập), mật khẩu (dùng để đăng nhập), họ và tên của học sinh, lớp và một phần tóm tắt thông tin của học sinh(ngày sinh, ảnh, các thông tin cá nhân khác). Mỗi học sinh chỉ thuộc vào một lớp nhất định, việc quản lý các học sinh sẽ thông qua đơn vị lớp mà học sinh đó học, lớp thì có: tên lớp, khóa học. Khóa học bao gồm các lớp cùng trong một niên khóa

Khi học sinh đăng nhập vào hệ thống, tùy vào thông tin lớp mà học sinh đó học, hệ thống sẽ biết thời gian hôm nay học sinh đó thi môn nào và cho phép học sinh làm bài thi. Bài thi sẽ theo từng môn học trong một kì của lớp. Bài thi của một môn học sẽ do giáo viên dạy môn học đó cho lớp ra đề thi, đề thi bao gồm: thời gian thi, tên môn thi, thời gian làm bài, các câu hỏi. Câu hỏi sẽ bao gồm phần hỏi và phần thông tin trả lời để học sinh chọn (a,b,c,d) và điểm của câu hỏi. Mỗi đề thi đều có phần đáp án, bao gồm: tên môn thi, đáp án cho từng câu hỏi (a hoặc b hoặc c hoặc d). Sau khi học sinh nộp bài thi (hết thời gian, hệ thống tự chấm dứt hoặc học sinh nộp bài), hệ thống sẽ thực hiện lưu thông tin bài làm của học sinh, hệ thống chấm điểm bài thi khi người quản trị tương tác yêu cầu chấm bài thi, điểm của bài thi sẽ được lưu lại theo từng môn thi của học sinh.


Sau khi có kết quả, học sinh có thể xem điểm các môn thi của mình

- Giáo viên cũng được quản lý thông tin tương tự học sinh, giáo viên là những người giảng dạy các môn học cho các lớp, giáo viên có các thông tin: mã số giáo viên (để đăng nhập), mật khẩu (để đăng nhập), họ và tên, phần tóm tắt thông tin, dạy môn học nào cho các lớp nào

Giáo viên sau khi đăng nhập vào hệ thống có quyền nhập đề thi cho các môn mình dạy, đề thi của một môn học có thể được dùng chung cho nhiều lớp mà giáo viên dạy hoặc sẽ riêng mỗi lớp sẽ có một đề, điều này sẽ do giáo viên qui định. Cùng với nhập đề thi giáo viên phải nhập thông tin của đáp án, sau khi lưu thông tin lai thì giáo viên không được phép sửa lại các thông tin trên. Một câu hỏi trong đề thi có tối đa 7 phương án trả lời, học sinh sẽ chọn 1 trong 7 phương án này, và đáp án sẽ lưu phương án trả lời đúng cho câu hỏi

- Quản trị hệ thống có quyền tạo, quản lý các tài khỏan trên hệ thống cho học sinh và giáo viên, tạo, cập nhật, thay đổi thông tin cá nhân của các tài khỏan trên hệ thống
Quản trị có quyền yêu cầu hệ thống chấm điểm bài thi theo từng môn học (đề thi)
Quản trị có quyền thiết lập thời gian bắt đầu thi 1 đề thi nào đó của một lớp, để khi học sinh đăng nhập vào làm bài thi họ chỉ có 1 đề thi duy nhất để làm bài, quản trị viên có trách nhiệm nhập đúng thời gian thi để không có các môn thi cho một lớp bị đan chép thời gian thi
Quản trị có các chức năng quản lý lớp, khóa học, môn học, kỳ thi: tạo mới, cập nhật và trước mắt là không cho phép xóa các thông tin này
Khi xóa thông tin một học sinh thì đồng thời phải xóa toàn bộ thông tin điểm thi, bài làm của học sinh khỏi hệ thống
theo blog của NGUYEND

Qui trình phân tích "Hệ thống quản lý điểm thi trong khoa của một trường Đại học" bằng UML (P.4)

GIAI ĐOẠN PHÂN TÍCH YÊU CẦU HỆ THỐNG

Đây là giai đoạn phân tích yêu cầu của hệ thống, chúng ta sẽ nhìn hệ thống theo 2 hướng nhìn: Use case view và Logic View
- Hướng nhìn Use case là hướng nhìn hệ thống dưới dạng các chức năng tổng quát, từ đây chúng ta có thể nắm bắt được yêu cầu của người sử dụng, sự giao tiếp với hệ thống...
- Hướng nhìn logic: ta nhìn hệ thống về mặt cấu trúc, sự liên hệ, liên kết giữa các thành phần, đối tượng trong hệ thống



2.1Xây dựng biểu đồ Use Case


Các khái niệm của UML mà chúng ta cần nắm trong giai đoạn này là:

  • Khái niệm Use case
    - Là một miêu tả của một trường hợp đơn của hệ thống được sử dụng
    - Là một tương tác giữa người sử dụng và hệ thống máy tính

    - Một Use Case là đại diện cho một chức năng nguyên vẹn mà một tác nhân nhận được.

  • Tác nhân (actors)
    - Một tác nhân là một người hoặc một vật nào đó tương tác với hệ thống, sử dụng hệ thống
    - Tác nhân tương tác với hệ thống như không thuộc về hệ thống
    - Một tác nhân giao tiếp với hệ thống bằng cách gửi hoặc là nhận thông điệp, giống như khái niệm chúng ta đã quen biết trong lập trình hướng đối tượng

    - Một Use Case bao giờ cũng được kích hoạt bởi một tác nhân gửi thông điệp đến cho nó





Các qui tắc xác định tác nhân
  • Lọc ra các thực thể đáng quan tâm theo khía cạnh sử dụng và tương tác với hệ thống.
  • Cố gắng nhận ra các yêu cầu và đòi hỏi của tác nhân đối với hệ thống và xác định tác nhân cần những Use Case nào.
  • Có thể nhận diện ra các tác nhân qua việc trả lời một số các câu hỏi như sau:
    - Ai sẽ sử dụng những chức năng chính của hệ thống (tác nhân chính)?
    - Ai sẽ cần sự hỗ trợ của hệ thống để thực hiện những tác vụ hàng ngày của họ?
    - Ai sẽ cần bảo trì, quản trị và đảm bảo cho hệ thống hoạt động (tác nhân phụ)?
    - Hệ thống sẽ phải xử lý và làm việc với những trang thiết bị phần cứng nào?
    - Hệ thống cần phải tương tác với các hệ thống khác nào? Nhóm các hệ thống này được chia ra làm hai nhóm, nhóm kích hoạt cho mối quan hệ với hệ thống, và nhóm mà hệ thống cần phải xây dựng của chúng ta sẽ thiết lập quan hệ. Khái niệm hệ thống bao gồm cả các hệ thống máy tính khác cũng như các ứng dụng khác trong chính chiếc máy tính mà hệ thống này sẽ hoạt động.
    - Ai hay cái gì quan tâm đến kết quả (giá trị) mà hệ thống sẽ sản sinh ra?

Các qui tắc xác định Use Case
  • Khởi đầu với Actor
    - Chức năng gì được actor yêu cầu từ hệ thống ?
    - Actor muốn đạt được cái gì ?
    - Các sự kiện hệ thống nào tác động đến actor ? Các sự kiện nào actor cần để thông báo hệ thống ?
    - Thông tin gì actor muốn thao tác thông qua hệ thống?
  • Mỗi use case phải liên quan đến một actor bằng một cách nào đó.
  • Một số UC không phải được khởi tạo bởi actor
  • Đôi lúc nên nghĩ về input và output của hệ thống
  • Sự kiện gì hệ thống phải khởi tạo hay đáp ứng
  • Sự kiện sẽ giúp tìm ra UC sau đó tìm ra actor
  • Đối với mỗi tác nhân, hãy hỏi các câu hỏi sau:
    - Tác nhân này cần những chức năng nào từ hệ thống? Hành động chính của tác nhân là gì ?
    - Tác nhân có cần phải đọc, phải tạo, phải hủy bỏ, phải sửa chữa, hay là lưu trữ một loại thông tin nào đó trong hệ thống?
    - Tác nhân có cần phải báo cho hệ thống biết về những sự kiện nào đó? Những sự kiện như thế sẽ đại diện cho những chức năng nào?
    - Hệ thống có cần phải thông báo cho Actor về những thay đổi bất ngờ trong nội bộ hệ thống?
    - Công việc hàng ngày của tác nhân có thể được đơn giản hóa hoặc hữu hiệu hóa qua các chức năng mới trong hệ thống (thường đây là những chức năng tiêu biểu chưa được tự động hóa trong hệ thống)?
  • Các câu hỏi khác:
    - Use Case có thể được gây ra bởi các sự kiện nào khác?
    - Ví dụ :
    + Sự kiện thời gian: Cuối tháng, hết hạn đầu tư.
    + Sự kiện bình thường của hệ thống: Tự động chuyển tiền theo các lệnh xác định trước.
    + Các sự kiện bất bình thường: Hợp đồng đầu tư kết thúc trước thời hạn.
    + Hệ thống cần những thông tin đầu vào/đầu ra nào? Những thông tin đầu vào/đầu ra đó từ đâu tới và sẽ đi đâu?
    + Khó khăn và thiếu hụt chính trong hệ thống hiện thời nằm ở đâu (thủ công /tự động hóa)?



2.1.1Xác định các tác nhân của hệ thống
-Xác định các tác nhân
-Đặc tả chi tiết các tác nhân
Từ yêu cầu ta xác định được các tác nhân của hệ thống như sau
  • Hệ thống có 3 tác nhân chính: khách, quản lý viên và quản trị viên
  • Đặc tả chi tiết các tác nhân
  • Khách: là những người sử dụng bình thường, nhóm này chỉ có các chức năng cơ bản, chủ yếu là xem các thông tin lớp, sinh viên, điểm thi
  • Quản lý viên: có tất cả các quyền của khách, nhóm này có thêm các chức năng: quản lý môn học, quản lý điểm thi, quản lý sinh viên
  • Quản trị viên: có tất cả các quyền của hệ thống (bao gồm cả khách và quản lý viên), nhóm này còn có thêm các chức năng quản lý người dùng, quản lý khóa, quản lý lớp




Giải thích một tí: mối quan hệ giữa các tác nhân trong hình là mối quan hệ kế thừa



2.1.2Xác định các Use Case
-Xác định các Use Case của hệ thống
-Đặc tả chi tiết các Use Case theo mẫu template đặc tả Use Case


Trên đây là những Use Case tổng quát của hệ thống, việc đặc tả các Use Case sẽ theo mẫu như sau, ta có thể đặc tả trong cùng tài liệu hoặc ở trong một tài liệu khác gọi là Use Case Specification, chứa trong thư mục đặc tả Use Case và phân cấp theo các thư mục cha – con

Ghi chú một tí: trong biểu đồ các Use Case trên, mối quan hệ <> được gọi là quan hệ sử dụng giữa các Use Case: A <> B có nghĩa là UC A khi thực hiện phải kéo theo UC B (giống quan hệ A => B)



Mẫu đặc tả một Use Case như sau:


1.TÓM TẮT
Mô tả tóm tắt về Use Case đang xét
2.TÁC NHÂN
Danh sách các tác nhân tác động lên Use Case đang xét
3.LIÊN QUAN
Danh sách các Use Case, các chức năng liên quan đến Use Case đang xét
4.CÁC LUỒNG SỰ KIỆN
4.1.Luồng sự kiện chính
Mô tả luồng sự kiện chính của Use Case đang xét
4.2.Luồng sự kiện rẽ nhánh
Mô tả các luồng sự kiện rẽ nhánh của Use Case đang xét



Ở đây ta chỉ demo một Use Case login, tuy nhiên, trong hệ thống có bao nhiêu Use Case thì sẽ có bấy nhiêu phần đặc tả Use Case


1.TÓM TẮT
Login là Use Case người sử dụng đăng nhập vào hệ thống quản trị để thực hiện được các chức năng quản trị của hệ thống
2.TÁC NHÂN
Tác nhân: Khách (trước khi đăng nhập vào hệ thống, tác nhân tác động lên Use Case này chỉ là khách)
3.LIÊN QUAN
Không có Use Case liên quan
4.CÁC LUỒNG SỰ KIỆN
4.1.Luồng sự kiện chính
-Trên giao diện quản trị hệ thống, người dùng chọn đăng nhập
-Hệ thống hiển thị giao diện đăng nhập, yêu cầu người dùng nhập username và password
-Người sử dụng nhập username và pasword, chọn đồng ý đăng nhập
-Hệ thống tiếp nhận thông tin, kiểm tra username và password của người dùng
-Nếu hợp lệ, hệ thống chấp nhận đăng nhập, hiển thị thông báo đăng nhập thành công
-Kết thúc Use Case
4.2.Luồng sự kiện rẽ nhánh
Luồng 1:
-Tại giao diện đăng nhập, người dùng không muốn tiếp tục, chọn hủy bỏ
-Kết thúc Use Case
Luồng 2:
-Hệ thống kiểm tra thông tin đăng nhập không chính xác
-Hệ thống từ chối đăng nhập, hiển thị thông báo
-Kết thúc Use Case
Luồng 3:
-Hệ thống kết nối cơ sở dữ liệu để kiểm tra thông tin, quá trình kết nối không thành công, không thực hiện kiểm tra được
-Hiển thị thông báo lỗi
-Kết thúc Use Case




Ta phân tích tiếp các Use Case của hệ thống, sau đây là biểu đồ Use Case chi tiết của phần quản trị hệ thống, mặc định như đã có phần đặc tả p:


2.2Xây dựng mô hình quan niệm


Các khái niệm của UML mà chúng ta cần nắm trong giai đoạn này là:

  • Khái niệm Lớp: khái niệm lớp này tương tự lớp trong lý thuyết OOP

-Xác định các lớp đối tượng ban đầu liên quan đến hệ thống, mô tả sơ lược về các lớp đối tượng
-Xác định các mối quan hệ giữa các lớp đối tượng trên


Các qui tắc xác định lớp
Có nhiều phương pháp được đề xuất để xác định lớp
  • Có phương pháp đề nghị tiến hành phân tích phạm vi bài toán, chỉ ra tất cả các lớp thực thể (thuộc phạm vi bài toán) với mối quan hệ của chúng với nhau. Sau đó nhà phát triển sẽ phân tích từng trường hợp sử dụng và phân bổ trách nhiệm cho các lớp trong mô hình phân tích (analysis model), nhiều khi sẽ thay đổi chúng hoặc bổ sung thêm các lớp mới.
  • Có phương pháp đề nghị nên lấy các trường hợp sử dụng làm nền tảng để tìm các lớp, làm sao trong quá trình phân bổ trách nhiệm thì mô hình phân tích của phạm vi bài toán sẽ từng bước từng bước được thiết lập.
    Một số câu hỏi để tìm lớp
    - Những thông tin nào cần lưu trữ hay phân tích ?
    + nếu có thông tin cần lưu trữ, phân tích hay những thông tin cần thiết trong một số trường hợp thì đó có thể là một lớp
    + những khái niệm được ghi nhận trong hệ thống hoặc là những sự kiện hay những giao tác xảy ra tại một thời điểm quan trọng
    - Có những hệ thống ngoài nào?
    + nếu có, thì cần quan tâm đến chúng khi lập mô hình
    + hệ thống ngoài có thể xem như là các lớp mà hệ thống bao gồm hoặc tương tác với chúng
    - Các mô hình (pattern), các thư viện lớp, các thành phần nào đã có ?
    + nếu có các mô hình, các thư viện lớp, các thành phần của các dự án, các đồng nghiệp hay các nhà sản xuất trước thì chúng cũng có thể là lớp
    - Hệ thống phải điều khiển thiết bị nào ?
    + Các thiết bị kĩ thuật kết nối với hệ thống có thể trở thành một lớp điều khiển thiết bị
    - Các phần tổ chức ?
    + Lớp có thể miêu tả một tổ chức, đặc biệt là trong các mô hình kinh doanh
    - Những vai trò nào các tác nhân thực hiện?
    + những vai trò này có thể xem như là những lớp, ví dụ như: người sử dụng, người điều khiển hệ thống, khách hàng …

    Quá trình tìm kiếm được lặp lại nhiều lần để xác định các lớp thực sự từ các lớp ừng cử viên, sau đó xác định các thuộc tính (thường là các danh từ) và các phương thức (thường là các động từ) cho lớp



  • Việc xác định các lớp ừng cử viên này cùng các mối liên hệ giữa chúng tạo thành 1 biểu đồ lớp ở mức quan niệm



    Trên là các lớp ứng cử viên ta xác định được từ các phát biểu của bài toán, sau quá trình tìm các lớp ứng cử viên, ta xác định các thuộc tính và phương thức của chúng(trong giai đoạn này chủ yếu các lớp chỉ có các thuộc tính - đây là các lớp thực thể, đến phần tiếp theo ta sẽ xác định thêm các lớp đòng vai trò xử lý - sẽ xuất hiện các phương thức)



    Phần các liên hệ giữa các lớp, các bản số cần có kiến thức về lý thuyết CSDL
    Trong các lớp ứng của viên, ta nhận thấy giữa các lớp Guests, Managers, Admin có mối quan hệ kế thừa, và sự có mặt của các lớp này trong hệ thống là không rõ ràng, bằng quá trình khái quát hóa, ta xây dựng lại các lớp như sau (lam sao nhận ra và xây dựng lại được ấy à ! làm nhiều thì được p:)



    Một user sẽ đóng 1 nhóm vai trò: admin, manager hay guest, một vai trò sẽ được phân cho một số quyền (right), một quyền chỉ thuộc 1 nhóm vai trò, các vai trò có quan hệ kế thừa : admin kế thừa manager, manager kế thừa guest => các quyền của chúng được kế thừa

    2.3Xây dựng biểu đồ tuần tự
    -Xây dựng biểu đồ tuần tự theo các Use Case (nếu cần thiết)
    Biểu đồ tuần tự cho ta thấy luồng thực hiện một hành vi (operation) theo trình tự thời gian, qua biểu đố tuần tự ta sẽ thấy được trình tự thực hiện của một chức năng của hệ thống

    Trước hết ta sẽ demo với hành vi 'login'

    -Đặc tả các hành vi trên mỗi biểu đồ tuần tự theo mẫu template đặc tả hành vi
    Ta đặc tả hành vi 'login' theo mẫu đặc tả hành vi như sau


    1.TÊN
    login(String userName, String password)
    2.NHIỆM VỤ
    Xác nhận username và password của một người dùng có hợp lệ hay không để cho phép người sử dụng này thực hiện các chức năng của hệ thống quản trị điểm thi
    3.KIỂU
    Kiểu logic: cho biết người dùng đăng nhập thành công hay thất bại
    4.LIÊN QUAN
    Ở đây chỉ ra các hành vi liên quan với hành vi login. Trong trường hợp này nó không liên quan với hành vi nào khác
    5.GHI CHÚ
    Ở đây là ghi chú về mặt kỹ thuật, thuật toán sử dụng. Trong trường hợp này không có ghi chú gì khác
    6.NGOẠI LỆ
    -Trả về ngoại lệ khi có lỗi kết nối cơ sở dữ liệu

    7.KẾT XUẤT
    - Thông báo đăng nhập thành công nếu đăng nhập hợp lệ
    - Ngược lại thông báo không thành công
    - Các trường hợp khác:
    + Thông báo lỗi khi nhập thiếu username
    + Thông báo lỗi khi nhập thiếu password
    8.TIỀN ĐIỀU KIỆN
    - Người dùng chưa đăng nhập hệ thống
    9.HẬU ĐIỀU KIỆN
    - Sau khi đăng nhập thành công, phải thiết lập quyền thao tác cho người dùng trên hệ thống



    Ta tiếp tục demo với UC 'create mark' => tạo điểm thi


    theo blog của NGUYEND

    Qui trình phân tích "Hệ thống quản lý điểm thi trong khoa của một trường Đại học" bằng UML (P.3)

    • Đến giai đoạn này, sau khi đã có bản đặc tả yêu cầu, chúng ta sẽ bắt tay vào phân tích hệ thống trên
    • Có hai phương pháp phổ biến để tiếp cận yêu cầu, phân tích hệ thống này, đó là: phương pháp phân tích cấu trúc và phương pháp hướng đối tượng



    Thông tin về 2 phương pháp này (trích giáo trình UML của thầy Nguyễn Thanh Bình - Trung tâm CNTT- Đại học Huế -HITEC-)

    • Phương pháp cấu trúc còn được gọi là phương pháp cổ điển, phương pháp này được nhìn nhận dưới sự phức tạp của các chức năng của hệ thống. Chức năng được phân rã theo một hệ thống cấu trúc nhất định do người phân tích hệ thống đưa ra (cấu trúc phân nhánh, lặp...).Bao gồm mô hình quá trình chức năng cũng như các mô hình dữ liệu. Sự liên kết giữa hai mô hình dữ liệu này còn đơn giản qua các mối liên kết và luồng thông tin từ quá trình chức năng này sang chức năng khác
      ==> Ưu điểm: Phân rã được chức năng, quá trình hoạt động phần mềm được thực hiện từng bước như thế nào, khá đơn giản và dễ hiểu
      ==> Nhược điểm:
      - Sự tách biệt giữa mô hình chức năng và mô hình dữ liệu dẫn đến những chức năng hoàn toàn giống nhau nhưng xử lý những kiểu dữ liệu khác nhau phải được viết lại liên tục.
      - Thiếu linh động, phí phạm mã, khó mở rộng, khó thích nghi của phầm mềm xây dựng dựa vào phương pháp này.
      - Việc dựa vào cấu trúc của quá trình chức năng dẫn đến khi chức năng hệ thống thay đổi, cấu trúc ấy có thể bị thay đổi rất nhiều, thậm chí phải thay đổi toàn bộ

    • Phương pháp hướng đối tượng: Phương pháp này xác định rằng, cấu trúc thông tin trong hệ thống thông tin là ít thay đổi.Thế giới xung quanh dưới dạng đối tượng rời rạc. Phương pháp đưa ra khái niệm đối tượng để mô tả thông tin. Giới thiệu thêm mối quan hệ kế thừa cha con. Các chức năng được xây dựng trên hệ cấu trúc đối tượng nhờ sự kết hợp thông tin và chức năng trên cấu trúc đối tượng
      ==>Ưu điểm:
      - Tăng cường tính sử dụng: qua mối liên kết kế thừa, không chỉ những hành vi, đoạn mã được tái sử dụng mà cả những thông tin tĩnh của lớp cha cũng được lớp con tái sử dụng.
      - Tăng cường tính mở rộng: việc mở rộng chức năng có thể được thực hiện qua việc tạo lớp con. Vì vậy không ảnh hưởng đến cấu trúc thông tin đã có. Hơn thế nữa phần mềm trở nên linh động hơn hẳn.
      ==>Nhược điểm:
      - Do dựa vào cấu trúc thông tin thay vì chức năng. Nếu cấu trúc này thay đổi (lĩnh vực ứng dụng thay đổi) thì việc xây dựng lại một hệ thống khác là không tránh khỏi. Do đó phương pháp này thiếu sự linh động với sự thay đổi của thông tin




    Trong bài viết này chúng ta sẽ sử dụng phương pháp hướng đối tượng để tiếp cận hệ thống, do đó chúng ta cần phải có những kiến thức nhất định về lý thuyết hướng đối tượng: lớp, đối tượng, trừu tượng hóa, cụ thể hóa, kế thừa,...

    Mục đích của bài viết là sử dụng ngôn ngữ hình thức UML để phân tích hệ thống, do đó chúng ta sẽ điểm qua một số kiến thức ccơ bản về UML


    MỘT SỐ KIẾN THỨC CƠ BẢN VỀ UML
    Unified Modeling Language

    • 1.UML là gì

    • UML là một cách phân tích và thiết kế mô hình theo hướng đối tượng
      •Hiểu theo cách thông thường, UML bao gồm các mô hình đặc trưng cho việc phân tích và thiết kế
    • UML không phải là một phương pháp, đơn thuần nó chỉ là một ngôn ngữ kí hiệu
      •Là một tập các kí hiệu
      •Là một tập các luật (cú pháp, ngữ nghĩa, kiểm tra) cho việc sử dụng các kí hiệu
      •Dùng để hiển thị, đặc tả, xây dựng, làm tài liệu
    • UML được tạo ra việc mô hình hướng đối tượng
    • Hướng đối tượng sản sinh ra các mô hình thể hiện một lĩnh vực:
    • Một lĩnh vực kinh doanh, ví dụ như banking
    • Các thuật ngữ và đối tượng của lĩnh vực (ví dụ, tiền, séc)
    • UML có thể được sử dụng để mô hình nhiều kiểu hệ thống khác nhau.

      2.Mục tiêu của UML

    • Cung cấp cho người sử dụng một ngôn ngữ mô hình hoá trực quan có sẵn và gợi tả (ready to use, expressive ), để người sử dụng có thể phát triển và thay đổi các mô hình một cách hiệu quả
    • Cung cấp các kỹ thuật chuyên môn mở rộng để mở rộng các khái niệm cốt lõi (core concepts)
    • Độc lập với các ngôn ngữ lập trình riêng biệt (particular) và các tiến trình phát triển

      3.Những điểm ngoài phạm vi UML

    • UML không là một phương thức
      •UML không xác định/hướng vào (address) toàn bộ quá trình
      •UML không quy định cách tiếp cận vào việc xác định các lớp,các phương thức và phân tích các mô hình...
      •UML không bao gồm bất kỳ quy tắc thiết kế hay cách thức giải quyết vấn đề nào

      4.Các thành phần của UML

      Trong hình là các thành phần cơ bản của UML, chúng ta sẽ gặp và đề cập đến trong phần phân tích hệ thống quản lý điểm thi


      Trong hình là 4+1 hướng nhìn của UML

    • User model View (Use Case View hoặc Scenario View)- thể hiện các vấn đề và các giải pháp liên quan đến chức năng tổng quát của hệ thống.
    • Structural model View (static hoặc Logical View)- thể hiện các vấn đề liên quan đến cấu trúc thiết kế của hệ thống.
    • Behavioral model View (Dynamic, Process Concurrent, hoặc Collaboration View) thể hiện các vấn đề liên quan đến việc xử lý giao tiếp và đồng bộ trong hệ thống.
    • Implementation model View (Component View) thể hiện các vấn đề liên quan đến việc tổ chức các thành phần trong hệ thống.
    • Environment model View (Deployment View) thể hiện các vấn đề liên quan đến việc triển khai hệ thống.


      Trích giáo trình UML của thầy Nguyễn Thanh Bình - Trung tâm CNTT- Đại học Huế -HITEC-



    • Ở phần sau ta sẽ phân tíchthiết kế hệ thống này