Skip to content

Latest commit

 

History

History
197 lines (137 loc) · 6.33 KB

RDD.md

File metadata and controls

197 lines (137 loc) · 6.33 KB

Snackの要件定義書

バージョン 日付 変更要件 担当者
0.1.0 2023-04-28 最初の要件定義を行いました。 @1uf3
0.2.0 2023-05-01 要件定義書の詳細化を行いました。 @1uf3 with ChatGPT
0.3.0 2023-05-01 機能要件の外部インターフェースに音声・画像配信の通信定義を追加しました。 @1uf3

概要

SlackやDiscordなどと同じような音声通話と文字でのコミュニケーションを融合したアプリケーションを作成する。

システム構成図

  • クライアント: デスクトップアプリケーション、ウェブアプリケーション、アンドロイドアプリケーション
  • サーバ: Goを使用したバックエンドサーバ・MongoDBを使用したデータベース

クライアントアプリケーションはサーバと通信してメッセージやチャンネルの情報などを取得・操作します。 また、アプリケーションのアップデートが存在する場合にはGithubからアップデート情報を取得し、デスクトップアプリケーションを自動アップデートします。

背景

現在のRCCでは主にSlackを使用して会内連絡を行っている。 しかし、Slackは2022/09/01から有料プランでないと30日で会話の履歴が消えてしまうといったアプリケーションになってしまった。 しかし、現在のRCCはSlackを使い続けており、かつ、Discordも使っているため、分散してしまっている。 集約することで2つのアプリケーションを管理する必要がなくなるため、運用のコストを下げることにもつながる。

よって新たなアプリケーションを使用し始めたい。 OSSでの同様なアプリケーションとしてZulipやRocketChatが存在する。 他にも東京工業大学のサークルが作ったTraQが存在する。

上記のアプリケーションを採用しても良かったが、自分たちで開発することによって技術力や保守力を身につけたいし、 新しい技術を用いて開発を行いたかったため、制作することに至った。

定義

プロジェクト要件

プロジェクトフロー

  1. 要件定義
  2. デザインモックの作成
  3. プロトタイプ開発
  4. テスト
  5. 本番環境へのリリース
  6. フィードバック収集と改善

規模

  • 開発チーム: ?人
  • 対象ユーザー: RCC部員

時期・時間

  • 開発期間: 3ヶ月
  • 総工数: 1000時間

指標

  • 80%以上の満足度を維持
  • システム可用性: 99.9%以上

範囲

  • 音声通話機能
    • 画面共有機能
  • テキストメッセージ機能
    • カスタム絵文字の追加
    • メッセージへのリアクション機能
  • ユーザ管理機能
    • ユーザグループ管理
    • ユーザグループの権限管理機能
  • チャンネル管理機能

機能要件

機能

  1. テキストチャット(グループチャット)
  2. プライベートチャット
  3. チャンネル作成と管理
  4. ユーザ招待と管理
  5. ユーザグループ管理と権限管理
  6. 音声通話
  7. 画面共有
  8. ファイル送信と共有
  9. メッセージ検索
  10. 通知設定
  11. botの追加

画面

DiscordのGuildが存在しないZulip見たいな感じ

  1. ログイン画面
  2. ユーザー登録画面
  3. メイン画面
    1. サイドバー(チャンネル一覧、プライベートチャット一覧)
    2. チャット画面
    3. ユーザープロファイル画面
    4. チャンネル作成・編集画面
    5. ユーザー招待画面
    6. 設定画面
    7. 音声通話画面
    8. 画面共有画面

外部インタフェース

  1. gRPC over QUIC: デスクトップアプリケーションとの通信
  2. REST API (HTTP/3): ウェブアプリケーションとの通信
  3. WebRTC: 音声や映像配信

非機能要件

ユーザビリティ・アクセシビリティ

  1. レスポンシブデザイン: ウェブアプリケーションの表示がデバイスに適応
  2. キーボードショートカット: 効率的な操作をサポート

システム方式

  • クライアント・サーバーアーキテクチャ

規模

  • 最大同時接続数: 50人
  • 最大ユーザー数: 100人

性能

  1. メッセージ遅延: 1秒以内
  2. 音声通話遅延: 500ms以内
  3. 画面共有遅延: 1秒以内

信頼性

  • システム可用性: 99.9%以上

拡張性

  • 将来的な機能追加や拡張が容易に行える設計

上位互換性

  • 既存のデータとの互換性を維持しつつ、新機能を追加できるようにする

継続性

  • 開発チームが交代しても、プロジェクトの継続が容易に行えるようにする

セキュリティ要件

情報セキュリティ

  1. データ暗号化: 通信データおよび保存データの暗号化
  2. 認証・認可: ユーザーのアクセス制御
  3. セキュリティアップデート: 定期的な脆弱性チェックとパッチ適用

稼働環境

  • サーバ: LinuxベースのOS
  • デスクトップアプリ: Windows, macOS, Linux
  • スマホアプリケーション: Android
  • ウェブアプリ: モダンブラウザ対応 (Google Chrome, Firefox, Safari, Microsoft Edge)

テスト

  1. 単体テスト
  2. 統合テスト
  3. システムテスト
  4. 負荷テスト

移行要件

移行計画

  1. 既存のコミュニケーションツールからのデータ移行
  2. 新システムの導入と運用開始
  3. 旧システムのシャットダウン

引き継ぎ

プロジェクト要件で記載したようにドキュメントをきれいにまとめることになっているため、ドキュメントを確認する。 ドキュメントを確認してもわからない場合は、上会生に聞く。

運用要件

教育

  1. チームメンバーへの新システムの使い方のトレーニング
  2. 開発・保守に携わるメンバーへの技術教育

運用

  1. システムの監視とアラート対応
  2. 定期的なデータバックアップ
  3. システムのアップデート・パッチ適用

保守

  1. バグ修正
  2. パフォーマンスチューニング
  3. 機能追加・改善のためのアップデート