1. Giới thiệu về detail design

Trong lesson 6 chúng ta đã được giới thiệu rằng basic design là giai đoạn quyết định các yêu cầu đặc tả kỹ thuật (mình hay gọi là specification nha các cậu), còn detail design là giai đoạn quyết định cách thức triển khai chương trình.

Detail design, tức là giai đoạn quyết định cách thức triển khai chương trình, có thể được coi là công việc suy nghĩ về những phần mà người dùng cuối (end user) không nhìn thấy. Cụ thể, dựa trên các chức năng, phương thức thao tác và hiển thị đã được xác định ở giai đoạn trước, giai đoạn này sẽ xác định chi tiết cách thực hiện chúng dưới dạng chương trình và triển khai cấu trúc nội bộ của chương trình.

Trong giai đoạn này, cấu trúc chương trình, luồng dữ liệu và các phần chi tiết như phân nhánh điều kiện để xử lý sẽ được phản ánh vào tài liệu thiết kế chi tiết. Bằng cách sắp xếp cấu trúc nội bộ của chương trình trước khi lập mã, chúng ta có thể chuẩn hóa các logic tương tự, nhằm đảm bảo năng suất, chất lượng và cải thiện khả năng bảo trì.

Detail design chủ yếu bao gồm các nội dung sau:

  • Software class design (thiết kế lớp phần mềm)
  • Database design (Thiết kế cơ sở dữ liệu)
  • Screen detailed design (Thiết kế chi tiết màn hình)
  • Sequence diagram (Sơ đồ tuần tự)
  • Spec API (Đặc tả API)
  • System configuration ・Resource file specifications (Cấu hình hệ thống và đặc tả tệp tài nguyên)
  • Exception handling (Xử lý ngoại lệ)
  • Various forms (Các loại báo cáo)

Tất cả các tài liệu của giai đoạn này được gọi là tài liệu thiết kế chi tiết.

Với những dự án mà mình đã phụ trách ở hiện tại thì mình từng làm qua Database design (Thiết kế cơ sở dữ liệu), Sequence diagram (Sơ đồ tuần tự), Spec API (Đặc tả API) nên trong bài viết dưới đây, mình lấy ví dụ là phát triển hệ thống booking để lên thiết kế chi tiết cho 3 nội dung mà mình có thể hiện thực hóa. Mời các bạn đón đọc trong bài viết dưới đây:

https://ngontumathuat.com/post/detailed-design-document-for-ticket-booking-function-TKFo2HTY3APTekFswYTY/

Hội thoại mẫu

佐藤:進捗は現在のところオンスケジュールで進んでいるということで、今後もこの調子でお願いできればと思います。

Sato: Tiến độ hiện tại đang theo đúng kế hoạch, và tôi hy vọng chúng ta có thể duy trì tình hình này trong thời gian tới. 

アン:はい。本日は議題にもあげていた通り、詳細設計書のレビューの進め方についてご相談なのですが、すべて出来上がってからレビュー依頼をかけるのではなく、1つか2つあがってきた時点でアーキテクチャを含め、先行レビューをお願いした方がよいかと考えております。その際、記載の粒度についても確認していただきたいです。

An: Vâng anh. Hôm nay tôi muốn thảo luận về cách tiến hành review tài liệu thiết kế chi tiết như đã đề cập trong agenda. Thay vì chờ hoàn thành toàn bộ mới nhờ review, thì tôi nghĩ tốt hơn hết nên yêu cầu quý công ty review trước khi có một hoặc hai phần được hoàn thành, bao gồm cả phần kiến trúc. Đồng thời, tôi muốn nhờ anh xác nhận mức độ chi tiết của các nội dung đó.

佐藤:そうですね。その方法で実施すれば、お互い手戻りも少なくて済むと思いますし、効率的に進められそうですね。

Sato: Đúng vậy. Nếu thực hiện theo cách đó, chúng ta sẽ giảm bớt được công việc phải làm lại và có thể tiến hành một cách hiệu quả hơn nhỉ.

アン:その通りだと思います。実際、過去のプロジェクトでもこのような方法を取り入れて、滞りなく進めることができました。

An: Tôi cũng nghĩ vậy. Thực tế, trong các dự án trước đây, chúng tôi cũng đã áp dụng phương pháp này và đã thực hiện mọi thứ rất trơn trù mà không hề có sự gián đoạn nào.

佐藤:当初の計画に少し修正を加えないといけないと思いますので、日程調整ができたらご連絡ください。

Sato: Chúng ta sẽ cần phải điều chỉnh một chút kế hoạch ban đầu, nên hãy liên hệ khi anh đã có thể điều chỉnh lại schedule.

アン:承知しました。よろしくお願いします。

An: Tôi đã hiểu. Cảm ơn anh.

佐藤:では弊社からは以上ですが、御社から何かございますか。

Sato: Những điểm cần confirm thì chúng tôi đã confirm xong. Bên anh có điều gì muốn trao đổi thêm không?

アン:はい、議題に入れていなかったのですが、2点確認させてください。まず、メッセージー覧についてです。エラーが出た際にユーザ向けに表示するエラーメッセージですが、弊社で作成した後、文言についてご確認いただけないでしょうか。ネイティブレビューもしますが、特に日本語は御社の現場の方のご意見も伺えるとありがたいです。

Ann: Vâng, mặc dù không có trong agenda tuần này, nhưng tôi có 2 điểm vấn đề cần xác nhận ạ. Thứ nhất, về list message. Khi xảy ra lỗi, chúng tôi sẽ hiển thị error message cho user. Sau khi chúng tôi chuẩn bị xong phần này, nhờ anh kiểm tra lại câu văn được không? Chúng tôi sẽ thực hiện review lại list message bởi người bản xứ, nhưng đặc biệt với tiếng Nhật, chúng tôi rất mong nhận được ý kiến từ phía nhân viên của công ty anh.

佐藤:承知しました。いつ頃必要なのかを遅くとも1週間前には知らせてください。それで手配しておきます。

Sato: Tôi hiểu rồi. Hãy thông báo cho tôi ít nhất một tuần về việc khi nào bên anh cần review để chúng tôi có thể sắp xếp.

アン:ありがとうございます。最後、Q&Aの回答の件です。現在、詳細設計書を作成する際に出てくる不明点や疑問点をQ&Aであげています。一部現行サンプルや雛形のご提供もお願いしています。大部分はすぐにご回答いただいていますが、回答が遅れているものがあり、詳細設計書作成のスケジュールに影響が出そうなものがありますので、ご確認お願いいたします。

An: Cảm ơn anh. Nội dung confirm thứ 2 của tôi là về câu trả lời trong Q&A. Hiện tại, chúng tôi đã list ra các câu Q&A liên quan đến những điểm không rõ ràng trong khi tạo detail design. Một phần trong nội dung Q&A là nhờ bên anh cung cấp một số bản sample hiện tại và file template. Còn đa phần các câu Q&A khác thì chúng tôi cũng đã nhận được ngay câu trả lời từ phía anh, nhưng có một số câu bên anh trả lời chậm trễ và gây ảnh hưởng đến schedule tạo detail design, nên nhờ anh xác nhận lại giúp tôi.

佐藤:お待たせしていて申し訳ございません。サンプルは現場に確認しているので、五月雨式になってもかまわなければ、来たものから順次お送りします。今週中にはすべて送付するようにします。

Sato: Xin lỗi vì đã để anh phải chờ. Chúng tôi đang check lại file sample với các bạn trong công ty, nên nếu anh không phiền, chúng tôi sẽ gửi từng phần một khi có. Tôi sẽ cố gắng gửi toàn bộ trong tuần này.

アン:五月雨式でかまいませんので、よろしくお願いします。Q&Aですが、72番、76番、83番、86番について回答待ちで進めない状況ですので、ご確認お願いいたします。

An: Bên anh gửi từng phần cũng không sao cả, có gì nhờ anh gửi giúp tôi. Còn về phần Q&A, hiện chúng tôi đang chờ câu trả lời của các câu No.72, No.76, No.83, và No.86, mong anh xác nhận giúp tôi.

佐藤:承知しました。明日中に回答できるものは回答し、明日回答が難しいものはいつなら可能かを記載するようにします。

Sato: Tôi hiểu rồi. Những câu Q&A nào có thể trả lời được thì tôi sẽ trả lời trong ngày mai, còn những câu nào không thể trả lời ngay thì tôi sẽ ghi rõ thời gian có thể trả lời.

アン:よろしくお願いします。メンバーも手が空かないように、実装時の技術面の検討などいくつかのタスクを同時進行で実施しています。独立した機能であれば影響は少ないですが、複数の機能が連携して動くところもありますので、ご回答お待ちしております。

An: Cảm ơn anh. Để các member trong team không free task, chúng tôi đang thực hiện song song một số task khác như xem xét kỹ thuật khi triển khai. Đối với các chức năng độc lập thì ảnh hưởng sẽ rất ít, nhưng có những phần liên kết nhiều chức năng khác, nên chúng tôi rất mong nhận được câu trả lời sớm từ anh.

Tổng hợp từ vựng trong lesson 8

  • プログラムの構造: cấu trúc chương trình
  • 条件分岐: phân nhánh điều kiện
  • 落とし込む: phản ánh, mô tả chi tiết
  • リソースファイル: file tài nguyên
  • 帳票: báo cáo
  • 最大長: độ dài tối đa (hay còn gọi là maxlength)
  • ループを抜ける:  thoát khỏi vòng lặp
  • 活性にする:  xử lý cho thao tác được (active)
  • 非活性にする: xử lý cho không thao tác được (inactive)
  • 初期化: khởi tạo
  • シーケンス図:sequence diagram - biểu đồ tuần tự - là bản vẽ mô tả sự tương tác của các đối tượng theo trình tự thời gian để mô tả chức năng hệ thống 
  • 五月雨式/さみだれしき/:từng phần - là trạng thái công việc được thực hiện từng phần, có gián đoạn như cách nói ví von của người nhật về mùa mưa tháng 5. 
  • 実装: Implement - là việc phát triển chức năng của chương trình phần mềm. Trong dự án phát triển phần mềm, implement bao gồm giai đoạn coding và unit test. 
  • 進め方: cách thức tiến hành
  • オンスケジュール: đúng tiến độ, on schedule
  • 先行~: thực hiện... trước
  • 粒度: độ chi tiết
  • 手戻り: làm lại
  • 滞りなく進める: tiến hành suôn sẻ
  • 文言: cầu chữ
  • 現場: tại chỗ, tại nơi làm việc
  • 雛形 /ひながた/: template
  • 手が空く: rảnh tay, rảnh rỗi → mình hay gọi là free task tức là không có task 
  • 〜ば、〜少なくて済む: xong mà (tốn) ít...
    Ex: 初期費用に関して、クラウドサービスを利用すれば、自社でサーバーを購入する必要がなくなりますので、初期費用を少なくて済むことができます。
  • 〜とありがたいです。: Nếu... thì tốt quá!

           Ex: 本日中に雛形を提供していただけるとありがたいです。

 

 

Bài dịch cũ 

Lesson 1

Lesson 2

Lesson 3

Lesson 4

Lesson 5

Lesson 6

 
Lesson 7