From 918a4eeb525b7f015c47c3a50d48ffb458e6e80f Mon Sep 17 00:00:00 2001 From: monoid Date: Sat, 11 Jun 2022 16:58:50 +0900 Subject: [PATCH] reindexing --- book.toml | 2 +- src/SUMMARY.md | 2 +- src/architecture.md | 41 +++++++++++++++++++++-------------------- src/index.md | 21 +++++++++++++++------ src/overall.md | 2 +- src/support.md | 2 +- src/testing.md | 6 +++--- 7 files changed, 43 insertions(+), 33 deletions(-) diff --git a/book.toml b/book.toml index 83119ac..242b511 100644 --- a/book.toml +++ b/book.toml @@ -3,7 +3,7 @@ authors = ["monoid"] language = "ko" multilingual = false src = "src" -title = "Software Requirement Specification" +title = "Software Development Comprehensive Document" [preprocessor] [preprocessor.mermaid] diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 28a9a6b..529ad30 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -5,6 +5,6 @@ - [Introduction](./intro.md) - [Overall Description](./overall.md) - [Specific Requirement](./specific.md) -- [Supporting information](./support.md) +- [Requirement Specification Supporting Information](./support.md) - [Architecture](./architecture.md) - [Testing](./testing.md) \ No newline at end of file diff --git a/src/architecture.md b/src/architecture.md index fe97363..d27dffa 100644 --- a/src/architecture.md +++ b/src/architecture.md @@ -1,4 +1,4 @@ -# 5. 설계 +# 5. 설계(Architecture) ## 5.1 UML @@ -398,15 +398,15 @@ FsManager ..> "1" RPCMessageManager FsManager ..> "1" FsGetResult ``` -## 5.2 의사코드 +## 5.2 의사코드(Pseudo Code) 의사코드는 다음과 같이 진행된다. -### 서버 RPC 메세지 처리 +### 5.2.1 서버 RPC 메세지 처리 -클라이언트는 RPC를 진행하기 위해 웹소켓을 연결합니다. 웹소켓의 주소 `/ws`에 -도달하기 위해서 먼저 라우팅이 진행이 됩니다. 라우팅은 `TreeRouter` 클래스에서 - 진행됩니다. +클라이언트는 RPC를 진행하기 위해 웹소켓을 연결한다. 웹소켓의 주소 `/ws`에 +도달하기 위해서 먼저 라우팅이 진행이 된다. 라우팅은 `TreeRouter` 클래스에서 + 진행된다. ``` Input: req Request Output: Response @@ -419,7 +419,8 @@ fn Route(req){ response with 404 Not Found } ``` -마침내 엔드포인트에 도달하게 되면 웹소켓을 얻어내고 새로운 연결을 등록합니다. +마침내 엔드포인트에 도달하게 되면 웹소켓을 얻어내고 새로운 연결을 등록한다. +여기서 reqeust session으로 유저를 얻어내서 접속하는 것에 대해 주의하라. ``` Input: req Request Output: Response @@ -431,8 +432,8 @@ fn RPCHandleEndpoint(req){ res } ``` -이제부터 메세지를 받을 수 있습니다. -메세지가 오면 이 함수가 실행이 됩니다. +이제부터 `RPCMethod` 메세지를 받을 수 있다. +메세지가 오면 함수 `handleMessage` 가 실행이 호출된다. ``` Input: message on send Output: response @@ -443,11 +444,11 @@ fn Connection.handleMessage(msg: string){ } ``` -디스패치가 성공적으로 이루어지면 RPC 작업를 처리하는 함수에 도착합니다. -청크 작업을 예로 들겠습니다. 청크 작업에서는 권한을 확인하고 -명령의 충돌을 히스토리를 비교하며 다시 적용하며 해결합니다. +디스패치가 성공적으로 이루어지면 RPC 작업를 처리하는 함수에 도착한다. +청크 작업을 예로 들면 이렇다. 청크 작업에서는 권한을 확인하고 +명령의 충돌을 히스토리를 비교하며 다시 적용하며 해결한다. 그리고 요구된 작업을 처리하고 문서의 `updatedAt`을 업데이트하고 -문서 업데이트 사실을 이 문서를 보고 있던 참여자에게 전파합니다. +문서 업데이트 사실을 이 문서를 보고 있던 참여자에게 전파한다. ``` Input: conn Connection Input: m RPCChunkMethod @@ -481,15 +482,15 @@ fn ChunkOperation(conn, m){ } ``` -문서 작업도 마찬가지로 이루어집니다. +문서 작업도 마찬가지로 이루어진다. -### 클라이언트의 메세지 처리 동기화 +### 5.2.2 클라이언트의 메세지 처리 동기화 -클라이언트에서는 다음과 같은 일이 일어납니다. +클라이언트에서는 다음과 같은 일이 일어난다. -먼저 `notification`을 받습니다. 그러면 모든 `DocumentViewModel`에게 이벤트를 전달합니다. +먼저 `notification`을 받는다. 그러면 모든 `DocumentViewModel`에게 이벤트를 전달한다. 그리고 각각의 `DocumentViewModel`은 자기 문서에 일어난 일인지 확인하고 `ChunkListMutator`를 만들어서 -문서에 적용합니다. +문서에 적용한다. ``` Input: e RPCNotification Input: this document view model @@ -502,7 +503,7 @@ fn updateOnNotification(this,notification){ } ``` -문서의 레디큐에 mutator를 집어넣고 `seq` 번호가 기다리는 것이면 실행하고 업데이트합니다. +문서의 레디큐에 mutator를 집어넣고 `seq` 번호가 기다리는 것이면 실행하고 업데이트한다. ``` Input: mutator ChunkListMutator @@ -531,7 +532,7 @@ fn apply(this, mutator, updatedAt, seq){ } ``` -### 다른 작업들 +### 5.2.3 다른 작업들 ``` module chunk { diff --git a/src/index.md b/src/index.md index b6b117b..df6d531 100644 --- a/src/index.md +++ b/src/index.md @@ -1,12 +1,12 @@ # 목차(Index) -1. [Introduction](./intro.md) +1. [소개(Introduction)](./intro.md) 1. [목적(Purpose)](./intro.md#11-목적purpose) 2. [범위(scope)](./intro.md#12-범위scope) 3. [용어 및 약어 정의(Definitions, acronyms and abbreviations)](./intro.md#13-용어-및-약어-정의definitions-acronyms-and-abbreviations) 4. [참고자료(References)](./intro.md#14-참고자료references) 5. [개요(Overview)](./intro.md#15-개요overview) -2. [Overall Description](./overall.md) +2. [전체 시스템 개요(Overall description)](./overall.md) 1. [제품 관점(Product perspective)](./overall.md#21-제품-관점product-perspective) 1. [시스템 인터페이스(System interfaces)](./overall.md#211-시스템-인터페이스system-interfaces) 2. [사용자 인터페이스(User interfaces)](./overall.md#212-사용자-인터페이스user-interfaces) @@ -24,7 +24,7 @@ const name = `${c} Operation`; const href = `2.2.${index} ${c} Operation` %><%= `${index++}. [${name}](./overall.md#${it.toHeadId(href)})\n ` %><%}%><%="\n"%> -3. [Specific Requirement](./specific.md) +3. [상세요구사항(Specific Requirements)](./specific.md) 1. [외부 인터페이스 요구사항(External interface requirements)](./specific.md#31-외부-인터페이스-요구사항external-interface-requirements) 2. [기능 요구사항(Functional requirements)](./specific.md#32-기능-요구사항functional-requirements) <%= it.issues.map((i)=>`(#${i.number}) ${i.title}`).map( @@ -38,6 +38,15 @@ 7. [상세 요구사항의 구성(Organizing the specific requirements)](./specific.md#37-상세-요구사항의-구성organizing-the-specific-requirements) 1. [객체(Objects)](./specific.md#371-객체objects) 2. [사용자 인터페이스 상세](./specific.md#372-사용자-인터페이스-상세) -4. [Supporting information](./support.md) -5. [Architecture](./architecture.md) -6. [Testing](./testing.md) \ No newline at end of file +4. [요구사항 명세 추가 이력 (Requirement Specification Supporting Information)](./support.md) + 1. [부록(Appendixes)](./support.md#41-부록appendixes) + 2. [개발 환경(Development Environment)](./support.md#42-개발-환경development-environment) + 3. [일정표(Schedule)](./support.md#43-일정표schedule) +5. [설계(Architecture)](./architecture.md) + 1. [UML](./architecture.md#51-uml) + 1. [Server Side UML](./architecture.md#511-server-side-uml) + 2. [Client Side UML](./architecture.md#512-client-side-uml) + 2. [의사코드(Pseudo Code)](./architecture.md#52-의사코드pseudo-code) +6. [시험(Testing)](./testing.md) + 1. [유닛 테스트(Unit test)](./testing.md#61-유닛-테스트unit-test) + 2. [기능 테스트(Functional Test)](./testing.md#62-기능-테스트functional-test) \ No newline at end of file diff --git a/src/overall.md b/src/overall.md index 67a4557..a3d38df 100644 --- a/src/overall.md +++ b/src/overall.md @@ -1,6 +1,6 @@ # 2. 전체 시스템 개요(Overall description) -### 2.1. 제품 관점(Product perspective) +## 2.1. 제품 관점(Product perspective) ### 2.1.1. 시스템 인터페이스(System interfaces) diff --git a/src/support.md b/src/support.md index 2848d82..545277a 100644 --- a/src/support.md +++ b/src/support.md @@ -1,4 +1,4 @@ -# 추가 이력 (Supporting Information) +# 요구사항 명세 추가 이력 (Requirement Specification Supporting Information) ## 4.1. 부록(Appendixes) diff --git a/src/testing.md b/src/testing.md index f7a500f..ebd882c 100644 --- a/src/testing.md +++ b/src/testing.md @@ -1,6 +1,6 @@ -# Testing +# 6. 시험(Testing) -## 유닛 테스트 +## 6.1 유닛 테스트(Unit test) 유닛 테스트로 69.6%의 Line Coverage와 73.4%의 Function Coverage를 달성했다. 다음과 같은 로그가 있다. @@ -75,7 +75,7 @@ test result: ok. 35 passed (15 steps); 0 failed; 0 ignored; 0 measured; 0 filter ``` -## 기능 테스트 +## 6.2 기능 테스트(Functional Test) ### Chunk