From e74e2cbc2ded82259f501d66cd63f33b6d1348a5 Mon Sep 17 00:00:00 2001 From: monoid Date: Mon, 18 Apr 2022 16:54:59 +0900 Subject: [PATCH] v2 --- src/OverallDescription.md | 168 ++++++++++++++---------------------- src/SpecificRequirements.md | 41 +-------- src/introduction.md | 53 +++--------- 3 files changed, 81 insertions(+), 181 deletions(-) diff --git a/src/OverallDescription.md b/src/OverallDescription.md index 7ae7766..bfbd930 100644 --- a/src/OverallDescription.md +++ b/src/OverallDescription.md @@ -1,18 +1,9 @@ # 2. 전체 시스템 개요(Overall description) -> - 제품 및 제품 요구사항에 영향을 미치는 일반적인 요인을 설명해야 한다. -> - 특정 요구사항을 설명하지 않고, 상세 요구사항(Specific requirements)에 관한 배경을 제공한다. - ### 2.1. 제품 관점(Product perspective) -> - 제품을 관련된 다른 제품과의 관계를 중심으로 봐야 한다. -> - 제품이 독립적인 경우 명시되어야 하고, 더 큰 시스템의 구성 요소로 정의된다면 시스템의 요구사항을 소프트웨어의 기능과 관계시켜야 하며 시스템과 소프트웨어 사이의 인터페이스를 식별해야 한다. - ### 2.1.1. 시스템 인터페이스(System interfaces) -> - 각 시스템 인터페이스를 나열한다. -> - 시스템 요구사항을 달성하기 위한 소프트웨어 기능과 시스템에 일치하는 인터페이스에 관해 설명한다. - 본 시스템은 Cross-platform 소프트웨어이다. 다음과 같은 브라우저가 원활히 실행될 수 있는 시스템에서 동작 할 수 있다. - Chrome 버전 61 이상 - Firefox 버전 60 이상 @@ -23,39 +14,22 @@ ### 2.1.2. 사용자 인터페이스(User interfaces) -> 1. 소프트웨어 제품과 사용자 간 인터페이스의 논리적 특성을 지정한다. -> - 소프트웨어 요구사항을 충족하는 데 필요한 구성 특성(필요한 화면 형식, 페이지 또는 창 레이아웃, 보고서나 메뉴의 내용, 프로그래밍 가능한 기능 키의 사용 가능)을 포함 -> 1. 시스템을 사용해야 하는 사람에게 최적화된 모든 측면을 설명한다. - -사용자 인터페이스의 디자인은 Material Design이나 Metro Design 같이 플랫한 디자인을 추구한다. -인터페이스의 구성요소는 다음과 같다. 문서는 글뭉치의 집합입니다. 글뭉치는 문단이나 이미지, 영상, 링크 또는 csv등의 구조적 텍스트입니다. 글뭉치는 안의 내용에 따라 표시됩니다. 사용자는 글뭉치를 이리저리 원하는 장소에 배치 할 수 있습니다. 사용자는 글뭉치를 다른 웹 페이지에서 드래그엔드롭으로 끌어 올 수 있습니다. 사용자는 문서를 보이는 대로 웹 페이지로 출력 할 수 있습니다. - +웹으로 동작하는 GUI이다. 키보드와 마우스, 터치 인터페이스로 동작할 수 있다. GUI의 디자인은 Material Design이나 Metro Design 같이 플랫한 디자인을 추구한다. ### 2.1.3. 하드웨어 인터페이스(Hardware interfaces) -> - 소프트웨어 제품과 시스템의 하드웨어 컴포넌트 사이에 각 인터페이스의 논리적 특성을 지정해야 한다. -> - 지원하는 기기의 종류와 지원 방법, 사용하는 프로토콜 등에 관한 내용을 다룬다. +해당되지 않음. ### 2.1.4. 소프트웨어 인터페이스(Software interfaces) -> - 다른 필수 소프트웨어(데이터 관리 시스템, 운영체제, 수학 패키지)의 사용과 다른 시스템과의 인터페이스를 지정한다. -> - 각 소프트웨어 제품에 대해 제공되어야 하는 정보 -> 1. Name -> 1. Mnemonic -> 1. Specification number -> 1. Version number -> 1. Source -> - 각 인터페이스에 대해 제공되어야 하는 정보 -> 1. 소프트웨어와 인터페이스 하는 목적 -> 1. 인터페이스에서 사용되는 메시지의 내용과 형식에 관한 정의 -> - 문서화된 인터페이스를 자세하게 설명할 필요는 없지만, 인터페이스를 정의하는 문서에 대한 참조가 필요하다. +이 프로젝트의 결과물은 클립보드를 통해서 여러 타입의 데이터를 import/export한다. ### 2.1.5. 통신 인터페이스(Communications interfaces) -> - 로컬 네트워크 프로토콜과 같은 통신에 대한 다양한 인터페이스를 지정해야 한다. +해당되지 않음. ### 2.1.6. 메모리 제약사항(Memory constraints) -> - 1차 및 2차 메모리에 적용 가능한 특성과 한계를 명시해야 한다. +해당되지 않음. ### 2.1.7. 운영(Operations) @@ -69,77 +43,76 @@ ### 2.1.8. 사이트 적용 요건(Site adaption requirements) -> - 특정 사이트, misson, 또는 동작 모드(grid value, safety, etc)에 특화된 어떤 데이터나 초기화 순서에 대한 요구사항을 정의한다. -> - 소프트웨어를 특정 설치에 알맞도록 수정해야 하는 사이트 또는 mission과 관련된 특징을 지정한다. +해당되지 않음. ## 2.2. 제품 기능(Product functions) -> - 소프트웨어가 수행하는 주요 기능에 대한 요약을 제공한다. -> - 필요한 기능의 요약은 상위 수준의 명세서로부터 가져올 수 있다. -> - 준수해야 하는 사항 -> 1. 고객이나 다른 사람이 봤을 때 기능 목록을 보고 이해할 수 있도록 기능이 구성되어야 한다. -> 1. 텍스트 또는 그래픽을 통해 기능들 사이의 관계를 보여줄 수 있다. -> - 여기에서 표현되는 다이어그램은 설계를 보여주기 위함이 아니라 변수 사이의 논리적 관계를 단순하게 보여주기 위한 것이다. - 본 프로젝트의 결과물은 다음과 같은 기능을 수행한다. -- Scrap - - Focus, Unfocus - - 수정 - - 읽기 - - 삭제 - - 다른 것과 스왑 - - Alt 화살표로 스왑 - - LaTex 편집, 미리보기 띄워주기 - - 링크 타입 - - 미리보기 보여주기 - - 링크 캐시 - - git 히스토리 보여주기 - - LaTex 타입 - - 그림, 비디오 - - 워드, 한글 뷰어 - - 자동 완성 -- Document - - Scrap 얻어오기 - - 삭제 - - 태그 붙이기 - - 드래그 앤 드롭 업로드 - - 외부 변경 감지 자동 리로드 - - 공유 - - STUN, TURN 서버를 통한 편집 - - navigator -- File TreeView - - 파일 삭제 - - 파일 다운로드 - - 파일 업로드 - - Document 오픈 - - 드래그앤드롭 파일 move -- Search - - 문서 태그 검색 - - 문서 내용 검색 -- Clipboard - - 보기 - - 추가 - - 삭제 - - 클립보드 내용 바꾸기. - - 드래그앤드롭 파일 -- Management - - login with session - - Configure - - 현지화(localization) - - 테마 -- 내부 플러그인 - - 샘플: 체스 형식 뷰어 -- 브라우저 확장기능: 로그인이 필요한 곳을 위한 캐시된 웹사이트 제공하는 +### 2.2.1 Scrap Opreration +1. Focus, Unfocus +1. 수정 +1. 읽기 +1. 삭제 +1. 다른 것과 스왑 + - Alt 화살표로 스왑 +1. LaTex 편집, 미리보기 띄워주기 +1. 링크 타입 + - 미리보기 보여주기 + - 링크 캐시 +1. git 히스토리 보여주기 +1. LaTex 타입 +1. 그림, 비디오 +1. 워드, 한글 뷰어 +1. 자동 완성 +### 2.2.2 Document Opreration +1. Scrap 얻어오기 +1. 삭제 +1. 태그 붙이기 +1. 드래그 앤 드롭 업로드 +1. 외부 변경 감지 자동 리로드 +1. 공유 +1. STUN, TURN 서버를 통한 편집 +1. navigator +### 2.2.3 File TreeView Opreration +1. 파일 삭제 +1. 파일 다운로드 +1. 파일 업로드 +1. Document 오픈 +1. 드래그앤드롭 파일 move +### 2.2.4 Search Opreration +1. 문서 태그 검색 +1. 문서 내용 검색 +### 2.2.5 Clipboard Opreration +1. 보기 +1. 추가 +1. 삭제 +1. 클립보드 내용 바꾸기. +1. 드래그앤드롭 파일 +### 2.2.6 Management Opreration +1. login with session +1. Configure +1. 현지화(localization) +1. 테마 +### 2.2.7 내부 플러그인 Opreration +1. 샘플: 체스 형식 뷰어 +### 2.2.8 브라우저 확장기능 Opreration +1. 로그인이 필요한 곳을 위한 캐시된 웹사이트 제공하는 + +### 2.2.9 비기능적 기능 +- Docker 배포 +- .env 설정 +- 첫 로드후 로딩 0.5s 이내 +- 동시 편집 이용자 5명 이내 +- 1000 RPS 정도 버티기 ## 2.3. 사용자 특성(User characteristics) 사용자는 기본적인 GUI 조작을 할 줄 알며 인터넷 사용을 원활히 할 수 있고 기본적인 영어를 읽고 쓸 줄 알며, markdown을 작성할 수 있는 사용자로 한정한다. 일반적으로 13세 이상 65세 이하의 사람을 사용자로 가정한다. -> - 교육 수준, 경험, 기술적 전문 지식을 포함하여 제품의 대상이 되는 사용자의 일반적인 특성을 설명해야 한다. -> - 세부적인 요구사항을 기술하는 데 사용되어서는 안 되고, 세부 요구사항이 나중에 명시되는 이유로 제공되어야 한다. - ## 2.4. 제약사항(Constraints) +이 프로젝트는 MIT License로 개발되고 있으므로 라이브러리의 라이센스도 신경을 쓴다. + > - 개발자의 선택을 제한할 모든 항목에 관한 일반적인 설명을 제공해야 한다. > - 포함되는 내용 > 1. Regulatory plocies @@ -153,18 +126,11 @@ > 1. Reliability requirements > 1. Criticality of the application > 1. Safety and security considerations -> -- Docker 배포 -- .env 설정 -- 첫 로드후 로딩 0.5s 이내 -- 동시 편집 이용자 5명 이내 -- 1000 RPS 정도 버티기 -- + ## 2.5. 가정 및 의존성(Assumptions and dependencies) -> - SRS에서 명시한 요구사항에 영향을 미치는 요소들을 나열해야 한다. -> - 이 요소들은 소프트웨어의 설계 제약사항이 아니라 SRS의 요구사항에 영향을 미칠 수 있는 변경 사항들이다. +해당되지 않음. ## 2.6. 단계별 요구사항(Apportioning of requirements) -> - 시스템의 향후 버전으로 지연될 수 있는 요구사항을 식별해야 한다. \ No newline at end of file +해당되지 않음. \ No newline at end of file diff --git a/src/SpecificRequirements.md b/src/SpecificRequirements.md index 6c393a8..97a0fac 100644 --- a/src/SpecificRequirements.md +++ b/src/SpecificRequirements.md @@ -12,30 +12,7 @@ ## 3.1. 외부 인터페이스 요구사항(External interface requirements) -> - 소프트웨어 시스템의 모든 입력과 출력에 관해 자세히 설명해야 한다. -> - "Overall description"의 인터페이스 설명을 보완하되, 그곳의 정보가 반복되지 않아야 한다. -> - 포함되는 외부 인터페이스의 내용 및 형식 -> 1. Name of item -> 1. Description of purpose -> 1. Source of input or destination of output -> 1. Valid range, accuracy, and/or tolerance -> 1. Units of measure -> 1. Timing -> 1. Relationships to other inputs/outputs -> 1. Screen formats/organization -> 1. Window formats/organization -> 1. Data formats -> 1. Command formats -> 1. End messages - -### 3.1.1. 사용자 인터페이스(User interfaces) - -### 3.1.2. 하드웨어 인터페이스(Hardware interfaces) - -### 3.1.3. 소프트웨어 인터페이스(Software interfaces) - -### 3.1.4. 통신 인터페이스(Communications interfaces) - +해당되지 않음. ## 3.2. 기능 요구사항(Functional requirements) > - 기능 요구사항은 소프트웨어가 입력을 처리하고 출력을 생성하는 기본적인 행동을 정의해야 한다. @@ -76,13 +53,7 @@ ### 3.5.1. 표준 준수(Standards compliance) -> - 표준이나 규정에서 파생된 요구사항을 기술한다. -> - 포함될 수 있는 내용 -> 1. Report format -> 1. Data naming -> 1. Accounting procedures -> 1. Audit tracing - +해당되지 않음. ## 3.6. 소프트웨어 시스템 속성(Software system attributes) > - 요구사항으로 사용될 수 있는 소프트웨어의 여러 가지 속성 중 제품이 객관적으로 입증되는 데 필요한 속성을 명시해야 한다. @@ -112,13 +83,7 @@ ### 3.6.5. 이식성(Portability) -> - 소프트웨어를 다른 호스트 시스템 또는 운영체제로 쉽게 이식할 수 있는 속성을 명시해야 한다. -> - 포함될 수 있는 속성의 종류 -> 1. Percentage of components with host-dependent code -> 1. Percentage of code that is dependent -> 1. Use of a proven portable language -> 1. Use of a particular compiler or language subset -> 1. Use of a particular operation system +해당되지 않음. ## 3.7. 상세 요구사항의 구성(Organizing the specific requirements) diff --git a/src/introduction.md b/src/introduction.md index 1d19f83..94e9e2f 100644 --- a/src/introduction.md +++ b/src/introduction.md @@ -1,37 +1,20 @@ # 1. 소개(Introduction) -## 목적(Purpose) - 본 문서는 전북대학교 컴퓨터공학과의 Floor 팀에서 Scrap Yard라는 어플리케이션을 설계 및 구현하기 위한 소프트웨어 요구사항 명세서(SRS)이다. +## 목적(Purpose) + +본 문서의 목적은 프로젝트의 관련된 모든 아이디어들을 정리하고 분석해서 나열하는 것이다. 또한 프로젝트를 더 잘 이해하기 위해 이 제품이 어떻게 사용될지 예측하고 분류하고, 나중에 개발될 요소를 설명하고, 고려 중이지만 폐기될 수 있는 요구사항들을 문서화합니다. + ## 범위(Scope) -본 프로젝트는 다음과 같은 항목을 범위로 한다. +본 문서의 범위는 ScrapYard의 기능들과 그 환경이다. -- ScrapYard 앱이 가지는 기능 - - 기능: 웹페이지 링크 미리보기 - - 기능: 로그인이 필요한 곳을 위한 캐시된 웹사이트 제공하는 브라우저 확장기능. - - 기능: 문서 편집 - - 기능: Latex 수식 편집 - - 기능: 문서 링크 공유(파일 공유) - - 기능: 드래그 앤 드롭 업로드 - - 기능: 파일이 에디터 외부에서 편집되어도 업데이트 - - 기능: 검색 - - 기능: 문서 태그 - - 기능: 단순 로그인/로그아웃 설정 - - 기능: 관리창 - - 기능: self-hosting을 위한 Docker image 제공 - - 기능: gitbook 과 같은 문법으로 nav를 만들 수 있음. - - 기능: 다국어 지원: Internationalization (i18n) - - 기능: 테마(Light, Dark) - - 기능: 서버에서의 문서 동시 편집. - - 기능: STUN 서버를 통한 동시 편집. - - 기능: 자동완성 - - 기능: 문서 히스토리 버퍼 - - 기능: git 사용시 git histroy 보여주고 diff 보여주기 - - 기능: 클립보드 - - 기능: 워드, 한글 뷰어 - - 기능: 여러 파일 형식을 위한 플러그인 +ScrapYard는 문서 작성 밎 문서를 아카이빙 할 수 있는 웹 어플리케이션이다. 같이 제공되는 확장기능을 통해 북마크(즐겨찾기)를 구조적으로 보관할 수 있고 미리보기를 보여줄 수 있다. + +또한 문서를 다른 사람과 링크로 공유할 수 있다. + +개인정보의 관리를 자기 자신이 제어할 수 있도록 파일과 문서에 대한 메타데이터가 어떠한 외부 DB가 있는 것이 아닌 파일에서 사람이 읽을 수 있는 형태로 관리된다. ## 용어 및 약어 정의(Definitions, acronyms and abbreviations) @@ -46,23 +29,9 @@ 2. Open Meta Graph: https://ogp.me/ ## 개요(Overview) - 개요는 2장에서는 종합적인 요구사항을 서술하고, 3장에서는 기능 및 UI에 대해서 상세한 요구사항을 설명한다. + 2장에서는 종합적인 요구사항을 서술하고, 3장에서는 기능 및 UI에 대해서 상세한 요구사항을 설명한다. -## 기능적 요구 - -## 비기능적 요구 - -- Docker 배포 -- .env 설정 -- 첫 로드후 로딩 0.5s 이내 -- 동시 편집 이용자 5명 이내 -- 1000 RPS 정도 버티기 - - -## Detail - -### Scrap #### Focus, Unfocus 사용자가 Scrap의 영역에 클릭을 했을때, Focus 된다. 다른 Scrap의 포커스는 사라진다. Scrap을 수정, 삭제하기위한 기능은 Focus를 해야 할 수 있다.