\documentclass[main.tex]{subfiles}

\begin{document}
\section{系统功能需求}

%系统的功能描述，包括需求分析

在本节中我们将按照软件工程的方法进行本系统的需求分析，在需求分析中我们介绍系统面向的用户群体，系统应当遵守的标准和规范，并逐条列举系统的功能需求和系统的非功能需求，例如性能需求、环境需求、用户界面需求和资源使用需求。

\subsection{系统介绍}

随着互联网技术的发展，越来越多的用户选择在自己的家庭网络中搭建网络附加存储（NAS），作为自己家庭网络上的核心存储设备，并在NAS上下载和存储自己所喜爱的视频和音频资料。同时随着移动终端技术的发展，尤其是4G技术和Wi-Fi技术为终端提供了充足的带宽之后，在移动设备上访问并收听观看家庭NAS中存储的各种资料变成为了一个非常常见的需求。

本系统便是一个为了解决家庭影音需求而设计的移动端多媒体播放系统。系统应提供两个部分的应用程序，第一部署在NAS上提供影音资料识别、推流的服务端系统，第二是安装在移动终端上的客户端程序，该软件从服务端系统中获取当前NAS中存储各种影音资料的信息并展示给用户选择，提供音乐的播放和视频的观看功能。

\subsection{系统面向的用户群体}

本系统面向的用户群体为家庭网络中搭建了NAS的家庭用户群体，尤其是将家庭中的影音资料存储在NAS中并且希望能够在移动终端上查看自己NAS中资料的用户。

\subsection{系统应当遵守的标准和规范}

在各种软件系统的开发中，遵循一系列标准和规范是非常重要的，这不仅有助于保证应用的质量，还能增强其安全性、性能和用户体验。

\begin{itemize}
    \item 隐私政策和数据保护。遵守GDPR、CCPA等数据保护法规，确保用户数据的合法收集、使用和存储。
    \item 版权和许可。尊重第三方的知识产权，正确使用开源软件和API。
    \item 适配性标准。确保应用能在不同设备和操作系统版本上正常运行，包括屏幕尺寸和方向适应性。
    \item 无障碍标准。设计应用时考虑到残疾用户的需求，遵循WCAG等无障碍指南。
\end{itemize}

\subsection{系统的功能需求}

\begin{center}
\begin{longtable}{cp{6cm}p{6cm}}
    \caption{Chiara系统功能需求}
    \label{tab:function-requirements} \\
    \toprule
    \textbf{功能类别} & \textbf{功能名称} & \textbf{描述} \\
    \endhead
    媒体仓库 & 设置媒体仓库 & 媒体仓库是对用户文件系统中某一位置下所有媒体文件的统一逻辑抽象。用户可以设置媒体仓库的位置，扫描该路径下的所有媒体文件。\\
    \midrule
    \multirow{3}{*}{音视频元信息} & 音频元信息的获取 & 利用元数据的识别工具从扫描到的mp3格式和flac格式的音频文件中提取歌曲名称，歌手，封面图片等的元信息，并存储在数据库中 \\
    \cmidrule{2-3}
    & 视频元信息的获取 & 利用元数据识别工具从扫描到的mp4格式和mkv格式的视频文件中提供视频所在节目的名称，视频当前节目中集的编号和标题，利用工具从视频中截取图片作为封面图片进行显示 \\
    \cmidrule{2-3}
    & 元信息的存储和刷新 & 在获得到音视频文件的元信息之后，应该将元信息存储在持久化存储中，并且可以在用户的控制或者监控到文件发生变化时自动刷新文件的元信息 \\
    \midrule
    \multirow{2}{*}{音视频的播放} & 音频的播放 & 考虑到音频文件的大小一般较小，在播放时可以直接通过HTTP协议以原文件的形式提供。\\
    \cmidrule{2-3}
    & 视频的播放 & 考虑到移动端设备的解码能力和传输数据量的问题，需求在播放视频文件时采用流媒体的技术分片进行播放。\\
    \bottomrule
\end{longtable}
\end{center}

\subsection{系统的非功能需求}

本系统的非功能需求主要为性能需求、环境需求、用户界面需求和资源使用需求。性能需求是系统的技术性能指标，尤其是系统的实时性和其他时间要求。环境需求是系统运行时所处环境的要求。例如在硬件方面应该采用什么机型，需求什么外部接口和数据通信接口；在软件方面应该采用什么支持系统运行的系统软件等。用户界面的基本需求是做到用户界面的友好，使得用户能够方面有效愉快地使用该软件。资源使用需求是指系统运行时所需的数据，软件、内存空间等各项资源。

\begin{longtable}{cp{6cm}p{6cm}}
    \caption{Chiara系统非功能需求}
    \label{tab:non-function-requirements} \\
    \toprule
    \textbf{需求类别} & \textbf{需求名称} & \textbf{描述} \\
    \midrule
    \endhead
    \multirow{2}{*}{性能需求} & 快速的元信息扫描 & 扫描元信息的过程应当快速且准确。 \\
    \cmidrule{2-3}
    & 快速的视频转码和推流 & 在观看视频时应该按照视频播放的速度将视频转换为移动终端支持的格式并推送出去。 \\
    \midrule
    \multirow{2}{*}{环境需求} & 客户端运行环境 & 客户端应该面向最新的Android API版本进行开发，并且支持在Android API 28版本之上的环境中运行。 \\
    \cmidrule{2-3}
    & 服务器运行环境 & 服务器程序使用Docker的方式进行交付，并且在x86-64的兼容服务器上运行。\\
    \midrule
    用户界面需求 & 友好的用户界面 & 提供易于使用的用户界面，使用设计语言的方式引导用户进行使用，降低用户使用时的学习成本。支持黑暗模式。 \\
    \midrule
    \multirow{2}{*}{资源使用需求} & 较小的存储空间使用 & 在进行视频转码时，必然需要将转码之后的文件缓存在文件系统中提供给客户端使用，需要控制缓存文件的大小。\\
    & 较低的计算资源需求 & 考虑在移动终端的性能问题，在服务器进行视频推流时需要提供符合移动端解码能力的视频流。\\
    \bottomrule
\end{longtable}


\end{document}