2008-11-19 24 views
16

Tôi nhận thấy rằng doxygen sử dụng thư viện graphviz để tạo sơ đồ. Bạn đã từng sử dụng graphviz để tạo tài liệu chưa? Có đáng học tập graphviz cho mục đích tài liệu ngoài phạm vi của doxygen không? Hoặc tôi tốt hơn để gắn bó với một gói mô hình hóa dữ liệu tiêu chuẩn như Visio?Graphviz cho tài liệu

Tôi hiểu giá trị của nó như một thư viện đồ thị, nhưng để cố gắng thể hiện UML phức tạp hơn (hoặc tương tự) thì nó vẫn đáng xem xét?

Trả lời

20

Graphviz là ngôn ngữ/định dạng rất đơn giản để tạo biểu đồ. Nếu khả năng là đủ cho bạn, tôi sẽ khuyên bạn nên nó (nó dễ dàng như vậy, mà tôi sẽ ước tính thời gian để học với nhiều nhất là 1 giờ).

+0

Tôi đồng ý. Tôi không biết về mục đích tài liệu, nhưng tôi đã có thể tạo ra các đồ thị hữu ích theo chương trình trong nửa giờ. Ấn tượng của tôi là một giờ có lẽ là hợp lý cho những điều cơ bản. –

+0

Tài liệu rất kém, thiếu hoàn toàn về các ví dụ ... Tôi không nghĩ bạn thực sự cần chỉ một giờ. Tôi đang cố gắng cả ngày để có được một số điều đơn giản về UML. – Thanks

+6

Công cụ chỉnh sửa cho công việc: Graphviz sắp hết sức khủng khiếp để cố gắng thực hiện UML, bởi vì đó không phải là những gì nó được thiết kế. Nếu bạn cần để có thể nhanh chóng hiển thị các mối quan hệ giữa các mục, Graphviz sẽ là tuyệt vời. Nếu bạn phải đặt vật phẩm một cách chính xác, bạn sẽ ghét cuộc sống. –

4

Có, graphviz dễ học và dễ sử dụng từ bên trong chương trình.

Ngoài ra, hãy xem yEd là một công cụ tốt để làm việc với biểu đồ. Không giống như Visio, nó sẽ tải và lưu một loạt các định dạng dễ dàng để chỉnh sửa thủ công hoặc tạo lập trình. Công cụ bố cục tự động cũng khá đẹp.

+6

Đối với những người thực sự thích Visio, bạn có thể sử dụng Graphviz để xuất ở định dạng SVG (-Tsvg) và sau đó đọc nó vào Visio. Mà sau đó có thể được chỉnh sửa để có được chính xác bố trí mong muốn.Tiết kiệm rất nhiều công việc grunt. –

3

Tôi đã sử dụng nó đôi khi để minh họa cho các máy trạng thái. graphviz là hoàn hảo cho điều đó.

10

Graphviz sẽ không cung cấp cho bạn giao diện đồ họa mượt mà như Visio. Tuy nhiên, nó sẽ tạo ra các biểu đồ được đặt ra tốt. Tôi thấy nó hữu ích nhất khi tôi tạo ra các đồ thị tự động thông qua một chương trình (như trong trường hợp của doxygen).

+4

Tôi sẽ nói * thường * cung cấp cho bạn các biểu đồ được sắp xếp cẩn thận. Quá khứ một mức độ phức tạp nhất định, bạn nhận được chồng chéo, vv Vẽ đồ thị là một vấn đề rất khó khăn. Đôi khi, bạn chỉ có thể thực hiện được rất nhiều ... http://dysart.cs.byu.edu/CHDataStructures/inherits.html –

+1

Có, tôi cho rằng điểm là bố cục đồ thị trong Graphviz tốt hơn nhiều so với bạn thường thấy trong các chương trình khác. Ngoài ra, nó cung cấp cho bạn kiểm soát bố trí khi bạn muốn hoặc cần nó. –

6

Graphviz hữu ích nhất để tạo biểu đồ phụ thuộc (qua dấu chấm) theo lập trình. Visitors sử dụng nó để hình dung lượt truy cập trang web; Hadoop/Cascading sử dụng nó để trực quan hóa kế hoạch thực hiện các công việc giảm bản đồ.

6

Tôi sử dụng GraphViz rộng rãi cho tài liệu và thường phác thảo các mối quan hệ hoặc sơ đồ kiến ​​trúc sử dụng GraphViz bên ngoài sau đó thêm chúng vào các trang phụ trong mã Doxygen của tôi bằng cách sử dụng dấu chấm @/@ enddot. Tôi cũng vừa mới bắt đầu sử dụng @dotfile có lợi ích kép của việc giữ các câu lệnh dấu chấm lớn trong các tài liệu mã và cho phép tôi tiếp tục xem trước chúng với GraphViz GUI.

Lợi ích lớn khác của GraphViz là định dạng văn bản đơn giản hoạt động rất tốt với điều khiển phiên bản. Bạn có thể thấy các thay đổi đối với sơ đồ trong git diff của bạn, điều này là không thể với bất kỳ định dạng tài liệu nhị phân nào. Như tôi đã sử dụng nó nhiều hơn trong những năm qua, điều này đang trở thành một tính năng quan trọng hơn đối với tôi.

Tuy nhiên, đối với UML, tôi sử dụng công cụ UML thực sự (Enterprise Architect) thay vì nhồi nhét trong Visio.

2

Đồng ý với sự đồng thuận ở đây; Tôi nhận được rất nhiều giá trị từ Graphviz. Nó thực sự tốt cho việc tạo ra các sơ đồ đơn giản và không đơn giản như vậy. Các nhà phát triển phần mềm có khuynh hướng thu hút các đồ thị, không chỉ ở mã nguồn mà còn ở nơi khác nữa.

Ví dụ: ngay bây giờ trong cửa sổ trình duyệt khác, tôi có phân nhánh và chiến lược hợp nhất của nhóm được minh họa bằng biểu đồ graphviz (được hiển thị bằng cách sử dụng confluence plugin BTW).

Graphviz cũng tốt cho UML. Xem this tutorial; đó là một giới thiệu tốt về Graphviz.

12

Nếu bạn chỉ đang nói về việc tạo các sơ đồ cộng tác/kế thừa giống như Doxygen, bạn nên kiểm tra các IDE sẽ tự động làm điều đó cho bạn. Đối với tài liệu từ đầu hoặc điều chỉnh bằng tay, tôi sử dụng OmniGraffle (vì tôi đang sử dụng máy Mac) mà tôi khuyên bạn nên sử dụng.

Tuy nhiên, GraphVizDOT có thể thực sự tiện dụng, không chỉ cho tài liệu, mà còn để gỡ lỗi và hiểu mã, đặc biệt đối với cấu trúc dữ liệu. Tôi thường không viết DOT bằng tay, nhưng DOT được tạo tự động có thể rất đáng để nỗ lực tối thiểu.

Một trong những nơi tôi đã tìm thấy GraphViz cực kỳ hữu ích là để hiểu và gỡ lỗi thuật toán cây tìm kiếm nhị phân. Tôi phát triển CHDataStructures.framework, một khung mục tiêu C nguồn mở, bao gồm một số loại BST. Tôi đã thực hiện hai phương pháp: -(NSString*)dotGraphString trên lớp cha và -(NSString*)dotGraphStringForNode: trên mỗi lớp con. Trong khoảng 30-40 dòng mã (phần lớn là ở dưới cùng của CHAbstractBinarySearchTree.m), tôi đã thêm khả năng lặp đi lặp lại cây nhị phân và tạo biểu diễn DOT của nó, bao gồm thông tin cân bằng, nút màu đỏ hoặc đen, v.v. Với một chút cẩn thận, bạn có thể dễ dàng đại diện cho các nút được gửi null và hiển thị cây theo thứ tự sắp xếp thích hợp.)

Trong mã thử nghiệm của tôi, sau mỗi sửa đổi của cây, tôi gọi là dotGraphString và lưu kết quả vào một .dot tập tin, dừng lại ở đó với một breakpoint, sau đó mở tập tin đó với GraphViz, đó là đủ thông minh để tái render đồ thị DOT khi tập tin được cập nhật. Cách tiếp cận này làm cho nó dễ dàng hơn nhiều để xem những gì đã xảy ra trong cây và phát hiện lỗi trong việc thực hiện một thuật toán đã cho. Cách tiếp cận này có thể được điều chỉnh khá dễ dàng đối với các loại cấu trúc dữ liệu khác nhau và thường nhanh hơn và dễ dàng hơn nhiều so với việc tạo giao diện người dùng chỉ để hình dung cấu trúc.

2

Chúng tôi sử dụng graphviz để tự động tạo sơ đồ đối tượng dưới dạng phản hồi của công cụ xác minh UML của chúng tôi. Chúng tôi thực sự hài lòng với kết quả vì chúng tôi quản lý để cung cấp kết quả đồ họa mà không lo lắng gì về bố cục.

+0

GraphViz thường đưa ra các biểu đồ khác với sơ đồ (nếu có). Kết quả là, tôi thường nhận thấy các chi tiết bị bỏ qua trong bản gốc. – CyberFonic

2

Tôi đã có một đi với Graphviz khá một vài lần, mặc dù thấy nó khá hạn chế.

Những gì tôi thấy tốt nhất cho nhãn hiệu sơ đồ nhập văn bản là Tikz tôi đã sử dụng nó cho FSM's

Nếu Graphviz sản lượng đáp ứng nhu cầu cụ thể của bạn, nó có thể là tốt. Nếu bạn không hài lòng với những gì nó làm và có một số trải nghiệm TeX - hãy xem Tikz. Có nhiều gói khác nhau ngoài kia, bạn không cần cần học thuần túy Tikz/PGF (có vẻ khá nặng).