# 2. 전체 시스템 개요(Overall description)

### 2.1. 제품 관점(Product perspective)

### 2.1.1. 시스템 인터페이스(System interfaces)

본 시스템은 Cross-platform 소프트웨어이다. 다음과 같은 브라우저가 원활히 실행될 수 있는 시스템에서 동작 할 수 있다.
- Chrome 버전 61 이상
- Firefox 버전 60 이상
- Edge 버전 79 이상
- Safari 버전 11 이상
- Chrome for Android 버전 100 이상
- Samsung internet 버전 8.2 이상

### 2.1.2. 사용자 인터페이스(User interfaces)

웹으로 동작하는 GUI이다. 키보드와 마우스, 터치 인터페이스로 동작할 수 있다. GUI의 디자인은 Material Design이나 Metro Design 같이 플랫한 디자인을 추구한다.

### 2.1.3. 하드웨어 인터페이스(Hardware interfaces)

해당되지 않음.

### 2.1.4. 소프트웨어 인터페이스(Software interfaces)

이 프로젝트의 결과물은 클립보드를 통해서 여러 타입의 데이터를 import/export한다.

### 2.1.5. 통신 인터페이스(Communications interfaces)

해당되지 않음.

### 2.1.6. 메모리 제약사항(Memory constraints)

서버는 2GB 메모리 환경에서 정상 작동해야 한다.

### 2.1.7. 운영(Operations)

해당되지 않음.

### 2.1.8. 사이트 적용 요건(Site adaption requirements)

해당되지 않음.

## 2.2. 제품 기능(Product functions)

본 프로젝트의 결과물은 다음과 같은 기능을 수행한다.

<%
    const table = new Map();
    it.issues.forEach((x)=>{
        const category = x.title.split(":")[0];
        if(!category) return;
        let c = table.get(category)
        if(!c){
            c = [];
            table.set(category,c);
        }
        c.push(x);
    })
    let index = 1;
    for (const [c,issues] of table) {
%><%= `### 2.2.${index++} ${c} Operation\n\n` %><%
        let subIndex = 1;
        for (const i of issues) {
%><%=`${subIndex++}. #${i.number} ${i.title}\n` %><%
        }
%>

<%
    }
%>

## 2.3. 사용자 특성(User characteristics)

사용자는 기본적인 GUI 조작을 할 줄 알며 인터넷 사용을 원활히 할 수 있고 기본적인 영어를 읽고 쓸 줄 알며, markdown을 작성할 수 있는 사용자로 한정한다. 일반적으로 13세 이상 65세 이하의 사람을 사용자로 가정한다.

## 2.4. 제약사항(Constraints)

- 이 프로젝트는 MIT License로 개발되고 있으므로 라이브러리의 라이센스도 신경을 쓴다.
- XSS 공격에 안전해야 한다.

## 2.5. 가정 및 의존성(Assumptions and dependencies)

해당되지 않음.

## 2.6. 단계별 요구사항(Apportioning of requirements)

해당되지 않음.