《软件架构设计文档》由会员分享,可在线阅读,更多相关《软件架构设计文档(12页珍藏版)》请在金锄头文库上搜索。
1、级:内部公开文档编号:1002 版 本号: 测测(基于安卓平台的测评软件) 软件架构设计文档文件状态:文件标识:开发组草稿当前版本:V正在修改作者:张放、张钰若、陈国忠V正式发布完成日期:2014-5-26中国石油大学(华东)计算机与通信工程学院 天师团开发团队修订历史记录项目名称:测测一基于安卓平台测评软件版本:软件架构设计文档日期: 2014/5/26日期版本说明作者对软件架构进行初始设计陈国忠,张放对软件架构进行初始设计进 行修正陈国忠,张放确定软件架构陈国忠,张放目录1文档介绍文档目的文档范围读者对象参考文献2. 架构设计思想3. 架构体系描述4. viewsModule struet
2、sComponent & Connector (组件-连接器视图)Allocation5. Mappping between viewsClass map to PackagePackage map to Allocation6. Utility treeQuality attribute scenario (质量属性场景)Utility treeTactics7. ArchitectureWebServiceMVC (Model View Controller) Publish/Subscrib1文档介绍文档目的本文档是对于测测软件系统进行详细设计和编码的重要依据。对该软件的整 个系统的结构
3、关系进行了详细描述,阐述了系统的总体框架,包括物理、逻辑结 构,说明了体系结构所采取的设计策略和所有技术,并对相关内容做出了统一的 规定。为今后的设计、编码、测试都提供了可以参考的模版并且提高效率,使整 个开发过程做到资源利用最大化,减少由于需求变更而修改的时间,大大的降低 了成本,节约了时间,也使得客户更加的满意。本文档包含以下几个部分:1、架构设计思想2、架构体系描述3、系统模块化分4、系统模块描述5、模块接口设计读者对象本文档主要读者包括:1、本系统的设计人员:包括模块设计人员(理解用户需求,在设计时把握用户 需求)。2、本系统的系统开发人员:编码人员(了解用户需求,为编码提供模版)。3
4、、本系统的测试人员(了解用户需求,为测试提供参考)。4、客户(检查是否满足要求)。参考文献软件工程讲义测测需求规格说明书2架构设计思想为了降低系统耦合度,增加系统内聚性,在需求发生更改时能在较短的时间 内对系统做出修改,并重新投入使用,我们决定以分层体系架构风格作为整个系 统的体系风格,严格按照一定的规则来进行接口设计,并以之为根据进行详细设 计。分为数据层、业务逻辑层、表示层。3架构体系描述整个系统顶层架构采用分层的风格,整个系统的体系结构非常清晰,使得后 期易于详细设计、编码、维护以及适应需求变更。通过分层,定义出层与层之间 的接口,使得在更加规范的同时拥有更为多台花的接口描述,使得层与层
5、之间的 耦合度降低,增强了模块的服用型和可扩展性以及可维护性。同时,分层也有益 于项目模块的划分以及任务的分配,通过明确清晰的接口,降低集成的难度,提 高效率。4 viewsModule structs1)具有三层结构的测测软件包图:图2)测测软件领域模型图:图3)测测软件类图:4)测测系统用例图:图系统用例图Component & Connector (组件-连接器视图)1)性格测试顺序图:Allocation(1)测测软件部署图:图部署图5 Mappping between viewsClass map to Package(1)类图中的 TTestController 类、UserCon
6、tainer 类、TendencyContainer 类对应于包图中表示层的UI包。(2)类图中的 TTest 类、User 类、Test 类、InteligentTest 类、CharactTest 类、Tendency类、Daily Trend类、ServiceController类对应于包图中业务逻 辑层的测试模块包和评价模块包。(3)类图中的 DataHelp 类、I/OEventStream 类、QuestionBase 类、UserInfo类对应于包图中数据层的题库管理包和用户管理包。Package map to Allocation(1)包图中的UI包、测试模块包、评价模块包位于
7、部署图中的C/S客户端。(2)包图中的题库管理包和用户管理包位于部署图中的客户端数据库和数据库 服务器。6 Utility treeQuality attribute scenario(质量属性场景)1)可用性:情节描述:用户在进行性格测试时,点击无反应。相关质量属性:可用性刺激源:进行性格测试的用户刺激:用户点击性格测试环境:正常运行状态制品:性格测试功能模块反应:提示程序无响应,需重启软件反应度里:在2s内给出提示策略:异常检测异常处理(2)互操作性情节描述:用户完成测试,进行提交,数据库返回测试结 果。相关质量属性:互操作性刺激源:进行测试的用户刺激:用户完成测试,进行提交环境:正常运行
8、状态制品:数据库、测试模块反应:显示测试结果反应度里:在Is内显示测试结果。策略: 发现服务(3)可修改性情节描述:开发人员更新数据库相关质量属性:可修改性刺激源:开发人员刺激:开发人员更新数据库数据环境:正常运行状态制品:数据库,反应:显示测试结果反应度里:在1s内显示测试结果。策略:减少耦合 提高内聚 封装4)性能:情节描述:用户完成测试,提交,数据库返回测试结果。相关质量属性:性能刺激源:进行测试的用户刺激:开发人员更新数据库数据环境:用户完成测试,提交。制品:正常运行状态反应:显示测试结果反应度里:在1s内显示测试结果。策略:同时计算5)安全性情节描述:黑客侵入数据库盗取用户密码。相关
9、质量属性:安全性刺激源:黑客刺激:黑客非法侵入数据库环境:正常运行状态制品:数据库安全保护模块反应:阻止黑客获取数据库内容反应度里:在Is内进仃拦截策略:拒绝攻击反应攻击确定用户6)可测试性情节描述:在开发阶段开发者对自己的模块进行单兀测试。相关质量属性:可测试性刺激源:开发人员刺激:对已完成的子系统进行测试环境:系统开发中制品:被测代码段反应:显示代码出错情况反应度里:执行测试的时间不能超过2s策略:限制复杂性(7)易用性情节描述:用户在完成某一测试后重新进行测试相关质量属性:易用性刺激源:欲进行重新测试的用户刺激:用户点击重新测试环境:软件正常运彳丁环境制品:相应测试功能模块反应:进入该测
10、试,显示测试题反应度里:重新跳转到相应测试界面的时间不超过2s。Utility tree质量属性属性细化场景 ASR性能题库更新响应时间在系统处于正常运行时,为对题库更新做 出响应,用户更新题库要在3分钟内完成(H,M)可维护性软件更新软件产商发布了一个新版本,必须尽快安 装该版本。(H,L)维护人员发现了软件的缺陷,修复该bug。 (H,M)安全性机密性 完整性非维护人员侵入数据库,需在1S内完成拦 截。(H,M)系统拒绝未经登录的访问。(H,M)可用性发布新版本 网络环境不佳软件产商发布了一个新软件,该软件是热 插拔的。(H,L)软件产商发布了一个新软件,支持用户随 时进行更新。(M,L)
11、用户进行每日运势测评无响应,终端在IS 内提示用户网络环境不佳,请打开网络连 接。(M,L)性能响应时间 吞吐量用户提交测评后,系统在内显示测评结果。(M,H)100名用户同时在线时,系统每秒能处理150个正常请求。(M,H)可修改性优化算话的复杂性优化测评结果分析算法,两名开发人员在 一个工作日内完成。(H,L)Tactics,安全性策略1、反应攻击2、确定用户 二,可用性策略:1、异常检测2、异常处理3、实时监听三,安全性策略1、加密数据2、拒绝攻击3、反应攻击4、确定用户 四,可修改性策略1、降低依赖2、减少耦合3、提高内聚4、封装五,性能策略1、同时计算7. Arch itect ur
12、e根据软件的重要需求,确定了本软件所采用的设计模式:WebService决定运用该模式的需求:(1)客户端数据库与服务器同步,采用双数据库实现效率提高(2)需调用API,进行每日运势分析。WebService调用每日星座运势API核心代码如下:private void updateEverydayFortune() if(isNetworkAvailable()tart();private class updateEverydayFortuneRunnable implementsRunnablenewSimpleDateFormat simpleDateFormat =SimpleDateF
13、ormat(yyyy-MM-dd);String now = (new Date();SharedPreferences sharedPreferences = xzlm,;Overridepublic void run() etString(rank);String aqys = (1).getString(rank);String gzzk = (2).getString(rank);String lctz = (3).getString(rank);String jkzs = (4).getString(value);String stzs = (5).getString(value);String xyys = (6).getString(value);String xysz = (7).getString(value);String spxz = (8).getString(value);String zhgs = (9).getString(value);String date = (11);etState() = return true;return false;mvc (Model View Controller)决定运用MVC模式的需求: (1)实现测试题目选项统计,进行测试结果分析。MVC核心代码如下:etNewPaper();/测试:/