1、软件概要设计说明书拟 制某某某日 期10月20日审 核日 期批 准日 期文档修改统计修改日期版本/状态作者修改章节修改描述-10-17V1.0某某某初版V1.0公布填写说明1. 系统结构定义本体系对整个软件系统按以下结构方法进行划分:系统 子系统 模块 子模块其中:(1)“系统 子系统”划分属于“系统设计”,在系统设计说明书中给予描述。(2)“子系统 模块”划分属于“概要设计”,在本说明书中给予描述。(3)“模块 子模块”划分属于“具体设计”,在具体设计说明书中给予描述。假如系统相对简单,能够省略“子模块”这一层次。2. 假如填写了系统设计说明书,则在本说明书中略过“系统 子系统”划分相关内容
2、(即第2章)。3. 假如系统相对简单,不需要做“系统 子系统”划分,这种情况下,取消填写系统设计说明书,只须填写本说明书,直接套用“子系统 模块”划分(即第3章)进行“系统 模块”划分(把其中“子系统”一词替换为“系统”),并删除本说明书中“系统 子系统”划分相关内容(第2章)。目 录1.介绍11.1.背景和目标11.2.范围11.3.术语和缩略语12.系统总体设计12.1.任务概述22.1.1.目标22.1.2.需求概述22.2.设计概述22.2.1.总体约束22.2.2.系统外部接口22.2.3.设计方案概述22.3.系统架构设计32.3.1.系统逻辑架构设计32.3.2.系统物理架构设计
3、42.4.子系统定义52.4.1.子系统列表52.4.2.子系统间关系53.子系统1设计63.1.任务概述63.1.1.目标63.1.2.需求概述63.2.设计概述63.2.1.总体约束63.2.2.子系统外部接口73.2.3.设计方案概述83.3.子系统架构设计83.4.模块定义103.4.1.模块列表103.4.2.模块间关系113.4.3.模块描述114.非功效性需求实现方案126.1.性能考虑126.2.兼容性考虑136.3.安全考虑136.4.可移植性考虑136.5.集成和测试考虑136.6.可扩展性考虑136.7.可靠性考虑136.8.可维护性考虑145.难点及处理方案146.参考
4、资料147.附录151. 介绍1.1. 背景和目标本文档编制目标是说明对软件系统设计考虑,包含软件系统基础处理步骤,软件系统组织结构、模块划分、功效分配、接口设计、运行设计、数据结构设计和犯错处理设计等,为软件具体设计奠定基础。1.2. 范围本文档适适用于消息推送项目二期产品服务端。1.3. 术语和缩略语缩略语英文全名汉字解释XMPPThe Extensible Messaging and Presence Protocol可扩展通讯和表示协议1.2.2. 系统总体设计 裁剪说明:假如已编写系统设计说明书,或项目不做“系统 子系统”划分,此章省略;不然内部各节必需按要求填写。“系统 子系统”划
5、分。 目标:1)设计系统整体框架:系统最高层次逻辑结构、物理结构;2)子系统划分和依靠关系定义、子系统之间接口定义、子系统功效定义。2.1. 任务概述2.1.1. 目标实现目标和功效。2.1.2. 需求概述参考“软件需求规格说明书_V1.0.doc”。2.2. 设计概述2.2.1. 总体约束2.2.2. 系统外部接口2.2.3. 设计方案概述建立一套即时通讯&消息推送处理方案:1) 云端利用spring+mina+jgroups建立一个分布式服务端系统,以XMPP协议提供接口;2) 终端利用smack建立一个XMPP协议用户端,调用协议接口实现消息接收和终端展示。2.3. 系统架构设计2.3.
6、1. 系统逻辑架构设计2.3.1.1. 单IDC服务器架构图分六层结构:负载均衡层、接入层、逻辑处理层、数据访问层、数据层、WEB层。1) 负载均衡层:TV终端经过域名访问云端,DNS智能解析终端IP地址让它连接就近分发服务器,从分发服务器获取接入服务器列表,然后断开XMPP连接;2) 接入层:TV终端和接入服务器建立XMPP长连接,创建会话;3) 逻辑处理层:终端协议服务器、推送服务器(RS)、统计服务器。a) 终端协议服务器:终端往接入服务器发送协议包,接入服务器转发给终端协议服务器处理;b) 推送服务器:负责从MQ取出消息、解析消息(条件体和消息体)、终端在线和离线查询、按各接入服务器有
7、哪些终端登录把消息包分发给接入服务器;c) 统计服务器:利用quartz实施定时任务,实现终端天天在线数、终端每小时在线数、终端天天激活数、终端登录次数、消息推送结果等统计功效。4) 数据访问层:提供数据访问组件,如Mysql JDBC接口、jedis缓存接口。提供第三方推送接口,供第三方云端调用API,提供单点推送(明消息/暗消息)、条件(区域+机型)推送、regid推送。5) 数据层: Mongodb集群,Mysql数据库(主从+读写分离),ActiveMQ消息队列,Redis缓存服务器。6) WEB层:运行平台、第三方推送平台。2.3.1.2. 多IDC服务器架构图需要整理2.3.2.
8、系统物理架构设计2.4. 子系统定义2.4.1. 子系统列表子系统编号子系统名称(标识)功效描述开发方法1运行平台子系统由超级管理员和运行人员使用,提供第三方管理、基础数据、消息管理、运维、统计、系统设置、日志查询等功效。自行开发2第三方推送接口子系统供第三方云端调用API,提供单点推送(明消息/暗消息)、条件(区域+机型)推送、regid推送。自行开发3第三方推送平台子系统给第三方使用,提供开发者账号注册、应用管理、消息公布、消息推送结果查询等功效。自行开发4推送服务器子系统云端一个逻辑服务器,实现从MQ取出消息、解析消息(条件体和消息体)、终端在线和离线查询、按各接入服务器有哪些终端登录把
9、消息包分发给接入服务器。自行开发5后台任务子系统云端后台任务系统,利用quartz实施定时任务,实现终端天天在线数、终端每小时在线数、终端天天激活数、终端登录次数、消息推送结果等统计功效。自行开发6云端和终端接口:分发服务器、接入服务器、终端协议服务器为消息盒子终端提供云端接口,用XMPP协议。提供获取接入服务器列表、电视终端获取唯一标识userid、以userid登录认证、建立会话及长连接、推送消息、反馈消息接收和点击情况、终端应用激活上报等协议。自行开发7云端集群在云端用JGroups技术组建一个集群,管理各逻辑服务器,实现各组员之间通讯、组员状态反馈、组员列表维护等功效。自行开发注:开发
10、方法可选:采购、外包、自行开发、复用。2.4.2. 子系统间关系 裁剪说明:必填 明确子系统之间调用关系、子系统间接口(消息、数据结构)和相关子系统之间协同工作,能够使用结构图、(交互)事务图、消息序列图、ER图描述。1233.13.23.33.43.53.63.6.13.6.23.6.33. 子系统1设计 裁剪说明:必填 标题上加入子系统编号及名称(标识)“子系统 模块”划分。 目标:1)设计子系统整体框架:子系统逻辑结构;2)模块划分和依靠关系定义、模块之间接口定义、模块功效定义。3.3.1. 任务概述3.1.1. 目标 裁剪说明:可选 说明设计意图目标(总目标、分期目标)、作用范围等。3
11、.1.2. 需求概述 裁剪说明:可选 解释软件产品将完成或不完成功效(能够直接描述也能够参考相关文档)3.2. 设计概述3.2.1. 总体约束3.2.1.1. 开发规范 裁剪说明:可选。假如已填写在2.2.1.1,此处则略。 (1)编码约定 要求代码体系、模块之间接口和命名规则。(2)文件约定 要求子系统全部配置、日志等文件命名方法和格式。(3)目录约定 要求子系统目录结构,包含运行目录、源文件目录、配置目录、日志目录、数据目录等。3.2.1.2. 约束 裁剪说明:可选。假如已填写在2.2.2.2,此处则略。 列出对软件设计相关键影响系统内外部约束和限制,可选约束包含: 用户环境 内存或其它资
12、源限制 数据存放和分发需求 安全和可靠性需求 性能需求 测试和可维护性需求 3.2.2. 子系统外部接口 裁剪说明:假如第2章已删除,这里必填(假如有)。 描述该软件子系统和外部实体接口,包含用户界面、软件接口、硬件接口和通信接口。 软件子系统外部实体,包含:操作系统、驱动程序、硬件、中止、其它软件子系统等。 描述待开发软件子系统和外部实体关系,能够使用系统架构图、顶层数据流图、事务图等来描述系统结构和交互关系,并标示出外部实体和本系统相互作用性质(比如:消息、库调用)和类型(比如:OS服务、通信服务、系统工具等)。 具体描述子系统外部接口参数,如:接口名称 调用方法 传输数据:哪些数据项?数
13、据格式?长度?类型? 频度(实时/批处理) 数据同时机制 平台无关性 遵照标准 提供功效 前置条件 后置条件3.2.3. 设计方案概述 裁剪说明:必填。假如在“3.1设计概述”中已描述过部分,可略。 描述内容包含: (1)整个设计所采取方法:面向对象设计还是结构化设计(2)采取系统架构:比如MVC架构、N层架构(3)使用对应技术和工具:比如OMT、Rose、Visio(4)采取框架技术形式(5)使用设计模式:层模式、微内核模式、代理模式等(6)描述资源/内存分配,Flash资源/文件分配(7)描述哪些模块采取软件复用 3.3. 子系统架构设计 裁剪说明:必填 定义子系统总体逻辑结构,定义模块划
14、分和模块之间依靠关系。 能够采取分层结构描述怎样将子系统分解为模块。 结构描述能够使用结构图、层次分解图、数据流图,并用文字说明相互间关系。 举例,绘制结构图以下:含有继承等关系类图可使用UML等工具画出关系图,以下:3.4. 模块定义3.1.3.2.3.3.3.4.3.4.1. 模块列表 裁剪说明:必填 列举模块时,能够采取表格方法(编号能够省略)。模块编号模块名称(标识)功效简述开发方法注:开发方法可选:采购、外包/自行开发/复用3.4.2. 模块间关系 裁剪说明:必填 明确模块之间调用关系、模块间接口(消息、数据结构)和相关模块之间协同工作,如模块间时序图,协作图,和系统之间状态切换步骤
15、图。3.4.3. 模块描述3.4.3.1. 模块1 标题上加入模块编号及名称(标识)1)功效描述 裁剪说明:必填 说明该模块含有什么样基础功效,和每个功效之间相互关系。2)性能描述 裁剪说明:必填 说明对模块性能要求,包含精度、时间特征和处理速度。3)接口描述 裁剪说明:必填 说明和其它模块接口,和其它系统或硬件接口。 对于接口函数,能够采取以下形式描述:接口1:形式:输入:输出:返回:描述返回什么。描述:总体描述该接口实现目标。 需要明确信息包含:(1)输入项列出模块每一个输入项特征,包含名称、标识、数据类型和格式、数据值有效范围、输入方法、数量和频度、输入介质等;能够是逻辑层面输入项,如:
16、图片资源、媒体流、网络数据等,也能够是具体物理层面输入项,如变量1、变量2,等等。(2)输出项列出模块每一个输出项特征,包含名称、标识、数据类型和格式,数据值有效范围、输出方法、数量和频度、输出介质等。4)配置描述 裁剪说明:可选 说明该模块所处逻辑位置、物理位置,如指明模块放在哪个应用服务器或用户端哪个目录、哪个文件(库),或是在数据库内部建立对象。3.4.3.2. 模块2 同3.3.3.1。4. 非功效性需求实现方案 裁剪说明:整章可选 6.1. 性能考虑 如:为满足延时、吞吐量等性能,在既定硬件环境约束下所采取设计方案。6.2. 兼容性考虑 对以前版本兼容,和平滑升级考虑。6.3. 安全
17、考虑 如:作为应用软件,在安全方面更多是考虑访问控制,包含使用什么样权限管理、分配、验证方案。6.4. 可移植性考虑 系统假如有跨平台需求,要考虑操作系统、中间件、应用服务器特征、数据库及第三方服务移植。描述怎样在不一样平台移植,是否为可配置? 6.5. 集成和测试考虑 各个子系统和模块以什么前后次序进行开发、集成(组装)和测试,即是采取自底向上法还是自顶向下法。6.6. 可扩展性考虑 不仅有对系统功效扩展设计考虑,还要考虑系统性能扩展,即可伸缩性。即考虑:(1)怎样最低成当地添加新功效?(2)怎样最低成本复制一个新系统,而且新旧系统能够做成统一体?6.7. 可靠性考虑 对故障检测、故障隔离、
18、故障恢复、容错、冗余、备份设计考虑。6.8. 可维护性考虑 内容应包含:(1)系统模块是否能够装配?功效模块是否能够配置?整个系统是否已经参数化?(2)提供什么样维护方法、接口及介面? 描述为了系统维护而在系统设计中作出安排,包含在程序中专门安排用于系统检验和维护检测点和专用模块,如打印信息打印规则设计(含打印形式,关闭和打开打印调试信息方法等)。(3)有哪些日常维护需求,而且怎样处理?5. 难点及处理方案 裁剪说明:可选 列出可能疑难问题,并尽可能能给出基础处理思绪(包含关键算法、时序、数据结构等)。可采取表格方法。难点描述可采取处理方案6. 参考资料 裁剪说明:可选 列举编写软件产品概要设计汇报时所用到项目中其它文档或资料。7. 附录 裁剪说明:可选 在此列出需要补充相关文档和技术问题。