This commit is contained in:
monoid 2022-04-18 16:54:59 +09:00
parent 9c20f8adef
commit e74e2cbc2d
3 changed files with 81 additions and 181 deletions

View File

@ -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)
> - 시스템의 향후 버전으로 지연될 수 있는 요구사항을 식별해야 한다.
해당되지 않음.

View File

@ -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)

View File

@ -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를 해야 할 수 있다.