Sự khác biệt giữa Software Architecture với software design

November 29, 2019

Sự khác biệt giữa Software Architecture với software design

 

Nhiều người ngay cả các nhà phát triển cũng không thực sự biết sự khác biệt giữa Software Architecture (Kiến trúc phần mềm) với software design. Là một nhà phát triển, tôi muốn đơn giản hóa các khái niệm này và giải thích sự khác biệt giữa software architecture với software design. Cùng tìm hiểu thôi.

 

1. Software Architecture (Kiến trúc phần mềm)

1.1. Định nghĩa 

Nói một cách đơn giản, kiến trúc phần mềm là quá trình chuyển đổi các đặc điểm của phần mềm như tính linh hoạt, khả năng mở rộng, tính khả thi, khả năng sử dụng lại và bảo mật thành một giải pháp có cấu trúc đáp ứng các kỳ vọng về kỹ thuật và kinh doanh. Định nghĩa này khiến chúng ta phải hỏi về các đặc điểm của một phần mềm có thể ảnh hưởng đến thiết kế kiến ​​trúc phần mềm. 

 

1.2. Đặc điểm 

Đặc điểm phần mềm mô tả các yêu cầu và kỳ vọng của một phần mềm ở cấp độ vận hành và kỹ thuật. Do đó, khi một chủ sở hữu sản phẩm nói rằng họ đang cạnh tranh trong một thị trường thay đổi nhanh chóng, và họ nên nhanh chóng điều chỉnh mô hình kinh doanh của mình. Phần mềm cần có thể mở rộng và có thể bảo trì. Là một kiến ​​trúc sư phần mềm, bạn nên lưu ý rằng phần mềm cần hiệu suất và khả năng chịu lỗi thấp, khả năng mở rộng và độ tin cậy là đặc điểm chính của bạn.

 

1.3. Các mẫu

 

Hầu hết mọi người có thể đã nghe nói về thuật ngữ Micro MicroService trước đây. MicroService là một trong nhiều mẫu kiến ​​trúc phần mềm khác như mẫu xếp lớp, mẫu hướng sự kiện, mẫu không có máy chủ và nhiều mẫu khác. Một số trong số họ sẽ được thảo luận sau trong bài viết này. Mẫu microservice nhận được danh tiếng của nó sau khi được Amazon và Netflix chấp nhận và cho thấy tác động lớn của nó. 

 

2. Software design 

2.1. Khái niệm và đặc điểm nguyên tắc

Mặc dù kiến ​​trúc phần mềm chịu trách nhiệm cho bộ xương và cơ sở hạ tầng cấp cao của phần mềm, thì thiết kế phần mềm chịu trách nhiệm thiết kế cấp mã như: Mỗi mô-đun đang làm gì, phạm vi lớp và mục đích chức năng, v.v.

Nếu bạn là một nhà phát triển, điều quan trọng là bạn phải biết nguyên tắc SOLID là gì và một mẫu thiết kế nên giải quyết các vấn đề thường xuyên như thế nào.

SOLID đề cập đến nguyên tắc trách nhiệm duy nhất, đóng mở, nguyên tắc thay thế Liskov, nguyên tắc phân chia giao diện, nguyên tắc đảo ngược phụ thuộc…

 

  • Nguyên tắc trách nhiệm duy nhất: Nghĩa là mỗi lớp phải có một mục đích duy nhất, trách nhiệm và lý do để thay đổi.

  • Nguyên tắc đóng mở: Một lớp nên được mở rộng, nhưng đóng để sửa đổi. Nói một cách đơn giản, bạn sẽ có thể thêm nhiều chức năng hơn cho lớp nhưng không chỉnh sửa các hàm hiện tại theo cách phá vỡ mã hiện có sử dụng nó.

  • Nguyên tắc thay thế Liskov: nguyên tắc này hướng dẫn nhà phát triển sử dụng tính kế thừa theo cách không phá vỡ logic ứng dụng tại bất kỳ điểm nào. 

  • Nguyên tắc phân chia giao diện: Đơn giản, vì một lớp có thể thực hiện nhiều giao diện, sau đó cấu trúc mã của bạn theo cách mà một lớp sẽ không bao giờ bị buộc phải thực hiện một chức năng không quan trọng đối với mục đích của nó. Vì vậy, phân loại giao diện của bạn.

  • Nguyên tắc đảo ngược phụ thuộc: Nếu bạn đã từng theo dõi TDD để phát triển ứng dụng của mình, thì bạn sẽ biết cách tách mã của bạn rất quan trọng đối với khả năng kiểm tra và tính mô đun. Nói cách khác, nếu một Class nhất định ex: Mua trực tiếp phụ thuộc vào lớp người dùng, thì việc khởi tạo đối tượng người dùng sẽ đến từ bên ngoài lớp mua mua trên đường.

2.2. Mẫu thiết kế

  • Mô hình nhà máy: Đây là mẫu thiết kế được sử dụng nhiều nhất trong thế giới OOP vì nó tiết kiệm rất nhiều thời gian trong tương lai khi bạn phải sửa đổi một trong các lớp bạn đã sử dụng. Nhìn vào ví dụ này:

Hãy tưởng tượng bạn muốn khởi tạo Lớp Mô hình Người dùng (), có hai cách để thực hiện:

1 - $ người dùng = Người dùng mới ();

2 - $ users = DataFactory :: get ('Người dùng');

 Mẫu bộ điều hợp: Mẫu bộ điều hợp là một trong những mẫu thiết kế cấu trúc. Từ tên của nó, bạn sẽ mong đợi rằng nó chuyển đổi cách sử dụng không mong muốn của lớp thành một lớp dự kiến.

 

Trên đây là các thông tin cơ bản nhất về Software Architecture (Kiến trúc phần mềm) với software design. Hi vọng, các thông tin trên sẽ giúp các nhà lập trình hiểu sâu hơn về 2 loại phần mềm này để áp dụng phù hợp hơn.

 

Nguồn tổng hợp

---

JT1 - IT Recruitment Agency
Website:
https://www.jt1.vn
Email: hi@jt1.vn
Điện thoại: +8428 6675 6685
Xem thêm các bài viết khác tại: https://www.jt1.vn/blog
Theo dõi chúng tôi tại: https://www.facebook.com/jt1asia/

 

Please reload

Recent Posts

Please reload

banner-top-it-job-right.gif

Archive

Please reload

Tags