Tải bản đầy đủ (.pdf) (10 trang)

CHAPTER 7 INTRODUCTION TO UML SOFTWARE ARCHITECTURE

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 (10.59 MB, 10 trang )

󾠴

CHAPTER 7: INTRODUCTION
TO UML & SOFTWARE
ARCHITECTURE
Ngơn ngữ mơ hình hóa.
Phân tích thiết kế mơ hình hố phần mềm, diễn đạt dưới dạng hình vẽ biểu đồ
Visualizing (Trực quan hố vấn đề)
Specifying (Đặc tả hoá)
Constructing (Cấu trúc hoá)
Documenting (Tài liệu hoá)

Chức năng
Phân tích thiết kế mơ hình hóa phần mềm, diễn đạt dưới dạng mơ hình.

Model
Giữ lại những nội dung cơ bản, bỏ những thứ khơng cần thiết.
Có nhiều kiểu mơ hình:
Process models.

CHAPTER 7: INTRODUCTION TO UML & SOFTWARE ARCHITECTURE

1


Use-case models.
Class models.
Object models.
Relationship models.
Các loại model:
Text.


Diagrams.
Pictures.

Conceptual model of UML

Class Diagram

CHAPTER 7: INTRODUCTION TO UML & SOFTWARE ARCHITECTURE

2


Một số quan hệ giữa các class trong UML
Hôm nay tơi sẽ trình bày về các loại quan hệ giữa các class
trong UML, gồm có các 4 quan hệ chính sau Realization
Generation Dependency Association: có 2 quan hệ phân biệt
/>e-giua-cac-class-trong-uml/

Các thành phần chính:
Classes.
Interface.
Relationships.
Common mechanisms.

Các quan hệ giữa UML
Dependency:
Generalization:
Association:
Multiplicity:


Aggregation: Mất phịng còn bàn ghế
Composition:

Software Architecture
Ý tưởng về kiến trúc phần mềm cũng giống như kiến trúc phần cứng.
Với phần mềm phải chia chạy nhiều máy.
Architecture Design (High-level design).
Detailed Design (Low-level design).
Việc chia phần mềm ra nhiều phần giúp phần mềm có thể:
Dễ dàng được tái sử dụng.
Dễ dàng gia công.
Dễ dàng trong việc bảo trì.

CHAPTER 7: INTRODUCTION TO UML & SOFTWARE ARCHITECTURE

3


Thu 30/06/2022

Software Component



What is software component?

Các API, Library,… là một software component.
Các component có thể chạy trên cùng 1 tiến trình.




List methods to connect components in software.

Để kết nối các component với nhau thì sử dụng các cách như:
Sử dụng Database làm trung gian.
Sử dụng Method call.
Sử dụng dịch vụ của bên thứ 3.

Why we need to have Architecture?
Kiến trúc là một thành phần quan trọng để trưởng dự án có thể dựa vào đó mà
tuyển người.
Các thành phần được chạy trên 1 máy thì việc bảo mật sẽ dễ dàng hơn ở nhiều máy
vì nhiều máy phải thơng qua mạng (dễ bị tấn công hơn).
Chúng ta phân rã ra nhiều thành phần độc lập với nhau sẽ giúp dễ bảo trì vì khi đó
chúng ta chỉ sửa chữa thay thế những phần bị lỗi mà không cần quan tâm đến
những phần khác.
Chia nhỏ các tiến trình khiến tốc độ chạy chậm hơn vì

Performance



Hai mơ hình sau mơ hình nào chạy nhanh hơn?

CHAPTER 7: INTRODUCTION TO UML & SOFTWARE ARCHITECTURE

4


Fine - grained và Coarse - grained.


Availability - Khả năng đáp ứng
Bao gồm các thành phần và cơ chế dự phòng để chịu lỗi.

Phải duplicate dữ liệu trên tất cả các máy chủ để đảm bảo việc không bị mất thông
tin của người dùng.

CHAPTER 7: INTRODUCTION TO UML & SOFTWARE ARCHITECTURE

5


Khi mà duplicate thì sẽ xảy ra cần phải đồng bộ hóa dữ liệu trên nhiều máy. Đây
cũng là một vấn đề khá nan giải trong việc phát triển phần mềm.
VD: Chia nhỏ ra nhiều máy chủ để khi có nhiều người truy cập vào máy hệ thống sẽ
không bị sập hồn tồn.

Maintainability
Sử dụng fine-grain, các thành phần có thể thay thế được.

Architectural Design Decisions
Việc quyết định kiến trúc phần mềm rất quan trọng cho tương lai của phần mềm.
Nếu sử dụng kiến trúc khơng tốt thì phần mềm có thể bị “đập bỏ”.
Việc chọn một framework cũng nên được cân nhắc để có thể dễ dàng đáp ứng
được những thay đổi trong tương lai.

⇒ Rationale behind design decisions are commonly undocumented.
Example of design decision
Issue: system has to be maintainable.
Decision: three-tier architecture, using Object-Oriented Language.


CHAPTER 7: INTRODUCTION TO UML & SOFTWARE ARCHITECTURE

6


Three-tier architecture.

Sub-systems and Modules
A sub-system
Is a system in its own right

CHAPTER 7: INTRODUCTION TO UML & SOFTWARE ARCHITECTURE

7


Its operation is independent of the services provided by other sub-systems.
Example: Google maps embedded in an app.

A module (component)
Is a component that provides services to other components but would not normally
be considered as a separate system.
Example: UI component on your website.
Khi chạy thì ứng dụng sẽ tách mã nguồn ra nhiều thành phần riêng biệt. Khi nó chạy
sẽ tạo ra những đối tượng nằm trong component.
Cái object chỉ tồn tại khi ứng dụng chạy.
Cái package tồn tại khi mình lập trình, dù ứng dụng có chạy hay khơng.
Architecture Diagram:
Đi theo hướng Logical view thì phải chú ý Client.


Software Architecture
Phần mềm bao gồm những cái thành phần gì và sự liên kết/tương tác giữa các
thành phần. (Components)

Architecture design
Quá trình thiết kế kiến trúc phần mềm
Architectural design (High-level design)
Detailed design (Low-level design)

Presenting Architecture
Sử dụng hộp và đường

CHAPTER 7: INTRODUCTION TO UML & SOFTWARE ARCHITECTURE

8


💡

What is software component?
Piece of software that provide other purpose of the software.
Mỗi component có service
VD: Databases, API, Libraries, Frontend
List methods to connect components in software?
HTTP, TCP/IP, SOAP, Socket I/O, Database, Method call, Function call,
Broker, Remote

Why we need to have architecture?
Stakeholder communcation

Kiến trúc dùng để tuyển người, yêu cầu
System analysis
Giải quyết yêu cầu phi chức năng: bảo trì, đảm bảo an toàn bảo mật, chạy
phân tán
Large-scale reuse
Sử dụng lại ở nhiều nơi khác nhau, nhiều ứng dụng khác nhau, khả năng sử
dụng lại cao
Phân rã nhiều thành phần mang tính độc lập cao thì dễ bảo trì

Architecture affects non-functional
requirements
Performance
Chạy nhanh hơn
Fine-grain components: Chia nhỏ các thành phần

💡

Course-grain components: Không chia nhỏ các thành phần

Security

CHAPTER 7: INTRODUCTION TO UML & SOFTWARE ARCHITECTURE

9


Layered architecture with critical assets (tài sản tài nguyên)
Safety
Localize safety-critical features (Địa phương hoá)
Availability (Khả năng đáp ứng)

Balancing
Maintainability
Fine-grain, replaceable components

Architectural conflicts
Sử dụng large-grain giảm maintainability
Tăng khả năng đáp ứng nhưng security khó hơn (giải pháp là duplicate dữ liệu
khác nhau)
Vấn đề đồng bộ hoá trên các database
Localizing safety-related features giảm performance

Architectural design decisions
Thay đổi nhiều
Mang tính quan trọng cho tương lai
Cơ sở lí luận khơng được ghi lại

Sub-systems and Modules
Hệ thống con
Khơng chạy cùng với lại ứng dụng
Ví dụ: Google Maps
Module (Component)
Chạy cùng với lại ứng dụng, không chạy độc lập
Ví dụ: UI Component

CHAPTER 7: INTRODUCTION TO UML & SOFTWARE ARCHITECTURE

10




×