【股票交易系统】
    ——股票信息发布子系统
    需求报告
    组长:程政淋 3200105708@zju.edu.cn
    组员:米博宇 黄亦霄 黄政 王梓霁 管欣怡
    日期:2022/5/8
    目录
    1 引言 2
    1.1 编写目的 2
    1.2 项目背景 2
    软件系统名称 3
    任务提出者 3
    开发者 3
    用户 3
    实现该软件的计算机网络 3
    相关背景介绍 3
    相关定义 3
    2 项目描述 4
    2.1 项目提出以及意义 4
    2.2 项目具体内容介绍 4
    2.3 项目研究现状 5
    2.3.1 国内研究现状 5
    2.3.2 国外研究现状 5
    3 用户场景 5
    3.1 用例 5
    3.2 用例图 10
    3.3 IPO 图 11
    4 数据流图 13
    4.1 顶层数据流图 13
    4.2 中层数据流图 14
    4.3 底层数据流图 14
    4.3.1 股票搜索 14
    4.3.2 交易申请 15
    4.3.3 新闻相关 15
    4.3.4 用户登录 16
    4.3.5 用户付费 16
    4.3.6 用户付费信息查询 17
    5 状态图 17
    6 CRC 卡 18
    7 数据词典 21
    7.1 数据流定义表 21
    7.2 数据元素定义表 22
    7.3 外部项定义表 22
    7.4 数据精密度 23
    8 验收标准 24
    8.1 功能需求 24
    8.1.1 登录 24
    8.1.2 股票信息查询 24
    8.1.3 股票信息发布 24
    8.2 性能需求 25
    8.3 安全性需求 26
    8.4 可维护性需求 26
    9 运行环境规定 27
    9.1 服务器端 28
    9.2 设备要求 28
    9.3 软件依赖 28
    9.4 客户端 28

    1 引言
    1.1 编写目的
    经过组内同学细致讨论,并对市场上现有的股票交易系统全面深入探讨和分析,本项目组提出了这份软件需求规格说明书。
    此需求说明书对股票信息发布做了全面细致的用户需求分析,明确所要开发的软件应具有的功能、性能与界面,使系统分析人员及软件开发人员能清楚地了解用户的需求,并在此基础上进一步提出概要设计说明书和完成后续设计与开发工作。
    该《需求说明书》将在接下来的一段时间内,作为股票信息发布子系统开发内容及其约束的参考依据,为开发方与客户方提供参考,并为系统开发者提供设计与编程的基础,同时为选取测试用例和进行验收提供依据。
    本书的预期读者包括:

    • 客户
    • 需求分析人员
    • 测试人员
    • 项目管理人员
    • 系统维护人员

    1.2 项目背景
    软件系统名称
    • 股票交易系统
    任务提出者
    • 浙江大学软件工程基础任课老师-王新宇
    开发者
    • 浙江大学 2021~2022 学年夏学期软件工程基础课程学生项目组
    用户
    • 卖家、买家、管理员
    实现该软件的计算机网络
    • 由若干台 PC 机组成的局域网
    相关背景介绍
    浙江大学软件工程基础课程分为理论课与实践课两个部分。在理论课中,教师有选择地介绍了与 软件工程基础相关的理论;强调并确定了适用于整个软件生命期的基本原则,全面而深入地介绍了这 些基本原则在软件设计、规范、验证、软件生产过程和管理 活动中的运用。而实验课采取分组形式完成,每 5 个学生为一组,分别设有组长、主程序员、程序员、测试员、文档员等角色。本次课程,教师选取教学服务系统作为综合性实验题目。
    相关定义
    安全证书:安全证书是在进行网上交易时的身份证,或者说是私人钥匙,安全证书是唯一的, 与任何其他人的证书都不相同。
    认证:防范信息的损坏和泄露。
    权限:指用户职能的范围,即各种用户所登录界面、所接触数据、所进行操作等的范围。
    用户场景:用户场景通常称为用例,它提供了系统将如何被使用的描述。
    IPO 图:是输入/处理/输出图的简称,描述输入数据、对数据的处理和输出数据之间的关系。
    数据流图:是 SA 方法中用于表示系统逻辑模型的一种工具,它以图形的方式描述数据在系统中流动和处理的过程,它是一种功能模型。
    状态图:描绘一个系统或组件可能假设的状态,并且显示引起或导致一个状态切换到另一个状态的事件或环境。
    CRC 卡:模型实际上是表示类的标准索引卡片的集合。这些卡片被分为三部分,顶部写类名,下面左侧部分列出类的职责,右侧部分列出类的协作关系。
    数据词典:是对所有与系统相关的数据元素的一个有组织的列表、以及精确严格的定义,使得用户和系统分析员对于输入、输出、存储成分和中间计算有共同的理解。
    系统集成:将不同的系统,根据应用需要,有机地组合成一个一体化的、功能更加强大的新型系统的过程和方法。
    2 项目描述
    2.1 项目提出以及意义
    发行股票是企业实现资金筹集,风险分散,资产增值的重要途径。对投资者而言,投资股票也是一种重要的投资形式,具有较强的灵活性。传统股票交易主要依赖证券交易所,方式有柜台委托、电话委托等,需要较大的场地和较多的电话线路,同时需要证券公司具有大量网点,且每个网点拥有独立的交易席位。而相比之下网上交易具有独特优势:网络交易方便了受到时间、空间限制的交易者参与交易,也降低了券商的经营成本。此外,股票交易的信息化还能为交易者提供更加全面、具体的信息,为投资咨询的专业化与个性化创造了条件。在此背景下,开发一款在线股票交易系统有助于使交易流程更方便快捷,有利于股票市场的进一步发展。
    2.2 项目具体内容介绍
    股票交易系统是用户进行股票查询、交易的大型系统。上市企业可在平台注册后交易本公司股票,用户可在完成相关手续后开通账户进行股票交易,也可以即使获取股价及其变化趋势,相关新闻等关键信息。
    股票交易系统由证券账户业务、资金账户业务、交易客户端、股票中央交易系统、网上信息发布、交易系统管理共六个模块构成。网上信息发布是股票交易系统的模块之一,在此模块中,用户可以通过股票名称或代码查询股票并获得其最新交易结果以及近期交易的统计信息,如股价、涨跌、K线图等,还可以获得相关公司的近期新闻,以便其对股价做出预测并制定交易策略。此外,该模块还应支持对为付费用户提供更高级的功能,如更详细的统计信息、更个性化的投资指导等。
    网上信息发布在整个股票交易系统中是一个核心模块,是用户获取股市信息的关键渠道。
    2.3 项目研究现状
    2.3.1 国内研究现状
    东方财富证券是东方财富信息股份有限公司旗下全资子公司,拥有在线网站、手机、电脑客户端等多个在线股票交易平台,提供交易、咨询等多种服务。
    同花顺股票软件是一个提供行情显示、行情分析和行情交易的股票交易软件,具有手机、电脑等多个客户端,并提供付费产品支持。
    上海证券交易所拥有网站http://www.sse.com.cn/, 用于进行股票数据发布并提供股票交易服务。
    2.3.2 国外研究现状
    M1 Finance是一家集自动化投资与个性化服务于一体的智能财富管理平台,总部位于芝加哥,主营业务涵盖证券投资、保证金贷款、现金管理和投资者教育等。
    3 用户场景
    3.1 用例

    用例 股票信息查询
    主要参与者 用户
    前提条件
    触发器 用户点击搜索框按钮
    工作流程 1. 用户点击查询框后弹出查询框
    2. 搜索框显示历史搜索以及推荐搜索
    3. 用户输入股票代码或名称显示部分匹配结果
    4. 输入回车后显示所有相关股票的信息
    5. 用户选择想查询股票
    异常 1. 用户输入股票代码或名称不存在
    2. 页面加载失败
    3. 用户权限不足不能查看高级信息
    用例 详细信息查询
    主要参与者 用户
    前提条件
    触发器 用户点击具体股票后
    工作流程 1. 详情页面显示股票名、代码、K线图、当前价格等信息
    2. 用户鼠标停留在图线上不同位置时显示不同信息
    3. 侧栏显示相关股票信息、机构预测
    4. 页面最底部显示高级信息,付费用户可查看
    异常 1. 页面加载失败
    2. 股票信息显示错误
    用例 统计信息显示
    主要参与者 系统
    前提条件
    触发器 用户进入详情页面
    工作流程 1. 从交易系统记录中获取最近大金额交易记录
    2. 动态显示资金流入流出
    异常 1. 最近交易记录为空
    2. 交易系统记录有误,显示错误
    用例 股票代码转换
    主要参与者 系统
    前提条件 用户在搜索框中输入股票代码
    触发器 用户点击搜索按钮
    工作流程 1. 用户在搜索框中输入股票代码
    2.系统从根据股票代码找到若干接近股票名称
    3. 将搜索到的股票名称显示在下拉栏中
    异常 1.不存在相应股票
    2.股票名称检索过程出错
    3.页面加载失败
    4.查询所得的股票名称与代码不符
    用例 全球股票趋势查询
    主要参与者 用户
    前提条件
    触发器 用户点击全球信息查询
    工作流程 1. 用户点击全球信息查询
    2. 显示北美南美、欧洲、亚洲地区趋势,显示地区相关股票指数
    3. 切换地区显示
    异常 1. 页面卡顿、加载失败等
    2. 显示信息错误
    用例 挂牌、停牌股票展示
    主要参与者 系统
    前提条件
    触发器
    工作流程 1.系统获取股票挂牌停牌信息
    2.将获取到的信息显示在首页列表中
    异常 1.无法显示股票信息
    2.页面加载失败
    用例 相关新闻展示
    主要参与者 系统
    前提条件
    触发器
    工作流程 1.系统从指定地址获取股票相关新闻
    2.将获取到的新闻预览及链接显示在首页列表中
    异常 1.无法访问某些新闻网站
    2.无法显示新闻预览
    3.新闻链接与内容不符
    4.页面加载失败
    用例 付费用户登录
    主要参与者 非注册用户
    前提条件 1. 由主程序进入,查询付费用户表确权
    2. 根据查询作图指令,访问数据库获得信息制图
    3. 根据确权情况,渲染信息遮挡框和暗色不可用按钮
    4. 非付费用户点击遮挡信息或暗色按钮
    触发器 非付费用户点击遮挡信息或暗色按钮
    工作流程 1. 重新确权,若已属付费则重新渲染开放权限
    若非,弹窗提示权限不足,提供付费页面链接
    2. 付费成功则更新权限表并重新渲染页面
    若非,弹窗提示,不更新付费用户表
    异常 1. 进入付费页面但未成功付费
    2. 成功付费确权状态未更新
    3. 付费用户确权失败
    4. 非付费用户确权成功
    用例 添加关注股票
    主要参与者 用户
    前提条件 用户已登录
    触发器 用户点击关注按钮/取消关注按钮
    工作流程 1.股票详细信息页显示关注/取消关注按钮
    2.用户点击后将该股票添加至用户关注列表中/删除该股票
    异常 1.用户无法添加关注/无法取消关注
    2.用户已关注后不显示取消关注按钮
    3.页面加载失败
    用例 关注股票信息展示
    主要参与者 系统
    前提条件 1. 用户已登录
    2. 用户添加股票至关注列表
    触发器 用户进入用户中心页后
    工作流程 1. 显示股票名、代码、K线图、当前价格等信息
    2. 用户鼠标停留在图线上不同位置时显示不同信息
    3. 侧栏显示相关股票信息、机构预测
    4. 页面最底部显示高级信息,付费用户可查看
    异常 1. 页面加载失败
    2. 股票信息显示错误
    3.未及时更新关注列表
    用例 用户修改密码
    主要参与者 用户
    前提条件 用户已登录
    触发器 用户点击修改密码按钮
    工作流程 1.用户中心页显示修改密码按钮
    2.用户点击后需输入原密码
    3.用户输入新密码并确认新密码
    异常 1.用户无法修改密码
    2.用户忘记密码
    3.页面加载失败
    4.修改密码失败

    3.2 用例图
    需求报告 - 图1
    3.3 IPO 图
    需求报告 - 图2
    需求报告 - 图3
    4 数据流图
    4.1 顶层数据流图
    需求报告 - 图4
    4.2 中层数据流图
    需求报告 - 图5
    4.3 底层数据流图
    4.3.1 股票搜索
    需求报告 - 图6
    4.3.2 交易申请
    需求报告 - 图7
    4.3.3 新闻相关
    需求报告 - 图8
    4.3.4 用户登录
    需求报告 - 图9
    4.3.5 用户付费
    需求报告 - 图10
    4.3.6 用户付费信息查询
    需求报告 - 图11
    5 状态图
    需求报告 - 图12
    6 CRC 卡

    Class: stock_query
    Description: 股票查询
    Responsibility Collaborator
    股票代码搜索 database_select
    股票名称搜索 database_select
    模糊查询 database_select
    股票挂牌 database_update
    股票停牌 database_update
    Class: user_login
    Description: 登录类
    Responsibility Collaborator
    用户名密码输入
    用户名校验 database_select
    密码校验 database_select
    用户确权 database_select
    Class: database_update
    Description: 数据库更新类
    Responsibility Collaborator
    用户注册
    股票信息更新
    Class: account_storage
    Description: 登录判断类
    Responsibility: Collaborator:
    从 session 中获取登录
    注册用户 database_update
    检查账号是否存在 database_update
    账户不存在,提示“账号或密码错误” database_update
    账号与密码匹配,返回登陆成功凭证 database_update
    账号与密码不匹配,返回登陆失败凭证 database_update
    Class: database_select
    Description: 数据库查找类
    Responsibility Collaborator
    用户注册
    用户登录
    查找股票信息
    Class: chart_plot
    Description: 图标绘制类
    Responsibility Collaborator
    从数据库中查询股票信息 database_select
    根据相关信息绘制图表 database_select
    显示图表
    图表信息悬停预览
    Class: news_display
    Description: 显示相关新闻
    Responsibility Collaborator
    获取新闻
    生成预览、链接
    显示新闻列表
    Class: amount payment
    Description: 支付类
    Responsibility: Collaborator:
    验证用户身份
    如果用户为付费用户,提示“已为付费用户” database_select
    获取支付信息 database_select
    自动计算需要支付金额 database_update
    真实支付金额不小于所需金额,提示“支付成功” database_update
    真实支付金额小于所需金额,提示“金额不足” database_update

    7 数据词典
    7.1 数据流定义表

    编号 数据流名 来源 去向 说明
    L1 用户指令 用户 用户管理子系统 包括用户发出的登录、注册指令等
    L2 指令执行结果 用户管理子系统 用户 系统反馈结果以及个人信息并更新 Session
    L3 股票相关信息查询指令 股票管理子系统 股票管理子系统 获取股票价格、教学班信息
    L4 股票代码转换指令 股票管理子系统 股票管理子系统 提供股票代码和股票名字之间的转换查询
    L5 用户付费升级指令 用户 用户管理子系统 发出付费升级指令
    L6 付费升级指令执行结果 用户管理子系统 用户 系统反馈升级结果并更新Session
    L7 修改密码指令 用户 用户管理子系统 发出请求修改密码指令
    L8 修改密码指令执行结果 用户管理子系统 用户 系统反馈修改密码结果并更新Session
    L9 股票k线图查询指令 用户 股票管理子系统 申请查询股票k线图
    L10 k线图查询指令执行结果 股票管理子系统 用户 返回k线图

    7.2 数据元素定义表

    编号 数据元素名 类型 值域 说明
    E1 用户名 字符 中英文字符均可,由用户管理子系统决定
    E2 密码 字符 [0-9,a-z,A-Z] 存在 Session 中,由用户管理子系统决定
    E3 用户是否为付费用户 布尔 True/False 由用户管理子系统决定
    E4 股票代码 数字 [0-9] 由股票管理子系统决定
    E5 股票名字 字符 中英文字符均可,由股票管理子系统决定
    E6 股票价格 字符 [0-9] 由股票管理子系统决定
    E7 付费升级申请内容 字符 中英文字符均可,由用户输入
    E8 付费升级申请结果 布尔 True/False 表示付费升级申请是否通过
    E9 付费升级申请反馈 字符 中英文字符均可输入
    E7 密码修改申请内容 字符 [0-9,a-z,A-Z] 由用户输入新密码
    E8 密码修改申请结果 布尔 True/False 表示修改密码申请是否通过
    E9 密码修改申请反馈 字符 中英文字符均可输入


    7.3 外部项定义表

    编号 外部项名 输入数据流 输出数据流 说明
    W1 用户管理子系统 请求用户信息指令,注册指令,付费升级指令、修改密码指令等
    用户信息、指令申请反馈结果 从用户管理系统获取用户基本信息,实现登录、注册、付费升级、修改密码等功能
    W2 股票管理子系统 股票查询指令、股票代码名字转换指令、k线图查询指令 股票价格、股票代码、股票名字、股票k线图 从股票管理系统获取股票价格、代码、名字等信息,实现股票代码转换功能,提供股票k线图信息

    7.4 数据精密度

    数据元素名 类型 精度要求 说明 示例
    用户名 字符 10位以内 由用户管理子系统决定 张三
    密码 字符 任意长度 由信息管理子系统决定,实际存储值为其哈希值 123456
    用户身份 字符 [普通用户, 付费用户] 由用户管理子系统决定 付费用户
    股票代码 数字 [0-9] 由股票管理子系统决定 300117
    股票价格 数字 [0-9] 由股票管理子系统决定 3.34
    股票名字 字符 20位以内 由股票管理子系统决定 嘉寓股份
    k线图名字 字符 20位以内 由股票管理子系统决定 嘉寓股份日k图
    申请内容 字符 100位以内 中英文字符均可,由用户输入 修改密码为1234567
    申请结果 布尔 [True, False] 表示申请是否通过 True
    申请反馈 字符 100位以内 中英文字符均可 修改成功


    8 验收标准
    股票信息发布子系统是股票交易系统中的一个重要组成部分,该子系统可以让用户根据需要对感兴趣的股票进行查询和详情浏览查看,可以显示行业动态、热点新闻、每支股票的详细信息和图表等。
    本模块允许游客浏览和用户登录,游客只能进行简单的浏览查看,不能无限次使用网页的查询功能,用户登录后即可正常使用网页的功能。除此之外,我们将用户分为普通用户已经高级用户,高级用户可以获取关于股票更多的图表信息帮助判断,普通用户可以在付费后成为高级用户。
    8.1 功能需求
    8.1.1 登录
    在进入本模块之前,用户需已经通过登录界面,选择用户身份登录,才能执行后续操作;若用户未登录而直接进入本模块,则页面将跳转至登录界面,进行身份选择和用户名、密码的验证,在通过验证后才能继续操作。
    8.1.2 股票信息查询
    (1)根据代码查询
    在主页面搜索框中输入股票代码,点击查询跳转具体页面。
    (2)根据名称查询
    在主页面搜索框中输入股票名称,点击查询跳转具体页面。
    (3)联想查询
    在主页面搜索框中输入股票部分信息时,搜索框下方展示联想查询信息,点击查询跳转具体页面。
    8.1.3 股票信息发布
    (1)行业新闻展示
    在本模块首页面,展示最新行业动态新闻,用户可以通过点击感兴趣的链接转到相应页面查看新闻具体内容。新闻推荐可以考虑加入个性化推荐。
    (2)全球股票趋势展示
    在主页面的右上角点击“全球”可以跳转到全球股票趋势查询页面,用户选择地区(如北美)之后,显示当前地区的股票总体趋势,显示涨跌幅最高的前两名的股票名字以及涨跌幅信息。
    (3)单支股票详细信息显示
    在通过查询股票名称或代码后跳转至详情页面,显示股票的详细信息如K线图,涨跌幅,当前价格,用户鼠标悬停在图上时可以获取图像上对应点的信息。
    (4)股票统计信息显示
    从交易系统记录中获取最近大金额交易记录,动态显示资金流入流出。
    (5)付费信息展示
    在详情页面展示部分付费用户才能查看的股票信息,普通用户点击后弹出付费页面询问是否付费解锁,若选择付费解锁即可查看,否则跳转回原来页面。
    8.2 性能需求
    (1)总体要求
    界面设计简洁,布局合理,重点内容突出,数据信息直观准确。图表设计简洁美观,具有一定的交互性。
    (2)系统配置
    系统要具有良好的反应速度,课题要求在良好的网络情况下,本股票信息发布子系统应该具有如下时间特性要求:
    单个用户在线时:

    • Web 响应用户动作时间小于 1 秒。
    • 信息搜索操作响应用户动作时间小于 2 秒。

    500 个用户同时在线时:

    • Web 响应用户动作时间小于 2 秒。
    • 信息搜索操作响应用户动作时间小于 5 秒。

    (3)访问容量
    该系统至少在同一时间内支持 500 个用户并发访问。
    (4)服务器配置最低要求
    CPU2.6G,内存 2.0G,硬盘 7200 转。
    (5)可用性
    该系统应实现多Web浏览器支持:在大多数流行的Web 浏览器中正确显示和执行,包括Firefox、Chrome、Edge、IE 等。
    8.3 安全性需求
    (1)隐私
    用于身份验证的用户名和密码应防止未经授权的用户访问系统。 应构建访问控制以防止合法用户非法使用系统资源。某些敏感数据(如用户名,密码)在交换时应加密。密码在存储之前应加密。在用户登录期间,应该防止 SQL 注入,密码强制破解和伪造会话入侵。
    (2)完整性
    防止非法用户对数据进行无意或恶意的修改、插入、删除,防止数据丢失。
    (3)约束性
    为数据库加上一定的约束,对关键性操作如删除、修改进行限制,并对用户进行警示。不同身份所拥有的权限不同,只可以进行自己权限内的操作。
    (4)账户信息安全性
    着重账户信息安全性设计,做到外界人员无法入侵到系统本身。内部人员操作需要留下操作痕迹,使用权管理层可以定期或不定期地稽核系统。
    8.4 可维护性需求
    作为一个成熟的系统,在开发初期就应该充分考虑系统的可维护性。
    对此,我们提出以下几点要求:
    (1) 高内聚、低耦合的系统模块划分
    开发者需要充分考虑模块内部结构的紧密型及模块间联系的独立性。
    (2) 完备、清晰、可读的文档
    文档是影响软件可维护性的一个决定因素,一个好的文档应具有简明性和书写风格的一致
    性,从而提高系统的可读性和可修改性。设计系统时应准备好各类相关文档,方便操作人员
    的对功能的快速查阅及维护人员的对架构的系统掌握。交付时应文档齐全,说明详尽,且文
    档描述符合相关标准。
    (3) 良好的编程风格
    程序内部应有详细的注释和统一的编程格式,结构清晰、注释明确,使调试、测试人员能快
    速定位各种错误。
    对编程风格的具体要求如下:

    • 不使用令人捉摸不定或含糊不清的代码;
    • 使用有意义的数据名和过程名;
    • 适当的、格式正确的注释;
    • 使用模块化、结构化的设计方法;
    • 具有正确、一致和完整的文档。

    (4)严谨的单元测试
    对核心模块应编写单元测试,在交互时保证各子模块和系统整体的正常运作。
    对可测试性的要求如下:

    • 具有模块化和良好的结构;
    • 具有可理解性、可靠性;
    • 能显示任意的中间结果;
    • 以清楚的描述方式说明系统的输出,根据要求显示所有的输入;
    • 能跟踪及显示逻辑控制流程;
    • 能显示带说明的错误信息;
    • 能适应软件开发每一阶段结束的检查要求;

    9 运行环境规定
    9.1 服务器端
    由于实验条件有限,我们并不能提供专门的服务器运行系统,故将利用配置较高的 PC 作为
    服务器,保证服务器以及客户端间网络畅通即可。
    9.2 设备要求
    CPU:不小于 2.0GHz
    内存:不小于 2.0GB
    9.3 软件依赖
    操作系统:Windows Vista/7/8/8.1/10, Mac OS,Linux
    数据库平台:MySQL Web
    服务器:Apache
    MySQL 管理软件:PHPMyAdmin 或 MySQL WorkBench 等
    开发工具:能支持网页开发的工具均可(如 PyCharm)
    测试工具:能支持测试的工具均可(如 JEST)
    建模工具:Microsoft word
    办公软件:Microsoft Office
    前端框架:Bootstrap(暂定)
    后端框架:Django
    9.4 客户端
    外围设备

    • 键盘鼠标:可正常使用
    • 显示器:可正常使用
    • 硬盘:不小于 100GB
    • 硬盘转速:不小于 7200rpm

    通讯设备

    • 网线:正常联通且数据传输能力良好
    • 网卡:100M