Xin ví dụ về sử dụng UML để thiết kế ứng dụng trong lập trình

Đọc một số bài viết thì thấy tác giả hay sử dụng mô hình UML trong việc thiết kế ứng dụng nhưng mình tìm tài liệu đọc thì hầu hết đều nói quá nhiều kiến thức, vì UML ko chỉ áp dụng cho mỗi thiết kế ứng dụng mà còn áp dụng để thiết kếu trong nhiều lĩnh vực khác. Mình muốn tìm một bài viết về các cách thiết kế , giải thích các kí hiệu, các cách tổ chức UML thường dùng trong lập trình thôi.
Bạn nào có ví dụ hoặc tài liệu nào thì chia sẽ với nhé. Cảm ơn :smile:

1 Like

Mình không dùng. Thấy nó khó là phiền phức, tuy nhiên có thằng bạn hay dùng. Không biết nó còn sử dụng UML hay không.

UML dùng để thiết kế phần mềm, trong mô hình Waterfall thì nhất thiết là cần phải thiết kế sản phẩm ngay từ phút ban đầu, nên phải dùng nhiều. Còn trong Agile do tính chất công việc là hạn chết tài liệu, sản phẩm yêu cầu phát triển nhanh và đảm bảo thay đổi liên tục nên UML không còn mấy hữu hiệu; trong Agile thì tests là sản phẩm tối quan trọng duy nhất để đảm bảo là spec đúng.

Tuy nhiên với các chuyên gia level cao thì họ vẫn luôn sử dụng UML như một công cụ để hỗ trợ thiết kế sản phẩm.

Về sách:

  1. UML Distilled (Martin Fowler)

Về cơ bản, UML chỉ là một công cụ minh hoạ và trình bày ý tưởng. Nếu không nắm vững OOP, SOLID, Design Patterns thì UML chỉ là một thứ vô giá trị.

6 Likes

Bạn có thể tim tài liệu hướng dẫn về phân mềm rational rose để xem giải thích ký hiệu nhé, cũng giải thích các sơ đồ khá chi tiết (có tiếng việt)
Thường khi làm hệ thống lớn cần phải có technical design và UML là không thể thiếu. Trong technical design thường dùng Sequence Diagrams.

Các phần mềm mình biến dùng để vẽ UML

 Rational rose 
 Visio
 Power Design
2 Likes

Mình đọc nhiều về UML, các diagram như use case, object, class, package, deployment
Sequence(có thể hiểu là kịch bản) diagram mình đọc ở đây: Sequence diagram ATM, nhìn cái này thì hiểu về hệ thống hoạt động như thế nào. Còn đây là Collaboration diagram Collaboration diagram ATM, cái này khá dễ hiểu.

Câu hỏi của mình là :

  1. Sơ đồ này nó có ý nghĩa gì với developer, là 1 dev, khi nhìn mô hình này mình chẳng liên hệ gì với source code được, liệu nó có liên quan gì đến requirement không ?
  2. Các sơ đồ khác như state diagram, activity diagram dùng để làm gì ?

Mình muốn hiểu nó dùng làm gì, dùng cho ai chứ nếu vẽ để mà vẽ thì thực sự không cần.

Cứ đi làm thực tế ở một cty chuyên về phần mềm vài ba năm, sẽ hiểu. Chứ chưa đi làm, ngồi trên mớ giấy tờ lý thuyết, muôn đời không hiểu được giá trị của thiết kế.

4 Likes

Một hình ảnh = vạn lời nói. 1 diagram = trăm hình ảnh(tự suy) :smiley: => bạn đã hiểu tại sao cần dùng chưa. Để tiết kiệm công gõ text thôi :kissing_closed_eyes:

1 Like

Nhìn hình thì mình hiểu hệ thống, có điều là từ hình thiết kế mình muốn hiểu được source code của chương trình vì đa số chương trình mình làm không có thiết kế. Toàn phải tự ngồi đọc mã nguồn. Nếu có thiết kế và liên hệ được với source code thì sẽ dễ dàng và nhanh hơn rất nhiều

Đính chính lại @laptrinhio chút nha, trong Agile người ta vẫn dùng UML, mà thật ra là dùng nhiều là đăng khác. Trong “Agile Principles, Patterns, and Practices” của Robert C. Martin có viết là để chia sẽ thông tin giữa các agile member một cách nhanh nhất và hiệu quả nhất, chúng ta có thể sử dụng bất cứ ngôn ngữ hay mô hình nào, kể cả UML. Idea của Agile là không document lại những gì vô nghĩa hoặc những gì không có ai đọc; Chỉ document lại những thứ có người đọc, nếu bản thiết kế UML có ích và có ngưòi đọc thì vẫn nên được sử dụng.

UML là ngôn ngữ vốn dĩ được tạo ra để tech member giao tiếp với nhau một cách đơn giản, hiệu quả hơn. Thay vì sử dụng văn viết hoặc văn nói có thể có sự hiểu lầm câu chữ cũng như sai lệch thông tin khi chuyển tải, UML định nghĩa ra một tập các quy chuẩn ký hiệu để tech team giao tiếp với nhau treenn chuẩn chung đó. Do đó, sai sót cũng như hiểu lầm trên thông tin được trao đổi cũng giảm bớt đi. Mục đích cuối cùng vẫn là truyền đạt thông tin giữa mọi người trong team với nhau để công việc trở nên mưọt hơn. Nếu Agile member đảm bảo việc sử dụng những cách khác (nói miệng, viết document, vẽ hình, bla bla) hiệu quả, chính xác và tiết kiệm thời gian hơn thì có thể follow theo cách đó.

Còn việc tại sao UML được dùng nhiều trong Agile và các mô hình khác là vì do nó là chuẩn mực khá nổi tiếng rồi, nên nhiều người biết, dễ áp dụng. Cùng lý do tại sao tiếng anh lại thường được sử dụng nhiều khi giao tiếp ấy.

4 Likes

Công ty lớn nào cũng đều phải dùng UML hết, là vì:

  • Viết library hay framework đều phải dùng UML vì code base rất lớn, nếu không có thiết kế rõ ràng mà nhảy vào chơi luôn thì bug rất là nhiều, security không đảm bảo, code không mang tính reusability hay portability được.
  • Ngôn ngữ để các developer nói chuyện với nhau.
  • Có thể chia task ra nhỏ và transfer task cho outsource mà không cần phải giải thích nhiều, nhìn vào coder hiểu code như thế nào.=> dễ quản lý.

Còn bao nhiêu các bạn thêm vào nhé, ở công ty outsource thường nhận UML từ bên khách hàng về rồi code theo. 2 cái thông dụng nhất mình nghĩ có lẽ là Class diagram và Sequence Diagram, những loại còn lại thì tùy trường hợp mà sử dụng.

1 Like

chiwr sử dụng Rational rose không cần visio và power design đucợ không

Được, bản thân thấy nó tốt nhất ấy(đã từng sử dung 3 thằng).

2 Likes

3 thằng đều có đủ chức năng hã ,vậy dung Rational rose là đucợ chứ nhĩ ,

UML giống như bản vẽ trong xây dựng. Với các app lớn thì bắt buộc phải vẽ để người thiết kế hệ thống và người xây sản phẩm hiểu nhau. Nó cũng giúp cadi nhìn tổng quan về hệ thống.

Tuy nhiên với các app nhỏ thì có thể k cần.

Có lkhá nhiều site chia sẻ các UML chuẩn của Cms, ehóp, forum,…

1 Like

Mình có làm clip chia sẻ về cách vẽ cũng như phần mềm, bạn vào đây xem nhé
https://www.youtube.com/playlist?list=PLaKAkMkGe0fr8sOoAuctQLZnqbKagy5XN

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?