CHAPTER 7 INTRODUCTION TO UML SOFTWARE ARCHITECTURE 1
Trang 1CHAPTER 7: INTRODUCTION
TO UML & SOFTWARE
ARCHITECTURE
Ngôn ngữ mô hình hóa
Phân tích thiết kế mô hình hoá phần mềm, diễn đạt dưới dạng hình vẽ biểu đồ
Visualizing (Trực quan hoá 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
Trang 2Use-case models.
Class models
Object models
Relationship models
Các loại model:
Text
Diagrams
Pictures
Conceptual model of UML
Class Diagram
Trang 3Mộ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
https://votanlanh.wordpress.com/2017/08/08/mot-so-quan-h
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ể:
Trang 4Thu 30/06/2022
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?
Trang 5Availability - Khả năng đáp ứng
Bao gồm các thành phần và cơ chế dự phòng để chịu lỗi
Fine - grained và Coarse - grained.
Trang 6Khi 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 hoàn toà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
Trang 7Sub-systems and Modules
Three-tier architecture.
Trang 8Its 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
Trang 9💡 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
Trang 10Layered 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