Đề 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, nêu lên những hạn chế và hướng nghiên cứu phát triển trong tươn
Trang 1Nghiê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
Vũ Văn Lĩnh
Trường Đại học Công nghệ Luận văn Thạc sĩ ngành: Công nghệ phần mềm; Mã số: 60 48 10
Người hướng dẫn: Ts Phạm Ngọc Hùng
Năm bảo vệ: 2011
Abstract: Đưa ra 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 Giới thiệ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 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ế Tiến hành thiết kế kiến trúc phần cho hệ thống quản lý, xử lý ảnh trong
y tế Trình bày 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, nêu lên những hạn chế và hướng nghiên cứu phát triển trong tương lai
Keywords: Công nghệ thông tin; Công nghệ phần mềm; Tin học; Y tế
Content
1.1 Đặ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
Trang 2Hình 1.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ỏ 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
Trang 3Vớ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 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
1.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ả
1.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:
Trang 4Chươ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 ở 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
References
Tiếng Việt
[1] Phương Lan (2005), Design Patterns, NXB Phương Đông, TP Hồ Chí Minh
Tiếng Anh
[2] R N Taylor, N Medvidovic and E M Dashofy (2009), “Software Architecture Foundations, Theory, and Practice”, Wiley
[3] J.D Meier, Alex Homer, David Hill, Jason Taylor and Prashant Bansode, “Microsoft
Application Architecture Guide”, Microsoft Corporation
[4] Albin and Stephen T (2003), “The Art of Software Architecture Design Methods and
Techniques”, John Wiley & Sons
[5] Paul C Jorgensen (1995), “Software Testing A Craftsman's Approach”, CRC Press
[6] David Garlan and Mary Shaw (1993), “An Introduction to Software Architecture.”,
New Jersey