Giới thiệu Kiến trúc & Thiết kế Phần mềm

Kiến trúc của một hệ thống mô tả các thành phần chính của nó, các mối quan hệ (cấu trúc) của chúng và cách chúng tương tác với nhau. Kiến trúc và thiết kế phần mềm bao gồm một số yếu tố đóng góp như Chiến lược kinh doanh, thuộc tính chất lượng, động lực của con người, thiết kế và môi trường CNTT.

Chúng ta có thể tách Kiến trúc phần mềm và Thiết kế thành hai giai đoạn riêng biệt: Kiến trúc phần mềm và Thiết kế phần mềm. TrongArchitecture, các quyết định phi chức năng được đúc kết và tách biệt bởi các yêu cầu chức năng. Trong Thiết kế, các yêu cầu chức năng được hoàn thành.

Kiến trúc phần mềm

Kiến trúc phục vụ như một blueprint for a system. Nó cung cấp một sự trừu tượng để quản lý độ phức tạp của hệ thống và thiết lập một cơ chế giao tiếp và phối hợp giữa các thành phần.

  • Nó xác định một structured solution để đáp ứng tất cả các yêu cầu kỹ thuật và vận hành, đồng thời tối ưu hóa các thuộc tính chất lượng chung như hiệu suất và bảo mật.

  • Hơn nữa, nó liên quan đến một tập hợp các quyết định quan trọng về tổ chức liên quan đến phát triển phần mềm và mỗi quyết định này có thể có tác động đáng kể đến chất lượng, khả năng bảo trì, hiệu suất và sự thành công chung của sản phẩm cuối cùng. Những quyết định này bao gồm -

    • Lựa chọn các phần tử cấu trúc và các giao diện của chúng mà hệ thống được cấu thành.

    • Hành vi như được chỉ định trong sự hợp tác giữa các yếu tố đó.

    • Thành phần của các yếu tố cấu trúc và hành vi này thành hệ thống con lớn.

    • Các quyết định về kiến ​​trúc phù hợp với các mục tiêu kinh doanh.

    • Phong cách kiến ​​trúc hướng dẫn tổ chức.

Thiết kế phần mềm

Thiết kế phần mềm cung cấp một design planmô tả các phần tử của hệ thống, cách chúng phù hợp và làm việc cùng nhau để đáp ứng yêu cầu của hệ thống. Các mục tiêu của việc có một kế hoạch thiết kế như sau:

  • Để thương lượng các yêu cầu hệ thống và đặt kỳ vọng với khách hàng, nhân viên tiếp thị và quản lý.

  • Hoạt động như một bản thiết kế trong quá trình phát triển.

  • Hướng dẫn các tác vụ triển khai, bao gồm thiết kế chi tiết, mã hóa, tích hợp và thử nghiệm.

Nó xảy ra trước khi thiết kế chi tiết, mã hóa, tích hợp và thử nghiệm và sau khi phân tích miền, phân tích yêu cầu và phân tích rủi ro.

Mục tiêu của Kiến trúc

Mục tiêu chính của kiến ​​trúc là xác định các yêu cầu ảnh hưởng đến cấu trúc của ứng dụng. Một kiến ​​trúc bài bản giúp giảm rủi ro kinh doanh liên quan đến việc xây dựng giải pháp kỹ thuật và xây dựng cầu nối giữa yêu cầu kinh doanh và kỹ thuật.

Một số mục tiêu khác như sau:

  • Phơi bày cấu trúc của hệ thống, nhưng ẩn các chi tiết triển khai của nó.

  • Nhận ra tất cả các trường hợp sử dụng và tình huống.

  • Cố gắng giải quyết các yêu cầu của các bên liên quan khác nhau.

  • Xử lý các yêu cầu về chức năng và chất lượng.

  • Giảm mục tiêu sở hữu và nâng cao vị thế thị trường của tổ chức.

  • Cải thiện chất lượng và chức năng do hệ thống cung cấp.

  • Cải thiện niềm tin bên ngoài vào tổ chức hoặc hệ thống.

Hạn chế

Kiến trúc phần mềm vẫn là một ngành học mới nổi trong ngành kỹ thuật phần mềm. Nó có những hạn chế sau:

  • Thiếu các công cụ và cách thức chuẩn hóa để biểu diễn kiến ​​trúc.

  • Thiếu các phương pháp phân tích để dự đoán liệu kiến ​​trúc có dẫn đến việc triển khai đáp ứng các yêu cầu hay không.

  • Thiếu nhận thức về tầm quan trọng của thiết kế kiến ​​trúc đối với phát triển phần mềm.

  • Thiếu hiểu biết về vai trò của kiến ​​trúc sư phần mềm và giao tiếp kém giữa các bên liên quan.

  • Thiếu hiểu biết về quy trình thiết kế, kinh nghiệm thiết kế và đánh giá thiết kế.

Vai trò của kiến ​​trúc sư phần mềm

Kiến trúc sư phần mềm cung cấp giải pháp mà nhóm kỹ thuật có thể tạo và thiết kế cho toàn bộ ứng dụng. Một kiến ​​trúc sư phần mềm phải có chuyên môn trong các lĩnh vực sau:

Chuyên môn thiết kế

  • Chuyên gia về thiết kế phần mềm, bao gồm các phương pháp và cách tiếp cận đa dạng như thiết kế hướng đối tượng, thiết kế hướng sự kiện, v.v.

  • Lãnh đạo nhóm phát triển và điều phối các nỗ lực phát triển vì tính toàn vẹn của thiết kế.

  • Nên có thể xem xét các đề xuất thiết kế và đánh đổi giữa chúng.

Chuyên môn về miền

  • Chuyên gia về hệ thống đang được phát triển và lập kế hoạch phát triển phần mềm.

  • Hỗ trợ trong quá trình điều tra yêu cầu, đảm bảo tính đầy đủ và nhất quán.

  • Phối hợp định nghĩa mô hình miền cho hệ thống đang được phát triển.

Chuyên môn công nghệ

  • Chuyên gia về các công nghệ sẵn có giúp triển khai hệ thống.

  • Phối hợp lựa chọn ngôn ngữ lập trình, khuôn khổ, nền tảng, cơ sở dữ liệu, v.v.

Chuyên môn về phương pháp

  • Chuyên gia về các phương pháp luận phát triển phần mềm có thể được áp dụng trong SDLC (Vòng đời phát triển phần mềm).

  • Chọn các cách tiếp cận phù hợp để phát triển giúp ích cho toàn bộ nhóm.

Vai trò tiềm ẩn của kiến ​​trúc sư phần mềm

  • Tạo điều kiện thuận lợi cho công việc kỹ thuật giữa các thành viên trong nhóm và củng cố mối quan hệ tin cậy trong nhóm.

  • Chuyên gia thông tin chia sẻ kiến ​​thức và có nhiều kinh nghiệm.

  • Bảo vệ các thành viên trong nhóm khỏi các lực lượng bên ngoài có thể làm họ phân tâm và mang lại ít giá trị hơn cho dự án.

Sản phẩm của Kiến trúc sư

  • Một tập hợp các mục tiêu chức năng rõ ràng, đầy đủ, nhất quán và có thể đạt được

  • Mô tả chức năng của hệ thống, với ít nhất hai lớp phân hủy

  • Một khái niệm cho hệ thống

  • Một thiết kế dưới dạng hệ thống, với ít nhất hai lớp phân hủy

  • Khái niệm về thời gian, các thuộc tính của người vận hành và các kế hoạch thực hiện và hoạt động

  • Một tài liệu hoặc quy trình đảm bảo tuân theo sự phân rã chức năng và hình thức giao diện được kiểm soát

Thuộc tính chất lượng

Chất lượng là thước đo sự xuất sắc hoặc trạng thái không có thiếu sót hoặc khuyết tật. Thuộc tính chất lượng là các thuộc tính của hệ thống tách biệt với chức năng của hệ thống.

Việc triển khai các thuộc tính chất lượng giúp dễ dàng phân biệt hệ thống tốt với hệ thống xấu. Thuộc tính là các yếu tố tổng thể ảnh hưởng đến hành vi thời gian chạy, thiết kế hệ thống và trải nghiệm người dùng.

Chúng có thể được phân loại là -

Thuộc tính chất lượng tĩnh

Phản ánh cấu trúc của một hệ thống và tổ chức, liên quan trực tiếp đến kiến ​​trúc, thiết kế và mã nguồn. Chúng vô hình đối với người dùng cuối, nhưng ảnh hưởng đến chi phí phát triển và bảo trì, ví dụ: tính mô-đun, khả năng kiểm tra, khả năng bảo trì, v.v.

Thuộc tính chất lượng động

Phản ánh hành vi của hệ thống trong quá trình thực thi. Chúng liên quan trực tiếp đến kiến ​​trúc, thiết kế, mã nguồn, cấu hình, tham số triển khai, môi trường và nền tảng của hệ thống.

Chúng được hiển thị cho người dùng cuối và tồn tại trong thời gian chạy, ví dụ như thông lượng, độ mạnh mẽ, khả năng mở rộng, v.v.

Kịch bản chất lượng

Các kịch bản chất lượng chỉ rõ cách ngăn lỗi trở thành lỗi. Chúng có thể được chia thành sáu phần dựa trên thông số kỹ thuật thuộc tính của chúng -

  • Source - Một thực thể bên trong hoặc bên ngoài như con người, phần cứng, phần mềm hoặc cơ sở hạ tầng vật chất tạo ra kích thích.

  • Stimulus - Một điều kiện cần được xem xét khi nó xuất hiện trên một hệ thống.

  • Environment - Kích thích xảy ra trong những điều kiện nhất định.

  • Artifact - Toàn bộ hệ thống hoặc một số phần của nó như bộ xử lý, kênh giao tiếp, lưu trữ liên tục, quy trình, v.v.

  • Response - Một hoạt động được thực hiện sau khi xuất hiện kích thích như phát hiện lỗi, khôi phục lỗi, vô hiệu hóa nguồn sự kiện, v.v.

  • Response measure - Nên đo lường các phản ứng đã xảy ra để có thể kiểm tra các yêu cầu.

Các thuộc tính chất lượng chung

Bảng sau liệt kê các thuộc tính chất lượng chung mà kiến ​​trúc phần mềm phải có:

thể loại Thuộc tính chất lượng Sự miêu tả
Chất lượng thiết kế Tính toàn vẹn khái niệm Xác định tính nhất quán và mạch lạc của thiết kế tổng thể. Điều này bao gồm cách các thành phần hoặc mô-đun được thiết kế.
Khả năng bảo trì Khả năng của hệ thống để trải qua các thay đổi với mức độ dễ dàng.
Khả năng tái sử dụng Xác định khả năng cho các thành phần và hệ thống con phù hợp để sử dụng trong các ứng dụng khác.
Chất lượng thời gian chạy Khả năng tương tác Khả năng của một hệ thống hoặc các hệ thống khác nhau để vận hành thành công bằng cách giao tiếp và trao đổi thông tin với các hệ thống bên ngoài khác do các bên bên ngoài viết và điều hành.
Khả năng quản lý Xác định mức độ dễ dàng của quản trị viên hệ thống trong việc quản lý ứng dụng.
độ tin cậy Khả năng của một hệ thống để duy trì hoạt động theo thời gian.
Khả năng mở rộng Khả năng của một hệ thống có thể xử lý việc tăng tải mà không ảnh hưởng đến hiệu suất của hệ thống hoặc khả năng dễ dàng mở rộng.
Bảo vệ Khả năng của một hệ thống để ngăn chặn các hành động độc hại hoặc ngẫu nhiên bên ngoài cách sử dụng được thiết kế.
Hiệu suất Cho biết khả năng đáp ứng của hệ thống để thực hiện bất kỳ hành động nào trong một khoảng thời gian nhất định.
khả dụng Xác định tỷ lệ thời gian mà hệ thống hoạt động và hoạt động. Nó có thể được đo dưới dạng phần trăm của tổng thời gian ngừng hoạt động của hệ thống trong một khoảng thời gian xác định trước.
Chất lượng hệ thống Khả năng hỗ trợ Khả năng của hệ thống cung cấp thông tin hữu ích để xác định và giải quyết các vấn đề khi hệ thống không hoạt động chính xác.
Khả năng kiểm tra Đo lường mức độ dễ dàng tạo ra các tiêu chí kiểm tra cho hệ thống và các thành phần của nó.
Phẩm chất người dùng Khả năng sử dụng Xác định mức độ ứng dụng đáp ứng các yêu cầu của người dùng và người tiêu dùng bằng cách trực quan.
Chất lượng kiến ​​trúc Tính đúng đắn Trách nhiệm giải trình để đáp ứng tất cả các yêu cầu của hệ thống.
Chất lượng không thời gian chạy Tính di động Khả năng của hệ thống chạy trong các môi trường điện toán khác nhau.
Tính chính trực Khả năng làm cho các thành phần được phát triển riêng biệt của hệ thống hoạt động chính xác với nhau.
Khả năng sửa đổi Dễ dàng mà mỗi hệ thống phần mềm có thể đáp ứng các thay đổi đối với phần mềm của nó.
Thuộc tính chất lượng kinh doanh Chi phí và lịch trình Chi phí của hệ thống liên quan đến thời gian đưa ra thị trường, thời gian tồn tại của dự án và việc sử dụng di sản.
Khả năng tiếp thị Sử dụng hệ thống đối với cạnh tranh thị trường.