MALM 요구사항

Glossary:
MALM: Raspberry pi 2로 제작된 802.1Q(LAN)-802.15 TS1(Zigbee) 간 데이터 교환 소프트웨어다.
peasant: MALM을 통해 Zigbee로 제어할 수 있는 전자기기다.
thing: MALM과 peasant를 통칭하는 단어다.
MALM server: 사용자가 thing을 제어할 수 있도록 회원제로 운영되는 서버다.
사용자: MALM server에 회원 가입된 자연인이다.
사용: thing의 고유 기능을 작동시킴을 의미한다.
관리: thing을 등록/삭제/공유/양도하는 함을 의미한다.
관리-등록: 자신의 thing을 사용자의 기기로 등록한다.
관리-삭제: 자신의 thing을 사용자의 기기에서 삭제한다.
관리-공유: 자신의 thing에 대한 권한을 다른 사용자도 가질 수 있도록 한다.
관리-양도: 자신의 thing에 대한 모든 권한을 다른 사용자에게 양도한다. 양도한 뒤에 자신은 양도한 thing에 대한 모든 권한을 잃으며, 복구할 수 없다.

MALM server의 기능적 요구사항은 다음과 같다:
- 아이디와 비밀번호로 로그인할 수 있다.
- 회원가입시에 아이디, 비밀번호, 이메일을 수집한다.
- 웹과 안드로이드 앱으로 로그인할 수 있다.
- 아이디와 비밀번호를 변경할 수 있다.
- 다른 사용자와 관계를 맺을 수 있다.
- 관계는 대등, 종속, 임시 양도가 있다.
- 다른 사용자와 대등한 관계를 맺을 경우, 각각의 사용자는 자신과 서로의 기기를
- 자신의 thing을 사용할 수 있다.
- 자신의 thing을 관리할 수 있다.

MALM server의 비기능적 요구사항은 다음과 같다:
- MALM은 사용자를 고유 번호로 분류한다.
- MALM은 비밀번호를 암호화한다.
- MALM은 zigbee의 MAC address와 MALM name으로 구분한다.
  MAC address는 지그비 생산 당시 고유 네트워크 주소다.
  MALM name은 제품 생산 당시 고유 이름이다.
- MAC address는 사용자에게 공개되지 않는다.
- MALM은 사용자의 명령을 peasant에게 전달하기 위해 MAC address를 사용한다.

MALM의 요구사항은 다음과 같다:
- MALM server에서 수신한 사용자의 명령이 실제로 자신을 등록한 사용자인지 확인한다.
- 신규: 새로운 peasant가 검색되었을 경우 MALM 서버에게 해당 기기의 지그비 네트워크가 무엇인지 확인하고 확인된 네트워크 정보를 새로운 peasant에게 송신한다.


MALM의 비기능적 요구사항은 다음과 같다:
- 자신의 지그비 네트워크 상에 존재하는 peasant에게 정보를 송신한다.
- 자신의 지그비 네트워크 상에 존재하는 peasant에게 정보를 수신한다.


[2015.12.18] 1차 작성