Thiết kế phần mềm

Giới thiệu

Kh&#x
E1;i niệm thiết kế được định nghĩa theo 2 c&#x
E1;ch sau:

Thiết kế l&#x
E0; quy tr&#x
EC;nh định nghĩa ra kiến tr&#x
FA;c, th&#x
E0;nh phần, interfaces v&#x
E0; c&#x
E1;c thuộc t&#x
ED;nh kh&#x
E1;c của một hệ thống hoặc một th&#x
E0;nh phần. Vào quy tr&#x
EC;nh n&#x
E0;y, y&#x
EA;u cầu phần mềm được ph&#x
E2;n t&#x
ED;ch để đưa ra một cấu tr&#x
FA;c của phần mềm l&#x
E0;m cơ sở để l&#x
E0;m ra phần mềm. Thiết kế l&#x
E0; kết quả của một qu&#x
E1; tr&#x
EC;nh. N&#x
F3; m&#x
F4; tả kiến tr&#x
FA;c của một phần mềm như l&#x
E0; phần mềm được ph&#x
E2;n r&#x
E3; v&#x
E0; tổ chức như thế n&#x
E0;o trong c&#x
E1;c th&#x
E0;nh phần v&#x
E0; c&#x
E1;c interfaces giữa c&#x
E1;c th&#x
E0;nh phần như thế n&#x
E0;o. N&#x
F3; cũng c&#x
F3; thể m&#x
F4; tả c&#x
E1;c th&#x
E0;nh phần ở mức đưa ra tiết mang lại ph&#x
E9;p c&#x
F3; thể x&#x
E2;y dựng được phần mềm.

Bạn đang xem: Thiết kế phần mềm là gì

Thiết kế phần mềm đ&#x
F3;ng vai tr&#x
F2; quan lại trọng: trong suốt qu&#x
E1; tr&#x
EC;nh thiết kế, những kỹ sư phần mềm sẽ đề xuất c&#x
E1;c m&#x
F4; h&#x
EC;nh tạo th&#x
E0;nh loại kế hoạch đưa ra tiết mang lại giải ph&#x
E1;p để c&#x
F3; thể thực hiện được. Ch&#x
FA;ng ta c&#x
F3; thể ph&#x
E2;n t&#x
ED;nh v&#x
E0; đ&#x
E1;nh gi&#x
E1; những m&#x
F4; h&#x
EC;nh n&#x
E0;y c&#x
F3; tuyệt kh&#x
F4;ng ph&#x
F9; hợp với những y&#x
EA;u cầu kh&#x
E1;c nhau. Ch&#x
FA;ng ta c&#x
F3; thể sử dụng kiểm tra v&#x
E0; thẩm định ráng thế những giải ph&#x
E1;p v&#x
E0; những đ&#x
E1;nh đổi (tradeoffs). Cuối c&#x
F9;ng ch&#x
FA;ng ta sử dụng những m&#x
F4; h&#x
EC;nh kết quả để l&#x
EA;n kế hoạch c&#x
E1;c hoạt động ph&#x
E1;t triển tiếp theo như l&#x
E0;: thẩm định v&#x
E0; kiểm thử hệ thống, th&#x
EA;m v&#x
E0;o đ&#x
F3; sử dụng ch&#x
FA;ng như l&#x
E0; đầu v&#x
E0;o tốt l&#x
E0; điểm bắt đầu của x&#x
E2;y dựng v&#x
E0; kiểm thử phần mềm.

Trong danh s&#x
E1;ch chuẩn của v&#x
F2;ng đời ph&#x
E1;t triển phần mềm như ISO/IEC/IEEE Software Life Cycle Process, thiết kế phần mềm bao gồm 2 hoạt động tương ứng với ph&#x
E2;n t&#x
ED;ch y&#x
EA;u cầu phần mềm v&#x
E0; x&#x
E2;y dựng phần mềm:

Thiết kế kiến tr&#x
FA;c
(c&#x
F2;n được gọi l&#x
E0; thiết kế mức cao): l&#x
E0; ph&#x
E1;t triển mức kiến tr&#x
FA;c cao nhất v&#x
E0; đưa ra c&#x
E1;ch tổ chức phần mềm v&#x
E0; chỉ ra c&#x
E1;c th&#x
E0;nh phần kh&#x
E1;c nhau vào phần mềm

Thiết kế đưa ra tiết: chỉ ra đưa ra tiết v&#x
E0; đầy đủ về th&#x
E0;nh phần tạo điều kiện x&#x
E2;y dựng phần mềm trong pha sau đ&#x
F3;

Đầu ra của thiết kế phần mềm sẽ được sử dụng mang đến qu&#x
E1; tr&#x
EC;nh x&#x
E2;y dựng v&#x
E0; kiểm thử n&#x
EA;n việc đ&#x
E1;nh gi&#x
E1; một thiết kế c&#x
F3; ph&#x
F9; hợp tuyệt kh&#x
F4;ng rất quan tiền trọng, nếu một thiết kế sai sẽ dẫn đến tất cả c&#x
E1;c qu&#x
E1; tr&#x
EC;nh sau đ&#x
F3; cũng sai v&#x
E0; cần phải chỉnh sửa nếu thiết kế được chỉnh sửa.

1. Nguy&#x
EA;n tắc thiết kế phần mềm cơ bản

Phần n&#x
E0;y đưa ra kh&#x
E1;i niệm, quan niệm v&#x
E0; thuật ngữ h&#x
EC;nh th&#x
E0;nh nền tảng cơ bản để hiểu biết về vai tr&#x
F2; v&#x
E0; phạm vi của thiết kế phần mềm

1.1 Kh&#x
E1;i niệm thiết kế chung

Theo nghĩa chung, thiết kế c&#x
F3; thể được coi như l&#x
E0; một h&#x
EC;nh thức giải quyết vấn đề. Thiết kế l&#x
E0; một qu&#x
E1; tr&#x
EC;nh &#x
E1;p dụng nhiều kỹ thuật v&#x
E0; c&#x
E1;c nguy&#x
EA;n l&#x
FD; để tạo ra m&#x
F4; h&#x
EC;nh của một thiết bị, một tiến tr&#x
EC;nh tốt một hệ thống đủ bỏ ra tiết m&#x
E0; theo đ&#x
F3; c&#x
F3; thể chế tạo ra sản phẩm vật l&#x
FD; tương ứng với n&#x
F3;. Mục ti&#x
EA;u thiết kế l&#x
E0; để tạo ra một m&#x
F4; h&#x
EC;nh biểu diễn của một thực thể m&#x
E0; sau n&#x
E0;y sẽ được x&#x
E2;y dựng

1.2 Bối cảnh của thiết kế phần mềm

Thiết kế phần mềm l&#x
E0; một phần quan lại trọng của quy tr&#x
EC;nh ph&#x
E1;t triển phần mềm. Để hiểu vai tr&#x
F2; của thiết kế phần mềm, ch&#x
FA;ng ta c&#x
F3; thể nh&#x
EC;n v&#x
E0; v&#x
F2;ng đời ph&#x
E1;t triển phần mềm để thấy n&#x
F3; l&#x
E0; một th&#x
E0;nh phần gắn với v&#x
F2;ng đời n&#x
E0;y.

1.3 Quy tr&#x
EC;nh thiết kế phần mềm

Thiết kế phần thường được coi như l&#x
E0; một quy tr&#x
EC;nh 2 bước:

Thiết kế kiến tr&#x
FA;c (cũng được xem như l&#x
E0; thiết kế mức cao high- màn chơi design or top- màn chơi design) m&#x
F4; tả phầm mềm được tổ chức th&#x
E0;nh c&#x
E1;c th&#x
E0;nh phần như thế n&#x
E0;o

Thiết kế bỏ ra tiết m&#x
F4; tả h&#x
E0;nh động mong mỏi muốn của những th&#x
E0;nh phần

Đầu ra của 2 quy tr&#x
EC;nh n&#x
E0;y l&#x
E0; tập m&#x
F4; h&#x
EC;nh v&#x
E0; t&#x
E0;i liệu ghi lại những những quyết định quan trọng đ&#x
E3; được thực hiện c&#x
F9;ng lời giải th&#x
ED;ch cho mỗi l&#x
FD; do. Bằng c&#x
E1;ch ghi lại c&#x
E1;c l&#x
FD; vị đ&#x
F3; c&#x
F4;ng việc bảo tr&#x
EC; d&#x
E0;i hạn của phần mềm được n&#x
E2;ng cao

1.4 Nguy&#x
EA;n tắc thiết kế phần mềm

Nguy&#x
EA;n tắc
l&#x
E0; “một giả định, gi&#x
E1;o l&#x
FD; hoặc luật căn bản v&#x
E0; to&#x
E0;n diện”. Nguy&#x
EA;n tắc thiết kế phần mềm
l&#x
E0; quan tiền niệm ch&#x
ED;nh cung cấp kiến thức cơ bản mang lại kh&#x
E1;i niệm v&#x
E0; hướng tiếp cận thiết kế phần mềm kh&#x
E1;c nhau. Nguy&#x
EA;n tắc thiết kế phần mềm bao gồm: trừu tượng h&#x
F3;a (abstraction); gh&#x
E9;p nối v&#x
E0; li&#x
EA;n kết (coupling and conhesion); ph&#x
E2;n r&#x
E3; v&#x
E0; modul h&#x
F3;a (decomposition và modularization); đ&#x
F3;ng g&#x
F3;i/ẩn th&#x
F4;ng tin (encapsulation/information hiding); t&#x
E1;ch giao diện v&#x
E0; thực hiện (separation of interface và implementation); đầy đủ, to&#x
E0;n vẹn v&#x
E0; nguy&#x
EA;n thủy (sufficiency, completeness, & primitiveness); v&#x
E0; t&#x
E1;ch mối quan lại t&#x
E2;m (separation of cencerns)

Abstraction: l&#x
E0; một c&#x
E1;ch nh&#x
EC;n của một đối tượng m&#x
E0; tập trung v&#x
E0;o th&#x
F4;ng tin li&#x
EA;n quan để cụ thể h&#x
F3;a mục đ&#x
ED;ch v&#x
E0; tr&#x
E1;nh bỏ x&#x
F3;t th&#x
F4;ng tin”. Vào bối cảnh của thiết kế phần mềm, 2 cơ chế trừu tượng h&#x
F3;a ch&#x
EC;a kh&#x
F3;a l&#x
E0; tham số h&#x
F3;a v&#x
E0; cụ thể h&#x
F3;a. Trừu tượng bởi tham số h&#x
F3;a trừu tượng đến từ biểu diễn dữ liệu chi tiết bởi biểu diễn dữ liệu như t&#x
EA;n những tham số. Trừu tượng h&#x
F3;a bởi cụ thể h&#x
F3;a dẫn đến 3 loại trừu tượng: trừu tượng thủ tục, trừu tượng dữ liệu v&#x
E0; trừu tượng điều khiển (trừu tượng tương t&#x
E1;c lẫn nhau)

Trừu tượng thủ tục (trừu tượng h&#x
E0;m) cung cấp cơ chế để trừu tượng những thủ tục dễ định nghĩa hoặc những thao t&#x
E1;c th&#x
E0;nh những thực thể. Trưu tượng thủ tục đ&#x
E3; được &#x
E1;p dụng rộng r&#x
E3;i v&#x
E0; c&#x
E1;c ng&#x
F4;n ngữ lập tr&#x
EC;nh hầu như tất cả đều cung cấp hỗ trợ kh&#x
E1;i niệm n&#x
E0;y (v&#x
ED; dụ pascal, java,...)Trừu tượng dữ liệu: đ&#x
E2;y l&#x
E0; nguy&#x
EA;n tắc ch&#x
ED;nh trong hướng đối tượng. Trong kiểu trừu tượng n&#x
E0;y, cầm v&#x
EC; chỉ tập trung v&#x
E0;o thao t&#x
E1;c, ch&#x
FA;ng ta tập trung v&#x
E0; dữ liệu đầu ti&#x
EA;n v&#x
E0; sau đ&#x
F3; những thao t&#x
E1;c t&#x
E1;c động l&#x
EA;n dữ liệu. Một v&#x
ED; dụ đơn giản l&#x
E0; queue data v&#x
E0; những thao t&#x
E1;c li&#x
EA;n quan liêu như add() & delete(). Trong trừu tượng h&#x
F3;a thủ tục, thao t&#x
E1;c showroom v&#x
E0; delete chỉ l&#x
E0; ri&#x
EA;ng biệt kh&#x
F4;ng c&#x
F3; quan lại hệ với dữ liệu. Điểm mạnh của trừu tượng h&#x
F3;a dữ liệu so với trừu tượng h&#x
F3;a thủ tục l&#x
E0; dữ liệu v&#x
E0; c&#x
E1;c thao t&#x
E1;c li&#x
EA;n quan được đưa ra v&#x
EC; vậy rất dễ để sửa code khi dữ liệu ráng đổi.Trừu tượng điều khiển li&#x
EA;n quan liêu để sử dụng c&#x
E1;c chương tr&#x
EC;nh bé v&#x
E0; li&#x
EA;n quan đến luồng điều khiển.

Coupling và Conhesion: Gh&#x
E9;p nối l&#x
E0; một độ đo của độ phụ thuộc lẫn nhau giữa c&#x
E1;c module trong chương tr&#x
EC;nh m&#x
E1;y t&#x
ED;nh, trong những khi đ&#x
F3; li&#x
EA;n kết l&#x
E0; độ đo độ mạnh của mối li&#x
EA;n kết giữa c&#x
E1;c phần tử trong một module.

Ph&#x
E2;n r&#x
E3; h&#x
F3;a v&#x
E0; module h&#x
F3;a
: Ph&#x
E2;n r&#x
E3; h&#x
F3;a v&#x
E0; modul h&#x
F3;a nghĩa l&#x
E0; phần mềm lớn được chia th&#x
E0;nh một số th&#x
E0;nh phần định danh (dễ định nghĩa interface) m&#x
E0; m&#x
F4; tả tương t&#x
E1;c giữa c&#x
E1;c th&#x
E0;nh phần. Th&#x
F4;ng thường mục ti&#x
EA;u l&#x
E0; nỗ lực thế những chức năng v&#x
E0; tr&#x
E1;ch nhiệm vào những th&#x
E0;nh phần kh&#x
E1;c nhau.

Đ&#x
F3;ng g&#x
F3;i v&#x
E0; ẩn th&#x
F4;ng tin
: nghĩa l&#x
E0; nh&#x
F3;m v&#x
E0; đ&#x
F3;ng g&#x
F3;i đưa ra tiết b&#x
EA;n trong của một trừu tượng v&#x
E0; l&#x
E0;m mang đến những bỏ ra tiết kh&#x
F4;ng thể được tầm nã cập từ b&#x
EA;n ngo&#x
E0;i

T&#x
E1;ch giao diện v&#x
E0; thực hiện
li&#x
EA;n quan liêu đến việc x&#x
E1;c định mọt th&#x
E0;nh phần bằng c&#x
E1;ch x&#x
E1;c định một giao diện public (được biết đến như l&#x
E0; client) m&#x
E0; l&#x
E0; t&#x
E1;ch từ chi tiết của th&#x
E0;nh phần được hiện thực h&#x
F3;a như thế n&#x
E0;o.

T&#x
ED;nh đầy đủ, to&#x
E0;n vẹn v&#x
E0; nguy&#x
EA;n thủy
: mục ti&#x
EA;u của t&#x
ED;nh đầy đủ, to&#x
E0;n vẹn v&#x
E0; nguy&#x
EA;n thủy nghĩa l&#x
E0; chắc rằng một th&#x
E0;nh phần chỉ tương ứng với những đặc điểm quan liêu trọng của một trừu tượng. Nguy&#x
EA;n thủy nghĩa l&#x
E0; thiết kế n&#x
EA;n được dựa tr&#x
EA;n m&#x
F4; h&#x
EC;nh dễ thực hiện

T&#x
E1;ch mối quan tiền t&#x
E2;m
. Một mối quan tiền t&#x
E2;m l&#x
E0; một “khu vực quan tiền t&#x
E2;m với sự li&#x
EA;n quan liêu đến thiết kế phần mềm”. Một mối quan lại t&#x
E2;m thiết kế l&#x
E0; một lĩnh vực của thiết kế m&#x
E0; li&#x
EA;n quan tiền đến một xuất xắc nhiều c&#x
E1;c b&#x
EA;n li&#x
EA;n quan tiền (stakeholders). Mỗi kiến tr&#x
FA;c nh&#x
EC;n một hay nhiều form nh&#x
EC;n quan lại t&#x
E2;m. T&#x
E1;ch mối quan tiền t&#x
E2;m bởi những form nh&#x
EC;n mang lại ph&#x
E9;p quan tiền t&#x
E2;m c&#x
E1;c b&#x
EA;n li&#x
EA;n quan lại (stakeholders) tập trung v&#x
E0;o một việc tại một thời điểm v&#x
E0; y&#x
EA;u cầu v&#x
E0; cung cấp một phương tiện quản l&#x
FD; phức tạp.

2. Những vấn đề ch&#x
ED;nh trong thiết kế kiến tr&#x
FA;c phần mềm

Một số vấn đề quan tiền trọng phải được xử l&#x
FD; trong những lúc thiết kế phần mềm. Đặc biệt l&#x
E0; những lo ngại về chất lượng phần mềm m&#x
E0; c&#x
F3; thể kể đến như: hiệu suất, bảo mật, độ tin cậy, khả năng sử dụng, vv... Một số vấn đề quan tiền trọng kh&#x
E1;c l&#x
E0; l&#x
E0;m thế n&#x
E0;o để ph&#x
E2;n r&#x
E3;, tổ chức v&#x
E0; đ&#x
F3;ng g&#x
F3;i những th&#x
E0;nh phần phần mềm. Đ&#x
E2;y l&#x
E0; nguy&#x
EA;n tắc cơ bản m&#x
E0; tất c&#x
E1;c c&#x
E1;c phương ph&#x
E1;p thiết phải giải quyết n&#x
F3; bằng c&#x
E1;ch n&#x
E0;y tốt c&#x
E1;ch kh&#x
E1;c. Ngược lại, những vấn đề “li&#x
EA;n quan tiền đến c&#x
E1;c kh&#x
ED;a cạnh của c&#x
E1;c h&#x
E0;nh vi phần mềm m&#x
E0; lại kh&#x
F4;ng nằm trong miền ứng dụng m&#x
E0; nằm ở c&#x
E1;c miền kh&#x
E1;c c&#x
F3; li&#x
EA;n quan” Những vấn đề đ&#x
F3; thường xuy&#x
EA;n chồng ch&#x
E9;o với c&#x
E1;c chức năng của hệ thống v&#x
E0; được gọi những kh&#x
ED;a cạnh m&#x
E0; đa phần kh&#x
F4;ng phải l&#x
E0; đơn vị ph&#x
E2;n r&#x
E3; của phần mềm m&#x
E0; l&#x
E0; thuộc t&#x
ED;nh ảnh hưởng đến hiệu suất hoặc ngữ nghĩa của c&#x
E1;c th&#x
E0;nh phần một c&#x
E1;ch c&#x
F3; hệ thống.

2.1 Đồng thời (concurrency)

Đồng thời l&#x
E0; nhiều việc xảy ra tại c&#x
F9;ng một thời điểm. Thiết kế để c&#x
F3; t&#x
ED;nh đồng thời c&#x
F3; li&#x
EA;n quan tiền đến ph&#x
E2;n r&#x
E3; phần mềm th&#x
E0;nh quy tr&#x
EC;nh, nhiệm vụ, qu&#x
E1; tr&#x
EC;nh v&#x
E0; đối ph&#x
F3; với c&#x
E1;c vấn đề li&#x
EA;n quan liêu đến t&#x
ED;nh hiệu quả, t&#x
ED;nh nguy&#x
EA;n tố, đồng bộ h&#x
F3;a v&#x
E0; lập kế hoạch. Thiết kế n&#x
E0;y đảm bảo dễ ph&#x
E2;n phân chia c&#x
F4;ng việc cũng như c&#x
F3; thể ho&#x
E0;n th&#x
E0;nh c&#x
F4;ng việc trong thời gian ngắn nhất.

2.2 Điều khiển v&#x
E0; xử l&#x
FD; c&#x
E1;c sự kiện

Vấn đề thiết kế n&#x
E0;y li&#x
EA;n qu&#x
E1;n tới l&#x
E0;m thế n&#x
E0;o tổ chức dữ liệu v&#x
E0; d&#x
F2;ng dữ liệu cũng như l&#x
E0;m thế n&#x
E0;o để xử l&#x
FD; c&#x
E1;c sự kiện tạm thời v&#x
E0; phản xạ qua c&#x
E1;c cơ chế lời gọi ngầm v&#x
E0; gọi lại.

2.3 Dữ liệu bền vững (data persistence)

Vấn đề của thiết kế n&#x
E0;y li&#x
EA;n quan tới l&#x
E0;m thế n&#x
E0;o để xử l&#x
FD; dữ liệu tồn tại l&#x
E2;u d&#x
E0;i

2.4 Ph&#x
E2;n phối c&#x
E1;c th&#x
E0;nh phần

Vấn đề của thiết kế n&#x
E0;y li&#x
EA;n quan lại đến l&#x
E0;m thế n&#x
E0;o để ph&#x
E2;n phối c&#x
E1;c phần mềm tr&#x
EA;n phần cứng ( bao gồm phần cứng m&#x
E1;y t&#x
ED;nh v&#x
E0; phần cứng mạng), l&#x
E0;m thế n&#x
E0;o c&#x
E1;c th&#x
E0;nh phần giao tiếp được với nhau, v&#x
E0; l&#x
E0;m thế n&#x
E0;o tầng giữa c&#x
F3; thể được sử dụng để đối ph&#x
F3; với kh&#x
F4;ng tương th&#x
ED;ch phần mềm.

2.5 Lỗi v&#x
E0; xử l&#x
FD; ngoại lệ v&#x
E0; lỗi dung nạp (error & exception handling & fault tolerance)

Vấn đề của thiết kế n&#x
E0;y li&#x
EA;n quan tiền đến l&#x
E0;m thế n&#x
E0;o để ph&#x
F2;ng chống, chịu đựng v&#x
E0; c&#x
E1;c xử l&#x
FD; lỗi v&#x
E0; đối ph&#x
F3; với c&#x
E1;c điều kiện ngoại lệ

2.6 Tương t&#x
E1;c v&#x
E0; tr&#x
EC;nh b&#x
E0;y (Interaction và presentation)

Vấn đề thiết kế n&#x
E0;y li&#x
EA;n quan tiền tới l&#x
E0;m thế n&#x
E0;o để cấu tr&#x
FA;c v&#x
E0; tổ chức tương t&#x
E1;c với những người d&#x
F9;ng v&#x
E0; biểu diễn th&#x
F4;ng tin ( v&#x
ED; dụ, chia giao diện v&#x
E0; form nh&#x
EC;n xúc tích và ngắn gọn sử dụng hướng tiếp cận MVC)

Ch&#x
FA; &#x
FD; rằng chủ đề n&#x
E0;y kh&#x
F4;ng chỉ đưa ra tiết giao diện người d&#x
F9;ng, đ&#x
F3; l&#x
E0; nhiệm vụ của thiết kế giao diện người d&#x
F9;ng

2.7 Bảo mật (sercurity)

Thiết kế đến bảo mật li&#x
EA;n quan liêu đến l&#x
E0;m thế n&#x
E0;o để ngăn chặn tiết lộ tr&#x
E1;i ph&#x
E9;p, s&#x
E1;ng tạo, thay đổi, x&#x
F3;a, hoặc từ chối truy hỏi cập đến th&#x
F4;ng tin từ c&#x
E1;c nguồn kh&#x
E1;c. N&#x
F3; cũng quan tiền t&#x
E2;m l&#x
E0;m thế n&#x
E0;o để chịu được c&#x
E1;c cuộc tấn c&#x
F4;ng bảo mật hoặc sự x&#x
E2;m phạm bởi hạn chế thiệt hại, tiếp tục dịch vụ, tốc độ sửa chữa v&#x
E0; phục hồi, v&#x
E0; thất bại v&#x
E0; phục hồi an to&#x
E0;n. Kiểm so&#x
E1;t tróc nã cập l&#x
E0; một kh&#x
E1;i niệm bình yên cơ bản v&#x
E0; ta cũng n&#x
EA;n đảm bảo sử dụng đ&#x
FA;ng mật m&#x
E3;

3. Kiến tr&#x
FA;c v&#x
E0; cấu tr&#x
FA;c phần mềm

Một kiến tr&#x
FA;c phần mềm
l&#x
E0; “tập hợp c&#x
E1;c cấu tr&#x
FA;c cần thiết để suy luận về hệ thống, trong đ&#x
F3; bao gồm c&#x
E1;c yếu tố phần mềm, mối quan lại hệ giữa ch&#x
FA;ng v&#x
E0; đặc t&#x
ED;nh của cả hai. Vào suốt những năm 1990, kiến tr&#x
FA;c phần mềm bắt đầu nổi l&#x
EA;n như một ng&#x
E0;nh học rộng li&#x
EA;n quan đến việc nghi&#x
EA;n cứu c&#x
E1;c cấu tr&#x
FA;c phần mềm v&#x
E0; kiến tr&#x
FA;c theo một c&#x
E1;ch chung. Điều đ&#x
F3; dẫn đến một số kh&#x
E1;i niệm th&#x
FA; vị về thiết kế phần mềm ở những mức độ kh&#x
E1;c nhau của trừu tượng h&#x
F3;a. Mội số kh&#x
E1;i niệm c&#x
F3; thể hữu &#x
ED;ch vào việc thiết kế kiến tr&#x
FA;c ( v&#x
ED; dụ phong c&#x
E1;ch kiến tr&#x
FA;c) cũng như trong suốt qu&#x
E1; tr&#x
EC;nh thiết kế đưa ra tiết (v&#x
ED; dụ kiến thiết pattern). Những kh&#x
E1;i niệm thiết kế n&#x
E0;y cũng được sử dụng để thiết kế những chương tr&#x
EC;nh tương tự.

3.1 Cấu tr&#x
FA;c v&#x
E0; g&#x
F3;c nh&#x
EC;n

Kh&#x
ED;a cạnh mức cao kh&#x
E1;c nhau của thiết kế phần mềm c&#x
F3; thể được m&#x
F4; tả v&#x
E0; t&#x
E0;i liệu h&#x
F3;a. Những kh&#x
ED;a cạnh n&#x
E0;y thường được gọi l&#x
E0; c&#x
E1;c g&#x
F3;c nh&#x
EC;n “Một g&#x
F3;c nh&#x
EC;n biểu diễn một phần kh&#x
ED;a cạch của kiến tr&#x
FA;c phần mềm m&#x
E0; biểu diễn cụ thể ch&#x
ED;nh x&#x
E1;c của hệ thống phần mềm”. C&#x
E1;c g&#x
F3;c nh&#x
EC;n th&#x
ED;ch hợp với những vấn đề kh&#x
E1;c nhau li&#x
EA;n quan tiền đến phần mềm – v&#x
ED; dụ, g&#x
F3;c nh&#x
EC;n súc tích (đ&#x
E1;p ứng c&#x
E1;c y&#x
EA;u cầu chức năng) với g&#x
F3;c nh&#x
EC;n tiến tr&#x
EC;nh (vấn đề đồng thời) với g&#x
F3;c nh&#x
EC;n vật l&#x
FD; (vấn đề ph&#x
E2;n phối) với g&#x
F3;c nh&#x
EC;n ph&#x
E1;t triển (l&#x
E0;m thế n&#x
E0;o để thiết kế được break down th&#x
E0;nh c&#x
E1;c th&#x
E0;nh phần đơn vị với đại diện r&#x
F5; r&#x
E0;ng của sự phụ thuộc giữa c&#x
E1;c đơn vị). Nhiều t&#x
E1;c giả sử dụng những thuật ngữ kh&#x
E1;c nhau- như h&#x
E0;nh vi, chức năng, cấu tr&#x
FA;c, g&#x
F3;c nh&#x
EC;n m&#x
F4; h&#x
EC;nh dữ liệu. T&#x
F3;m lại, thiết kế phần mềm l&#x
E0; một sản phẩm nhiều g&#x
F3;c nh&#x
EC;n được tạo bởi quy tr&#x
EC;nh thiết kế v&#x
E0; quan lại điểm độc lập tương đối v&#x
E0; trực giao.

3.2 Kiểu kiến tr&#x
FA;c

Kiểu kiến tr&#x
FA;c
l&#x
E0; một chuy&#x
EA;n m&#x
F4;n h&#x
F3;a của phần tử v&#x
E0; c&#x
E1;c loại li&#x
EA;n quan, c&#x
F9;ng với một bộ những hạn chế về c&#x
E1;ch n&#x
F3; c&#x
F3; thể được sử dụng. M&#x
F4;t v&#x
E0;i t&#x
E1;c giải chỉ ra một số kiểu kiến tr&#x
FA;c ch&#x
ED;nh như sau:

Kiến tr&#x
FA;c thường (v&#x
ED; dụ, ph&#x
E2;n t&#x
E2;ng, pipes và filter, blackboard)

C&#x
E1;c hệ thống ph&#x
E2;n t&#x
E1;n (v&#x
ED; dụ client- server, three- tiers, broker)

C&#x
E1;c hệ thống tương t&#x
E1;c (v&#x
ED; dụ, MVC, Presentation- Abstraction- Control, WPF)

C&#x
E1;c hệ thống m&#x
F4; phỏng (v&#x
ED; dụ, microkernel, reflection)

C&#x
E1;c kiểu kh&#x
E1;c (v&#x
ED; dụ, batch, interperters, process control, rule- based)

3.3 Mẫu thiết kế (Design Patterns)

Mẫu l&#x
E0; một giải ph&#x
E1;p phổ biến để giải quyết c&#x
E1;c vấn đề phồ biến vào ngữ cảnh đưa ra. Trong những lúc kiểu kiến tr&#x
FA;c c&#x
F3; thể được nh&#x
EC;n như mẫu m&#x
F4; tả tổ chức mức cao của phần mềm, mẫu thiết kế c&#x
F3; thể sử dụng m&#x
F4; tả cụ thể ở mức thấp. Những mẫu thiết kế mức thấp bao gồm:

Mẫu tạo (v&#x
ED; dụ, builder, factory, prototype, singleton)

Mẫu cấu tr&#x
FA;c (v&#x
ED; dụ, adapter, bridge, composite, decorator, fa&#x
E7;ade, fly- weight, proxy)

Mẫu h&#x
E0;nh vi (v&#x
ED; dụ, command, interperter, iterator, mediator, memento, observer, state, strategy, template, visitor)

3.4 Những quyết định thiết kế kiến tr&#x
FA;c

Thiết kế kiến tr&#x
FA;c l&#x
E0; một qu&#x
E1; tr&#x
EC;nh s&#x
E1;ng tạo. Trong suốt quy tr&#x
EC;nh thiết kế, nh&#x
E0; thiết kế phần mềm phải tạo một số quyết định cơ bản ảnh hưởng s&#x
E2;u sắc tới c&#x
E1;c phần mềm v&#x
E0; quy tr&#x
EC;nh ph&#x
E1;t triển phần mềm. N&#x
EA;n nghĩ rằng thiết kế kiến tr&#x
FA;c tạo th&#x
E0;nh từ quan lại điểm quyết định hơn l&#x
E0; quan điểm hoạt động. Th&#x
F4;ng thường, t&#x
E1;c động v&#x
E0;o chất lượng thuộc t&#x
ED;nh v&#x
E0; ho&#x
E1;n đổi giữa c&#x
E1;c thuộc t&#x
ED;nh cạnh trạnh l&#x
E0; cơ sở mang lại quyết định thiết kế

3.5 Tương tự giữa chương tr&#x
EC;nh v&#x
E0; framework

Một c&#x
E1;ch tiếp cận cung cấp mang đến việc sử dụng lại thiết kế phần mềm v&#x
E0; th&#x
E0;nh phần l&#x
E0; sử dụng những chương tr&#x
EC;nh tương tự. Điều n&#x
E0;y c&#x
F3; thể thực hiện bằng x&#x
E1;c định sự tương đồng giữa c&#x
E1;c phần mềm bằng c&#x
E1;ch thiết kế c&#x
E1;c th&#x
E0;nh phần t&#x
E1;i sử dụng v&#x
E0; t&#x
F9;y v&#x
E0;o sự kh&#x
E1;c nhau giữa c&#x
E1;c phần mềm. Vào lập tr&#x
EC;nh hướng đối tượng, một kh&#x
E1;i niệm ch&#x
EC;a kh&#x
F3;a c&#x
F3; li&#x
EA;n quan liêu đến form l&#x
E0; một khung: một phần hệ thống phần mềm ho&#x
E0;n to&#x
E0;n c&#x
F3; thể được mở rộng bằng c&#x
E1;ch c&#x
E0;i đặt c&#x
E1;c c&#x
F4;ng cụ th&#x
ED;ch hợp

4. Thiết kế giao diện người d&#x
F9;ng

Thiết kế giao diện người d&#x
F9;ng l&#x
E0; một phần quan lại trọng qu&#x
E1; tr&#x
EC;nh thiết kế phần mềm. Thiết kế giao diện v&#x
E0; xử l&#x
FD; tương t&#x
E1;c với người sử dụng l&#x
E0; một yếu tố quan trọng trong việc sử dụng phần mềm. Người thiết kế phải l&#x
E0;m sao để ph&#x
F9; hợp với kĩ năng, khiếp nghiệm v&#x
E0; ý muốn đợi từ ph&#x
ED;a người sử dụng phần mềm.

4.1: Nguy&#x
EA;n tắc cơ bản trong thiết kế giao diện

Dễ học: Phần mềm cần phải dễ học c&#x
E1;ch sử dụng, vì đ&#x
F3; người d&#x
F9;ng c&#x
F3; thể cấp tốc ch&#x
F3;ng bắt đầu l&#x
E0;m việc sử dụng phần mềm đ&#x
F3;Quen thuộc với người sử dụng: Giao diện n&#x
EA;n d&#x
F9;ng c&#x
E1;c thuật ngữ v&#x
E0; kh&#x
E1;i niệm r&#x
FA;t ra từ khiếp nghiệm của những người sẽ d&#x
F9;ng hệ thống nhiều nhấtT&#x
ED;nh nhất qu&#x
E1;n
: giao diện cần nhất qu&#x
E1;n thế nào cho c&#x
E1;c thao t&#x
E1;c gần giống nhau c&#x
F3; thể được k&#x
ED;ch hoạt theo c&#x
F9;ng kiểu.Ngạc nhi&#x
EA;n tối thiểu
: Người d&#x
F9;ng kh&#x
F4;ng bao giờ bị bất ngờ về h&#x
E0;nh vi của hệ thốngKh&#x
F4;i phục được
: Giao diện n&#x
EA;n c&#x
F3; c&#x
E1;c cơ chế đến ph&#x
E9;p người d&#x
F9;ng kh&#x
F4;i phục lại t&#x
EC;nh trạng hoạt động b&#x
EC;nh thường sau thời điểm gặp lỗiHướng dẫn người d&#x
F9;ng
: Giao diện n&#x
EA;n c&#x
F3; phản hồi c&#x
F3; nghĩa khi xảy ra lỗi v&#x
E0; cung cấp c&#x
E1;c tiện &#x
ED;ch trợ gi&#x
FA;p theo ngữ cảnhNgười d&#x
F9;ng đa dạng
: Giao diện n&#x
EA;n cung cấp c&#x
E1;c tiện &#x
ED;ch tương t&#x
E1;c th&#x
ED;ch hợp đến c&#x
E1;c loại người d&#x
F9;ng hệ thống kh&#x
E1;c nhau

4.2: Vấn đề vào thiết kế giao diện

Hai vấn đề cần coi x&#x
E9;t:

Người d&#x
F9;ng cung cấp th&#x
F4;ng tin mang đến hệ thống bằng c&#x
E1;ch n&#x
E0;o?
Hệ thống n&#x
EA;n tr&#x
EC;nh b&#x
E0;y th&#x
F4;ng tin (output) cho người d&#x
F9;ng như thế n&#x
E0;o?

4.3: C&#x
E1;c kiểu tương t&#x
E1;c

C&#x
E1;c kiểu tương t&#x
E1;c phổ biến:

Thao t&#x
E1;c trực tiếp
– Direct manipulationChọn lựa bằng menu – thực đơn selectionĐiền form – khung fill-inD&#x
F2;ng lệnh
– Command languageNg&#x
F4;n ngữ tự nhi&#x
EA;n
– Natural languageKiểu tương t&#x
E1;cƯu điểm ch&#x
ED;nh
Nhược điểm ch&#x
ED;nh
V&#x
ED; dụ
Thao t&#x
E1;c trực tiếp
Tương t&#x
E1;c trực quan, nhanh ch&#x
F3;ng v&#x
E0; dễ hiểu
C&#x
F3; thể kh&#x
F3; c&#x
E0;i đặt. Chỉ th&#x
ED;ch hợp lúc c&#x
F3; ẩn dụ h&#x
EC;nh ảnh đến c&#x
E1;c t&#x
E1;c vụ v&#x
E0; đối tượng
Tr&#x
F2; chơi điện tử v&#x
E0; c&#x
E1;c ứng dụng c&#x
F3; drag và drop
Chọn lựa bằng menuTr&#x
E1;nh lỗi mang lại người d&#x
F9;ng, kh&#x
F4;ng phải l&#x
E0;m nhiều thao t&#x
E1;c
Chậm chạp với người sử dụng c&#x
F3; khiếp nghiệm. C&#x
F3; thể phức tạp nếu c&#x
F3; nhiều lựa chọn menu
Đa số c&#x
E1;c hệ thống th&#x
F4;ng dụng
Điền formNhập dữ liệu đơn giản, dễ học, c&#x
F3; thể kiểm tra được
Tốn kh&#x
F4;ng gian hiển thị, rắc rối khi lựa chọn của người d&#x
F9;ng kh&#x
F4;ng khớp với kiểu dữ liệu của form
Đăng k&#x
ED; th&#x
F4;ng tin c&#x
E1; nh&#x
E2;n, khai thuế
D&#x
F2;ng lệnh
Mạnh v&#x
E0; linh động
Kh&#x
F3; học, xử l&#x
FD; lỗi k&#x
E9;m
Terminal, Autocad
Ng&#x
F4;n ngữ tự nhi&#x
EA;n
Đ&#x
E1;p ứng được người d&#x
F9;ng kh&#x
F4;ng chuy&#x
EA;n, dễ mở rộng
Cần g&#x
F5; nhiều, c&#x
E1;c hệ thống hiểu ng&#x
F4;n ngữ tự nhi&#x
EA;n kh&#x
F4;ng đ&#x
E1;ng tin cậy
Trợ l&#x
FD; ảo

4.4: Biểu diễn th&#x
F4;ng tin

Th&#x
F4;ng tin c&#x
F3; thể được tr&#x
EC;nh b&#x
E0;y trực tiếp (v&#x
ED; dụ text vào một tr&#x
EC;nh soạn thảo) hoặc được biến đổi th&#x
E0;nh một dạng biểu diễn kh&#x
E1;c (v&#x
ED; dụ dạng đồ họa)

Model-View-Controller l&#x
E0; c&#x
E1;ch tiếp cận hỗ trợ nhiều kiểu biểu diễn dữ liệu

*

C&#x
F3; 2 loại th&#x
F4;ng tin cần được biểu diễn:

Th&#x
F4;ng tin tĩnh
: Tạo ở l&#x
FA;c bắt đầu v&#x
E0; kh&#x
F4;ng ráng đổi vào phi&#x
EA;n l&#x
E0;m việc.Th&#x
F4;ng tin động
: vậy đổi vào phi&#x
EA;n l&#x
E0;m việc v&#x
E0; phải th&#x
F4;ng b&#x
E1;o đến người sử dụng

C&#x
E1;c kĩ thuật hiển thị lượng lớn th&#x
F4;ng tin:

H&#x
EC;nh ảnh
: c&#x
F3; thể mang lại thấy quan lại hệ giữa c&#x
E1;c thực thể v&#x
E0; c&#x
E1;c xu hướng của dữ liệuM&#x
E0;u sắc
: thường d&#x
F9;ng để highlight c&#x
E1;c th&#x
F4;ng tin đặc biệt

Hướng dẫn về việc sử dụng m&#x
E0;u sắc:

Hạn chế số m&#x
E0;u v&#x
E0; mức độ sặc sỡD&#x
F9;ng sự thế đổi m&#x
E0;u để b&#x
E1;o hiệu nỗ lực đổi trạng th&#x
E1;i hệ thống.D&#x
F9;ng k&#x
ED; hiệu m&#x
E0;u (color coding) để hỗ trợ c&#x
F4;ng việc người d&#x
F9;ng đang cố l&#x
E0;m. Highlight những điểm người d&#x
F9;ng cần ch&#x
FA; &#x
FD;.D&#x
F9;ng k&#x
ED; hiệu m&#x
E0;u một c&#x
E1;ch cẩn trọng v&#x
E0; nhất qu&#x
E1;n
Cẩn thận về hiệu ứng cặp đ&#x
F4;i của m&#x
E0;u sắc. Một số tổ hợp m&#x
E0;u g&#x
E2;y kh&#x
F3; đọc, v&#x
ED; dụ như người ta kh&#x
F4;ng thể c&#x
F9;ng l&#x
FA;c ch&#x
FA; &#x
FD; cả nhì m&#x
E0;u đỏ v&#x
E0; xanh lam

4.5: Quy tr&#x
EC;nh thiết kế giao diện

Thiết kế giao diện l&#x
E0; một quy tr&#x
EC;nh lặp đi lặp lại với sự li&#x
EA;n lạc chặt chẽ giữa người d&#x
F9;ng v&#x
E0; người thiết kế. Bố hoạt động ch&#x
ED;nh trong quy tr&#x
EC;nh:

User analysis: T&#x
EC;m hiểu người d&#x
F9;ng sẽ l&#x
E0;m g&#x
EC; với hệ thống;System prototyping: ph&#x
E1;t triển một loạt c&#x
E1;c bản mẫu để thử nghiệmInterface evaluation: thử nghiệm c&#x
E1;c bản mẫu c&#x
F9;ng với người d&#x
F9;ng

4.6: Quốc tế h&#x
F3;a v&#x
E0; địa phương h&#x
F3;a

Trong qu&#x
E1; tr&#x
EC;nh thiết kế cần phải xem x&#x
E9;t đến việc ng&#x
F4;n ngữ theo chuẩn quốc tế v&#x
E0; chuẩn địa phương. Tức l&#x
E0; giao diện phần mềm c&#x
F3; thể th&#x
ED;ch ứng với sự kh&#x
E1;c nhau về quần thể vực, ng&#x
F4;n ngữ v&#x
E0; y&#x
EA;u cầu kĩ thuật của thị trường.Quốc tế h&#x
F3;a l&#x
E0; qu&#x
E1; tr&#x
EC;nh thiết kế một ứng dụng bao gồm nhiều ng&#x
F4;n ngữ để c&#x
F3; thể th&#x
ED;ch nghi với những khu vực vực kh&#x
F4;ng c&#x
F3; sự vậy đổi quan liêu trọng về quy tr&#x
EC;nh.Địa phương h&#x
F3;a l&#x
E0; sự th&#x
ED;ch ứng của quốc tế h&#x
F3;a với một khu vực hoặc ng&#x
F4;n ngữ cụ thể bằng c&#x
E1;ch th&#x
EA;m v&#x
E0;o c&#x
E1;c th&#x
E0;nh phần của địa phương v&#x
E0; dịch văn bản.C&#x
E1;c yếu tố cần được quan lại t&#x
E2;m như biểu tượng, số, tiền tệ, thời gian v&#x
E0; c&#x
E1;c đơn vị đo lường.

4.7: Biểu tượng v&#x
E0; kh&#x
E1;i niệm thân quen thuộc

Người thiết kế giao diện sử dụng c&#x
E1;c biểu tượng v&#x
E0; kh&#x
E1;i niệm để tạo được sự thân quen thuộc giữa c&#x
E1;c phần mềm với những hệ thống đ&#x
E3; được biết đến tr&#x
EA;n thế giới.Như vậy người d&#x
F9;ng sẽ dễ d&#x
E0;ng hơn vào việc t&#x
EC;m hiểu v&#x
E0; sử dụng giao diện.

V&#x
ED; dụ
: Chức năng x&#x
F3;a tập tin
c&#x
F3; thể gắn v&#x
E0;o biểu tượng th&#x
F9;ng r&#x
E1;c.

Khi thiết kế giao diện, nh&#x
E0; thiết kế kh&#x
F4;ng được sử dụng nhiều hơn một &#x
FD; nghĩa, hay chức năng trong một biểu tượng.Bằng c&#x
E1;ch sử dụng những biểu tượng v&#x
E0; kh&#x
E1;i niệm quen thuộc thuộc, hỗ trợ biểu diễn tốt hơn c&#x
E1;c th&#x
F4;ng tin cần được quốc tế h&#x
F3;a, nhưng cần phải ch&#x
FA; &#x
FD; kh&#x
F4;ng n&#x
EA;n &#x
E1;p dụng theo c&#x
F9;ng một c&#x
E1;ch với tất cả c&#x
E1;c địa phương v&#x
E0; khu vực vực kh&#x
E1;c nhau.

5. Ph&#x
E2;n t&#x
ED;ch v&#x
E0; đ&#x
E1;nh gi&#x
E1; chất lượng thiết kế phần mềm

Phần n&#x
E0;y gồm c&#x
E1;c ph&#x
E2;n t&#x
ED;ch v&#x
E0; đ&#x
E1;nh gi&#x
E1; chất lượng vào thiết kế phần mềm:

Cần thực hiện một số đ&#x
E1;nh gi&#x
E1; UI để đ&#x
E1;nh gi&#x
E1; mức độ th&#x
ED;ch hợpĐ&#x
E1;nh gi&#x
E1; đầy đủ v&#x
E0; to&#x
E0;n bộ th&#x
EC; qu&#x
E1; đắt v&#x
E0; kh&#x
F4;ng thực tế mang lại hầu hết c&#x
E1;c hệ thống
Một giao diện cần được đ&#x
E1;nh gi&#x
E1; theo một đặc tả về t&#x
ED;nh sử dụng.

5.1: C&#x
E1;c thuộc t&#x
ED;nh về t&#x
ED;nh sử dụng

Thuộc t&#x
ED;nh
M&#x
F4; tả
Khả năng họcNgười d&#x
F9;ng mới cần bao l&#x
E2;u để c&#x
F3; thể hoạt động hiệu quả với hệ thống?
Tốc độ vận h&#x
E0;nh
Tốc độ phản ứng của hệ thống c&#x
F3; đ&#x
E1;p ứng tốt c&#x
F4;ng việc của người d&#x
F9;ng?
Chịu lỗiMức độ dung thứ lỗi của hệ thống đối với lỗi người d&#x
F9;ng.
Khả năng kh&#x
F4;i phục
Khả năng hệ thống kh&#x
F4;i phục từ lỗi của người d&#x
F9;ng.
Tương th&#x
ED;ch
Hệ thống gắn b&#x
F3; chặt chẽ với một kiểu l&#x
E0;m việc đến đ&#x
E2;u?

5.2: Kĩ thuật đ&#x
E1;nh gi&#x
E1; v&#x
E0; ph&#x
E2;n t&#x
ED;ch

C&#x
E2;u hỏi điều tra để lấy phản hồi của người d&#x
F9;ng.Quay video clip về việc sử dụng hệ thống rồi sau đ&#x
F3; đ&#x
E1;nh gi&#x
E1; nội dung.C&#x
E0;i c&#x
E1;c đoạn m&#x
E3; thu thập th&#x
F4;ng tin về c&#x
E1;c tiện &#x
ED;ch được sử dụng v&#x
E0; lỗi của người d&#x
F9;ng.Phần mềm c&#x
F3; chức năng thu thập phản hồi trực tuyến của người d&#x
F9;ng.

5.3: Biện ph&#x
E1;p

C&#x
E1;c biện ph&#x
E1;p c&#x
F3; thể được sử dụng để ph&#x
E2;n t&#x
ED;ch v&#x
E0; đ&#x
E1;nh gi&#x
E1; c&#x
E1;c kh&#x
ED;a cạnh kh&#x
E1;c nhau của việc thiết kế phần mềm.V&#x
ED; dụ: cấu tr&#x
FA;c, chất lượng, k&#x
ED;ch thước, hiệu năng, ...

C&#x
E1;c biện ph&#x
E1;p n&#x
E0;y được phân tách th&#x
E0;nh 2 loại:

Chức năng dựa tr&#x
EA;n thiết kế
: Chức năng được x&#x
E2;y dựng bằng c&#x
E1;ch ph&#x
E2;n t&#x
ED;ch c&#x
E1;c giao diện của hệ thống, Thiết kế hướng đối tượng: Sử dụng lớp c&#x
E1;c đối tượng l&#x
E0;m trung t&#x
E2;m, từ đ&#x
F3; x&#x
E2;y dựng ra chức năng v&#x
E0; giao diện6. Quy ước thiết kế phần mềm

Tại sao cần c&#x
F3; quy ước, k&#x
FD; hiệu tầm thường hay tạo c&#x
E1;c m&#x
F4; h&#x
EC;nh vào thiết kế phần mềm?

Truyền tải được nhiều th&#x
F4;ng tin về phần mềm đến mang lại người đọc hơn l&#x
E0; d&#x
F9;ng những dữ liệu th&#x
F4; như văn bản m&#x
F4; tả phần mềm.M&#x
F4; h&#x
EC;nh gi&#x
FA;p ch&#x
FA;ng ta tổ chức, tr&#x
EC;nh b&#x
E0;y trực quan, thấu hiểu v&#x
E0; tạo n&#x
EA;n c&#x
E1;c hệ thống phức tạp
Tất cả mọi người c&#x
F9;ng hiểu được phần mềm được x&#x
E2;y dựng v&#x
E0; hoạt động như thế n&#x
E0;o.

C&#x
E1;c loại k&#x
FD; hiệu được sử dụng vào thiết kế phần mềm:

K&#x
FD; hiệu d&#x
F9;ng vào thiết kế kiến tr&#x
FA;c, tổ chức của phần mềm (static view).K&#x
FD; hiệu d&#x
F9;ng đến qu&#x
E1; tr&#x
EC;nh thiết kế bỏ ra tiết, h&#x
E0;nh vi của phần mềm (dynamic view).

6.1. M&#x
F4; h&#x
EC;nh tĩnh (Static view)

Những k&#x
FD; hiệu, m&#x
F4; h&#x
EC;nh n&#x
E0;y được d&#x
F9;ng vào ph&#x
E2;n r&#x
E3; mức cao của thiết kế phần mềm, tức l&#x
E0; m&#x
F4; tả cấu tr&#x
FA;c, c&#x
E1;c th&#x
E0;nh phần ch&#x
ED;nh của phần mềm v&#x
E0; sự kết nối giữa ch&#x
FA;ng. Dưới đ&#x
E2;y l&#x
E0; một số m&#x
F4; h&#x
EC;nh thường d&#x
F9;ng vào thiết kế phần mềm ở mức cao.

Ng&#x
F4;n ngữ đặc tả kiến tr&#x
FA;c (Architecture mô tả tìm kiếm languages - ADLs)
: được sử dụng để m&#x
F4; tả một kiến tr&#x
FA;c phần mềm. C&#x
F3; nhiều ng&#x
F4;n ngữ ADL kh&#x
E1;c nhau được ph&#x
E1;t triển bởi c&#x
E1;c tổ chức như Wrigh (được ph&#x
E1;t triển bởi Carnegie Mellon), ACME (Carnegie Mellon), x
ADL (UCI), Darwin (Imperial College London), DAOP-ADL (Trường đại học M&#x
E1;laga - T&#x
E2;y Ban Nha). C&#x
E1;c th&#x
E0;nh phần cơ bản của một ng&#x
F4;n ngữ ADL l&#x
E0; th&#x
E0;nh phần, kết nối v&#x
E0; cấu h&#x
EC;nh hệ thống.Biểu đồ lớp (Class and object diagrams): m&#x
F4; tả quan s&#x
E1;t tĩnh của hệ thống th&#x
F4;ng qua c&#x
E1;c lớp v&#x
E0; c&#x
E1;c mối quan hệ của ch&#x
FA;ngBiểu đồ th&#x
E0;nh phần (Component diagrams)
: biểu đồ m&#x
F4; tả c&#x
E1;c th&#x
E0;nh phần v&#x
E0; sự phụthuộc của ch&#x
FA;ng vào hệ thống. C&#x
E1;c th&#x
E0;nh phần của hệ thống c&#x
F3; thể l&#x
E0; m&#x
E3; nguồn, th&#x
E0;nh phần m&#x
E3; nhị ph&#x
E2;n (tệp m&#x
E3; đ&#x
ED;ch, thư viện,...) v&#x
E0; th&#x
E0;nh phần thực thi.Class responsibility collaborator cards (CRCs): được d&#x
F9;ng trong thiết kế hướng đối tượng, sử dụng để biểu thị t&#x
EA;n của c&#x
E1;c th&#x
E0;nh phần (class) c&#x
F9;ng với tr&#x
E1;ch nhiệm v&#x
E0; c&#x
E1;c th&#x
E0;nh phần hợp t&#x
E1;c với n&#x
F3;. CRCs ban đầu được đề xuất bởi Ward Cunningham v&#x
E0; Kent Beck như một c&#x
F4;ng cụ giảng dạy, sau được ph&#x
E1;t triển v&#x
E0; sử dụng vào thực tế thiết kế phần mềm.Biểu đồ triển khai (Deployment diagrams): chỉ ra cấu h&#x
EC;nh c&#x
E1;c phần tử xử l&#x
FD; l&#x
FA;c chương tr&#x
EC;nh chạy, c&#x
E1;c n&#x
FA;t tr&#x
EA;n mạng v&#x
E0; c&#x
E1;c tiến tr&#x
EC;nh phần mềm thực hiện tr&#x
EA;n những phần tử đ&#x
F3;. N&#x
F3; chỉ ra mối quan liêu hệ giữa c&#x
E1;c phần cứng v&#x
E0; phần mềm của hệ thống. Biểu đồ triển khai chỉ ra to&#x
E0;n bộ c&#x
E1;c n&#x
FA;t tr&#x
EA;n mạng, kết nối giữa ch&#x
FA;ng v&#x
E0; c&#x
E1;c tiến tr&#x
EC;nh chạy tr&#x
EA;nch&#x
FA;ng.Sơ đồ thực thể quan hệ (Entity-relationship diagrams - ERD): được sử dụng để đại diện cho m&#x
F4; h&#x
EC;nh kh&#x
E1;i niệm dữ liệu lưu trữ trong kho th&#x
F4;ng tin.Ng&#x
F4;n ngữ m&#x
F4; tả giao diện (Interface mô tả tìm kiếm languages - IDLs)
: ng&#x
F4;n ngữ lập tr&#x
EC;nh được sử dụng để x&#x
E1;c định c&#x
E1;c giao diện (t&#x
EA;n v&#x
E0; c&#x
E1;c loại xuất khẩu hoạt động) của c&#x
E1;c th&#x
E0;nh phần phần mềm.Biểu đồ cấu tr&#x
FA;c (Structure charts)
: Ch&#x
FA;ng được sử dụng vào lập tr&#x
EC;nh c&#x
F3; cấu tr&#x
FA;c để sắp xếp module của chương tr&#x
EC;nh v&#x
E0;o một c&#x
E1;i c&#x
E2;y. Mỗi m&#x
F4;-đun được đại diện bởi một c&#x
E1;i hộp, vào đ&#x
F3; c&#x
F3; t&#x
EA;n của module. Cấu tr&#x
FA;c c&#x
E2;y biểu thị mối quan liêu hệ giữa c&#x
E1;c module.

6.2. M&#x
F4; h&#x
EC;nh động (Dynamic view)

C&#x
F3; nhiều loại k&#x
FD; hiệu, m&#x
F4; h&#x
EC;nh d&#x
F9;ng đến qu&#x
E1; tr&#x
EC;nh thiết kế đưa ra tiết đang được &#x
E1;p dụng phổ biến hiện nay.

Sơ đồ hoạt động (Activity diagram): Biểu đồ hoạt động tập trung v&#x
E0;o c&#x
F4;ng việc được thực hiện trong khi thực thi một thủ tục (h&#x
E0;m). N&#x
F3; nắm bắt h&#x
E0;nh động (c&#x
F4;ng việc v&#x
E0; những hoạt động phải được thực hiện) cũng như kết quả của ch&#x
FA;ng theo sự biến đổi trạng th&#x
E1;i.Biểu đồ giao tiếp (Communication diagram): được sử dụng để hiển thị sự tương t&#x
E1;c xảy ra vào một nh&#x
F3;m của c&#x
E1;c đối tượng; trọng t&#x
E2;m l&#x
E0; về đối tượng, c&#x
E1;c li&#x
EA;n kết v&#x
E0; những trao đổi giữa ch&#x
FA;ng.iếpSơ đồ luồng dữ liệu (Data flow diagrams - DFDs): một c&#x
F4;ng cụ m&#x
F4; tả mối quan hệ th&#x
F4;ng tin giữa c&#x
E1;c đối tượng, cung cấp bức tranh tổng thế của hệ thống v&#x
E0; một thiết kế sơ bộ về thực hiện c&#x
E1;c chức năng. Biều đồ luồng dữ liệu c&#x
F3; thể được sử dụng để ph&#x
E2;n t&#x
ED;ch an ninh, v&#x
EC; n&#x
F3; cung cấp c&#x
E1;c hướng c&#x
F3; thể tấn c&#x
F4;ng v&#x
E0; tiết lộ th&#x
F4;ng tin b&#x
ED; mật.

Xem thêm: Học Tiếng Trung Qua Bài Hát: Em Nhớ Anh Tiếng Trung Đốn Tim Người Nghe

Bảng v&#x
E0; biểu đồ quyết định (Decision tables & diagrams)
: sử dụng để m&#x
F4; tả sự kết hợp phức tạp của c&#x
E1;c h&#x
E0;nh động trong phần mềm.Biểu đồ tiến tr&#x
EC;nh / l&#