ความเป็นมา: ผู้ทำงานร่วมกันของฉันและฉันกำลังเขียนบทความสำหรับวารสารวิชาการ ในหลักสูตรการวิจัยของเราเราเขียนโปรแกรมจำลองใน Java เราต้องการให้โปรแกรมจำลองใช้ได้อย่างอิสระให้ผู้อื่นใช้ เราได้ตัดสินใจที่จะโฮสต์รหัสในที่เก็บ GitHub เพื่อให้ผู้อื่นใช้ง่ายขึ้นเราต้องการเขียนเอกสารที่ดีสำหรับโปรแกรมของเรารวมถึง:
- Javadocs สำหรับแต่ละชั้นเรียนและวิธีการ
- วิธีใช้รหัส
- อธิบายโครงสร้างระดับสูงของรหัส
คำถามระดับสูงของฉันคือ: คุณสามารถให้ตัวอย่างที่ดีของคำและไดอะแกรมที่สามารถใช้อธิบายโครงสร้างระดับสูงของโปรแกรมได้หรือไม่? ซึ่งรวมถึงคำถามย่อย:
- เราจะแสดงคลาสที่มีอยู่ในแพ็คเกจใดได้อย่างไร
- เราจะแสดงสิ่งที่แพคเกจขึ้นอยู่กับแพคเกจอื่น ๆ ?
- เราจะแสดงให้เห็นว่าวัตถุ / คลาสในโปรแกรมทำงานร่วมกันได้อย่างไร
- เราพยายามใช้หลักการออกแบบที่เน้นการใช้โดเมนในการออกแบบรหัสของฉัน เราจะแสดงความสอดคล้องกันระหว่างวัตถุในโดเมนและไฟล์ซอร์สโค้ดเฉพาะที่เข้ารหัสวัตถุเหล่านี้ได้อย่างไร (ดูคำอธิบาย "ภาษาที่แพร่หลาย" ของโครงการด้านล่าง)
สิ่งที่ฉันได้ทำไปแล้ว
ภาษาที่แพร่หลาย
เราใส่คำอธิบาย "ภาษาที่แพร่หลาย" ของรหัสลงในไฟล์ubiquitous-language.md
เนื้อหาด้านล่าง
จุดประสงค์ของโครงการนี้คือการศึกษาว่านโยบายการเติมเต็มประสิทธิภาพในห่วงโซ่อุปทานแบบง่าย ๆ ด้วยศูนย์เดียวภายใต้ตัวเลือกระยะเวลาที่แตกต่างกันรายงานความล่าช้าและตัวแบบอุปสงค์
ในแต่ละช่วงเวลาเหตุการณ์ต่อไปนี้จะเกิดขึ้น:
- หากการจัดส่งมีกำหนดที่จะมาถึงโรงงานในช่วงเวลาปัจจุบันระดับสินค้าคงคลังของโรงงานจะเพิ่มขึ้นตามหน่วย X
- หากกำหนดการแสดงให้เห็นว่าในงวดปัจจุบันเป็นระยะเวลาที่รายงานจากนั้นสถานที่ยื่นรายงานไปยัง ผู้จัดจำหน่าย ซัพพลายเออร์ที่อาจได้รับรายงาน ทันทีหรือมีความล่าช้าหลายสัปดาห์ที่ผ่านมาตามที่ระบุโดยกำหนดการ
- หากซัพพลายเออร์ได้รับรายงานจากนั้นขึ้นอยู่กับ นโยบายการเติมเต็มมันจะคำนวณปริมาณการเติมเต็มของหน่วย X การจัดส่งหน่วย X ของผลิตภัณฑ์จะถูกกำหนดให้มาถึงหลังจากเวลานำของรอบระยะเวลา l
- ลูกค้ามาถึงโรงงานและต้องการหน่วย X ของผลิตภัณฑ์ ความต้องการที่ไม่ได้คาดหวังใด ๆ จะสูญหายไป
โครงสร้างรหัสต้นฉบับ
เราใส่คำอธิบาย "ระดับสูง" ที่ไม่สมบูรณ์ของรหัสลงในไฟล์structure.md
เนื้อหาด้านล่าง
โครงสร้างระดับแพ็คเกจ
ในระดับสูงสุดซอร์สโค้ดจะถูกจัดระเบียบเป็นสามแพ็คเกจ
com.gly.sfs
คลาสหลักที่มีmain
เมธอดอยู่ในแพ็คเกจนี้com.gly.sfs.model
คลาสโมเดลโดเมนอยู่ในแพ็คเกจนี้com.gly.sfs.util
คลาสตัวช่วยอยู่ในแพ็คเกจนี้