Đặt vấn đề Trong phát triển phầm mềm, có rất nhiều mô hình phát triển khác nhau nhƣ mô hình thác nƣớc, mô hình xoắn ốc, … Hiện nay, mô hình phát triển phần mềm đƣợc sử dụng rộng rãi là mô hình chữ V, đƣợc cải tiến từ mô hình thác nƣớc. Trong mô hình phát triển phần mềm hình chữ V, các công việc đƣợc chia thành các giai đoạn khác nhau, mỗi giai đoạn sẽ thực hiện một số công việc cụ thể. Ví dụ giai đoạn thiết kế kiến trúc (Architecture Design - AD) sẽ thực hiện chuyển hóa các đặc tả yêu cầu phần mềm (Software Requirement Specification - SRS) thành các mô tả thiết kế kiến trúc đƣợc thể hiện thông qua các hình vẽ, tài liệu mô tả, … Dựa vào kết quả thiết kế kiến trúc đó, các nhà thiết kế chi tiết có thể tạo ra các bản thiết kế chi tiết cho phần mềm, phục vụ cho quá trình cài đặt chƣơng trình đƣợc dễ dàng, thuận tiện.1: Mô hình phát triển phần mềm hình chữ V [5]. Dựa vào hình 1.1 ta thấy thiết kế kiến trúc chính là một giai đoạn trong mô hình phát triển phần mềm.
Khi xây dựng và phát triển phần mềm nếu phát triển đúng và đầy đủ theo các giai đoạn của mô hình phần mềm đang áp dụng, đặc biệt là giai đoạn thiết kế, phần mềm sẽ tránh đƣợc sự rủi ro và có chất lƣợng tốt. Trên thực tế chúng ta thƣờng làm việc không có kế hoạch cụ thể, làm tới đâu nghĩ tới đó, xem nhẹ bƣớc thiết kế, coi trọng cài đặt mã nguồn. Kết quả mà chúng ta thu đƣợc thƣờng là một khối mã nguồn rối rắm hoặc nếu có thì cũng chỉ là một chƣơng trình nhỏ LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 2 với vài chức năng cần thiết, rất khó cho bảo trì và tái sử dụng. Đôi khi, chúng ta làm việc có phần chủ quan và mang tính tự phát, nhƣng nếu bình tĩnh nghiên cứu, làm việc có kế hoạch và áp dụng các tiến trình thiết kế phần mềm vào trong bài toán của mình, chúng ta có thể thấy đƣợc nhiều hƣớng đi, nhiều cách giải quyết, mà có thể đó là những lời giải tối ƣu mà trƣớc đó chúng ta không thấy hoặc đã bỏ qua.
Điều quan trọng hơn cả là chúng ta có thể theo dõi và kiểm soát đƣợc những gì đang xảy ra. Thiết kế là đồng nghĩa với việc tiết kiệm thời gian và tiền bạn. Nếu không có bản thiết kế hoặc thiết kế không tốt, khi có thay đổi yêu cầu một vài chức năng trong phần mềm hoặc nâng cấp, cải tiến các chức năng đó, chúng ta phải làm lại một chƣơng tình hoàn toàn mới hoặc phải nghiên cứu lại toàn bộ mã nguồn, điều đó đồng nghĩa với việc tiêu tốn của chúng ta khá nhiều thời gian và tiền bạc. Mặt khác dƣới một góc nhìn rộng và bao quát hơn, thông qua việc phản ánh các kết quả của quá trình phân tích, thiết kế thƣờng xác định cho chúng ta nhiều hƣớng đi, nhiều cách thức giải quyết trên cùng một bài toán, từ đó cho phép chúng ta chọn đƣợc cách thức tốt nhất và con đƣờng ngắn nhất để đi tới đích [1].
Với sự phát triển nhanh của công nghệ thông tin, ngày nay nhiều lĩnh vực trong đời sống đã đƣợc tin học hóa, giúp cho quá trình xử lý công việc nhanh và đơn giản hơn, giúp cho tiết kiệm rất nhiều thời gian và tiền bạc. Với sự phát triển của kinh tế, ngày nay cuộc sống con ngƣời đƣợc cải thiện rất nhiều. Nhu cầu về chăm sóc, khám chữa bệnh, phát hiện, chuẩn đoán và chữa trị bệnh sớm đƣợc tăng lên, khi đó tin học là cánh tay đắc lực giúp cho việc này. Năm 2009, khi tôi đang làm việc tại công ty phần mềm FPT, chúng tôi nhận đƣợc đơn đặt hàng của khách hàng bên Nhật Bản, yêu cầu nâng cấp, xây dựng chức năng mới cho hệ thống quản lý, xử lý ảnh trong y tế.
Khi nhận đƣợc bài toán, chúng tôi đã tiến hành khảo sát và phân tích thấy hệ thống cũ có một số hạn chế nhƣ sau: Thứ nhất hệ thống là một chƣơng trình hoàn chỉnh, với mã nguồn rất lớn, hỗn độn nhƣng rất ít tài liệu mô tả về hệ thống. Kiến thức về các chức năng, xử lý nghiệp vụ của hệ thống không đƣợc viết thành tài liệu, mỗi ngƣời hiểu một phần rời rạc. Khi phát triển, phần mềm đƣợc phát triển dựa trên hai công nghệ, môi trƣờng lập trình khác nhau. Phần giao diện giao tiếp với ngƣời dùng đƣợc viết bằng VB6, sử dụng nhiều thành phần sẵn có trong VB6.
Ngoài ra sử dụng rất nhiều các thƣ viện của hãng thứ ba nên tính đồng nhất không cao, thƣờng xuyên phải nâng cấp các phiên bản. Cùng với thời gian phần cứng đƣợc thay đổi nhiều, khi đó VB6 không thể đáp ứng với phần cứng với các phiên bản mới hơn. Mặt LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 3 khác có nhiều loại màn hình kích thƣớc khác nhau, chƣơng trình phải đáp ứng sự tùy biến sao cho phù hợp với các loại màn hình đó, việc này VB6 làm rất khó khăn, gần nhƣ không thể. Hơn nữa, VB6 là ngôn ngữ lập trình hƣớng thủ tục nên khả năng mở rộng kém, khi thêm các chức năng mới rất khó khăn.
Phần thuật toán xử lý, lƣu trữ, thao tác với ảnh thì viết bằng C++. Các phần viết rời rạc, sự sử dụng lại kém, hình nhƣ không có. Hạn chế thứ hai là quá trình bảo trì và nâng cấp vô cùng khó khăn, khi mở rộng thì mất nhiều công sức, thậm chí làm ảnh hƣớng tới chức năng đã có, có thể dẫn tới xử lý sai. Những khó khăn này đặt ra cho chúng tôi phải có phƣơng pháp đánh giá, hƣớng tiếp cận phù hợp để có thể nâng cấp, xây dựng chức năng mới cho phù hợp và xử lý chính xác.
Cuối cùng, sau một thời gian phân tích, đánh giá nghiêm túc, chúng tôi đã tìm ra đƣợc hƣớng đi phù hợp, đó là phải làm tốt ngay từ giai đoạn phân tích, thiết kế, đặc biệt là thiết kế kiến trúc phần mềm.2 Nội dung nghiên cứu Luận văn tập trung nghiên cứu lý thuyết về thiết kế kiến trúc phần mềm, các thành phần chính trong thiết kế kiến trúc phần mềm, đặc điểm của một số kiểu kiến trúc phần mềm tiêu biểu, các bƣớc thiết kế kiến trúc phần mềm và đánh giá ƣu nhƣợc điểm của thiết kế kiến trúc phần mềm. Sau đó luận văn tập trung vào quá trình khảo sát, phân tích hệ thống quản lý, xử lý ảnh trong y tế. Từ kết quả khảo sát, phân tích đó, luận văn trình bày chi tiết quá trình áp dụng các bƣớc thiết kế kiến trúc phần mềm vào bài toán quản lý, xử lý ảnh trong y tế. Luận văn cũng mô cách thức cài đặt thiết kế kiến trúc phần mềm, đề xuất phƣơng pháp, các bƣớc đi từ thiết kế kiến trúc tới thiết kế chi tiết sau cho hiệu quả.3 Cấu trúc luận văn Các phần còn lại của luận văn có cấu trúc nhƣ sau: Chƣơng 2 trình bày các khái niệm cơ bản về kiến trúc phần mềm, thiết kế kiến trúc phần mềm, một số kiểu kiến trúc phần mềm tiêu biểu.
Sau đó trình bày các bƣớc thiết kế kiến trúc phần mềm và đánh giá ƣu nhƣợc điểm của thiết kế kiến trúc phần mềm. Chƣơng 3 mô tả về quy trình khám chữa bệnh trong y tế. Phân tích xử lý nghiệp vụ của hệ thống quản lý, xử lý ảnh trong y tế. Chi tiết quá trình áp dụng các bƣớc thiết kế kiến trúc phần mềm đã nêu ở LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 4 chƣơng 2 để thiết kế kiến trúc cho hệ thống quản lý, xử lý ảnh trong y tế đƣợc mô tả chi tiết trong chƣơng 4.
Chƣơng 5 mô tả cách thức cài đặt kiến trúc phần mềm. Đề xuất phƣơng pháp, các bƣớc đi từ thiết kế kiến trúc tới thiết kế chi tiết sao cho hiệu quả. Tóm tắt kết quả đã đạt đƣợc, trình bày những hạn chế và hƣớng nghiên cứu phát triển trong tƣơng lai sẽ đƣợc trình bày trong phần kết luận. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 5 CHƢƠNG 2: TỔNG QUAN VỀ THIẾT KẾ KIẾN TRÚC PHẦN MỀM 2.1 Định nghĩa về kiến trúc phần mềm Kiến trúc của hệ thống phần mềm là tập hợp các quyết định thiết kế cơ bản về hệ thống [2].
Có ba hiểu biết cơ bản về kiến trúc phần mềm là mỗi ứng dụng có một kiến trúc, mỗi ứng dụng có ít nhất một kiến trúc sƣ và kiến trúc không phải là một giai đoạn của phát triển phần mềm. Kiến trúc phần mềm là các kế hoạch chi tiết xây dựng một hệ thống phần mềm và tiến hóa. Các quyết định thiết kế bao gồm mọi khía cạnh của hệ thống đƣợc phát triển bao gồm: i. Kiến trúc hệ thống: Ví dụ các thành phần kiến trúc nên đƣợc bố trí và tổng hợp chính xác.
Hành vi chức năng: Ví dụ tiến trình xử lý dữ liệu, lƣu trữ, sự ảo hóa sẽ đƣợc thực hiện một cách tuần tự chính xác. Sự tƣơng tác: Ví dụ sự giao tiếp bao quanh tất cả các phần tử hệ thống sẽ đƣợc phát tỏa chỉ cần dùng một sự kiện thông báo. Thuộc tính phi chức năng: Ví dụ sự phụ thuộc hệ thống sẽ đƣợc đảm bảo bởi sự nhân bản chức năng xử lý. Triển khai hệ thống: Ví dụ thành phần giao diện ngƣời dùng sẽ đƣợc xây dựng bởi công cụ Java Swing hay Visual C#.
Kiến trúc phần mềm có phạm vi rộng lớn, xuyên suốt trong quá trình phát triển phần mềm. Luận văn chỉ tập trung chủ yếu vào một thành phần quan trọng trong kiến trúc phần mềm là thiết kế kiến trúc phần mềm.2 Các thành phần chính trong thiết kế kiến trúc phần mềm Thiết kế kiến trúc phần mềm gồm bốn thành phần chính là thành phần (component), kết nối (connector), giao diện (interface) và cấu hình (configuration).1 mô tả một ví dụ về kiến trúc của hệ thống quản lý thông tin bệnh nhân đƣợc thiết kế theo mô hình ba lớp gồm lớp trình diễn (Presentaion), lớp xử lý nghiệp vụ (Business) và lớp truy cập, xử lý dữ liệu (Data Access Layer - ADL). Lớp trình diễn sẽ có nhiệm vụ giao tiếp với ngƣời dùng, nhận yêu cầu từ ngƣời dùng và hiển thị kết quả cho ngƣời dùng. Khi nhận đƣợc yêu cầu của ngƣời dùng (thêm mới thông tin về bệnh nhân), lớp trình diễn sẽ yêu cầu lớp xử lý nghiệp vụ xử lý và nhận kết quả trả về từ lớp nghiệp vụ, sau đó hiển thị kết LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 6 quả cho ngƣời dùng.