Thiết kế cho chức năng lớn trong hệ thống

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu và thiết kế kiến trúc phần mềm cho các hệ thống lớn và phức tạp (Trang 40 - 46)

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

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu và thiết kế kiến trúc phần mềm cho các hệ thống lớn và phức tạp (Trang 40 - 46)

Tải bản đầy đủ (PDF)

(57 trang)