CHƢƠNG 2 : TỔNG QUAN VỀ THIẾT KẾ KIẾN TRÚC PHẦN MỀM
4.2 Thiết kế cho chức năng lớn trong hệ thống
Sau khi đã có thiết kế kiến trúc tổng thể cho hệ thống, chúng tôi đi vào thiết kế kiến trúc cho các chức năng lớn của các SS. Giai đoạn thiết kế kiến trúc cho các chức năng lớn này cũng tuân thủ theo năm bƣớc nhƣ thiết kế kiến trúc tổng quan nhƣng trong từng bƣớc sẽ có sự phân tích khác biệt so với thiết kế kiến trúc tổng quan. Sau đây sẽ trình bày thiết kế kiến trúc cho một chức năng lớn cụ thể trong SS QA là chức năng kết nối các ảnh thành phần.
Xác định mục tiêu kiến trúc
Chức năng này đảm nhiệm công việc cụ thể là xử lý và hiển thị ảnh, cho phép ngƣời dùng thực hiện kết nối các ảnh thành phần thành một ảnh duy nhất theo một trong hai cách là thủ công hoặc tự động. Mục tiêu của thiết kế kiến trúc là cần đảm bảo đầy đủ, hỗ trợ tốt nhất cho quá trình làm thiết kế chi tiết. Giai đoạn này phải đƣa ra đƣợc các thành phần cụ thể là các tên các dự án, các gói sẽ phát triển trên C#, C++, cách thức chúng làm tƣơng tác, gửi nhận thông điệp cho nhau.
Đối tƣợng sử dụng chủ yếu Thiết kế kiến trúc này là ngƣời thực hiện thiết kế chi tiết và viết mã nguồn nên có thể sử dụng ngôn ngữ liên quan tới lập trình nhƣ dự án, thƣ viện, phƣơng thức… hoặc liên quan tới các biểu đồ trong UML nhƣ biểu đồ hoạt động, biểu đồ cộng tác…
Kịch bản chính
Đây là một chức năng cho phép ngƣời dùng thực hiện kết nối các ảnh thành phần nên kịch bản chính có thể dựa trên các ca sử dụng nghiệp vụ quan trọng liên quan tới quá trình xử lý và hiển thị các ảnh thành phần lên màn hình diễn ra trong thời gian nhanh hay chậm, ảnh thành phần có đƣợc hiển thị đúng vị trí, chất lƣợng ảnh có tốt không. Việc này sẽ phụ thuộc vào quá trình thiết kế các thành phần sao cho hợp lý đảm bảo quá trình xử lý và hiển thị nhanh, chính xác.
Quá trình kết nối sẽ diễn ra thế nào, các ảnh thành phần sẽ đƣợc kết nối với nhau theo cách thức nào, các thành phần nào sẽ tham gia trong quá trình đó. Vấn đề này đƣợc làm rõ trong thiết kế kiến trúc này.
Đây là chức năng có sự thao tác tƣơng tác trực tiếp của ngƣời dùng nên các tình huống ngƣời dùng rất quan trọng, trong thiết kế kiến trúc cần phải liệt kê tất cả các tình huống này và có các phƣơng pháp xử lý phù hợp, tƣơng thích với các tình huống đó. Một số tình huống ngƣời dùng điển hình là: ngƣời dùng mở chức năng nhƣ thế nào, sau khi mở màn hình lên ngƣời dùng sẽ thực hiện thao tác trên các ảnh thành phần đó ra sao, và họ kết nối các ảnh đó nhƣ thế nào. Tƣơng ứng với các tình huống ngƣời dùng đó sẽ có các tình huống nghiệp vụ, tình huống nghiệp vụ tƣơng ứng. Trên thực tế khi làm, chúng tôi sẽ vẽ biểu đồ hoạt động cho từng tình huống ngƣời dùng một, và sẽ vẽ các tình huống hệ thống, nghiệp vụ đi cùng nếu có. Sau đây sẽ trình bày một tình huống ngƣời dùng cụ thể để mình họa, đó là khi màn hình kết nối ảnh đã đƣợc mở, ảnh thành phần đã đƣợc hiển thị, tình huống ngƣời dùng sẽ đƣợc mô tả qua biểu đồ hoạt động nhƣ hình 4.3 dƣới đây.
Hình 4.3: Tình huống người dùng, nghiệp vụ, hệ thống trên màn hình kết nối ảnh.
Tổng quan về ứng dụng
Ứng dụng này đƣợc phát triển trên hai nền tảng môi trƣờng khác nhau: Giao diện ngƣời dùng đƣợc phát triển bằng Visual C# để tận dụng thế mạnh về đồ họa, môi trƣờng phát triển thuận tiện. Khi xử lý ảnh thì xử lý bằng C++, tận dụng lợi
act UserActionsOnCombineScreen Nguoi dung He thong Nguoi dung Nghiep vu Nguoi dung Nghiep vu Bắt đầu Hành động của người dùng Lựa chọn cách hiển thị ảnh Hiển thị kích thước
phù hợp HIểu thị kích thướctheo pixel
Hiển thị theo kích thước ảnh thật
Xét chế độ hiển thị
Vẽ lại tất cả ảnh thành phần
Hành động người dùng thay đổi vị trí ảnh thành phần Chỉ định 2 điểm kết hợp Chọn một điểm trên ảnh thứ nhất Điều chỉnh vị trí nhỏ cho ảnh một ảnh thành phần Kiểm tra vị trí các ảnh phù hợp không? Vị trí không phù hợp?
Hiển thị thông điệp lỗi Kết nối 2 ảnh thành phần
Quay trở lại hành động trước đó
Chọn chức năng quay lại thao tác gần nhất
Kết thúc
Di chuột thay đổi vị trí một ảnh thành phần
Thứ tự từ trên xuống Thứ tự từ dưới lên
Lưu trữ chế độ sắp xếp Chọn một điểm trên ảnh thứ hai Điều chỉnh vị trí cho tất cả ảnh thành phần Đánh dấu chế độ 2 điểm kết hợp Đánh dấu chế độ di chuyển một ảnh thành phần Đánh dấu chế độ di chuyển tất cả ảnh thành phần
Di chuyển chuột thay đổi vị trí tất cả các ảnh thành phần Người dùng nhấn lên nut [Undo] Xử lý quay lại hành động gần nhất Sắp xếp trình tự hiển thị các ảnh thành phần [False] [True]
thế của C++. Khi thiết kế kiến trúc chúng tôi tập trung phân tích giải quyết để chúng làm việc hài hòa, ổn định.
Các lớp trong thành phần của C++ chỉ cho bên ngoài thấy một số phƣơng thức chính để có thể gọi tới. Chỉ làm việc theo một chiều từ C# gọi tới C++, không có chiều ngƣợc lại.
Các điểm nổi bật
Cơ chế làm việc, quản lý tài nguyên giữa C# và C++ là khác nhau. Nên chúng tôi phải chú ý tới việc quản lý, cấp phát, thu hồi bộ nhớ dƣới C++ hay cơ chế hiển thị giao diện trên C# để đảm bảo có ứng dụng sẽ có giao diện phù hợp với nhiều loại màn hình có kích thƣớc khác nhau.
Chƣơng trình xử lý phức tạp, khi đƣa vào môi trƣờng phát triển khi có lỗi xảy phải khoanh vùng nhanh vùng bị lỗi. Để làm điều đó thì quá trình ghi lỗi phải đƣợc làm cẩn thận. Quá trình ghi lại lỗi này phải làm theo phƣơng châm đã đƣợc đƣa ra trong phần Thiết kế kiến trúc tổng quát.
Lựa chọn giải pháp
i. Chức năng đƣợc thiết kế thành nhóm thành phần chính: Các thành phần liên quan tới giao diện ngƣời dùng thì dùng C#. Các thành phần xử lý và hiển thị ảnh thì dùng C++. Các thành phần của C# gọi tới các thành phần của C++.
ii. Dựa vào các tình huống ngƣời dùng, tình huống nghiệp vụ, tình huống hệ thống trong phần kịch bản chính, ta sẽ thiết kế đƣợc các thành phần, giao diện tƣơng ứng. Hình dƣới đây mình họa các thành phần đƣợc xác định khi dựa vào tình huống ngƣời dùng, tình huống nghiệp vụ, tình huống hệ thống khi mở chức năng.
Kết quả của thiết kế kiến trúc khi dựa vào tình huống ngƣời dùng, tình huống nghiệp vụ, tình huống hệ thống trong trƣờng hợp mở màn hình đƣợc mô tả trong hình 4.4.
Hình 4.4: Thiết kế kiến trúc dựa trên tình huống người dùng, nghiệp vụ, hệ thống khi mở màn hình kết nối.
Đặc điểm của các thành phần trên hình 4.4 đƣợc mô tả chi tiết trong bảng 4.2:
Bảng 4.2: Đặc điểm của các thành phần trong thiết kế kiến trúc khi mở màn hình kết nối
Kiểu kiến trúc Program and Subroutines (object-oriented)
Thành phần Là các dự án, gói của C# và C++. Nhƣ hình vẽ trên ta có các thành phần gồm:
o MainScreen: Một dự án viết bằng C#, là màn hình
chính của chƣơng trình
o CombineSreen: Một dự án viết bằng C#, là màn hình
kết nối ảnh các ảnh thành phần thành một ảnh
o StitchImageView: Một dự án (component) viết bằng
thị ảnh.
o ImgPrm: Một dự án viết bằng C++, viết dƣới dạng
thƣ viện dùng chung cho nhiều dự án C++ khác. Dự án này thực hiện đọc thông tin liên quan tới ảnh nhƣ: đƣờng dẫn tới ảnh, loại ảnh
o ImageProcessor: Một dự án viết bằng C++, viết dƣới
dạng thƣ viện dùng chung cho nhiều dự án C++ khác. Dự án này thực hiện đọc thông tin về ảnh và xử lý ảnh.
Kết nối Các thông điệp, phƣơng thức
Giao diện Dự án CombineSreen sử dụng giao diện
PreviewImageFPD() của dự án StitchImageView Dự án StitchImageView sử dụng giao diện
ACCModImgProcGetter() của dự án ImgPrm Dự án StitchImageView sử dụng giao diện FCDModImgProc() của dự án ImageProcessor
CHƢƠNG5:CÀIĐẶTKIẾNTRÚCPHẦNMỀM 5.1Cách thức cài đặt kiến trúc phần mềm