Giáo trình
K I Ế N T R Ú C V À T H I Ế T K Ế
Trang 2 Hiểu được vai trị quan trọng của thiết kế kiến trúc phần mềm;
Nắm được các bước tư duy và định hướng cần thiết khi quyết định đưa
một thành phần vào kiến trúc hệ thống trong quá trình thiết kế kiến trúc;
Nắm được tư tưởng về các mẫu kiến trúc và các phương thức tổ chức
kiến trúc hệ thống để cĩ thể tái sử dụng trong thiết kế hệ thống;
Nắm được các mẫu kiến trúc quan trọng thường được vận dụng trong
Trang 3Chương 1 Khái niệm chung 8
1.1 Tiếp cận hệ thống 8 1.2 Thiết kế kiến trúc 10 1.3 Quyết định kiến trúc 18
1.4 Các quan điểm trong kiển trúc phần mềm 28 1.5 Tĩm tắt 31
Chương 2 Các mẫu kiến trúc 33
2.1 Khái niệm chung 33 2.2 Mẫu 34
2.2.1 Kiến trúc Mơ hình, Quan sát và Điều khiển (Model View Controller, MVC) 34
2.2.2 Kiến trúc Phân tầng (Layered Architecture, LA) 35 2.2.3 Kiến trúc Kho chứa (Repository Architecture, RA) 36 2.2.4 Kiến trúc Khách - Chủ (Client - Server, CS) 37
2.2.5 Kiến trúc Ống và Lọc (Pipe and Filter, PAF) 37
2.3 Các kiến trúc ứng dụng 38 2.4 Tĩm tắt 39
Chương 3 Ngơn ngữ mơ hình hĩa 41 thống nhất UML 41
3.1 Lược sử UML 41 3.2 Khái quát về UML 42
3.3 Mơ hình khái niệm của UML 45
3.3.1 Phần tử mơ hình trong UML 46 3.3.2 Các quan hệ trong UML 50 3.3.3 Biểu đồ UML 53
Trang 44.2 Phân tích viên 76 4.3 Lĩnh vực vấn đề 77 4.4 Kĩ thuật trao đổi 78 4.5 Nguyên lí phân tích 80
4.5.1 Miền thơng tin 80 4.4.3 Mơ hình hố 82
4.6 Làm bản mẫu phần mềm 83
4.6.1 Kịch bản làm bản mẫu 84
4.6.2 Các phương pháp và cơng cụ làm bản mẫu 86
4.7 Đặc tả 88 4.7.1 Nguyên lí đặc tả 88 4.7.2 Biểu diễn 92 4.7.3 Đặc tả các yêu cầu phần mềm 93 4.8 Kiểm điểm đặc tả 95 4.9 Tĩm tắt 98 Các chủ đề Hoạt động nhĩm 99 TÀI LIỆU THAM KHẢO 183
Phụ lục 1 Các mơ hình phát triển phần mềm 184
Trang 5Cùng với sự ra đời và phát triển của cơng nghệ thơng tin, cơng nghệ phần
mềm đã được hình thành như một nguyên lí khoa học và phát triển ngày càng
mạnh mẽ Cĩ thể hiểu cơng nghệ phần mềm là lĩnh vực của cơng nghệ thơng tin nhằm nghiên cứu và đề xuất các ngun lí, qui trình cơng nghệ, phương pháp, và cơng cụ trợ giúp các quá trình thiết kế, cài đặt và bảo trì sản phẩm phần mềm đáp ứng được các chỉ tiêu về chất lượng: tính đúng, tính khoa học, tính tin cậy, tính vững vàng, tính dễ chuyển mang, tính dễ sử dụng, dễ phát triển và hồn thiện
Kiến trúc phần mềm chính là một nhánh của cơng nghệ phần mềm cĩ nhiệm
vụ quyết định cấu hình hệ thống thơng qua việc mơ tả các cấu phần và các mối liên quan giữa các cấu phần trong hệ thống phần mềm
Khoảng những năm sáu mươi của thế kỉ 20 đã bùng nổ một cuộc tranh luận về tốn tử đầy nghi vấn – tốn tử GOTO trong ngơn ngữ lập trình Chính cuộc tranh luận này đã làm nảy sinh các ý tưởng và nguyên lí đầu tiên về cơng nghệ phần mềm Điều thú vị là, ngay từ những ngày đầu sơ khởi và chập chững của cơng nghệ phần mềm, các phương pháp hình thức đã ra đời và phát triển nhanh chĩng Hàng loạt cơng trình nghiên cứu cĩ ý nghĩa của các nhà tin học đầu đàn như Dijkstra, Dahl, Hoare, Boëhm đã nâng kĩ thuật lập trình lên một tầm cao, mang tính chặt chẽ và hồn thiện, rất gần với các ngành khoa học chính xác [5] Dahl và Dijkstra đã đề xuất nguyên lý lập trình theo đặc tả hình thức, Hoare xây dựng hệ tiên đề chứng minh tính đúng của chương trình thơng qua các phương pháp tốn học và suy luận logic, Boëhm và Dijkstra chứng minh tính đủ của hai
cấu trúc điều khiển tuần tự và lặp while, trên cơ sở đĩ đề xuất khái niệm D-cấu
trúc với lời khuyên lập trình viên chỉ nên sử dụng ba cấu trúc điều khiển một
cách trong sáng và tao nhã là cấu trúc tuần tự, cấu trúc rẽ nhánh và cấu trúc lặp điều kiện trước [4]
Trang 6mềm lại quyết định một vài loại hình kiến trúc hiệu quả tương ứng Giáo trình đặt ra hai mục tiêu cơ bản sau đây:
1 Giới thiệu khái quát các qui trình và phương pháp thiết kế kiến trúc hệ thống phần mềm, đi sâu vào các phương pháp tiên tiến và cĩ hiệu quả theo nghĩa các phương pháp này đã được kiểm chứng trong thực tế;
2 Định hướng cho học viên một số kĩ năng trợ giúp tổ chức và chỉ đạo các nhĩm thiết kế kiến trúc phần mềm tại các cơ sở làm phần mềm
Nội dung của giáo trình tương đương với một học phần khoảng 50 tiết Giáo trình được kiến trúc như sau:
Chương đầu tiên giới thiệu một số khái niệm cơ sở về lí thuyết hệ thống và kiến trúc hệ thống phần mềm với giả định là bạn đọc đã biết ít nhiều về sản phẩm phần mềm và các tiêu chí đánh giá một sản phẩm phần mềm, về mơ hình và các qui trình phát triển phần mềm
Nội dung của chương 2 dành cho các thảo luận về các mẫu kiến trúc thơng dụng trong cộng đồng cơng nghệ phần mềm
Chương 3 trình bày tĩm lược về ngơn ngữ mơ hình hĩa thống nhất UML hiện đang được dùng rộng rãi trong thiết kế phần mềm theo tiếp cận hướng đối tượng
Chương 4 giới thiệu các kĩ năng phân tích yêu cầu Đây chính là pha đầu tiên nhằm xác định mục đích, chức năng của một sản phẩm phần mềm
Mới xem, bạn đọc dễ cĩ cảm giác rằng lẽ ra chương này phải đặt trước các chương khác trong giáo trình Nếu xét về trình tự vận dụng thì đúng như vậy Khơng một kĩ sư phần mềm nào cĩ thể viết ngay, dù chỉ là một dịng mã lệnh, nếu như khơng biết rõ mục đích và các yêu cầu đặt ra cho phần mềm Tuy nhiên, như đã nĩi trong phần trên, khi bạn đọc đã biết rõ về các mơ hình và các qui trình xây dựng một hệ thống phần mềm thì việc trình bày cĩ thể thực hiện theo một logic mà người viết cho rằng phù hợp với kì vọng của bạn đọc
Trang 7gia các khố đào tạo cơng nghệ phần mềm tại CMU PGS TS Đồn Văn Ban, PGS TS Đặng Văn Đức, Nghiên cứu viên chính Ngơ Trung Việt, Viện Cơng nghệ thơng tin, Viện Khoa học và Cơng nghệ Việt Nam, TS Hồ Cẩm Hà, trưởng khoa Cơng nghệ thơng tin Đại học Sư phạm Hà Nội thường xuyên trao đổi và cung cấp thơng tin cho người viết về các vấn đề đương đại của cơng nghệ phần mềm
Đặc biệt, PGS TS Đặng Văn Đức, tác giả của tài liệu Phân tích, thiết kế
hướng đối tượng bằng UML, nghiên cứu viên chính Ngơ Trung Việt và TS
Nguyễn Kim Ánh, tác giả của tài liệu Nhập mơn kĩ nghệ phần mềm đã cho phép
người viết được sử dụng các bản thảo nĩi trên để soạn giáo trình này
Trong thời gian biên soạn giáo trình này, thạc sĩ Lê Thị Mỹ Hạnh, Khoa Cơng nghệ thơng tin trường Đại học Bách khoa, Đại học Đà Nẵng đã cung cấp một số hình vẽ và những trợ giúp trong soạn thảo và trình bày văn bản
Người viết chân thành cảm ơn những hỗ trợ quí báu và chân tình của các thày và đồng nghiệp
Người viết rất mong nhận được các ý kiến bình luận và đánh giá của bạn đọc gửi về theo địa chỉ sau đây:
Nguyễn Xuân Huy,
Chủ tịch Hội đồng tư vấn Giáo dục Microsoft, MB: 0903203800, E-mail: nxhuy564@gmail.com
Hà Nội, Mùa Ve, năm Nhâm Thìn
Trang 81.1 Tiếp cận hệ thống
Chúng ta quan niệm phần mềm là một hệ thống tức là bao gồm các thành phần được gọi là các cấu phần và các mối liên hệ giữa các cấu phần đĩ Từ quan
niệm này ta thấy để xác định được kiến trúc của một phần mềm ta cần chỉ rõ hai nhĩm đối tượng trong hệ thống đĩ là
Các cấu phần, hay các thành phần tạo nên hệ thống, và Các mối liên hệ giữa các cấu phần
Trong tài liệu này các thuật ngữ
Phần mềm,
hệ thống phần mềm, hệ thống
được xem là tương đương
Trang 9
Hệ thống phần mềm quản lí thư viện cĩ thể bao gồm các cấu phần sau đây:
Cấu phần quản lí ấn phẩm; Cấu phần quản lí tài liệu điện tử; Cấu phần quản lí tài liệu vi phim; Cấu phần quản lí tài liệu điện ảnh; Cấu phần phục vụ bạn đọc;
Cấu phần quan hệ giao dịch với các thư viện bạn;
Các mối liên hệ giữa các cấu phần cĩ thể là: Cấu phần phục vụ bạn đọc - các cấu phần khác;
Cấu phần quan hệ giao dịch với các thư viện bạn - các cấu phần khác; Cấu phần quản lí tài liệu vi phim - cấu phần quản lí tài liệu điện tử;
Cấu phần là thành phần cấu trúc nên hệ thống
Một cấu phần cĩ chức năng tương đối độc lập được gọi là hệ thống con của hệ thống
Thí dụ
Trong hệ thống quản lí thư viện nĩi trên ta cĩ thể gọi các cấu phần đã liệt kê là các hệ thống con
Trong quá trình thiết kế kiến trúc, mỗi cấu phần cĩ thể được phân rã thành các cấu phần nhỏ hơn Đến lượt mình, các cấu phần nhỏ này cịn cĩ thể được
Trang 10như sau:
Hướng dẫn đăng nhập; Hướng dẫn tìm kiếm; Trợ giúp (bạn đọc);
Thống kê sở thích (bạn đọc); Địi tài liệu quá hạn;
Bài tập 1.1
1 Hãy liệt kê các cơng việc phải làm trong mục Địi tài liệu quá hạn của thư viện
2 Từ kinh nghiệm tổ chức thư viện cá nhân của bạn, bạn hãy liệt kê các cơng việc phải làm khi nhập sách mới vào thư viện
3 Nếu trong thư viện do bạn phụ trách khơng cĩ tài liệu bạn đọc yêu cầu Bạn sẽ làm gì? Hãy đặt mình vào vai người đọc để liệt kê kì vọng của người đọc đối với hệ thống phục vụ của bạn Sau đĩ, hãy cân nhắc xem khả năng tổ chức của bạn cĩ thể đáp ứng được nguyện vọng của bạn đọc đến mức nào
1.2 Thiết kế kiến trúc
Thiết kế kiến trúc phần mềm là qui trình xác định các cấu phần và các mối liên hệ giữa các cấu phần trong hệ thống phần mềm
Thiết kế kiến trúc địi hỏi sự thấu hiểu về hệ thống Mục tiêu cuối cùng là
Trang 11kế kiến trúc là mơ hình kiến trúc phản ánh tổ chức của hệ thống như một tập các
cấu phần cĩ liên hệ với nhau Tồn bộ sản phẩm đầu ra tạo thành một bộ hồ sơ
thiết kế kiến trúc
Theo tiếp cận linh lợi, thiết kế kiến trúc nhìn chung được thừa nhận là pha sớm nhất của qui trình phát triển phần mềm Nhiệm vụ chính của pha này theo
tiếp cận linh lợi chính là khởi tạo được một kiến trúc tổng thể của hệ thống phần
mềm
Việc phát triển kiến trúc theo kiểu tăng trưởng nĩi chung là khơng hiệu quả Điều dễ hiểu là sửa đổi một cấu phần, một module hay một thủ tục trong hệ thống là khá dễ, nhưng sửa đổi kiến trúc hệ thống trong quá trình phát triển sẽ kéo theo nhiều phiền tối, nếu như cĩ thể nĩi rằng là khơng thể
Trong thực tế, cĩ một phần giao nhau giữa hai quá trình: kĩ nghệ yêu cầu và thiết kế kiến trúc Về mặt lí tưởng, đặc tả hệ thống khơng nên chứa bất kì thơng tin kiến trúc nào của hệ thống, ngoại trừ các hệ thống nhỏ
Kĩ nghệ yêu cầu bao gồm hai bước chính:
Lấy yêu cầu; Đặc tả yêu cầu
Đầu ra: Bản đặc tả các yêu cầu đặt ra cho hệ thống
Trang 12là dưới dạng ngơn ngữ tự nhiên sang dạng chặt chẽ, khơng nhập nhằng
Thiết kế cấu trúc: xác định các cấu phần và quan hệ giữa các cấu phần
Do đĩ, như là một phần trong qui trình kĩ nghệ yêu cầu, ta cần tổ chức trước
hết, một kiến trúc trừu tượng (hiểu theo nghĩa bao quát), trong đĩ ta liên kết các
chức năng hoặc cơng cụ thành từng cấu phần hoặc hệ thống con Sau đĩ ta cĩ thể dựa trên kiến trúc khởi thuỷ này để thảo luận với những người cĩ thẩm quyền về các yêu cầu và cơng cụ cho hệ thống
Người cĩ thẩm quyền (stakeholder): Những người quyết định đến sự sống cịn của phần mềm: người làm phần mềm, người sử dụng, người chi tài chính, lãnh đạo bên A (bên đặt hàng), lãnh đạo của chính xí nghiệp sản xuất phần mềm đĩ
Trang 13Trừu tượng hố: Bỏ qua các chi tiết để tập trung vào những yếu tố chung nhất, quan trọng nhất
Thí dụ, để thiết kế kiến trúc cho phần mềm quản lí học tập cho học sinh tiểu học ta trừu tượng hố theo phương pháp đi lên từ mức cụ thể như sau:
Mức 0 (mức cụ thể) Phần mềm quản lí học tập cho học sinh tiểu học;
Mức trừu tượng 1 Phần mềm quản lí học tập cho học sinh trung học cơ
sở (cấp 2);
Mức trừu tượng 2 Phần mềm quản lí học tập cho học sinh trung học
phổ thơng (cấp 3);
Mức trừu tượng 3 Phần mềm quản lí học tập cho học sinh phổ thơng;
Mức trừu tượng 4 Phần mềm quản lí học tập cho học viên nĩi chung;
Khi phân rã (làm mịn) kiến trúc ta khơng nên nhầm lẫn với thêm – bớt cấu phần, cấu trúc hoặc sửa lại các mối liên kết Tiêu chí cơ bản của phân rã là:
bước sau làm chi tiết hơn bước trước, trong khi vẫn bảo lưu khung của các bước
trước
Phân rã: Chia một cấu phần thành các cấu phần nhỏ hơn dựa theo chức năng, thao tác hoặc tổ chức dữ liệu
Ta cĩ thể thiết kế kiến trúc phần mềm theo 2 cấp độ: nhỏ và lớn
1 Kiến trúc nhỏ liên quan đến các kiến trúc của chương trình máy tính riêng
Trang 141 Hãy liệt kê các chức năng chủ yếu của hệ thống phần mềm quản lí học tập trong nhà trường phổ thơng Bạn cố gắng xếp các chức năng này thành các nhĩm
2 Bạn hãy thử liệt kê những sự khác biệt giữa phần mềm quản lí học tập trong trường tiểu học và trường cấp ba
3 Bạn hãy thử liệt kê những sự khác biệt giữa phần mềm quản lí học tập trong trường phổ thơng và trường đại học
Kiến trúc phần mềm là quan trọng vì nĩ phản ánh tính hiệu quả, tính tin cậy, tính khả chuyển của hệ thống [8] Mỗi cấu phần thể hiện một yêu cầu chức năng của hệ thống Các yêu cầu phi chức năng phụ thuộc vào kiến trúc hệ thống – tức là phương thức tổ chức và phương thức vận dụng, khai thác cấu phần đĩ Trong nhiều hệ thống, các yêu cầu phi chức năng cũng được chi phối bởi các cấu phần riêng, nhưng điều đĩ khơng cĩ nghĩa là kiến trúc của hệ thống gây ảnh hưởng quyết định
Tiếp cận hướng chức năng trong thiết kế kiến trúc phần mềm: Gộp hoặc / và phân rã hệ thống theo chức năng
Yêu cầu chức năng là yêu cầu mà hệ thống cĩ thể thực hiện tự động theo một thủ tục định trước
Thí dụ: nhập liệu, nhập xuất kho, kết tốn
Yêu cầu phi chức năng là yêu cầu địi hỏi người điều hành hệ thống khai thác thơng tin trong hệ thống trước khi ra quyết định
Thí dụ: ra quyết định về thu, chi, tăng/giảm một mặt hàng
Bass và các đồng sự [8, 9] liệt kê ba lợi ích của một bản thiết kế hệ thống
Trang 152 Trợ giúp phân tích hệ thống Ta cĩ thể chính xác hĩa kiến trúc hệ thống ở
các pha sớm trong qui trình phát triển hệ thống Các quyết định về kiến trúc hệ thống cĩ thể tiên lượng được một số sự cố bất lợi ảnh hưởng đến hiệu năng, tính tin cậy và tính bảo trì
3 Cho phép tái sử dụng ở mức rộng Một mơ hình kiến trúc hệ thống là một
bản mơ tả các cấu trúc với các cấu phần và các tương tác giữa các cấu phần đĩ Trong thực tế ta thường gặp các hệ thống cĩ kiến trúc tương tự do đĩ ta cĩ thể tận dụng khả năng tái sử dụng phần mềm Trong nhiều trường hợp ta cĩ thể vận dụng lại các kiến trúc hệ thống để phát triển cả một dịng sản phẩm
Thí dụ
Các hệ thống phần mềm sau đây đều cĩ chung một kiến trúc: Các hệ điều hành trên máy tính cá nhân
Các máy điện thọai di động Các hệ thống quản lí bán hàng Các hệ thống quản lí học tập
Bài tập 1.3
1 Hãy phác thảo vài nhĩm chức năng trong sơ đồ của hệ thống phần mềm trong máy điện thoại di động của bạn
2 Theo ý bạn, chức năng nào của máy điện thoại di động của bạn là tốt nhất, chức năng nào chưa hồn thiện Bạn kì vọng ở nĩ ra sao?
Nhờ phân loại các hệ thống phần mềm cĩ chung kiến trúc ta cĩ thể tái sử dụng phần mềm hoặc chí ít là tổ chức được kiến trúc hệ thống cho các ứng dụng trong cùng một dịng sản phẩm và do đĩ, tiết kiệm được chi phí, giảm được giá thành sản phẩm
Thí dụ
Sau khi hồn thành dự án phần mềm quản lí học tập tại một trường trung
học cơ sở cụ thể, trường Lương Thế Vinh chẳng hạn, ta cĩ thể tái sử dụng phần
Trang 16làm nền cho các buổi thảo luận giữa khách hàng, nhà phát triển hệ thống và các nhà quản trị dự án Nĩ che giấu các chi tiết thường làm rối thêm vấn đề trong các cuộc bàn thảo và do đĩ và cho phép nhà kiến trúc tập trung vào các mức trừu tượng căn bản của hệ thống
Thí dụ
Khi bàn về kiến trúc cho một hệ thống phần mềm quản lí học tập trong nhà trường thì những chi tiết sau đây cần được che khuất đi tại pha đầu tiên - pha xây dựng kiến trúc ở mức trừu tượng:
Giáo viên nạp điểm ra sao? Theo cơng thức nào, cĩ trọng số hay khơng cĩ trọng số?
Danh sách học sinh được hiển thị theo chiều ngang hay dọc, cĩ được sắp khơng? Sắp tăng hay giảm, sắp theo tiêu chí nào: theo tên hay theo điểm?
Trang 17
Các cung cĩ hướng mang ý nghĩa là dữ liệu hoặc các tín hiệu điều khiển xuất phát từ một cấu phần đi tới một cấu phần khác
Các sơ đồ khối biểu diễn một bức tranh mức cao của cấu trúc hệ thống, do đĩ các thành viên trong nhĩm phát triển và những người quan tâm cĩ thể quan sát và hiểu một cách trực quan
Chúng ta cần quan tâm cả hai phương thức tiếp cận hệ thống như sau:
1 Ở mức cao, như ta thấy, sơ đồ kiến trúc tổng thể tạo ra một khung nhìn đơn giản và thuận lợi để những người cĩ thẩm quyền cĩ thể bàn bạc Họ sẽ khơng bị vướng vào các chi tiết quá vụn vặt …
2 Sản phẩm cuối của kiến trúc hệ thống là bộ hồ sơ mơ tả một mơ hình đầy đủ của hệ thống, trong đĩ thể hiện rõ các cấu phần, các giao diện và các mối liên hệ giữa các cấu phần Các thơng tin chi tiết này phải được đưa vào hồ sơ
Trang 18Sơ đồ khối là phương tiện hữu ích để mơ tả kiến trúc hệ thống trong quá trình thiết kế cũng như hỗ trợ trao đổi với những người cĩ thẩm quyền
Kiến trúc sư hệ thống cần cĩ kĩ năng sử dụng các thành thạo các cơng cụ và phương thức tốt để cĩ thể mơ tả chuẩn
mực, cĩ ngữ nghĩa kiến trúc hệ thống
1.3 Quyết định kiến trúc
Thiết kế kiến trúc là một qúa trình sáng tạo trong đĩ bạn thiết kế cơ cấu cho một hệ thống đáp ứng được các yêu cầu chức năng và phi chức năng của hệ thống
Các hoạt động diễn ra trong hệ thống phụ thuộc vào đặc thù của hệ thống mà ta phát triển, phụ thuộc vào kiến thức nền và kinh nghiệm của kiến trúc sư
Do đĩ sẽ là tốt nếu ta tư duy về kiến trúc hệ thống như là một chuỗi các quyết
định cần thực hiện hơn là như một dãy hoạt động cần hồn thành Trong quá
Chuyển tiền Gửi tiền Rút tiền Xem số dư Khách hàng Nhân viên ngân hàng Thay đổi PIN Thanh tốn Hệ thống tín
Trang 19sống cịn sau đây:
1 Ta cĩ thể xuất phát từ một hình mẫu cĩ sẵn?
2 Cĩ thể phân rã hệ thống thành một số qui trình hoặc hạt nhân quen
thuộc?
3 Cĩ thể tái sử dụng các mẫu hoặc kiểu loại? 4 Tiếp cận nào là cơ bản?
5 Cấu phần nào cần làm mịn tiếp theo?
6 Chiến lược nào sẽ được sử dụng để điều khiển các thao tác trên các cấu
phần hệ thống?
7 Tổ chức kiến trúc nào là tốt nhất cho các yêu cầu phi chức năng? 8 Đánh giá bản thiết kế kiến trúc ra sao?
9 Lập hồ sơ kiến trúc ra sao?
Bạn đọc hãy dành ít phút quan sát bảng liệt kê này trước khi chuyển qua mục khác Trước hết ta thấy rằng đây là các quyết định chứ khơng phải là hoạt động Quyết định thường được kết thúc bằng các nhĩm từ: cĩ thể; ra sao; lựa chọn cái gì là tốt nhất…
Cĩ thể xây dựng quyết định bằng một câu hỏi chung
như sau:
Ta phải quyết định chọn/làm/tổ chức/tạo ra/xây dựng cái gì?
Những dẫn dắt sau đây thuộc về hoạt động:
- Ta đặt thực đơn A tại chỗ này, trên thực đơn B - Ta nên đặt màu nền cho tươi hơn
Trang 20sở ứng dụng hạt nhân ban đầu với một số biến thể nhỏ nhằm đáp ứng các yêu cầu nâng cao của người sử dụng Sau khi khảo sát và phân tích các hạt nhân ban đầu, ta chọn ra một vài hạt nhân cĩ kiến trúc và chức năng gần nhất với hệ thống cần thiết kế Ta tiếp tục liệt kê các cấu phần và chức năng của các hạt nhân này trong một bảng kiểm mục, trong đĩ ghi chú rõ chức năng nào là phù hợp, chức năng nào cần loại bỏ, chức năng nào cĩ thể được chỉnh sửa lại để tái sử dụng Việc này cĩ thể được lặp lại nhiều lần cho đến khi nhận được một phiên bản mới về nguyên tắc và phù hợp với các yêu cầu cơ bản của hệ thống ta đang cần thiết kế
Thí dụ
1 Bạn cần thiết kế một hệ thống phần mềm (nhúng) cho một dịng điện thoại di động mới M cĩ màn hình cảm ứng thuộc hãng X
Sau khi xác định được các yêu cầu cho hệ thống M, bạn cĩ thể tìm hiểu các phiên bản điện thoại di động cĩ màn hình cảm ứng mới nhất trước đĩ, chẳng hạn bạn chọn được hai sản phẩm là L và T của chính hãng X
Bạn cần xác định cái gì là chung, là kế thừa, cái gì là mới, … các ưu và nhược điểm của từng chức năng đĩ;
Tiếp đến bạn quyết định xem cĩ thể tái sử dụng các cấu phần nào từ L và T;
2 So với các phần mềm cho máy tính cá nhân thì phần mềm nhúng chỉ sử dụng một bộ xử lí do đĩ khơng cần đến khái niệm phân tán Tuy nhiên nhiều hệ thống lớn hiện nay lại là phân tán trên nhiều máy nên việc quyết định lựa chọn một kiến trúc phân tán cho các thiết bị di động là khơn ngoan vì nĩ đáp ứng được hiệu năng và độ tin cậy trong giao dịch, trong tương tác
3 Khi cần thiết kế kiến trúc cho một hệ thống phân tán ta cĩ thể khảo sát và lựa chọn các mẫu kiến trúc và topo mạng máy tính: kiến trúc hình sao, kiến trúc vịng, client-server, …
Trang 21Phần mềm nhúng: phần mềm cài trong các thiết bị, chủ yếu là các thiết bị
điều khiển, thiết bị di động chuyên dụng
Đặc điểm chung:
Khơng cài đặt cho các máy tính lớn và máy tính cá nhân (nhưng thường được thiết kế và sản xuất trên các máy tính cĩ mơi trường mơ phỏng thiết bị);
Thường dùng một bộ xử lí; Nhỏ gọn;
Được nhúng (ghi dưới dạng mã máy, mã đích) trong các vi mạch điện tử;
Hiện đang cĩ nhu cầu thị trường rất lớn
Dưới đây là một minh hoạ gồm các phân tích ngắn gọn một số tiêu chí mang tính chỉ đạo cho việc xây dựng kiến trúc cho một hệ phân tán:
1 Hiệu năng là địi hỏi quan trọng nhất Kiến trúc được xây dựng để phục
vụ cho các thao tác địa phương trong một nhĩm nhỏ các cấu phần sẽ thực thi trên một máy tính (địa phương) chứ khơng thực thi trên mạng Do đĩ bạn cần lưu ý đến nguyên tắc: hạn chế liên kết vì liên kết địi hỏi thêm chi phí xử lí đồng bộ hố và tổ chức thời gian thực…
Hiệu năng của hệ thống: thể hiện mức độ hiệu quả
và khả năng phục vụ của hệ thống, thí dụ tốc độ xử
lí hay số đơn vị dữ liệu được xử lí trong một đơn vị thời gian
2 Tính bảo mật Gần như mọi hệ thống phân tán đều địi hỏi cơ chế bảo
Trang 22các thao tác cĩ thể vi phạm tính tồn vẹn như xố (delete) dữ liệu, chuyển dịch (move) dữ liệu, huỷ bỏ (cancel, stop), tái khởi động (reset, uninstall) hệ thống hoặc tiến trình, chuyển đổi hoặc tạo lại (format) khuơn dạng thiết bị
Tính an tồn và tồn vẹn: dữ liệu và chương trình khơng bị
biến dạng, sai lệch sau các thao tác của người sử dụng Cĩ cơ chế ngăn chặn, cảnh báo và khơi phục lại hệ thống và dữ liệu sau các sự cố như mất điện, treo máy hoặc các thao tác vơ tình hoặc cố ý làm sai lệch dữ liệu và hệ thống
4 Sẵn sàng: Để đảm bảo tính sẵn sàng, hệ thống của bạn nên cĩ thêm các
cấu phần dư thừa để thay thế khi cần Ngồi ra, hệ thống của bạn nên cĩ cơ chế sao lưu hoặc tổ chức bộ nhớ cache để khi cần cĩ thể làm việc trong chế độ gián tuyến (offline)
Tính sẵn sàng của hệ thống: hệ thống cĩ khả năng
phục vụ trong nhiều trạng thái và ngữ cảnh Thí dụ, khi một phần của mạng bị hỏng hệ thống vẫn làm việc với phần cịn lại của mạng và sau đĩ, khi sự cố đã được khắc phục, hệ thống cĩ thể cập nhật lại các cấu hình, trạng thái và dữ liệu cho các điểm mạng thuộc phạm vi quản lí của mình
5 Khả năng duy tu: Nếu cĩ yêu cầu bắt buộc về khả năng duy tu hệ thống,
Trang 23Online: hoạt động trực tuyến Khách và chủ giao lưu trực
tiếp theo thời gian thực Thí dụ, từ máy tính của mình bạn đang nhập vào một hệ thống dịch vụ nào đĩ, bán hàng trên mạng chẳng hạn, và làm việc, trao đổi với hệ thống đĩ
Off-line: hoạt động gián tuyến Khách làm việc trong chế độ
khơng kết nối với chủ.Thí dụ, sau khi lấy được thơng tin về một số mặt hàng cần mua, bạn tạm ngắt kết nối với hệ thống bán hàng trên mạng để suy nghĩ, trao đổi với mọi người và điền các thơng tin vào các file mẫu
Hệ thống cĩ khả năng duy tu là hệ thống được thiết kế để
khi cần thiết cĩ thể nâng cấp hoặc cĩ đủ cơ chế linh hoạt để đáp ứng được các yêu cầu mới, khĩ dự đốn trước
Thí dụ, khi xây dựng hệ thống làm việc trên mạng thế hệ 2 ta nên nghĩ ngay đến khả năng sau này hệ thống sẽ được nâng cấp để cĩ thể làm việc trên mạng thế hệ 3
Thành phần hạt nhân: thành phần cơ sở của hệ thống,
làm nền, làm hạ tầng để từ đĩ xây dựng tồn bộ hệ thống Thí dụ, hạt nhân của hệ điều hành thực thi các chức năng cơ bản của hệ điều hành ở mức thấp, giao diện đơn giản
Trang 24Thành phần độc lập (thành phần dễ chuyển mang):
một module (đơn thể) chương trình cĩ thể chuyển từ hệ thống này sang hệ thống khác Module đĩ cĩ thể hoạt động trong nhiều chủng loại máy tính và mơi trường khác nhau
Thí dụ, lớp các thủ tục vào/ra, lớp các hàm tốn học, lớp đồ hoạ được thiết kế để dùng chung cho nhiều ngơn ngữ và mơi trường lập trình
Hình mẫu: Một kiến trúc cĩ thể dùng chung cho
một lớp các hệ thống
Thí dụ: Kiến trúc hệ điều hành, kiến trúc giao diện đồ hoạ, kiến trúc xử lí giao dịch
Để kết luận cho mục này chúng ta trao đổi thêm ba kinh nghiệm quan trọng sau đây:
Trang 25 hệ thống cĩ đáp ứng đầy đủ và chính xác các yêu cầu đã đề ra?
hệ thống cĩ hoạt động đúng như ta mong muốn khơng?
Kiểm định logic quan tâm chủ yếu đến tính
hợp lí, phi mâu thuẫn trong cấu trúc và hoạt động của hệ thống
Kiến trúc ban đầu thường rất đơn giản, nhưng khơng vì thế mà bạn cĩ thể bỏ qua việc kiểm tra Lý do là như sau:
N G U Y Ê N L Í L Ỗ I N Ặ N G
Lỗi nặng nhất thường sinh ra tại các pha ban đầu
Thí dụ
Ta phân tích một thí dụ đơn giản
Giả sử ta cần xây dựng một hệ thống dịch vụ đa năng trên mạng
Thiết kế ban đầu của ta được biểu diễn dưới dạng một sơ đồ khối đơn giản gồm cĩ bốn khối thể hiện trình tự đĩn khách và phục vụ theo 4 bước như sau:
Đăng nhập Điền thơng tin Thu
phí Giới thiệu chung Lựa chọn dịch vụ Phục vụ
Trang 26Bước 2 Hệ thống tự trình diễn: giới thiệu về cơng ti và các dịch vụ hệ
thống đảm nhiệm
Bước 3 Hướng dẫn khách lựa chọn dịch vụ cần thiết Bước 4 Phục vụ khách theo dịch vụ đã chọn
Điều bất tiện ở kiến trúc này là gì?
Hãy tưởng tượng, một vị khách mới, chưa hề biết gì về cơng ti dịch vụ này Vị khách muốn xem thơng tin giới thiệu cơng ti Nhu cầu này chỉ được đáp ứng sau khi khách đã đăng nhập vào hệ thống Mà việc đang nhập này địi hỏi phải trả phí
Dĩ nhiên, khi trao đổi với những người cĩ thẩm quyền ta cĩ thể phát hiện ra một số điểm bất hợp lí dựa trên các gợi ý về mặt nguyên tắc như sau:
Danh cĩ chính, ngơn mới thuận: Việc tiên quyết là giới thiệu về cơng ti
Sử dụng dịch vụ nào thì trả phí riêng cho dịch vụ đĩ
Như vậy là phải tách cấu phần đầu tiên thành hai cấu phần riêng biệt, độc lập nhau là đăng nhập và thu phí Cấu phần thu phí sẽ được đặt sau cấu phần phục vụ
Nếu kiến trúc sư hệ thống chịu khĩ khảo sát các mẫu thơng dụng trên thị trường thì cĩ thể đề xuất được ngay một kiến trúc khá hợp lệ như sau:
Trang 27
2 Sau mỗi bước phân rã, làm mịn kiến trúc hệ thống rất nên thực hiện kiểm
định Nhận định này được trình bày chi tiết trong giáo trình "Kiểm định phần
mềm"
3 Đánh giá kiến trúc là việc khĩ, đặc biệt là đối với các yêu cầu phi chức năng vì hệ thống chưa thực thi, mới nằm trên giấy Thí dụ minh hoạ nĩi trên chỉ liên quan đến các yêu cầu về chức năng Từ nhận định này ta thấy việc trao đổi thường xuyên các phương án kiến trúc với những người cĩ thẩm quyền là rất quan trọng Ngồi ra, để giảm nhẹ gánh nặng và áp lực, kiến trúc sư hệ thống nên khảo sát và đánh giá các hệ thống và các mẫu hiện hành
Đăng kí Điền thơng tin Giới thiệu chung Lựa chọn dịch vụ Phục vụ
Trang 28thường quan niệm rằng tham khảo nhiều mẫu và nhiều hệ thống dễ bị ảnh hưởng, dễ gây thĩi quen bắt chước, làm nhái
Muốn sáng tạo thì phải cĩ vốn, phải học Xem nhiều, đọc nhiều với một đầu ĩc biết phân tích và phê phán sẽ giúp ta sáng tạo ra những sản phẩm độc đáo
1.4 Các quan điểm trong kiển trúc phần mềm
Nhắc lại rằng các mơ hình kiến trúc của một hệ thống phần mềm rất cần và cĩ thể được sử dụng để thảo luận về các yêu cầu giữa nhĩm thiết kế, phát triển phần mềm và những người cĩ thẩm quyền Hơn nữa, các mơ hình này cịn cĩ thể được sử dụng để lập hồ sơ kiến trúc trong các bước làm mịn sau này
Trong mục này chúng ta sẽ thảo luận hai vấn đề quan trọng sau đây:
1 Khi thiết kế và lập hồ sơ cho kiến trúc hệ thống ta vận dụng các quan điểm nào và dự đốn viễn cảnh của hệ thống ra sao?
2 Khái niệm nào cần thiết cho mơ tả kiến trúc hệ thống?
Khơng thể biểu diễn mọi thơng tin về kiến trúc hệ thống với một tập các mơ hình đơn giản và tổng qúat lúc đầu, vì mỗi mơ hình chỉ phản ánh một quan điểm và một viễn cảnh của hệ thống Chẳng hạn, nĩ chỉ cĩ thể cho biết rằng hệ thống sẽ được làm mịn, phân rã thành các đơn thể nào, cũng như các tiến trình thời gian thực sẽ tương tác với nhau ra sao hoặc vận dụng các phương thức nào để phân bố các cấu phần của hệ thống đối với mơ hình phân tán
Trang 29Q U A N Đ I Ể M
Trong tài liệu này các thuật ngữ sau đây được xem là tương đương:
- Quan điểm; - Quan niệm; - Khung nhìn
Quan điểm thể hiện cách nhìn sự vật và hiện tượng
N G U Y Ê N L Í K H U N G N H Ì N
Cĩ thể và nên quan sát, xem xét, phân tích và xử lí sự vật và hiện tượng theo các gĩc nhìn và khung nhìn khác nhau Xét theo quan điểm nào thì phải xử lí theo phương thức tương ứng
1 Quan điểm logic Quan điểm này giúp chúng ta thể hiện các đối tượng và
lớp trừu tượng cơ bản trong hệ thống, thể hiện các yêu cầu về thực thể dưới dạng các quan niệm logic
2 Quan điểm tiến trình Vào thời điểm hệ thống hoạt động ta phải hình
dung rõ các qui trình tương tác của hệ thống Khi tuân thủ quan điểm tiến trình, điều quan trọng là phải hiểu được các yêu cầu phi chức năng như tính hiệu năng hoặc tính hữu dụng
3 Quan điểm phát triển Theo quan điểm phát triển, ta giải thích được hệ
Trang 30Khung quan điểm hay khung nhìn chính là khung trừu tượng làm cơ sở cho quá trình phân rã các yêu cầu mức cao thành các đặc tả chi tiết giúp cho các nhân viên quyết định chọn các cấu phần dùng lại và thể hiện các dịng sản phẩm
Trong thực tiễn, khung nhìn được sử dụng với tần suất cao Nĩ cũng là cơ sở để trao đổi giữa nhĩm phát triển phần mềm và những người cĩ thẩm quyền
Thí dụ, Cĩ nhiều quan điểm khác nhau về khả năng sử dụng UML và các mơi trường đặc tả khác nhau trong thiết kế kiến trúc [9]
Nếu ta tiếp cận theo hướng đối tượng thì nên sử dụng UML Ngồi ra ta cĩ thể sử dụng các cơng cụ khác như các ngơn ngữ mơ tả chuyên dụng (Specialized Architectural Description Languages, ADLs, [8]) với các phần tử cơ sở là các thành phần và các đường nối
U M L
UML (Unified Modeling Language Ngơn ngữ mơ hình hĩa thống nhất) do Booch, Rumbaugh và Jacobson đề xuất dùng để đặc tả kiến trúc hệ thống
theo tiếp cận mơ hình hố và hướng đối tượng Các cơng cụ trực quan chủ yếu là các biểu đồ: biểu đồ lớp, biểu đồ trình tự, biểu đồ trạng thái, biểu đồ cộng tác, biểu đồ cấu trúc (thành phần), biểu đồ triển khai
Bài tập 1.4
1 Hiện nay các thiết bị điện tử được tích hợp rất nhiều tiện ích Bạn thử liệt kê một số chức năng mà bạn muốn tích hợp vào chiếc điện thoại di động của bạn Với mỗi chức năng bạn hãy gán một trị số từ 1 đến 10 nhằm xác định ý kiến của bạn về mức độ cần thiết của chức năng đĩ: mức 10 là rất cần thiết
Trang 31 Sau t phút chủ nhà khơng sử dụng thì tự động ngắt;
Khi sắp cĩ mưa giơng, tự động cảnh báo cho chủ nhà về chế độ ngắt thiết bị khỏi nguồn điện;
… An ninh: … Giải trí: … 1.5 Tĩm tắt
Thiết kế kiến trúc phần mềm là qui trình xác định các cấu phần và các mối liên hệ giữa các cấu phần trong hệ thống phần mềm
Thiết kế kiến trúc địi hỏi sự thấu hiểu về hệ thống, cần thực hiện một chuỗi
các quyết định cần thực hiện chứ khơng phải là một dãy hoạt động cần hồn
thành
Hai kĩ thuật quan trọng nhất thường được vận dụng trong thiết kế là:
Trừu tượng hố: Bỏ qua các chi tiết để tập trung vào những yếu tố chung nhất, quan trọng nhất
Phân rã: Chia một cấu phần thành các cấu phần nhỏ hơn dựa theo chức năng, thao tác hoặc tổ chức dữ liệu
Ba lợi ích của một bản thiết kế hệ thống chuẩn mực:
1 Trợ giúp cho việc liên hệ với những người cĩ thẩm quyền 2 Trợ giúp phân tích hệ thống
3 Cho phép tái sử dụng ở mức rộng
Trang 33Các mẫu kiến trúc
2.1 Khái niệm chung
Các mẫu kiến trúc được sử dụng với mục đích chia sẻ và tái sử dụng các tri thức của cộng đồng cơng nghệ phần mềm
Ta hiểu mẫu là những sản phẩm làm sẵn dùng để dựa vào đĩ sản xuất ra
những sản phẩm cùng loại Giả sử bạn cần thiết kế một kiến trúc cho một ngơi nhà Bạn tìm trong thực tế hoặc trên mạng Internet một vài bản kiến trúc cĩ sẵn mà bạn cho là phù hợp nhất với kiến trúc dự kiến của ngơi nhà của bạn Các bản
kiến trúc này được gọi là các bản kiến trúc mẫu Sau đĩ bạn dựa trên những bản
kiến trúc mẫu này để thiết kế kiến trúc cho ngơi nhà của bạn Giả sử bản kiến
trúc bạn ưng ý nhất và bạn đã chọn là K
Nếu bạn đã giao tiếp với chủ nhà K và được chủ nhà cung cấp rõ ràng các
thơng tin về ngơi nhà: những điểm mạnh, điểm yếu, điểm chưa hồn thiện… thì chắc chắn là bạn rất biết ơn chủ nhà về điều đĩ Các thơng tin quí giá này giúp
cho bạn hồn thiện nhanh chĩng việc sửa đổi kiến trúc K cho ngơi nhà của bạn
Tình hình cũng tương tự như vậy đối với việc lựa chọn và sửa đổi kiến trúc phần mềm
Hiểu được những khĩ khăn, vất vả (và cả những hiểm nguy !!!) trong thiết kế phần mềm, cộng đồng cơng nghệ phần mềm đã tăng cường chia sẻ, trao đổi thơng tin về các bản mẫu và xây dựng những cơ sở dữ liệu chứa các mẫu thiết kế dùng chung nhằm hỗ trợ nhau trong cơng việc Trong vịng mươi năm gần đây, số mẫu kiến trúc được gia tăng đáng kể về số lượng, chất lượng và phong phú về loại hình Mức độ linh hoạt và mịn hĩa của các nhĩm mẫu cũng tăng lên đáng kể Ta cĩ thể tìm kiếm, đọc tài liệu hướng dẫn và vận dụng các mẫu thiết kế tổ chức, mẫu vận dụng, mẫu tương tác, mẫu cấu hình
Trang 34Bước 2 Tìm kiếm mẫu Cĩ thể, tại bước này bạn phải làm đi làm lại nhiều
lần Từ các kho mẫu, bạn chọn ra một nhĩm mẫu đầu tiên Khảo sát nhĩm mẫu này, bạn cĩ thể lược bớt một số mẫu hoặc thay thế chúng bằng các mẫu khác
hoặc thêm các mẫu mới Cĩ thể gọi nhĩm mẫu này là nhĩm mẫu ứng viên
Bước 3 Quyết định chấp nhận mẫu Bạn cần trao đổi, kiểm điểm với nhĩm
phát triển và những người cĩ thẩm quyền để lựa chọn một mẫu từ nhĩm mẫu ứng viên Dĩ nhiên, trước đĩ bạn cần chỉnh sửa sơ bộ các mẫu ứng viên cho tương đối phù hợp với dự kiến thiết kế của bạn Kết quả cuối cùng của bước này là một bản thiết kế duy nhất - bản khởi thủy cho hệ thống
Các bước tiếp theo thuộc về qui trình phân rã và làm mịn kiến trúc
2.2 Mẫu
Trong mục này chúng ta phân tích một vài mẫu thường vận dụng trong cộng đồng cơng nghệ phần mềm Mỗi mẫu được trình bày theo sơ đồ gồm bốn mục
như sau: (1) Mơ tả đại thể kiến trúc của mẫu; (2) Tình huống vận dụng: khái quát các trường hợp và lĩnh vực áp dụng mẫu; (3) Ưu điểm: các lợi thế, hiệu quả và mặt mạnh khi vận dụng mẫu; (4) Nhược điểm: vận dụng mẫu này cĩ thể dẫn đến một số khĩ khăn, hạn chế
2.2.1 Kiến trúc Mơ hình, Quan sát và Điều khiển (Model View Controller, MVC)
Mơ tả: MVC tách riêng hiển thị dữ liệu và tương tác dữ liệu hệ thống Hệ
thống được tổ chức thành ba cấu phần logic tương tác lẫn nhau: (1) Cấu phần Mơ hình quản trị dữ liệu hệ thống (bao gồm cả các thao tác trên dữ liệu); (2) Cấu phần Khung nhìn (hiển thị) quản trị các mẫu hiển thị dữ liệu cho người sử dụng; (3) Cấu phần Điều khiển quản trị các tương tác (thí dụ, nhấn phím trên bàn phím, kích chuột ) và chuyển các tác động này tới cấu phần Khung nhìn và cấu phần Mơ hình
Tình huống vận dụng: MVC được vận dụng trong tình huống cĩ nhiều
Trang 35ngược lại Hỗ trợ khả năng trình diễn dữ liệu theo nhiều khuơn dạng khác nhau
Nhược điểm: Cĩ thể chứa các mã trình bổ sung và mã trình phức tạp ngay
cả trong trường hợp mơ hình và tương tác chỉ là đơn giản
Bài tập 2.1
1 Bạn hãy liệt kê các dạng thức hiển thị giờ và ngày tháng trên màn hình máy điện thoại di động hoặc trong máy tính của bạn
2 Giả sử bạn đã thiết kế một hệ thống phần mềm hồn thiện giao tiếp bằng tiếng Việt Do nhu cầu của khách hàng, bạn cần phải sửa đổi để phần mềm đĩ cĩ thể phục vụ cho các khách hàng người Anh và người Pháp Bạn chọn phương án nào trong hai phương án A và B sau đây:
A Viết lại một phiên bản tiếng Anh và một phiên bản tiếng Pháp
B Viết thêm hai giao diện tiếng Anh và tiếng Pháp và đặt chế độ tùy chọn ngơn ngữ giao tiếp Việt, Anh hoặc Pháp
Trong trường hợp bạn chọn phương án B, bạn thử phác thảo kiến trúc phần mềm của bạn
2.2.2 Kiến trúc Phân tầng (Layered Architecture, LA)
Mơ tả: LA tổ chức hệ thống theo các tầng, mỗi tầng đảm nhận các nhĩm
chức năng tương ứng Tầng dưới phục vụ cho tầng trên Tầng dưới cùng chính là các dịch vụ cơ sở
Tình huống vận dụng: LA được vận dụng trong các tình huống sau: (1)
Khi xây dựng các tiện ích mới nằm ở tầng trên của hệ thống hiện cĩ; (2) Khi một bước phát triển được phân chia cho nhiều nhĩm, mỗi nhĩm triển khai một chức năng; (3) Khi địi hỏi bảo mật theo nhiều mức
Ưu điểm: Kiến trúc LA cho phép thay thế trọn một tầng khi cần cập nhật lại
Trang 36nằm trực tiếp dưới nĩ Kiến trúc LA cĩ thể gây ảnh hưởng đến năng suất vì mọi yêu cầu được chuyển đến tầng khác đều phải được kiểm sốt và xử lí
Bài tập 2.2
1 Theo ý bạn kiến trúc phân tầng cĩ phù hợp với các hệ thống thơng tin quản lí hành chính khơng? Bạn hãy giải thích vì sao
2 Giả sử bạn cĩ hệ thống quản lí bảng với các dịng và cột tựa như phần mềm Excel Bạn muốn trang bị thêm cho hệ thống quyền truy nhập theo các yêu cầu sau đây:
Mức 1: Tồn quyền đọc, ghi và sửa mọi dịng, cột của mọi bảng.Mức này thường dành cho quản trị trưởng
Mức 2: Được phép đọc, ghi và sửa một số bảng
Mức 3: Được phép đọc, ghi và sửa mọi dịng, cột của một số bảng Mức 4: Được phép chỉ đọc mọi dịng và cột của mọi bảng
Mức 5:
Hãy phác thảo một tầng kiến trúc mới cho hệ thống
2.2.3 Kiến trúc Kho chứa (Repository Architecture, RA)
Mơ tả: Quản lí dữ liệu trong kiến trúc RA được giao cho một kho trung tâm
của hệ thống Mọi cấu phần của hệ thống đều cĩ thể truy cập đến kho này Các cấu phần khơng giao tiếp trực tiếp với nhau mà buộc phải thơng qua kho này
Tình huống vận dụng: RA được vận dụng khi thiết kế các hệ thống phát
sinh những tập dữ liệu lớn địi hỏi phải cĩ kho chứa trong khoảng thời gian dài RA cịn được vận dụng trong các hệ thống hướng dữ liệu, trong đĩ mỗi khi sản sinh dữ liệu trong kho chứa một cơng cụ hoặc một thao tác nào đĩ của hệ thống sẽ được kích hoạt
Ưu điểm: Các cấu phần được hoạt động độc lập với nhau Mỗi cấu phần
Trang 37Nhược điểm: Mọi khĩ khăn nảy sinh đều rơi vào nguyên nhân tập trung dữ
liệu Truy nhập dữ liệu từ xa, hoặc phân tán trên nhiều máy tính cĩ thể khơng hiệu quả Mọi lỗi dữ liệu đều ảnh hưởng đến mọi cấu phần hệ thống
2.2.4 Kiến trúc Khách - Chủ (Client - Server, CS)
Mơ tả: Trong kiến trúc Khách – Chủ chức năng của hệ thống được tổ chức
thành các dịch vụ, mỗi dịch vụ được giao cho một đơn vị riêng đảm nhiệm Khách chính là những người sử dụng các dịch vụ của hệ thống và truy cập đến các đơn vị đảm nhiệm dịch vụ đĩ
Tình huống vận dụng: Kiến trúc CS được vận dụng khi dữ liệu trong cơ sở
dữ liệu dùng chung được truy nhập từ nhiều địa điểm Vì các đơn vị phục vụ cĩ thể đảm đương những dịch vụ giao nhau nên kiến trúc CS cịn cĩ thể được vận dụng trong các tình huống truy nhập hệ thống là biến thiên
Ưu điểm: Ưu điểm chính của kiến trúc này là các đơn vị dịch vụ cĩ thể
được phân tán trên mạng Các chức năng chung (thí dụ, dịch vụ in) được cung cấp cho mọi khách hàng
Nhược điểm: Mỗi khi sinh lỗi tại một điểm dịch vụ thì tiến trình đa nhiệm
của khách hàng sẽ bị gián đoạn Việc hồi phục cĩ thể là khơng khả thi Mỗi sự cố trên mạng cũng cĩ thể ảnh hưởng đến hoạt động của hệ thống
2.2.5 Kiến trúc Ống và Lọc (Pipe and Filter, PAF)
Mơ tả: Trong kiến trúc PAF, mỗi cấu phần xử lí dữ liệu (được gọi là bộ lọc)
là rời nhau và cho ra một kiểu dữ liệu Dịng dữ liệu (như dịng chảy trong một đường ống) từ một cấu phần tới một cấu phần khác để được xử lí tuần tự
Tình huống vận dụng: Được vận dụng chung cho các ứng dụng xử lí dữ
liệu, (theo cả hai chế độ: xử lí theo lơ và xử lí theo từng giao dịch), khi input được xử lí theo từng pha riêng, mỗi pha cho ra một output tương ứng
Ưu điểm: Kiến trúc rõ ràng, dễ hiểu, trợ giúp tốt cho các tình huống tái sử
Trang 38một vài trường, hoặc phương thức, đổi dạng, thí dụ từ văn bản sang đồ họa Tình huống này buộc các bộ lọc phải thực hiện nhiều chuyển đổi vào / ra phức tạp và do đĩ làm giảm hiệu năng chung của hệ thống, thậm chí cịn hạn chế khả năng tái sử dụng
Xử lí theo từng giao dịch: Nhận một giao dịch và xử lí ngay
Thí dụ: Trao đổi trực tuyến với một khách hàng
Xử lí (giao dịch) theo lơ: Nhận một tập giao dịch rồi xử lí tập
đĩ
Thí dụ: Nhận một tập đơn đặt hàng từ các khách hàng sau đĩ phân nhĩm theo mặt hàng rồi đáp ứng
Xử lí (giao dịch) phân tán: (1) Chia giao dịch thành các thành
phần rồi gửi mỗi thành phần đến một máy để xử lí sau đĩ tổng hợp kết quả; (2) Xử lí giao dịch tại một máy nhưng cần dữ liệu từ nhiều máy khác; Kết hợp (1) và (2)
Thí dụ: (1) Giải quyết một đơn thư liên quan đến nhiều đơn vị (2) Tổng hợp báo cáo từ nhiều đơn vị (1&2) Hội thảo điện tử nhằm quyết định một giải pháp nào đĩ
Xử lí tương tranh: Xử lí giao dịch A địi hỏi phải xem xét
tương quan về trật tự thời gian, trật tự thao tác và truy nhập dữ liệu với các giao dịch khác
Thí dụ: Xử lí các thao tác cập nhật (xen, xĩa, sửa dữ liệu) trong cơ sở dữ liệu phân tán Xử lí các thao tác truy nhập và cập nhật các file dùng chung cho nhiều máy trong một mạng máy tính
2.3 Các kiến trúc ứng dụng
Trang 39vùng lãnh thổ khác nhau cịn cĩ thể cĩ một vài qui định khác nhau Thí dụ, một số quốc gia qui định khách khơng được cho nhân viên tiền thưởng, trong khi một số quốc gia lại qui định tiền thưởng là bắt buộc và coi như đĩ là khoản thu nhập tính trong thu nhập của nhân viên Từ đĩ thấy rằng các hĩa đơn của mỗi quốc gia lại cĩ thể cĩ những khoản mục khác nhau Tuy nhiên, những khác biệt này là khơng lớn và do đĩ ta vẫn cĩ thể tái sử dụng từng phần Mỗi kiến trúc ứng dụng cĩ thể cài đặt lại với một vài thay đổi Hầu hết, trong một quốc gia thì gần như khơng cĩ sự thay đổi nhiều
Với mỗi phần mềm, kiến trúc sư cĩ thể sử dụng các kiến trúc ứng dụng theo nhiều phương cách khác nhau:
1 Tại pha đầu tiên, khi chưa hiểu rõ lĩnh vực ứng dụng bạn cần xuất phát
từ một mẫu chung nhất Dĩ nhiên là sau đĩ ta vẫn cần xác định các đặc thù cụ
thể Dù sao thì bước khởi đầu như vậy là rất cần thiết
2 Lập một bảng kiểm mục So sánh với kiến trúc khởi thuỷ, mục nào là phù
hợp, mục nào chưa
3 Tổ chức cơng việc cho nhĩm phát triển Thực thi song song triển khai
kiến trúc cho từng cấu phần
4 Lựa chọn các cấu phần tái sử dụng So sánh với kiến trúc đã chọn Cần
hiểu rõ cấu phần bạn chọn đáp ứng yêu cầu hệ thống ở mức độ nào
5 Lập bảng từ vựng: Trao đổi về các đặc thù hoặc đối sánh Cần vận dụng
các quan niệm dã mơ tả trong thiết kế khởi thuỷ
Bạn đọc cĩ thể tham khảo thêm các trang Web sau đây:
http://www.SoftwareEngineering-9.com/Web/Architecture/ArchPatterns/ http://www.SoftwareEngineering-9.com/Web/Architecture/AppArch/
2.4 Tĩm tắt
Sưu tầm, phân loại, cải biến và trao đổi các mẫu kiến trúc hệ thống phần mềm sẽ trợ giúp đắc lực cho nhĩm phát triển
Các mẫu kiến trúc phổ biến: