배경 : 저의 공동 연구자와 저는 학술지에 기사를 쓰고 있습니다. 연구 과정에서 Java로 시뮬레이션 프로그램을 작성했습니다. 우리는 다른 사람들이 사용할 수있는 시뮬레이션 프로그램을 자유롭게 만들고자합니다. 우리는 GitHub 리포지토리에서 코드를 호스팅하기로 결정했습니다. 다른 사람들이 쉽게 사용할 수 있도록 다음과 같은 프로그램에 대한 훌륭한 문서를 작성하려고합니다.
- 각 클래스 및 메소드에 대한 Javadoc
- 코드를 사용하는 방법
- 코드의 고수준 구조 설명
내 수준 높은 질문은 : 프로그램의 높은 수준의 구조를 설명하는 데 사용할 수있는 단어와 다이어그램의 좋은 예를 제공 할 수 있습니까? 여기에는 하위 질문이 포함됩니다.
- 어떤 패키지에 어떤 클래스가 포함되어 있는지 어떻게 알 수 있습니까?
- 어떤 패키지가 다른 패키지에 의존하는지 어떻게 표시합니까?
- 프로그램의 객체 / 클래스가 함께 작동하는 방법을 어떻게 보여줍니까?
- 우리는 코드 디자인에 도메인 기반 디자인 원칙 을 사용하려고 시도했습니다 . 도메인의 객체와 이러한 객체를 인코딩하는 특정 소스 코드 파일 간의 대응 관계를 어떻게 표시합니까? (아래 프로젝트에 대한 "유비쿼터스 언어"설명을 참조하십시오.)
내가 지금까지 한 일
유비쿼터스 언어
우리는 코드의 "유비쿼터스 언어"설명을 파일의 ubiquitous-language.md
아래 내용에 넣습니다 .
이 프로젝트의 목적은 다양한 리드 타임 모델, 보고서 지연 및 수요 모델에 따라 단일 시설을 갖춘 단순한 공급망에서 보충 정책이 얼마나 잘 수행되는지 연구하는 것입니다.
각 기간에 다음과 같은 이벤트가 발생합니다.
- 현재 기간에 선적 이 설비 에 도착하도록 예정된 경우 설비 의 재고 레벨이 X 단위로 증가합니다.
- 경우 일정이 현재 기간이보고 기간을 나타냅니다, 그 시설은 제출 보고서 받는 공급 업체 . 공급 업체는 수신 할 수 있습니다 보고서 에 의해 지정된대로, 몇 주 지연 또는 즉시 일정 .
- 경우 공급 업체는 수신 한 보고서 다음을 기반으로, 보충 정책을 , 그것은 X 단위의 보충 량을 계산합니다. 선적 제품 X 단위는 L주기의 선두 시간 이후에 도착 예정한다.
- 고객은 시설에 도착 하여 제품의 X 단위를 요구합니다. 충족되지 않은 수요는 없어집니다.
소스 코드 구조
코드의 불완전한 "고수준"설명을 파일 ( structure.md
아래 내용)에 넣습니다 .
패키지 레벨 구조
최상위 레벨에서 소스 코드는 세 가지 패키지로 구성됩니다
com.gly.sfs
main
메소드 가있는 기본 클래스 는이 패키지에 있습니다.com.gly.sfs.model
도메인 모델 클래스는이 패키지에 있습니다.com.gly.sfs.util
헬퍼 클래스는이 패키지에 있습니다.