Top Banner
Scrapper Intelligent Information Reader 2013 년도 2 학기 소프트웨어공학 프로젝트 <Team One> 팀원 김동규, 곡인호, 박치완, 신새벽
20

Intelligent Information Readerembio.yonsei.ac.kr/files/course/74/A조(team_one)_뉴스... · 2014-09-24 · CSI3106 Software Engineering Project Requirements Document

Apr 21, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Intelligent Information Readerembio.yonsei.ac.kr/files/course/74/A조(team_one)_뉴스... · 2014-09-24 · CSI3106 Software Engineering Project <Scrapper> Requirements Document

Scrapper

Intelligent Information Reader

2013년도 2학기 소프트웨어공학 프로젝트 <Team One>

팀원

김동규, 곡인호, 박치완, 신새벽

Page 2: Intelligent Information Readerembio.yonsei.ac.kr/files/course/74/A조(team_one)_뉴스... · 2014-09-24 · CSI3106 Software Engineering Project <Scrapper> Requirements Document

CSI3106 Software Engineering Project <Scrapper>

Requirements Document 2

Table of Contents

1. Preface ........................................................................................................................ 3

2. Introduction ................................................................................................................ 3

2.1. 기존 애플리케이션의 기능과 한계 ......................................................................................... 3

2.1.1. RSS 리더 ................................................................................................................... 3

2.1.2. 익명의 댓글 ................................................................................................................ 3

2.2. Scrapper의 해결 방안 ....................................................................................................... 3

3. Glossary ...................................................................................................................... 4

4. User Requirements ...................................................................................................... 4

4.1. Functional Requirements ................................................................................................. 4

4.2. Non-Functional Requirements .......................................................................................... 6

4.3. Simplified Model of User Requirements ............................................................................ 6

5. System Architecture & System Modeling ...................................................................... 7

5.1. 회원 가입 및 로그인 ........................................................................................................... 9

5.2. 새 콘텐츠 수집하기 ............................................................................................................ 9

5.3. 콘텐츠 받아보기 .............................................................................................................. 10

5.4. 콘텐츠 호감도 표시 .......................................................................................................... 10

5.5. 새 콘텐츠 알림 넣어주기 ................................................................................................... 11

5.6. SNS로 공유하기 .............................................................................................................. 11

6. System Requirements ................................................................................................ 11

6.1. Functional Requirements ............................................................................................... 11

6.2. Non-Functional Requirements ........................................................................................ 15

7. System Evolution ....................................................................................................... 16

7.1. 지원 플랫폼의 확대 .......................................................................................................... 16

7.2. 유료 서비스 .................................................................................................................... 16

7.3. 검색 기능 ....................................................................................................................... 16

8. Appendices ............................................................................................................... 17

8.1. Existing Product ............................................................................................................ 17

8.1.1. Flipboard ................................................................................................................ 17

8.1.2. Pulse News ............................................................................................................. 17

8.1.3. Feedly ..................................................................................................................... 18

8.1.4. 포털 뉴스 사이트 (Daum, Naver, Nate 등) ................................................................... 18

8.2. Development Environment ............................................................................................ 19

8.2.1. Hardware Stack ...................................................................................................... 19

8.2.2. Technical Stack ....................................................................................................... 19

9. Index ......................................................................................................................... 20

Page 3: Intelligent Information Readerembio.yonsei.ac.kr/files/course/74/A조(team_one)_뉴스... · 2014-09-24 · CSI3106 Software Engineering Project <Scrapper> Requirements Document

CSI3106 Software Engineering Project <Scrapper>

Requirements Document 3

1. Preface 우리는 정보화 시대에 살고 있다. 다양한 매체들을 통해 시시각각 세계 전역의 뉴스를 접할 수 있다.

그러나 정작 그러한 수많은 뉴스 속에서 우리는 우리가 정말 접하기 원하는 정보를 얻는 것은 쉬운 일이

아니다. 수많은 원치 않는 정보들을 헤쳐나가야 하는 정보의 바다를 넘어선 정보의 홍수로 인해 많은 이들이

피로감을 느끼고 있다.

기존의 뉴스 관련 어플리케이션들은 단지 하루하루 끊임없이 생기는 뉴스를 카테고리 별로 필터 없이

전달해주고 기사에 대한 자신의 생각과 다른 이들의 생각을 공유할 수 없다. 이러한 문제들을 해결하기 위해

우리 Team One은 자신이 관심 있는 뉴스에 대한 추천 기능을 통한 정보의 필터기능과 단순히 수동적으로

뉴스를 읽기만 하는 것이 아닌 그에 대해 심도 있는 토론 등의 기능을 수행할 수 있는 Scrapper 를

개발해보도록 하였다.

본 문서는 이러한 현대의 요구에 따른 Scrapper에 대한 사용자 요구사항과 시스템 요구사항 명시를 위한

기술 문서다.

2. Introduction

2.1. 기존 애플리케이션의 기능과 한계

기존에 이미 다양한 뉴스 애플리케이션들이 존재한다. 다양한 애플리케이션이 존재하는 것에 비해 그들이

제공하는 서비스의 형태는 큰 틀에서 유사하다. 대부분의 플리케이션들이 RSS 리더를 이용하여 신문사별

또는 카테고리별 뉴스를 업데이트해 준다. 또한, 수동적으로 기사를 읽기만 하고 참여하는 방법은 신문사별

홈페이지에서 익명의 댓글을 통한 의견 교환이 전부다.

2.1.1. RSS 리더

RSS 리더를 이용하여 뉴스 카테고리별 또는 신문사별 기사를 실시간으로 가져오는 시스템을 사용한다.

관심 언론사의 뉴스를 선별해서 보거나 관심 카테고리의 실시간 뉴스를 보는 필터링 기능을 수행할 수 있으나

언론사와 카테고리 내에서도 개인이 읽고 싶지 않은 내용의 기사들은 개인이 필터링해야 하는 한계가 있다.

2.1.2. 익명의 댓글

현재 애플리케이션들을 통해 뉴스의 링크를 따라 들어가게 되면 해당 뉴스를 제공하는 신문사의 사이트로

연결된다. 대부분의 신문사의 경우 기사 아래 댓글의 기능을 제공하고 ID 또는 익명의 형태로 댓글을 남길 수

있다. 이러한 댓글은 익명성이 유지되어 제대로 된 의견을 교환하기 쉽지 않고 실상 남기게 되어도 계속 해당

기사를 확인해야 하는 번거로움이 따른다.

2.2. Scrapper의 해결 방안

그렇다고 기존 애플리케이션에 한계만 있는 것은 아니다. 기존 애플리케이션들의 방식인 언론사별 또는

카테고리별 뉴스 추천 기능이 갖는 강점도 있다. 다양한 분야에 대한 실시간 뉴스를 접할 수 있다는 강점이

있기에 이 기능을 유지하는 한편, Scrapper 는 자신이 관심기사로 등록한 기사와 관련 있는 기사들을

추천해주는 기술을 적용하여 개인화 기능을 제공하고자 한다. 또한, 진정한 의미의 의견 교환이 어려운

익명의 댓글 기능이 아닌 개인 SNS 등 자신과 타인의 신분이 공개될 수 있는 공간에서 기사에 대한 의견

Page 4: Intelligent Information Readerembio.yonsei.ac.kr/files/course/74/A조(team_one)_뉴스... · 2014-09-24 · CSI3106 Software Engineering Project <Scrapper> Requirements Document

CSI3106 Software Engineering Project <Scrapper>

Requirements Document 4

교환을 할 수 있도록 구현해 단순히 기사를 읽는 것에 그치는 것이 아니라 이에 대한 생각을 나눌 수 있게

한다.

3. Glossary

Definition Description

App Scrapper Android App을 지칭한다.

API Server Scrapper Android App과 HTTP Rest API로 통신하는 서버를 지칭한다.

Analytics Server Database에 저장 된 정보를 바탕으로, 사용자에게 제공할 추천 콘텐츠를

추려내는 작업을 수행하는 서버

Crawling Server 주기적으로 RSS 피드를 읽어 들여, 새로 나온 콘텐츠를 Database 에

저장하는 서버

TF-IDF 두 문서간의 유사도를 계산 하는 알고리즘으로 문서내의 단어의 빈도수와

해당 단어의 역빈도수를 사용하여, 두 문서 사이의 유사도를 계산한다.

사용자 Scrapper를 사용하기 위해 회원가입을 한 사람을 지칭한다.

SNS 서비스 Facebook, Twitter 같이 사람 사이의 관계를 통해 소통하는 서비스를

지칭한다. Scrapper의 콘텐츠를 공유하는데 사용된다.

Collaborative Filtering 다수의 사용자로부터, 기호 정보를 얻어 사용자들의 관심사를 분석하여

자동적으로 예측하게 해주는 방법이다.

Association Rule A 사건의 빈도와 B 사건의 빈도 사이의 연관성을 분석하여 사용자들의

관심사를 예측하게 하는 방법이다.

RSS Rich Site Summary의 약어. Really Simple Syndication이라고도 한다.

RSS 리더를 사용하여 사이트에 직접 방문하지 않고도, 사이트의 내용을 알

수있다.

개인화 사용자의 정보를 수집해 해당 사용자의 기호를 분석하여 해당 사용자가

관심있어할 만한 콘텐츠를 제공하는

스크랩 자동으로 추천되는 또는 구독한 피드로 부터 오는 콘텐츠를 개인 보관함에

담는 행위

콘텐츠 기본이 되는 뉴스를 포함하여, 사용자가 관심있어할 만한 모든 글들

Java 제임스 고슬링(James Gosling)과 다른 연구원들이 개발한 객체 지향적

프로그래밍 언어이며, 썬 마이크로시스템즈에서 무료로 제공하고 있다.

Table 1 용어 사용 목록

4. User Requirements

4.1. Functional Requirements

1. 회원 관리 및 로그인

o 서비스를 이용하기 위해 회원 가입이 선행 되어야 한다.

o 회원 가입에는 최소한의 정보만을 입력하도록 한다.

이메일 (또는 아이디)

Page 5: Intelligent Information Readerembio.yonsei.ac.kr/files/course/74/A조(team_one)_뉴스... · 2014-09-24 · CSI3106 Software Engineering Project <Scrapper> Requirements Document

CSI3106 Software Engineering Project <Scrapper>

Requirements Document 5

비밀번호

o 가입한 사용자 정보를 앱에서 로그인하여 사용할 수 있다.

o 필요한 경우, 사용자는 로그아웃을 할 수 있다.

o 서비스를 더 이상 사용하고 싶지 않다면, 사용자는 회원 탈퇴 메뉴를 통해 회원 및 관련 정보를

서버로부터 삭제할 수 있다.

o 이와 같은 정보를 제공되는 SNS 서비스로 부터 받아올 수 있다.

2. RSS 피드 등록하기

o RSS 피드를 등록하는 방법에는 3가지가 있다.

o 관심 주제 설정

사용자는 설정 메뉴에서 자신의 관심 주제를 설정할 수 있다.

주제를 추가할 경우, 서버는 사용자가 설정한 주제에 대해 미리 준비된 RSS 주소를 구독

목록에 자동으로 추가한다.

주제를 제거할 경우, 서버는 사용자가 설정한 주제에 대해 추가했던 RSS 주소를 구독

목록에서 자동으로 제거한다.

o 직접 주소 입력

사용자가 자신이 보고 싶은 블로그, 뉴스가 있을 경우 RSS 주소를 추가할 수 있다.

시스템은 해당 RSS 주소가 올바른 RSS 주소인지 확인한다.

o 콘텐츠 내에서 등록

사용자는 추천 받은 콘텐츠가 마음에 드는 경우, 해당 콘텐츠를 제공해 준 RSS 피드를 피드

등록 버튼으로 등록할 수 있다.

모든 콘텐츠에는 이를 위한 RSS 피드 추가 버튼이 존재하며, 추천된 콘텐츠가 이미 등록된

RSS 피드로부터 제공된 경우 이 버튼은 비활성화 되어있다.

3. 콘텐츠 받아보기

o 정보를 받아보는 화면이 App 의 홈 화면이다. 이 화면에서 사용자는 두 가지 경로로 제공된

콘텐츠를 받아볼 수 있다.

사용자는 등록된 RSS 피드 주소로 부터 업데이트 된 콘텐츠를 받아 볼 수 있다.

사용자가 호감도를 표시한 콘텐츠를 모아 높은 호감도를 표시한 콘텐츠에 대하여 유사한

콘텐츠를 추천 받을 수 있다.

4. 콘텐츠 호감도 표시하기

o 사용자는 제공받은 각각의 콘텐츠에 대해, Facebook 좋아요와 유사한 형태로 호감도를 표시할 수

있다.

o 표시된 호감도를 바탕으로 시스템은 콘텐츠 추천을 수행한다.

5. 새 콘텐츠 알림 넣어주기

o 사용자가 등록한 RSS 피드로 부터 새로운 콘텐츠가 제공될 경우, API Server는 해당 피드를

등록한 모든 사용자의 핸드폰에 Push notification을 통해 새로운 콘텐츠가 있음을 알려준다.

o 만약, 사용자가 알림을 원하지 않거나, 알림 주기를 조절하고 싶은 경우 설정 메뉴에서 주기에

대해 설정할 수 있다. 설정 가능한 주기는 아래와 같다.

즉시 알림

30분에 1번씩 알림

1시간에 1번씩 알림

6시간에 1번씩 알림

12시간에 1번씩 알림

Page 6: Intelligent Information Readerembio.yonsei.ac.kr/files/course/74/A조(team_one)_뉴스... · 2014-09-24 · CSI3106 Software Engineering Project <Scrapper> Requirements Document

CSI3106 Software Engineering Project <Scrapper>

Requirements Document 6

1일에 1번씩 알림

알림 끄기

6. 등록된 RSS 피드 관리하기

o 사용자는 자신이 등록한 RSS 피드를 수정하거나 등록 삭제할 수 있다. 여기서의 수정은 RSS 피드

주소를 수정하는 것을 의미한다.

o 관심 주제 설정으로 인해 등록된 피드의 경우는 수정할 수 없다.

수정이 필요한 경우, System에 의해 일괄적으로 수정된다.

7. SNS로 공유하기

o 사용자는 자신이 제공 받은 콘텐츠를 공유하거나, 다른 지인과의 의견 교환을 위해 자신이

사용하는 SNS로 공유할 수 있다.

o 콘텐츠에 존재하는 공유하기 버튼을 누르면, App은 사용자에게 추가할 의견을 물어보고, 의견이

있는 경우 SNS에 공유할 때 해당 내용을 첨부한다.

4.2. Non-Functional Requirements

1. 제약 사항

o App은 안드로이드 4.0 이상이 설치된 스마트폰에서 작동해야한다.

o 스마트폰은 항상 3G/LTE/Wi-Fi 등의 인터넷 네트워크에 연결되어있는 상태라고 가정한다.

2. 신속성

o System은 등록된 RSS 피드의 콘텐츠 갱신이 이루어지고 20분 이내에 사용자에게 해당 갱신된

콘텐츠를 제공해야한다.

3. 사용성

o 처음 사용하는 사용자가 5분 이내에 추천 콘텐츠를 받을 수 있도록 UI를 구성한다.

o 모든 메뉴는 App 홈 화면으로 부터 3 depth 이내에 존재해야 한다.

4. 보안성

o System은 사용자의 RSS 피드 구독 목록이나, 콘텐츠 이용 이력, 콘텐츠 호감도 표시 내역 등이

외부에 노출 되지 않도록 해야한다.

o System 외부에서 접근하는 적법하지 못한 자료 요청은 거부해야한다.

5. 신뢰성

o 모든 시스템은 로직 업그레이드의 경우를 제외하고는 중단없이 작동해야한다.

4.3. Simplified Model of User Requirements

사용자 요구사항을 기초로 해, 사용자 입장에서 Scrapper 애플리케이션을 사용하는 경우를 유스케이스

다이어그램으로 그려보았다.

Page 7: Intelligent Information Readerembio.yonsei.ac.kr/files/course/74/A조(team_one)_뉴스... · 2014-09-24 · CSI3106 Software Engineering Project <Scrapper> Requirements Document

CSI3106 Software Engineering Project <Scrapper>

Requirements Document 7

Figure 1 사용자 요구사항에 기초한 Use Case Diagram

크게 세 가지 부분으로 나누어 볼 수 있는데, App에 로그인하는 부분(로그인, SNS 인증 기능), 콘텐츠를

보고 그 반응을 기록하는 부분(콘텐츠 보기, 추천 콘텐츠 보기, 구독 콘텐츠 보기, SNS에 공유하기), RSS

피드 등록 부분(RSS 피드 등록, 관심 주제 설정)으로 나눌 수 있겠다.

5. System Architecture & System Modeling 기본적인 시스템 구조는 사용자의 스마트폰에서 실행되는 App, App 과 통신하며 정보 제공 역할을

담당하는 API Server, 사용자의 추천 콘텐츠를 선정하는 Analytics Server, 주기적으로 등록된 RSS에서

새로운 콘텐츠를 갱신하는 Crawling Server, 데이터를 저장하는 Database 로 나뉜다. 각각의 컴포넌트는

별도의 프로세스를 가지며, 여건이 되는 경우 별도의 컴퓨터에서 작동한다. 이를 기능과 함께 그림으로

나타내면 아래와 같다.

Page 8: Intelligent Information Readerembio.yonsei.ac.kr/files/course/74/A조(team_one)_뉴스... · 2014-09-24 · CSI3106 Software Engineering Project <Scrapper> Requirements Document

CSI3106 Software Engineering Project <Scrapper>

Requirements Document 8

Figure 2 System Architecture Diagram

각각의 구성요소에 대해 보다 자세히 알아보면, App 부분의 경우 사용자의 스마트폰에서 작동하며 주로

사용자 인증과 콘텐츠 내용 제공, 사용자의 반응을 받아오는 역할을 담당하고 있다. API Server의 경우,

App와 직접 통신하며 정보 제공을 담당하고 주기적으로 Analytics Server와 Crawling Server에게 각각

추천 콘텐츠 분석 작업과 새로운 콘텐츠 갱신을 하도록 명령하는 역할도 겸하고 있다. Crawling Server의

경우 미리 Database Server에 등록된 RSS 피드 목록을 받아 주기적으로 검사하며, 새로운 콘텐츠가 있을

경우, 해당 콘텐츠를 분석하여 주요 키워드와 본문을 추출하고 이를 Database Server에 저장하는 역할을

담당하고 있다. Analytics Server의 경우, 사용자의 호감도 정보나 사용자가 자주 본 콘텐츠의 주요 키워드를

수집한 결과를 통해 분석 알고리즘을 적용해 사용자가 좋아할 만한 콘텐츠를 찾아내는 작업을 수행한다.

각각의 구성요소는 사용자의 행위나 외부 환경(새로운 콘텐츠의 등장)의 변화에 따라 반응하는 형태로

작업을 수행한다. 실제 사용자의 반응이나 외부 환경의 변화에 따라 반응을 수행하는 순서와 방법을 시퀀스

다이어그램(Sequence Diagram) 형태로 아래에 나타냈다. 아래 시퀀스 다이어그램의 각 구성요소는 실제

클래스 단위까지 설계되지는 않았으나, 전체적인 데이터의 흐름과 처리 흐름을 알아보는데는 큰 문제가 없다.

Page 9: Intelligent Information Readerembio.yonsei.ac.kr/files/course/74/A조(team_one)_뉴스... · 2014-09-24 · CSI3106 Software Engineering Project <Scrapper> Requirements Document

CSI3106 Software Engineering Project <Scrapper>

Requirements Document 9

5.1. 회원 가입 및 로그인

Figure 3 회원가입 및 로그인 시퀀스 다이어그램

5.2. 새 콘텐츠 수집하기

Figure 4 새 콘텐츠 수집하기 시퀀스 다이어그램

Page 10: Intelligent Information Readerembio.yonsei.ac.kr/files/course/74/A조(team_one)_뉴스... · 2014-09-24 · CSI3106 Software Engineering Project <Scrapper> Requirements Document

CSI3106 Software Engineering Project <Scrapper>

Requirements Document 10

5.3. 콘텐츠 받아보기

Figure 5 콘텐츠 받아보기 시퀀스 다이어그램

5.4. 콘텐츠 호감도 표시

Figure 6 콘텐츠 호감도 표시 시퀀스 다이어그램

Page 11: Intelligent Information Readerembio.yonsei.ac.kr/files/course/74/A조(team_one)_뉴스... · 2014-09-24 · CSI3106 Software Engineering Project <Scrapper> Requirements Document

CSI3106 Software Engineering Project <Scrapper>

Requirements Document 11

5.5. 새 콘텐츠 알림 넣어주기

Figure 7 새 콘텐츠 알림 넣어주기 시퀀스 다이어그램

5.6. SNS로 공유하기

Figure 8 SNS로 공유하기 시퀀스 다이어그램

6. System Requirements

6.1. Functional Requirements

Function 회원 가입 및 로그인

Description 처음 서비스를 사용하는 사용자로 부터 회원가입 절차를 수행한다.

Input 1) E-mail

Page 12: Intelligent Information Readerembio.yonsei.ac.kr/files/course/74/A조(team_one)_뉴스... · 2014-09-24 · CSI3106 Software Engineering Project <Scrapper> Requirements Document

CSI3106 Software Engineering Project <Scrapper>

Requirements Document 12

2) Full Name

3) Password

4) SNS ID

5) SNS OAuth Token

Output HTTP Request / Response

Source 사용자 입력

Destination API Server

Action 1) 사용자로부터 SNS 를 통한 인증을 허가 받고, 그 결과로 SNS 인증 결과를 포함한

기초 정보를 받아온다.

2) 기초 정보를 API Server에 보낸다.

3) API Server 는 기초 정보를 통해 기등록 사용자인지 확인한다.

4) Database에 사용자를 추가하고, 로그인 과정을 진행한다.

Requirements 사용자의 인증 승인

Pre-condition App이 SNS API Service 등록되어 있어야 한다.

Post-condition API Server로 부터 해당 사용자의 로그인 여부를 받아온다.

Side Effect - Table 2 회원 가입 및 로그인 요구사항

Function 콘텐츠 받아보기

Description App의 홈 화면에서 준비된 컨텐츠를 보여준다.

Input 콘텐츠. 콘텐츠는 아래의 정보를 담고 있는 Document를 지칭한다.

1) Title

2) Contents

3) Source

Output App의 화면에 출력 되는 자료

Source API Server or Cached Repository

Destination App Screen

Action 1) 먼저 최근 캐시 갱신 시점을 확인하여, 10분 이내라면 캐시에 저장된 콘텐츠를

보여준다.

2) 그렇지 않다면, API Server로 최근 갱신 기간 이후의 데이터를 요청한다.

Requirements -

Pre-condition -

Post-condition App은 최근에 추가된 콘텐츠를 캐시에 가지고 있어야한다.

Side Effect - Table 3 콘텐츠 받아보기 요구사항

Function 관심 주제 등록하기

Description 사용자로 부터 관심 주제를 입력받아, 미리 설정된 RSS 목록을 구독 리스트에

등록한다.

Input 사용자 입력

Output HTTP Request / Response

Source 사용자 입력

Destination API Server

Page 13: Intelligent Information Readerembio.yonsei.ac.kr/files/course/74/A조(team_one)_뉴스... · 2014-09-24 · CSI3106 Software Engineering Project <Scrapper> Requirements Document

CSI3106 Software Engineering Project <Scrapper>

Requirements Document 13

Action 1) 사용자는 미리 준비된 주제에서 자신이 관심있는 주제를 선택한다.

2) App은 해당 정보를 사용자 식별 정보와 더불어 API Server로 전송한다.

3) API Server는 해당 정보를 Database에 기록하고, 선택된 주제에 기본 등록된

RSS 피드를 구독 처리한다.

Requirements -

Pre-condition -

Post-condition 사용자는 해당 주제에 알맞는 RSS 피드를 구독하고 있는 상태여야 한다.

Side Effect - Table 4 관심 주제 등록하기 요구사항

Function RSS 피드 구독하기

Description 사용자가 원하는 RSS 피드를 등록하여 콘텐츠를 받아볼 수 있도록 한다.

Input RSS 피드 주소

Output HTTP Request / Response

Source 사용자 입력

Destination API Server

Action 1) 사용자가 RSS 피드 주소를 입력하거나, 콘텐츠에 달려있는 RSS 피드 추가 버튼을

누른다.

2) App은 해당 RSS 피드 주소를 API Server에 전달한다.

3) API Server 는 해당 RSS 피드를 구독 목록에 추가한다.

Requirements -

Pre-condition -

Post-condition 사용자는 입력한 RSS피드를 구독하고 있는 상태여야한다.

Side Effect - Table 5 RSS 피드 구독하기

Function 콘텐츠 호감도 표시하기

Description 사용자는 받아보는 콘텐츠 중 마음에 드는 콘텐츠에 호감을 표시할 수 있다.

Input 호감을 표시한 콘텐츠 식별자

Output HTTP Request / Response

Source 사용자 입력

Destination API Server

Action 1) 사용자가 마음에 드는 콘텐츠에 달린 호감 버튼을 누른다.

2) App는 해당 콘텐츠의 식별자를 API Server로 전송한다.

3) App는 호감 정보를 갱신하고, 다음 추천 배치 작업에 해당 정보를 반영한다.

Requirements -

Pre-condition -

Post-condition -

Side Effect - Table 6 콘텐츠 호감도 표시하기

Function 새 콘텐츠 알림 넣어주기

Description 구독하고 있는 RSS 피드가 갱신되는 경우 Push Notification 기능을 이용하여

Page 14: Intelligent Information Readerembio.yonsei.ac.kr/files/course/74/A조(team_one)_뉴스... · 2014-09-24 · CSI3106 Software Engineering Project <Scrapper> Requirements Document

CSI3106 Software Engineering Project <Scrapper>

Requirements Document 14

사용자에게 알려준다.

Input 갱신 알림 데이터

Output 사용자의 스마트폰의 Push Notification

Source Crawling Server

Destination App

Action 1) Crawling Server 는 주기적으로 등록된 RSS 피드에 접속하여 달라진 내용이

있는지 확인한다.

2) 달라진 내용이 생기면, API Server를 통해 해당 RSS 피드를 구독중인 사용자의

스마트폰에 Push Notification을 넣는다.

3) App은 Push Notification이 도착하면, 적절한 방법으로 사용자의 스마트폰에

알림을 넣는다.

Requirements API Server가 Android 플랫폼의 Push Service에 등록되어 있어야한다.

Pre-condition 사용자의 스마트폰이 네트워크에 연결되어있어야 한다.

Post-condition 사용자의 스마트폰에 알림이 도착한다.

Side Effect - Table 7 새 콘텐츠 알림 넣어주기

Function 등록된 RSS 피드 관리하기

Description 사용자가 특정 RSS 피드를 수정, 삭제하고자 하는 경우에 App, API Server 에

요청하여 해당 작업을 수행할 수 있다.

Input 1) 삭제할 RSS 피드 주소 (삭제의 경우)

2) 새로이 수정할 RSS 피드 주소 (수정의 경우)

Output HTTP Request / Response

Source 사용자 입력

Destination API Server

Action 1) 사용자는 RSS 피드 관리 메뉴에 들어가 기존 구독 목록에 변경을 가한다.

2) 해당 변경을 App은 API Server에 통보한다.

3) API Server는 사용자와 해당 RSS 피드 사이의 관계를 변경한다.

Requirements 사용자가 수정 요청하는 RSS 피드는 주제 선택에 의해 자동 등록된 피드가 아니어야

한다.

Pre-condition -

Post-condition 사용자의 RSS 피드 구독 목록에 사용자가 의도한 변화가 있어야한다.

Side Effect - Table 8 등록된 RSS 피드 관리하기

Function 추천 콘텐츠 추출하기

Description Analytics Server는 주기적으로 수집된 정보를 통해 추천 콘텐츠 목록을 작성한다.

Input 1) 사용자가 입력한 호감도 정보

2) 각 콘텐츠의 본문

Output 각 콘텐츠 쌍에 대한 상관계수

Source API Server, Database

Destination Database

Page 15: Intelligent Information Readerembio.yonsei.ac.kr/files/course/74/A조(team_one)_뉴스... · 2014-09-24 · CSI3106 Software Engineering Project <Scrapper> Requirements Document

CSI3106 Software Engineering Project <Scrapper>

Requirements Document 15

Action 1) 일정 주기마다 Analytics Server 는 Database 에 저장된 모든 본문을

읽어들인다.

2) 읽어들인 본문에 대하여 콘텐츠 쌍을 생성한다.

3) 생성된 모든 콘텐츠 쌍에 대해 TF-IDF 유사도를 계산한다.

Requirements 사용자가 수정 요청하는 RSS 피드는 주제 선택에 의해 자동 등록된 피드가 아니어야

한다.

Pre-condition -

Post-condition 사용자의 RSS 피드 구독 목록에 사용자가 의도한 변화가 있어야한다.

Side Effect - Table 9 추천 콘텐츠 추출하기

Function SNS로 공유하기

Description 사용자가 특정 콘텐츠에 대해 토론을 원할 경우 자신이 사용하는 SNS 서비스로

콘텐츠의 링크와 사용자의 의견을 함께 첨부하여 공유할 수 있다.

Input 1) 콘텐츠의 링크

2) 사용자의 의견

Output SNS Article

Source 사용자 입력

Destination SNS Service

Action 1) 사용자가 공유하고자 하는 콘텐츠에 배치된 공유 버튼을 누른다.

2) App은 사용자에게 함께 첨부할 의견을 묻고, 사용자가 이를 입력한다.

3) App 은 해당 내용을 SNS API Server 에 전송하여 SNS Article 을 올리도록

수행한다.

Requirements App이 SNS API Service에 등록되어있어야 한다.

Pre-condition -

Post-condition SNS 서비스에 App을 통해 올린 글이 등록되어 있어야한다.

Side Effect - Table 10 SNS로 공유하기

6.2. Non-Functional Requirements

1. 제약 사항

o App은 Android 4.0 이상에서 작동해야 하므로, App의 개발언어는 Java를 사용한다.

o API Server도 개발의 편리성을 위해 Java를 사용하여 개발한다.

o Database Server로는 mongoDB 2.4.x, MySQL 5.5을 활용한다.

o Crawling Server도 Java로 작성한다.

o Analytics Server 는 Apache Hadoop 1.x 및 그와 관련된 라이브러리를 사용하여 구현한다.

2. 신속성

o Crawling Server는 콘텐츠가 갱신되고 20분 이내에 사용자에게 갱신된 콘텐츠를 제공한다.

o Analytics Server는 2만 쌍의 데이터 추천 결과 계산에 대해 1시간 이내에 끝남을 보장해야한다.

3. 보안성

o 사용자의 데이터를 노출하지 않기 위해 인증과 관련된 모든 작업은 HTTPS 프로토콜 위에서

이루어진다.

Page 16: Intelligent Information Readerembio.yonsei.ac.kr/files/course/74/A조(team_one)_뉴스... · 2014-09-24 · CSI3106 Software Engineering Project <Scrapper> Requirements Document

CSI3106 Software Engineering Project <Scrapper>

Requirements Document 16

o 모든 Server는 요청된 작업이 적법한 과정을 거친 요청인지 확인하기 위해 Header에 존재하는

Auth Key를 사용하여 요청 검증을 해야한다.

해당 Auth Key는 SNS 서비스에서 발급한 것으로 사용한다.

4. 신뢰성

o API Server 는 200 TPS (Transaction Per Second) 이상의 성능을 유지해야하며, 24/7

Service를 제공해야한다.

o Analytics Server는 지속적으로 추천 결과를 갱신하기 위해, 사용자가 많이 접속하는 시간에는

계산량을 조절하여 추천 결과를 도출한다.

o App은 콘텐츠 제공을 지체없이 하기 위해, App 내부에 캐시를 두어 콘텐츠를 제공한다.

7. System Evolution

7.1. 지원 플랫폼의 확대

현재 Scrapper 애플리케이션은 Google Android 환경을 기반으로 작성되어 Android OS 를 지닌

스마트폰에서만 작동되도록 설계되어 있다. 최근 다양한 스마트폰 플랫폼이 출시됨에 따라 멀티플랫폼으로

앱을 출시하는 경우가 많아졌다. Scrapper의 대다수 기능은 서버에서 이루어지며, App 부분이 단순히 뷰의

역할만 함을 고려해볼 때, 웹 기술을 적용한 하이브리드 앱 형태로 선회하여 지원 플랫폼을 확대할 수 있을

것이다.

7.2. 유료 서비스

기존 RSS 리더로 검토 대상이 되었던 Feedly 의 경우, 유, 무료 서비스를 분리하여 운영하고 있다. 유료

서비스에서는 모든 기능을 제공하고, 무료 서비스에서는 일부 기능의 제한을 두는 형태이다. Scrapper의

경우에도 콘텐츠 추천을 유료에만 적용하거나, 유료 서비스의 경우 더 정교한 알고리즘을 적용한다거나 하는

식으로 유료 서비스의 차별화를 통해 수익을 꾀해볼 수 있을 것이다.

7.3. 검색 기능

Scrapper 에는 아직 검색 기능이 존재하지 않는다. 정보의 관리에서 중요한 부분을 차지하고 있는 것이

검색임을 고려하여, 추후 검색 기능을 도입해 사용자가 자신이 스크랩하거나, 추천 받은 콘텐츠를 몇 개의

검색어를 통해 쉽게 찾을 수 있도록 할 필요가 있다.

Page 17: Intelligent Information Readerembio.yonsei.ac.kr/files/course/74/A조(team_one)_뉴스... · 2014-09-24 · CSI3106 Software Engineering Project <Scrapper> Requirements Document

CSI3106 Software Engineering Project <Scrapper>

Requirements Document 17

8. Appendices

8.1. Existing Product

8.1.1. Flipboard

o iOS / Android 앱

o RSS 리더 기본 기능과 더불어 SNS 연동을 통해 SNS 타임라인을 불러올 수 있다.

o 첫 실행에서 자신의 관심분야를 설정 할 수 있다.

o 관심 분야의 기사를 기등록된 RSS 피드로 부터 받아온다.

o 자신의 관심 기사를 모아 Magazine 형태의 스크랩 북을 만들 수 있다.

o 만든 Magazine을 다른 사람과 공유할 수 있다.

8.1.2. Pulse News

o iOS / Android 앱

o 스마트 검색을 적용하여 RSS와 연동된 자료를 찾을 수 있다.

Page 18: Intelligent Information Readerembio.yonsei.ac.kr/files/course/74/A조(team_one)_뉴스... · 2014-09-24 · CSI3106 Software Engineering Project <Scrapper> Requirements Document

CSI3106 Software Engineering Project <Scrapper>

Requirements Document 18

o 통합 기능은 자료 검색만 제공하고, Sync 기능이 제공되지 않는다.

o UI를 사용자 입맛에 맞게 수정하는 것이 가능하다.

8.1.3. Feedly

o iOS / Android 앱 / PC (Web) 버전

o 전형적인 RSS 리더

o Feedly 클라우드 기능을 통해, iOS / Android 앱 / PC 버전의 읽은 기록이나 표시한 내용들이 동기화

된다.

o 최근, 구글 리더의 폐쇄 결정 이후, 각광을 받고 있는 RSS 리더

8.1.4. 포털 뉴스 사이트 (Daum, Naver, Nate 등)

o 웹 기반이라 웹 브라우저만 있다면 멀티 플랫폼 지원

o 주제별 뉴스 구분 이외에도 언론사 별로 뉴스를 구분을 제공한다.

o 익명에 가까운 댓글 기능을 통해 뉴스마다 자신의 의사표현이 가능하다.

Page 19: Intelligent Information Readerembio.yonsei.ac.kr/files/course/74/A조(team_one)_뉴스... · 2014-09-24 · CSI3106 Software Engineering Project <Scrapper> Requirements Document

CSI3106 Software Engineering Project <Scrapper>

Requirements Document 19

8.2. Development Environment

8.2.1. Hardware Stack

개발 장비는 크게 두 가지로 나누어지는데, 각각 App 을 작동시킬 Google Android OS 가 탑재된

스마트폰과 API Server, Analytics Server, Crawling Server, Database Server가 구동될 서버 컴퓨터다.

스마트폰의 경우, 출시된 지 1년 정도 되는 스마트폰에서도 앱이 무리 없이 구동되도록 하게 하기 위해 최신

스마트폰은 피해서 선정하였다. 서버 컴퓨터의 경우, 여러 작업들이 CPU, RAM, HDD 에 영향을 많이 받는

작업이라 CPU, RAM, HDD 에 신경써서 개발 장비를 구축 하였다. 개발 장비에서는 개발만 진행하도록 하고

추후 서비스시에는 보다 좋은 장비를 확보하여 사용할 것이다.

서버 모델 SUPERMICRO IR5017C-TF

CPU Intel Xeon E3-1230 V2 3.30GHz

RAM 32GB DDR3 (8GB * 4, PC3-

12800)

HDD 32GB SSD + 2TB SATA3 HDD

LAN 2 Ports Gigabit Ethernet Card

운영체제 XenServer 6.2

8.2.2. Technical Stack

Tech Set Reference

TF-IDF http://ko.wikipedia.org/wiki/TF-IDF

http://www.4four.us/article/2007/12/tf-idf

Collaborative Filitering http://ko.wikipedia.org/wiki/협업_필터링

https://cwiki.apache.org/confluence/display/MAHOUT/Collaborative+

Filtering+with+ALS-WR

Association Rule http://en.wikipedia.org/wiki/Association_rule_learning

http://www.slideshare.net/aorriols/lecture13-association-rules

Apache Hadoop http://hadoop.apache.org/

http://ko.wikipedia.org/wiki/하둡

http://hortonworks.com/hadoop/

Google Android http://developers.google.com/android/

Apache Lucene http://lucene.apache.org/

http://noviceon.blogspot.kr/2011/11/lucene-nrtnear-real-time-

search.html

MongoDB http://www.mongodb.org

스마트폰 명 LG 옵티머스G

모델명 LG-F180S/K/L

프로세서 퀄컴 스냅드래곤 S4 Pro

메모리 2GB

디스플레이 4.7인치 WXGA (1280 * 768)

네트워크 LTE Cat.3, HSPA+ 42Mbps

운영체제 Google Android 4.1 (Jelly Bean)

Page 20: Intelligent Information Readerembio.yonsei.ac.kr/files/course/74/A조(team_one)_뉴스... · 2014-09-24 · CSI3106 Software Engineering Project <Scrapper> Requirements Document

CSI3106 Software Engineering Project <Scrapper>

Requirements Document 20

9. Index

Analytics Server................................................................................... 4,7,8,14,15,16,19

Crawling Server.................................................................................................. 4,7,8,15

Database Server .............................................................................................. 4,7,8,15,19

API Server................................................................................... 4,5,7,8,12,13,14,15,16,19

TF-IDF................................................................................................................. 4,15,19

Collaborative Filtering.............................................................................................. 4,19

Association Rule...................................................................................................... 4,19

개인화....................................................................................................................... 3,4

스크랩................................................................................................................. 4,16,17

Apache Hadoop....................................................................................................... 15,19

Apache Lucene............................................................................................................. 19

MongoDB............................................................................................................... 15,19

SNS............................................................................................ 3,4,5,6,7,11,12,15,16,17

Java......................................................................................................................... 4,15

Auth Key..................................................................................................................... 16