Silde bài giảng công nghệ phần mềm
Trang 1Công nghệ phần mềm
Pha phân tích
Giảng viên: TS Nguyễn Mạnh Hùng
Học viện Công nghệ Bưu chính Viễn thông (PTIT)
Trang 2Nội dung tham khảo từ
Stephen R Schach Object-Oriented and Classical
Software Engineering Seventh Edition,
WCB/McGraw-Hill, 2007
Trang 3 Đặc tả yêu cầu của khách hàng dưới dạng có
thể làm đầu vào cho thiết kế và cài đặt được
Trang 4Pha phân tích (2)
Thực hiện:
Trích các lớp: lớp thực thể, lớp biên, lớp điều khiển
Xác định quan hệ (ban đầu giữa các lớp)
Trang 5Pha phân tích (3)
Lớp thực thể (còn gọi là lớp model):
Dùng để biểu diễn dữ liệu để xử lí, trao đổi giữa các
đối tượng trong hệ thống
Thường chỉ có các thuộc tính và các phương thức
truy nhập get/set
Ví dụ (với hệ thống MGS):
Lớp Account (thông tin tài khoản của khách hàng)
Lớp Invesment (thông tin về từng khoản đầu tư)
Trang 6Pha phân tích (4)
Lớp biên (còn gọi là lớp view):
Dùng để biểu diễn các dạng giao diện, giao tiếp giữa
người dùng và hệ thống
Mỗi lớp biên thường liên quan đến một thiết bị đầu
vào, hoặc đầu ra của hệ thống
Ví dụ (với hệ thống MGS):
Các báo cáo (về số dư quỹ, về lượng khách vay )
Các lớp để hiển thị kết quả lên màn hình
Các lớp hiện form lên màn hình để người dùng nhập
thông tin vào
Trang 7Pha phân tích (5)
Lớp điều khiển (còn gọi là lớp control):
Dùng để mô hình các tính toán và thuật toán phức
tạp trong hệ thống
Có thể chỉ cần dùng một lớp điều khiển cho các hệ
thống đơn giản, mỗi phương thức là một hàm xử lí,
tình toán độc lập
Ví dụ (với hệ thống MGS) cần lớp điều khiển để:
Tính số dư của quỹ hàng tuần
Tính số tiền các cặp vợ chồng phải trả hàng tuần
Thao tác với CSDL để thêm, sửa, xóa các đối tượng
thực thể
Trang 8Pha phân tích (6)
Biểu diễn các dạng lớp trong UML:
Trang 9Trích các lớp
Lặp lại 3 bước chính sau:
B1: Mô hình hóa chức năng
B2: Mô hình hóa các lớp
B3: Mô hình hóa hoạt động
Trang 10Mô hình hóa chức năng (1)
Thực hiện:
Với mỗi use case (kết quả từ pha yêu cầu), viết ít
nhất một scenario cho use case đấy
Một scenario là một kịch bản cụ thể khi người sử
dụng tương tác với hệ thống
Trang 11Mô hình hóa chức năng (2)
Ví dụ với bài toán thang máy:
Người ta cần viết một phần mềm điều khiển n thang
máy trong tòa nhà có m tầng
Trong mỗi thanh máy có m nút nhất ứng với m tầng
Khi bị nhấn, nút sẽ sáng lên cho đến khi thang máy
đi đến tầng đó
Tại mỗi tầng, có 2 nút nhấn lên và xuống (trừ tầng
thấp nhất và cao nhất) Khi bị nhấn, nút sẽ sáng lên cho đến khi thang máy đi cùng chiều đến tầng đó
Khi không có yêu cầu, thang máy đứng yên tại chỗ
Trang 12Mô hình hóa chức năng (3)
Chỉ có 2 use case:
Người dùng nhấn nút tại mỗi tầng
Người dùng nhấn nút bên trong thang máy
Trang 133 Thang máy đi lên tầng 3 Trong đó có chứa người B
đang đi lên tầng 9
4 Nút lên tại tầng 3 tắt
5 Cửa thang máy mở ra
6 Bộ đếm thời gian mở cửa bắt đầu đếm
7 A đi vào thang máy và nhấn nút số 7
8 Nút số 7 sáng lên
9 Cửa thang máy đóng lại sau khi đếm hết thời gian mở
Trang 14Mô hình hóa chức năng (5)
Scenario chuẩn (tt):
10 Thang máy đi lên tầng 7
11 Nút số 7 trong thang máy tắt
12 Cửa thang máy mở ra
13 Bộ đếm lại hoạt động
14 A bước ra khỏi thang máy tại tầng 7
15 Cửa thang máy đóng lại sau khi đếm hết thời gian
16 Thang máy tiếp tục đi lên đến tầng 9 với người B
Trang 153 Thang máy đi lên tầng 3 Trong đó có chứa người B
đang đi lên tầng 9
4 Nút lên tại tầng 3 tắt
5 Cửa thang máy mở ra
6 Bộ đếm thời gian mở cửa bắt đầu đếm
7 A đi vào thang máy và nhấn nút số 1
8 Nút số 1 sáng lên
9 Cửa thang máy đóng lại sau khi đếm hết thời gian mở
Trang 16Mô hình hóa chức năng (7)
Scenario ngoại lệ (tt):
10 Thang máy đi lên tầng 9
11 Nút số 9 trong thang máy tắt
12 Cửa thang máy mở ra
13 Bộ đếm lại hoạt động
14 B bước ra khỏi thang máy tại tầng 9
15 Cửa thang máy đóng lại sau khi đếm hết thời gian
16 Thang máy tiếp tục đi xuống tầng 1 với người A
Trang 17Mô hình hóa chức năng (8)
Yêu cầu của một scenario:
Luôn phải nêu rõ ý định, mục đích của actor trước
khi bắt đầu scenario hoặc ngay trong bước 1
Các bước luôn đánh số thứ tự từ 1
Mỗi một bước chỉ có một hành động đơn Nếu có
hai hành động trở lên thì các hành động đó phải
Trang 18Mô hình hóa chức năng (9)
Yêu cầu của một scenario:
Thông tin trong mỗi bước là phải cụ thể, không
được viết chung chung
Ví dụ viết thế này là không được:
1 Một người nhấn nút lên tại một tầng
2 Thang máy đi đến tầng đó
3 Nút lên tại tầng đó tắt
4 Cửa thang máy mở ra
5 Người đó đi vào và nhấn nút tầng muốn lên
Trang 19 Xác định quan hệ và tương tác giữa các lớp này
Biểu diễn các thông tin này trên sơ đồ lớp (khởi
tạo)
Trang 20Mô hình hóa các lớp (2)
Kĩ thuật trích danh từ để trích các lớp:
Mô tả hoạt động của ứng dụng trong một đoạn
văn
Trích các danh từ xuất hiện trong đoạn văn đó, coi
như là các ứng cử viên của lớp thực thể
Xét duyệt từng danh từ và đề xuất nó là lớp thực
thể hay là thuộc tính của lớp thực thể
Lưu ý:
Có thể thay đoạn văn trong bước 1 bằng cách tập
hợp các scenario đã viết trong bước trước
Trang 21Mô hình hóa các lớp (3)
Ví dụ mô tả bài toán điều khiển thang máy:
Các nút nhấn tại mỗi tầng và các nút nhấn trong
thang máy sẽ điều khiển hoạt động của n thang
máy trong tòa nhà m tầng Các nút sáng lên khi bị
nhấn để yêu cầu thang máy đi đến 1 tầng nào đó,
và tắt đi khi yêu cầu đã được đáp ứng xong Khi
không có yêu cầu, thang máy đứng yên với cửa
đóng
Trang 22Mô hình hóa các lớp (4)
Trích các danh từ:
máy trong tòa nhà m tầng Các nút sáng lên khi bị
nhấn để yêu cầu thang máy đi đến 1 tầng nào đó,
và tắt đi khi yêu cầu đã được đáp ứng xong Khi
không có yêu cầu, thang máy đứng yên với cửa
đóng
Trang 23Mô hình hóa các lớp (5)
Các danh từ:
Nút nhấn, nút nhấn tại tầng, nút nhất trong thang
máy, thang máy, tầng, hoạt động, tòa nhà, yêu
→ Chỉ còn lại lớp thang máy và nút nhấn (với hai lớp
con là nút nhấn trong thang máy và nút nhấn tầng)
Trang 24Mô hình hóa các lớp (6)
Kết quả các lớp thực thể:
Vấn đề nảy sinh:
Trang 25Mô hình hóa các lớp (7)
Kết quả các lớp thực thể:
Trang 26Mô hình hóa các lớp (8)
Dùng thẻ CRC để mô hình hóa quan hệ giữa
các lớp:
C: class Biểu diễn tên lớp
R: responsibility Trách nhiệm của lớp
C: collaboration Quan hệ của lớp
Trang 27Mô hình hóa các lớp (9)
Thẻ CRC cho lớp điều khiển thang máy:
Trang 28Mô hình hóa các lớp (10)
Thẻ CRC cho lớp điểu khiển thang máy (tt):
Vì hướng đối tượng che giấu dữ liệu của các lớp nên
không thể viết:
– Lớp điều khiển bật nút sáng lên
Mà phải viết theo dạng tương tác giữa các lớp:
bật sáng trạng thái của mình lên
Làm tương tự với các trách nhiệm của lớp điều khiển, sẽ thấy xuất hiện thêm các lớp: cửa thang máy
Trang 29Mô hình hóa các lớp (11)
Thẻ CRC cho lớp điểu khiển thang máy (tt):
Trang 30Mô hình hóa các lớp (12)
Sơ đồ lớp cho bài toán thang máy:
Trang 31 Khi có một sự kiện (event) xảy ra, thì trạng thái
này sẽ chuyển sang trạng thái kia Chuyển trạng
thái biểu diễn bằng một mũi tên, nhãn là tên của
sự kiện
Các sự kiện và hoạt động tương tác được trích ra
từ các scenario
Trang 32Mô hình hoạt động các lớp (2)
Trang 33Scenario cuối pha phân tích (1)
Trong scenario này:
Các chủ thể hành động nằm trong phần mềm
được thay thế bằng tên các lớp đã trích được
Tương tác giữa các chủ thể chuyển thành hành
động gửi thông điệp yêu cầu thực hiện hành động
nào đó
Trang 34Scenario cuối pha phân tích (2)
Scenario chuẩn:
1 Người A nhấn vào nút lên ở tầng 3 A muốn đi lên tầng 7
2 Nút nhấn thông báo cho bộ điều khiển là nút đã bị nhấn
3 Bộ điều khiển gửi thông báo yêu cầu nút lên tại tầng 3 bật sáng
4 Bộ điều khiển gửi thông báo yêu cầu thang máy di chuyển lên tầng 3 Trong thang máy đang chứa B muốn lên tầng 9
5 Tại tầng 3, bộ điều khiển gửi yêu cầu đề nghịnút lên tại
tầng 3 tắt đi, đề nghị cửa mở ra Bộ điều khiển bắt đầu đếm thời gian cửa mở
6 A bước vào thang máy và nhấn nút số 7
Trang 35Scenario cuối pha phân tích (3)
Scenario chuẩn:
8 Bộ điều khiển gửi yêu cầu đề nghị nút số 7 sáng lên
9 Hết thời gian đếm, bộ điều khiển gửi yêu cầu đóng cửa lại, yêu cầu thang máy di chuyển lên tầng 7
10 Lên đến tầng 7, bộ điều khiển gửi thông báo yêu cầu nút
số 7 trong thang máy tắt đi, yêu cầu cửa mở ra và bắt đầu đếm thời gian
11 A bước ra khỏi thang máy
12 Hết thời gian mở cửa, bộ điều khiển gửi yêu cầu đóng cửa và yêu cầu thang máy di chuyển lên tầng 9 với người B
Trang 36Bài tập (1)
Với modul của cá nhân:
Viết các scenario cho modul của mình
Trích các lớp thực thể
Vẽ sơ đồ lớp thực thể
Vẽ thẻ CRC cho các lớp điều khiển
Vẽ sơ đồ hoạt động cho modul tương ứng
Viết lại scenario ở bước 1 bằng cách thay tên các chủ
thể hành động bằng tên các lớp cụ thể đã trích được
Trang 37Ví dụ
Phần mềm quản lí
quỹ cho vay mua nhà
Trang 38Mục đích
Phần mềm:
Hỗ trợ việc xác định được số tiền còn dư
hàng tuần trong quỹ để cho các cặp vợ
chồng trẻ vay vốn mua nhà
Trang 39Kết quả sơ đồ UC
Trang 40Trích các scenario (1)
Scenario cho UC quản lí các khoản vay:
Ngày 01/04/2012, nhân viên A của quỹ muốn cập nhật lại mức thuế của một căn hộ đang được vay lên mức 2,05%
1 Nhân viên A chọn chức năng cập nhật khoản vay
2 Giao diện cập nhật hiện lên, có một ô để nhập mức thuế, một nút submit
3 Nhân viên A nhập mức 2,05% vào ô text và click vào nút submit
4 Thông tin mức thuế 2,05% và ngày cập nhật cuối cùng là 01/04/2012 được lưu vào hệ thống
Trang 41Trích các scenario (2)
Scenario cho UC ước lượng số tiền trong quỹ hàng
tuần:
Nhân viên A của quỹ muốn có báo cáo số tiền khả dụng
trong quỹ hàng tuần:
1 Nhân viên A chọn chức năng báo cáo số tiền khả dụng
2 Với mỗi khoản đầu tư, hệ thống tính toán khoản thu, cộng dồn tất cả và chia cho 52
3 Hệ thống truy vấn khoản chi phí hoạt động hằng năm của quỹ, chia cho 52
4 Với mỗi khoản vay:
4.1 Hệ thống tính khoản tiền người vay phải trả hàng
tuần (629,30$)
Trang 424.3 số tiền người vay phải trả là 600$,
4.4 số dư chuyển sang tuần sau là 629,30-600 = 29,30$
5 hệ thống tính tổng số tiền thu được trong bước 4.3 và
tổng số dư nợ trong bước 4.4
6 số tiền khả dụng hàng tuần của quỹ là khoản ở bước 2 – bước 3 + bước 4.3 – bước 4.4
6 Hệ thống hiển thị kết quả lên màn hình và in ra báo cáo
Trang 43Trích danh từ (1)
Mô tả hệ thống trong một đoạn văn:
Báo cáo hàng tuần sẽ được in ra để cho biết số tiền
khả dụng trong quỹ là bao nhiêu để cho vay thế chấp Bên cạnh đó, danh sách các khoản đầu tư và các
khoản vay cũng được in ra theo yêu cầu
Các danh từ:
Thông báo, tiền, khoản vay, khoản đầu tư, danh sách
Trang 45Sơ đồ lớp (1)
Sơ đồ 2 lớp ban đầu:
Trang 46Sơ đồ lớp (3)
Đánh giá:
Các thao tác thực hiện trên hai lớp này là khá giống
nhau: thêm, sửa, xóa một đối tượng
→ nhóm lại thành một lớp trừu tượng chung cho cả hai lớp:
Lớp tài sản
Trang 47Sơ đồ lớp (4)
Sơ đồ lớp thực thể trở thành:
Trang 48Sơ đồ lớp (5)
Xem xét lại sơ đồ lớp thực thể:
Trong scenario của ước lượng khoản tiền khả dụng
của quỹ, có mục ước lượng chi phí hoạt động của quỹ, nhưng chưa có lớp nào biểu diễn thông tin này
→ Cần một lớp mới chứa các thông tin chung:
Lớp ứng dụng MSG
Trang 50Sơ đồ hoạt động (1)
Trang 51Trích các lớp biên
Thực hiện:
Mỗi một form báo cáo sẽ tạo thành một lớp biên
Mỗi một màn hình giao diện (vào/ra dữ liệu) sẽ tạo
thành một lớp biên
Trang 53Thực tế hóa các UC (1)
Thực hiện với mỗi UC:
Viết lại scenario với các chủ thể là các lớp đã trích ra
Vẽ sơ đồ tuần tự (hoặc sơ đồ cộng tác) tương ứng với
scenario đó
Trang 54Thực tế hóa các UC (2)
Sơ đồ tuần tự:
Mỗi lớp có một đường sống riêng, đi từ trên xuống
dưới
Mỗi bước trong scenario tương ứng với một mũi tên
trong sơ đồ Nhãn của mũi tên là hành động tóm tắt trong bước tương ứng, chiều của mũi tên là chiều từ chủ thể sang đối tượng tương tác
Thứ tự các mũi tên từ trên xuống đúng thứ tự trong
scenario
Trang 56Thực tế hóa các UC (4)
Sơ đồ cộng tác:
Mỗi bước trong scenario tương ứng với một mũi tên
trong sơ đồ Nhãn của mũi tên là hành động tóm tắt trong bước tương ứng, chiều của mũi tên là chiều từ chủ thể sang đối tượng tương tác
Thứ tự các mũi tên (theo nhãn) đúng thứ tự trong
scenario
Trang 57Thực tế hóa các UC (4)
Sơ đồ cộng tác:
Trang 58Thực tế hóa các UC (5)
Sơ đồ tuần tự UC quản lí một tài sản:
Trang 59Thực tế hóa các UC (6)
Sơ đồ cộng tác UC quản lí một tài sản:
Trang 60Bài tập (2)
Với mỗi modul của cá nhân:
Với mỗi UC, trích các lớp biên, các lớp điều khiển
Thực tế hóa mỗi scenario của mỗi UC thành sơ đồ
tuần tự (hoặc cộng tác)
Trang 61Bài tập nộp sau pha phân tích
Với mỗi modul của cá nhân:
Với mỗi UC, trích các scenario chuẩn và các ngoại lệ
tương ứng ( không cần xử lí các ngoại lệ sai kiểu dữ liệu đầu vào)
Trích các lớp thực thể, trích các lớp biên, các lớp điều
khiển
Xây dựng thẻ CRC cho các lớp điều khiển
Xây dựng sơ đồ hoạt động (statechart) cho modul
Viết lại các scenario với các lớp đã trích được
Thực tế hóa mỗi scenario của mỗi UC thành sơ đồ
tuần tự (hoặc cộng tác)
Trang 62Questions?