Có một tiêu chuẩn để ghi lại kiến ​​trúc cấp cao của chương trình không?


10

Tôi là một nhà phát triển nghiệp dư và tất cả các chương trình của tôi cho đến nay đều đủ đơn giản để được ghi lại trong mã. Trong khi đọc mã, rõ ràng tôi đã làm gì và hành động như vậy (bài kiểm tra tiêu chuẩn của tôi là xem mã 6 tháng sau và hiểu mọi thứ ở lần đọc đầu tiên - và tôi có khoảng thời gian bộ nhớ ngắn).

Bây giờ tôi phải đối mặt với một chương trình vượt xa khả năng của mình để ghi nhớ các tương tác khác nhau giữa

  • bản thân mã
  • các chỉ mục trong cơ sở dữ liệu
  • sự tương tác giữa các mô-đun khác nhau (mã lõi "worker" và "library")

Tài liệu hiện tại của tôi là một bảng trắng nơi tôi có tất cả các loại hộp và mũi tên trỏ đến mã, chỉ mục cơ sở dữ liệu, hành động được thực thi, thay đổi trạng thái, v.v. Chỉ để tham khảo, một đoạn của mớ hỗn độn:

nhập mô tả hình ảnh ở đây

Câu hỏi của tôi là liệu có một tiêu chuẩn, hoặc được đặt tên là tập hợp thực hành tốt nhất (được đặt tên theo nghĩa là đây là một tập hợp được nhóm theo một tên cụ thể) cho tài liệu về các sản phẩm phức tạp hơn.

Các từ khóa tôi nên tìm là gì (những nỗ lực chung về "tiêu chuẩn kiến ​​trúc phần mềm tài liệu" và các biến thể tương tự thường dẫn đến phần mềm cho quy trình công việc hoặc xây dựng hệ thống CAD kiến ​​trúc).

Tôi cũng hy vọng rằng có thể không có thực tiễn tốt nhất chung cho các mô tả cấp cao và mọi người đều xây dựng triết lý riêng của mình.


um UML và một số văn bản cũ đơn giản thường
jk.

Nếu bạn có thể đọc tiếng Đức, hãy xem arc42.de/template/index.html Họ hiển thị một số dòng hướng dẫn để ghi lại kiến ​​trúc phần mềm.
Bernhard Hiller

8
"Không bận tâm để làm điều đó" có lẽ là gần nhất với một tiêu chuẩn.
whatsisname

Câu trả lời:


13

Không có một tiêu chuẩn mà mọi người tuân thủ. Các dự án phần mềm có thể khác nhau rất nhiều (nghĩ: helloworld.py so với mã trong tàu con thoi).

Một phương pháp rất phổ biến là sử dụng mô hình 4 + 1 . Thay vì cố gắng nhồi nhét mọi thứ vào một kiểu tài liệu duy nhất, phương pháp này chia thiết kế thành năm thành phần:

  • Các phát triển tầm nhìn
  • Các logic xem
  • Các Physical xem
  • Các quá trình xem
  • Kịch bản

Các quan điểm khác nhau mô tả sản phẩm từ bốn quan điểm khác nhau. Các kịch bản là nơi các trường hợp sử dụng sống và mô tả sự tương tác của các khung nhìn khác.

Lưu ý: Đây là mô hình khái niệm và không bị ràng buộc với bất kỳ công cụ cụ thể nào.

Bạn có thể đọc thêm ở đây:

  1. Mô hình xem kiến ​​trúc 4 + 1 (wikipedia)
  2. Kiến trúc Blueprints Kiến trúc mô hình Kiến trúc phần mềm 4 + 1 của Chế độ xem Kiến trúc (Giấy IEEE - pdf)

Đây là một cách tiếp cận rất tốt, cảm ơn. Quay trở lại, người ta có thể nghĩ rằng nó khá rõ ràng, nhưng nó giúp ích rất nhiều cho việc ngắt kết nối các phần 4 + 1 khác nhau mà tôi có trên một biểu đồ.
WoJ

4

IMHO UML không phải là một công cụ hoạt động tốt để ghi lại kiến ​​trúc của phần mềm trong thế giới thực. Biểu đồ lớp rất hữu ích, nhưng sử dụng mức độ trừu tượng thường quá thấp cho mục đích này. Sơ đồ ca sử dụng thường quá "cao cấp" và bỏ lỡ các khía cạnh nhất định. Các loại sơ đồ UML khác có vấn đề tương tự (Công bằng, sơ đồ gói, sơ đồ triển khai, sơ đồ thành phần có thể ghi lại các khía cạnh kiến ​​trúc nhất định, nhưng cá nhân tôi chưa bao giờ thấy chúng rất hữu ích).

Nếu bạn đang tìm kiếm một cách làm việc, thực dụng để ghi lại các kiến ​​trúc cấp cao, tôi khuyên bạn nên làm quen với các sơ đồ luồng dữ liệu . Đây là những điều dễ hiểu và có lợi thế họ có thể mở rộng đến các mức độ trừu tượng khác nhau. Tôi đã tìm thấy chúng hữu ích nhất để ghi lại các loại hệ thống khác nhau. Thật tệ là họ không tìm thấy chúng vào UML, nhưng bạn vẫn tìm thấy rất nhiều công cụ - ngay cả những công cụ miễn phí như Dia hay DrawIO - để tạo các sơ đồ này.

Là một lưu ý phụ, tại sao bạn yêu cầu "chỉ mục trong cơ sở dữ liệu" trong một tài liệu cấp cao? Tôi nghĩ rằng chúng là một chi tiết triển khai của mô hình dữ liệu (quan hệ?) Của bạn và nếu bạn thêm chúng hay không - theo kinh nghiệm của tôi - thêm một câu hỏi về hiệu suất và tối ưu hóa.


Sơ đồ gói? Sơ đồ triển khai? Sơ đồ thành phần?
Nick Keighley

3
Thành thật mà nói, một loạt các hộp có mũi tên có thể làm việc kỳ diệu để truyền đạt một số tính năng thiết kế. Tôi đoán các sơ đồ thành phần thuộc danh mục đó, nhưng khách hàng của tôi hiểu luồng dữ liệu với các hộp đại diện cho các bit chính. Tôi đồng ý với Doc Brown. Hình thức của UML không đạt được mục đích của nó.
Berin Loritsch

@NickKeighley: xem chỉnh sửa của tôi.
Doc Brown

@BerinLoritsch: IMHO "một loạt các hộp có mũi tên" đặc trưng cho các loại sơ đồ được đề cập bởi Nick Keighley. Tuy nhiên, sơ đồ luồng dữ liệu phân biệt chính thức rõ ràng giữa dữ liệu hoặc nhóm / cụm dữ liệu và các quy trình hoặc thành phần chuyển hoặc biến đổi các dữ liệu này. Đó là điều tôi không thể diễn đạt với bất kỳ sơ đồ UML nào một cách dễ dàng.
Doc Brown

1
Tôi phải thừa nhận đôi khi tôi sử dụng sơ đồ luồng dữ liệu - đặc biệt là các sơ đồ cho phép các cửa hàng. Trong thực tế, sơ đồ cấp cao nhất mô tả hệ thống của chúng tôi về cơ bản là một DFD. Tôi vẫn thấy sơ đồ Class và Gói hữu ích ở một mức độ nào đó. Tôi không chú ý nhiều đến các phần "chính thức" của UML.
Nick Keighley

0

Ngôn ngữ mô hình hóa thống nhất (UML) là ngôn ngữ mô hình hóa, phát triển, đa mục đích trong lĩnh vực công nghệ phần mềm, nhằm cung cấp một cách tiêu chuẩn để trực quan hóa thiết kế của một hệ thống.


Thông số chính thức có thể được tìm thấy tại omg.org/spec/UML/2.5 nhưng có rất nhiều hướng dẫn thân thiện hơn trên web.
Simon B

2
Câu trả lời này chỉ là một phần của câu hỏi, UML rõ ràng là công cụ phù hợp để mô hình hóa, nhưng bản thân nó không phải là một tài liệu đầy đủ
Walfrat

3
Có ai sử dụng UML rất thường xuyên không?
Panzercrisis

vẽ nguệch ngoạc. kỹ thuật đảo ngược.
Nick Keighley

1
@Walfrat. Là nó? Có thật không? Tôi có nghi ngờ của tôi.
Doc Brown

-3

Tôi nghĩ chúng ta đã từng làm tốt hơn. UML dường như ném em bé ra ngoài bằng nước tắm. Khi cung cấp một Ngôn ngữ mô hình thống nhất, nó đã xóa bỏ sự khác biệt giữa kiến ​​trúc và triển khai. Hoặc nếu nó không có ý định này dường như sẽ có hiệu lực.

Tôi đã thấy một số mô hình UML quái vật và thật lòng họ không làm gì cho tôi mà mã không thể làm được, và làm điều đó tốt hơn.


3
không trả lời câu hỏi, có lẽ tốt hơn là nhận xét về câu trả lời của SuperGirl.
Newtopian

1
Nó giải quyết câu hỏi. Tôi cho rằng câu trả lời cho câu hỏi là "Không" nhiều hơn trước đây.
Nick Keighley
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.