5.2.2.1 Phân tách theme
Một số theme có ý nghĩa hàm chứa rất chung chung, liên quan đến các chức năng riêng biệt của các ứng dụng trong hệ thống không liên quan đến nhau. Cần phải tách các theme đó thành các theme mới, và gắn các theme đó với requirement phù hợp.
-Theme save gắn với R6, R8, cùng nói về việc lưu trữ trạng thái nhưng ứng với hai requirment thì theme save này có ý nghĩa khác nhau. Với R6, theme save sẽ lưu lại trạng thái hoạt động của các đối tượng (Media Playger, game, SMS) khi thực hiện hoạt động nói chuyện voice call. Trong R8, theme save ở đây nói về việc lưu trữ lại trạng thái hoạt động của game đang chơi. Cần phải tách theme save này thành hai theme là : audio-save ứng với R6, và game-save ứng với R8.
-Theme pause được phân tách thành 3 theme :audio-pause gắn với R6, game- pause gắn với R8, và media-pause gắn với R10, 3 theme con này đều nói về trạng thái tạm dừng hoạt động của các đối tượng, nhưng với audio-pause là trạng thái bị dừng lại
56
để cho một hành động có mức độ ưu tiên cao hơn hoạt động trước, còn game-pause và media-pause nói về chức năng của từng ứng dụng trong hệ thống mobile.
-Theme start được phân tách thành hai theme :media-start gắn với R10, và menu- start gắn với R1.
-Theme signal được phân tách ra thành hai theme : signal call gắn với R3 và signal sms gắn với R4.
Hình 5-2. Khung nhìn quan hệ sau khi apply các theme mới Bảng 5-1. Danh sách các tên theme mới sau khi đã được phân tách như trên.
Các theme ban đầu Theme mới
Save Audio-save (R6), game-save (R8).
Pause Audio-pause (R6), game-pause (R8), media-pause (R10).
Start Media-start (R10), menu-start (R2).
57
5.2.2.2 Group theme
Một số theme là các chức năng cho một đặc điểm của hệ thống, chúng có liên quan đến nhau khi hoạt động. Các theme như vậy sẽ được nhóm lại với nhau. Thao tác nhóm theme sẽ được dựa trên các đặc điểm chính của hệ thống.
-Ring và signal call là các theme liên quan đến gọi điện thoại, ring là tín hiệu cho một cuộc gọi đến. Ring và signal được nhóm trong một theme chính là theme voice call.
-Tin nhắn SMS có thể được edit, send; tín hiệu một tin nhắn đến là alert, ta nhóm các theme: edit, send, signal sms và alert vào một nhóm, với theme chính là SMS.
Các chức năng đối với ứng dụng game là: play, pause, save. Các theme: game- play, game-pause, game-save được nhóm lại với nhau, với theme chính là Game.
-Thành phần của media player gồm có : radio, audio, memo; các chức năng cho media player là: stop, start, pause và resume. Ta có thể nhóm các theme liên quan đến media player vào một theme chính là Media player, các theme con là: radio, play audio, record audio, memo play, memo record, media-start, media-pause, media- resume .
-Menu có thể được cuộn và chọn một item để bắt đầu. Ta nhóm các theme: scroll, slect, menu-start vào một nhóm, với theme chính là Menu.
-Các theme còn lại mà chưa được nhóm lại là: mute, audio-resume, audio-pause, audio-save. Chúng đều có liên quan đến sự thay thế các hoạt động đang thực hiện trong hệ thống bằng một số hành vi khác. Ta nhóm chúng vào một theme mới, là preempt. Các requirements gắn với các theme con là R5, R6 bây giờ được gắn với theme chính preempt.
Bảng 5-2 Theme và tập theme con
Tên theme chính Các theme con
Game game-play, game-pause, game-save.
media player radio, play audio, record audio, memo play, memo record.
Menu scroll, select, start.
Sms send, edit, signal sms, alert.
58
Preempt (new theme) mute, audio-resume, audio-pause, audio-save.
Hình 5-3 mô tả khung nhìn relationship của hệ thống sau khi nhóm các theme. Các requirement gắn với các theme con ban đầu, bây giờ được gắn tới các theme chính chứa chúng.
Hình 5-3. Refine các theme.
5.2.2.3 Xác định theme crosscutting:
Thông qua mối quan hệ chia sẻ khái niệm để tìm theme crosscutting trong hệ thống.Từ khung nhìn quan hệ trong hình 5-3, có 3 requirement mà được tham chiếu tới các theme khác nhau trog hệ thống, là: R1, R5, R6.
- R1: “The menu consists of several options: make a voice call, write an SMS, use the media player, play a game”, menu chứa đựng một vài tùy chọn : làm một cuộc gọi,viết một tin nhắn,sử dụng trình nghe nhạc,và chơi một game”,
59
Qui tắc đầu tiên trong cách xác định là “split up if possible-phân tách nếu có thể”. Không thể phân tách requirement R1 này được, requirement này liệt kê ra các thành phần của menu, không thể viết lại R1 thành các requirement nhỏ hơn mô tả các thành phần tương ứng với các theme cùng chia sẻ được. Qui tắc thứ hai : “Dominance means association-Chi phối với nghĩa là giao kết”, theme menu sẽ chi phối requirement này, menu sẽ chứa các thành phần mà R1 liệt kê, theme menu là theme cân biết vè R1 nhiều nhất. Qui tắc thư 3: “Base trigger aspect”, ở đây chúng ta đã xác định được theme menu là aspect , vì nó chi phối requirement này. Có một loạt các theme cùng được tham chiếu trong R1 như : voice call, sms…. nhưng không có mối quan hệ base-trigger nào xảy ra ở đây. Theme menu sẽ liệt kê các thành phần đặc điểm của hệ thống để người dùng có thể tương tác và sử dụng, nó có mối quan hệ has-a với các theme chia sẻ. Do đó R1 đươc postponce trì hoãn và có thể thiết kế theme menu này giống như là theme chia sẻ.
kết luận rằng: R1 được chi phối bởi theme menu, nhưng menu không phải là một crosscutting.
-R5: “When alerts and rings occur, other audio (media player, voice call, game sounds) is momentarily muted, but not paused - khi cảnh báo và chuông xảy ra, những âm thanh khác như (media player, voice call, âm thanh của game) được chuyển về trạng thái tắt âm tạm thời nhưng không bị dừng lại”
Thử phân tách R5 thành: “When alerts and rings occur, other audio (media player, voice call, game sounds) is momentarily muted”; và “ audio is momentarily muted, but not paused” . Ta thấy ý nghĩa hai requirement mới lại quay về chính requirement R5 ban đầu. R5 không thể phân tách thành nhỏ hơn được. Xét qui tắc thứ hai- dominated, xác định theme chi phối R5. Preempt là theme chính chứa các theme: theme mute, audio-pause, chúng liên quan tới các các hành vi được mô tả trong R5, các theme chia sẻ R5 còn lại: voice call và msm hầu như không cần quan tâm đến hành vi mô tả trong R5. Vì vậy, preempt là theme chi phối R5. Xét qui tắc thứ 3, preempt bị kích hoạt bởi hai tình huốn: alert và ring xuất hiện, khi alert hoặc ring xảy ra thì hoạt động hiện tại trong hệ thống bị tắt âm (mute) tạm thời. Thêm vào đó, requirement này mô tả nhiều hơn một vị trí nơi mà preempt được kích hoạt (trong media, game, voice call) nên kết luận rằng preempt là một rosscutting.
- R6: “When alerts and rings occur, other audio (media player, voice call, game sounds) is momentarily muted, but not paused - khi một cuộc gọi thoại xảy ra, những hoạt động khác như (media player, game, chỉnh sửa tin nhắn) đều bị dừng lại, và trạng
60
thái của chúng được lưu lại, để có thể phục hồi khi cuộc gọi”, chúng ta có thể khẳng định được luôn R6 không thể phân tách và được chi phối bởi theme preempt, R6 mô tả thêm một tình huống nữa nơi mà preempt bị kích hoạt, khi voice call xảy ra.
Từ hai requirement R5, R6 ta xác định được chung một crosscutting là preempt
Hình 5-4: khung nhìn crosscutting cho theme preempt
5.3 Thiết kế các theme 5.3.1 Phân tích UseCase