Tải bản đầy đủ (.pptx) (33 trang)

chuong4phantichkt xuanhiens weblog

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (579.96 KB, 33 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

<b>Chương 4 </b>



<b>Phân tích kiến trúc</b>



</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

<b>Kiến trúc - Architecture</b>



<b>• Kiến trúc </b>

<b>liên quan đến việc xác định</b>



• Các thành phần chính của hệ thống



• Cách mà các thành phần này liên kết với nhau



<b>• Kiến trúc thể hiện</b>



• Tổ chức cấu trúc của hệ thống từ các thành phần của nó


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

<b>Định nghĩa kiến trúc</b>



<b>• Kiến trúc là một tập hợp các quyết định quan trọng về việc tổ </b>


chức một hệ thống phần mềm. Quyết định này bao gồm:



• Việc lựa chọn các yếu tố cấu trúc và giao diện của hệ thống
• Sự kết hợp của yếu tố cấu trúc và hành vi thành subsystem


• Phong cách kiến trúc bao gồm các phần tử, giao diện, và sự hợp tác
của chúng.


Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

<b>Các khái niệm trong kiến trúc</b>




<b>• Hệ thống con - Subsystems</b>



• Các lớp - Classes


• Các dịch vụ - Services


<b>• Nguyên tắc xác định subsystems</b>



• Coupling
• Cohesion


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

<b>Subsystems: Classes</b>



• Một giải pháp về phạm vi bằng cách chia hệ thống thành những


<b>thành phần nhỏ hơn gọi là subsystems.</b>



<b>• Subsystems có thể được chia nhỏ một cách đệ quy thành </b>


những subsystems đơn giản hơn.



<b>• Subsystems được cấu tạo từ các lớp thiết kế. (design </b>


classes).



Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

<b>Subsystems: Services</b>



• Một

<b>subsystem </b>

được đặc trưng bởi các

<b>dịch vụ </b>

nó cung cấp


cho subsystems khác.



<b>• Dịch vụ là:</b>




• Một tập hợp các hoạt động có liên quan chia sẻ một mục đích chung


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

<b>Subsystems: Services</b>



<b>• Coupling và Cohesion</b>



• Khả năng đóng gói dữ liệu (Data encapsulation), kế thừa (Inheritance)
và đa hình (Polymorphism) là nền tảng của lập trình hướng đối tượng.
• Một chương trình thiết kế theo hướng đối tượng đòi hỏi chia nhỏ bài


<b>toán thành các phần, sao cho chúng vừa có đặc tính liên kết (giao </b>
<b>tiếp giữa các phần) lại vừa có khả năng tách biệt riêng rẽ để thay </b>
<b>đổi, kiểm tra mà không ảnh hưổng đến thành phần khác </b>


Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

<b>Subsystems: Services</b>



<b>• Coupling</b>

:



• Mức độ phụ thuộc của một phần tử vào một phần tử khác trong hệ
thống, phần tử có thể là class, sub-systems, system.


<i><b>• Loose coupling (khơng phụ thuộc nhiều vào phần tử khác):</b></i>
• Sub-system độc lập


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

<b>Subsystems: Services</b>



<b>• Cohesion: </b>




• Mức độ phụ thuộc bên trong của một phần tử (class, subsystem), mức
độ liên quan về chức năng giữa các nhiệm vụ của một phần tử.


<b>• High cohesion:</b>


• Subsystem chứa các đối tượng liên quan


• Tất cả các phần tử hướng tới việc thực hiện cùng một tác vụ.


Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

<b>Phân lớp - Layering</b>



<b>• Layering là chiến lược chia hệ thống (system) thành các hệ </b>


thống con (subsystems).



<b>• Layering</b>



• Chia một hệ thống thành hệ thống phân cấp của các hệ thống con
(subsystems)


• Có hai cách:


</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

<b>Kiểu phân lớp</b>



<b>• Hướng trách nhiệm - Responsibility driven:</b>



• Lớp có trách nhiệm được xác định rõ ràng
• Lớp thực hiện vai trị cụ thể



<b>• Hướng tái sử dụng - Reuse driven</b>



• Các lớp được thiết kế để cho phép tái sử dụng tối đa các thành phần
hệ thống.


</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

<b>Kiểu phân lớp</b>



</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

<b>Kiến trúc Client-Server</b>



<b>• Mơ hình client-server bao gồm:</b>



<b>• Server: một máy đơn hoặc một ứng dụng mà nó cung cấp các dịch vụ </b>
cho nhiều clients


<b>• Có thể là IIS (Internet Information Services) dựa trên máy chủ Web</b>
• Có thể là WCF (Windows Communication Foundation)


• Có thể là một dịch vụ trong đám mây


<b>• Clients: phần mềm ứng dụng cung cấp giao diện người dùng cuối UI </b>
để truy cập các dịch vụ từ server


</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

<b>Mơ hình Client-Server</b>



<b>Server</b>


<b>Desktop</b>
<b>Mobile</b>



</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

<b>Mơ hình Client-Server – Ví dụ</b>



• Web server (IIS) – Web browser (Firefox)


• FTP server (ftpd) – FTP client (FileZilla)



• Email server (qmail) – email client (Outlook)



• SQL Server – SQL Server Management Studio


• Bit Torrent Tracker – Torrent client (μTorrent)


• DNS server (bind) – DNS client (resolver)



• DHCP server (wireless router firmware) – DHCP client (mobile phone


/Android DHCP client/)



</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>

<b>Kiến trúc 3-Tier / Multi-Tier</b>



<b>• Front-end (client layer)</b>



• Client software: cung cấp giao diện (UI) của hệ thống


<b>• Middle tier (business layer)</b>



• Server software: cung cấp lõi logic của hệ thống.
• Hiện thực các quy trình nghiệp vụ hoặc các dịch vụ


<b>• Back-end (data layer)</b>



</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17></div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>

<b>Mơ hình kiến trúc 3-Tier / Multi-Tier</b>


Business
Logic

Desktop
Mobile
Client
Client
Machine
Database
Data Tier
(Back-End)
Middle Tier
(Business Tier)


</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>

<b>Kiến trúc Model-View-Controller</b>



• Tách riêng logic nghiệp vụ với dữ liệu của ứng dụng và cách


trình bày



<b>• Model</b>



• Giữ trạng thái của ứng dụng (data)


<b>• View</b>



• Hiển thị dữ liệu cho người sử dụng (shows UI)


<b>• Controller</b>



</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20></div>
<span class='text_page_counter'>(21)</span><div class='page_container' data-page=21>

<b>Tổng quan về phân tích kiến trúc</b>



• Phân tích kiến trúc liên quan với việc xác định và giải quyết các


yêu cầu phi chức năng của hệ thống (ví dụ, chất lượng) trong



bối cảnh của các yêu cầu chức năng của hệ thống.



<b>• Mục đích của phân tích kiến trúc:</b>



<b>• Xác định một kiến trúc ứng viên (candidate architecture) cho hệ </b>
thống, dựa trên kinh nghiệm thu được từ hệ thống tương tự hoặc trong
lĩnh vực vấn đề tương tự.


• Xác định các mơ hình kiến trúc


</div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22>

<b>Các bước phân tích kiến trúc</b>



<b>• Xác định và phân tích </b>

<i><b>các yêu cầu chức năng </b></i>

<b>có ảnh </b>


<b>hưởng đến kiến trúc.</b>



• Yêu cầu chức năng cũng có liên quan (đặc biệt là trong trường hợp
yêu cầu thay đổi), yêu cầu phi chức năng được phân tích chi tiết. Gọi
chung là các nhân tố của kiến trúc (architectural factors)


</div>
<span class='text_page_counter'>(23)</span><div class='page_container' data-page=23>

<b>Các bước phân tích kiến trúc</b>



<b>• Mơ hình hố kiến trúc: sử dụng Collaboration Diagrams</b>



<b>• Collaboration diagram thể hiện sự kết hợp của các lớp, giao diện, và </b>
các yếu tố khác tương tác với nhau để cung cấp các hành vi hợp tác.
• Tên một khái niệm bao gồm cả hai khía cạnh tĩnh và động chỉ định việc


hiện thực một use case.


• Thể hiện một tập hợp các thông tin trao đổi giữa một tập các đối tượng


để thực hiện một mục đích cụ thể.


Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân


</div>
<span class='text_page_counter'>(24)</span><div class='page_container' data-page=24>

<b>Các bước phân tích kiến trúc</b>



<b>• Mơ hình hố kiến trúc: sử dụng Component Diagrams</b>



<b>• Component diagram: giúp cho mơ hình hóa các khía cạnh vật lý của </b>
hệ thống phần mềm hướng đối tượng. Nó minh họa kiến trúc của các
thành phần phần mềm và sự phụ thuộc giữa chúng.


</div>
<span class='text_page_counter'>(25)</span><div class='page_container' data-page=25>

<b>Các bước phân tích kiến trúc</b>



<b>• Mơ hình hố kiến trúc: sử dụng Component Diagrams</b>


<b>• Components và Interfaces</b>



<b>• interface là một tập hợp các hoạt động được sử dụng để xác định một </b>
<b>dịch vụ của lớp hoặc các components</b>


<b>• Interface</b>


• Thể hiện giao diện chính của hệ thống


• Được hiện thực bởi các thành phần tham gia hiện thực interface.


• Thúc đẩy sự phát triển của các hệ thống có các dịch vụ vị trí độc
lập và có thể thay thế


Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân



</div>
<span class='text_page_counter'>(26)</span><div class='page_container' data-page=26>

<b>Các bước phân tích kiến trúc</b>



<b>• Ký hiệu Interface</b>



• Kiểu 1


</div>
<span class='text_page_counter'>(27)</span><div class='page_container' data-page=27>

<b>Các bước phân tích kiến trúc</b>



<b>• Loại Components: có 3 loại: </b>

deployment

,

work product



execution

.



<b>• Deployment</b>: Component cần cho việc thực thi của hệ thống, VD dll và
exe


<b>• Work product</b>: những thành phần được tạo ra trong quá trình phát


triển hệ thống, gồm những tập tin mã nguồn và các tập tin dữ liệu từ
các thành phần triển khai


<b>• Execution</b>: được tạo ra như là một hệ quả của một hệ thống thực thi


Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân


</div>
<span class='text_page_counter'>(28)</span><div class='page_container' data-page=28>

<b>Các bước phân tích kiến trúc</b>



</div>
<span class='text_page_counter'>(29)</span><div class='page_container' data-page=29>

<b>Các bước phân tích kiến trúc</b>



<b>• Mơ hình hố kiến trúc: sử dụng Packages</b>



<b>• Packages</b>



• Là cơ chế tổ chức các phần tử mơ hình thành các nhóm


• Nhóm các phần tử có ngữ nghĩa gần nhau và có xu hướng thay đổi
cùng nhau


• Package nên low coupling và high cohesive, kiểm soát truy cập nội
dung


Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân


</div>
<span class='text_page_counter'>(30)</span><div class='page_container' data-page=30>

<b>Các bước phân tích kiến trúc</b>



<b>• Ký hiệu Package :</b>



• Tương tự folder


</div>
<span class='text_page_counter'>(31)</span><div class='page_container' data-page=31>

<b>Các bước phân tích kiến trúc</b>



<b>• Các phần tử bên trong Package</b>



• Package có thể chứa các phần tử: classes, interfaces, components,
nodes, collaborations, use cases, diagrams và packages khác.


• Một tạo thành một khơng gian tên, do đó các phần tử cùng loại phải có
tên duy nhất.


• Ví dụ, khơng thể có hai lớp trong cùng một package có cùng tên.



Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xn


</div>
<span class='text_page_counter'>(32)</span><div class='page_container' data-page=32>

<b>Mơ hình hố kiến trúc: Packages</b>



<b>• Visibility</b>



• Visibility là tầm vực của các thuộc tính và các hoạt động của lớp trong
package


<b>• Protected: các phần tử có thể thấy bởi các packages con</b>


</div>
<span class='text_page_counter'>(33)</span><div class='page_container' data-page=33>

<b>Các bước phân tích kiến trúc</b>



• Ví dụ:



Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân


</div>

<!--links-->
Tài liệu Báo cáo khoa học: "Mood Patterns and Affective Lexicon Access in Weblogs" ppt
  • 6
  • 415
  • 0
  • ×