ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:343.76KB ,
资源ID:5913814      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/5913814.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【xrp****65】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【xrp****65】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(软件架构设计文档.docx)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

软件架构设计文档.docx

1、 测测软件架构设计文档密 级:内部公开文档编号:1002 版 本 号:V3.0测测(基于安卓平台的测评软件)软件架构设计文档文件状态: 草稿 正在修改 正式发布文件标识:开发组当前版本:V 3.0作 者:张放、张钰若、陈国忠完成日期:2014-5-26中国石油大学(华东)计算机与通信工程学院 天师团开发团队第 19页 共 19页项目名称:测测基于安卓平台测评软件 版本: 软件架构设计文档 日期: 修订历史记录日期版本说明作者2014.5.13对软件架构进行初始设计陈国忠,张放2014.5.23对软件架构进行初始设计进行修正陈国忠,张放2014.5.26确定软件架构陈国忠,张放目录1文档介绍41

2、.1文档目的41.2文档范围41.3读者对象41.4参考文献42架构设计思想53架构体系描述54 views54.1 Module structs54.2 Component & Connector(组件-连接器视图)74.3 Allocation85 Mappping between views85.1 Class map to Package85.2 Package map to Allocation86 Utility tree96.1 Quality attribute scenario (质量属性场景)96.2 Utility tree116.3 Tactics127. Archit

3、ecture137.1 WebService137.2 MVC (Model View Controller)167.3 Publish/Subscrib181文档介绍1.1文档目的本文档是对于测测软件系统进行详细设计和编码的重要依据。对该软件的整个系统的结构关系进行了详细描述,阐述了系统的总体框架,包括物理、逻辑结构,说明了体系结构所采取的设计策略和所有技术,并对相关内容做出了统一的规定。为今后的设计、编码、测试都提供了可以参考的模版并且提高效率,使整个开发过程做到资源利用最大化,减少由于需求变更而修改的时间,大大的降低了成本,节约了时间,也使得客户更加的满意。1.2文档范围本文档包含以下几

4、个部分:1、 架构设计思想2、 架构体系描述3、 系统模块化分4、 系统模块描述5、 模块接口设计1.3读者对象本文档主要读者包括:1、本系统的设计人员:包括模块设计人员(理解用户需求,在设计时把握用户需求)。2、本系统的系统开发人员:编码人员(了解用户需求,为编码提供模版)。3、本系统的测试人员(了解用户需求,为测试提供参考)。4、 客户(检查是否满足要求)。1.4参考文献软件工程讲义测测需求规格说明书2架构设计思想为了降低系统耦合度,增加系统内聚性,在需求发生更改时能在较短的时间内对系统做出修改,并重新投入使用,我们决定以分层体系架构风格作为整个系统的体系风格,严格按照一定的规则来进行接口

5、设计,并以之为根据进行详细设计。分为数据层、业务逻辑层、表示层。3架构体系描述整个系统顶层架构采用分层的风格,整个系统的体系结构非常清晰,使得后期易于详细设计、编码、维护以及适应需求变更。通过分层,定义出层与层之间的接口,使得在更加规范的同时拥有更为多台花的接口描述,使得层与层之间的耦合度降低,增强了模块的服用型和可扩展性以及可维护性。同时,分层也有益于项目模块的划分以及任务的分配,通过明确清晰的接口,降低集成的难度,提高效率。4 views4.1 Module structs(1)具有三层结构的测测软件包图:图4.1.1领域模型图(2)测测软件领域模型图:图4.1.2领域模型图(3)测测软件

6、类图:图4.1.3类图(4)测测系统用例图:图4.1.4系统用例图4.2 Component & Connector(组件-连接器视图)(1)性格测试顺序图:图4.2.1性格测试顺序图4.3 Allocation(1)测测软件部署图:图4.3.1部署图5 Mappping between views5.1 Class map to Package(1)类图中的TTestController类、UserContainer类、TendencyContainer类对应于包图中表示层的UI包。(2)类图中的TTest类、User类、Test类、InteligentTest类、CharactTest类、

7、Tendency类、Daily Trend类、ServiceController类对应于包图中业务逻辑层的测试模块包和评价模块包。(3)类图中的DataHelp类、I/OEventStream类、QuestionBase类、UserInfo类对应于包图中数据层的题库管理包和用户管理包。5.2 Package map to Allocation(1)包图中的UI包、测试模块包、评价模块包位于部署图中的C/S客户端。(2)包图中的题库管理包和用户管理包位于部署图中的客户端数据库和数据库服务器。6 Utility tree6.1 Quality attribute scenario (质量属性场景)

8、(1)可用性:情节描述:用户在进行性格测试时,点击无反应。相关质量属性: 可用性刺激源:进行性格测试的用户刺激:用户点击性格测试环境:正常运行状态制品:性格测试功能模块反应:提示程序无响应,需重启软件反应度量:在2s内给出提示策略:异常检测异常处理(2)互操作性:情节描述:用户完成测试,进行提交,数据库返回测试结果。相关质量属性: 互操作性刺激源:进行测试的用户刺激:用户完成测试,进行提交环境:正常运行状态制品:数据库、测试模块反应:显示测试结果反应度量:在1s内显示测试结果。策略:发现服务(3)可修改性:情节描述:开发人员更新数据库相关质量属性:可修改性刺激源:开发人员刺激: 开发人员更新数

9、据库数据环境:正常运行状态制品:数据库,反应:显示测试结果反应度量:在1s内显示测试结果。策略: 减少耦合提高内聚封装(4)性能:情节描述:用户完成测试,提交,数据库返回测试结果。相关质量属性:性能刺激源:进行测试的用户刺激: 开发人员更新数据库数据环境:用户完成测试,提交。制品:正常运行状态反应:显示测试结果反应度量:在1s内显示测试结果。策略:同时计算(5)安全性:情节描述:黑客侵入数据库盗取用户密码。相关质量属性:安全性刺激源:黑客刺激: 黑客非法侵入数据库环境:正常运行状态制品:数据库安全保护模块反应:阻止黑客获取数据库内容反应度量:在1s内进行拦截策略: 拒绝攻击反应攻击 确定用户(

10、6)可测试性情节描述:在开发阶段开发者对自己的模块进行单元测试。相关质量属性:可测试性刺激源:开发人员刺激: 对已完成的子系统进行测试环境:系统开发中制品:被测代码段反应:显示代码出错情况反应度量:执行测试的时间不能超过2s策略: 限制复杂性(7)易用性情节描述:用户在完成某一测试后重新进行测试相关质量属性:易用性刺激源:欲进行重新测试的用户刺激: 用户点击重新测试环境:软件正常运行环境制品:相应测试功能模块反应:进入该测试,显示测试题反应度量:重新跳转到相应测试界面的时间不超过2s。6.2 Utility tree质量属性属性细化场景 ASR性能题库更新响应时间在系统处于正常运行时,为对题库

11、更新做出响应,用户更新题库要在3分钟内完成(H,M)可维护性软件更新软件产商发布了一个新版本,必须尽快安装该版本。(H,L)维护人员发现了软件的缺陷,修复该bug。(H,M)安全性机密性完整性非维护人员侵入数据库,需在1S内完成拦截。(H,M)系统拒绝未经登录的访问。(H,M)可用性发布新版本网络环境不佳软件产商发布了一个新软件,该软件是热插拔的。(H,L)软件产商发布了一个新软件,支持用户随时进行更新。(M,L)用户进行每日运势测评无响应,终端在1S内提示用户网络环境不佳,请打开网络连接。(M,L)性能响应时间吞吐量用户提交测评后,系统在0.5s内显示测评结果。(M,H)100名用户同时在线

12、时,系统每秒能处理150个正常请求。(M,H)可修改性优化算话的复杂性优化测评结果分析算法,两名开发人员在一个工作日内完成。(H,L)6.3 Tactics一,安全性策略: 1、反应攻击 2、确定用户二,可用性策略: 1、异常检测 2、异常处理3、实时监听三,安全性策略1、加密数据2、拒绝攻击3、反应攻击4、确定用户四,可修改性策略1、降低依赖2、减少耦合3、提高内聚4、封装五,性能策略1、同时计算7. Architecture根据软件的重要需求,确定了本软件所采用的设计模式:7.1 WebService决定运用该模式的需求:(1)客户端数据库与服务器同步,采用双数据库实现效率提高。(2)需调

13、用API,进行每日运势分析。WebService 调用每日星座运势API核心代码如下:private void updateEverydayFortune() if(isNetworkAvailable()/有网络就更新/启动更新数据线程new Thread(new updateEverydayFortuneRunnable().start();private class updateEverydayFortuneRunnable implements RunnableSimpleDateFormat simpleDateFormat = new SimpleDateFormat(yyyy-M

14、M-dd);String now = simpleDateFormat.format(new Date();SharedPreferences sharedPreferences = MainActivity.this.getSharedPreferences(xzlm,Context.MODE_WORLD_READABLE);Overridepublic void run() /将值取获,然后保存for(int i=1;i=12;i+)/判断是否要更新String date = sharedPreferences.getString(i+_date, NoDate);if(date.equa

15、ls(NoDate)|!date.equals(now)/需要更新的星座就去更新。sendInfo(i);private StringBuffer json;private void sendInfo(int constellationid) / 发送http请求URL url = null;HttpURLConnection conn = null;DataOutputStream outputStream = null;BufferedInputStream bufferedInputStream = null;String requestUrl = String param = fun=

16、day&id= + EverydayFortune.httpConstellationNumberconstellationid - 1 + &format=json;byte entity = param.getBytes();try url = new URL(requestUrl);conn = (HttpURLConnection) url.openConnection();conn.setConnectTimeout(5000);conn.setDoOutput(true);conn.setUseCaches(false);conn.setRequestMethod(POST);co

17、nn.setRequestProperty(Charset, UTF-8);conn.setRequestProperty(Content-Length, String.valueOf(entity.length);outputStream = new DataOutputStream(conn.getOutputStream();outputStream.write(entity);outputStream.flush();if (conn.getResponseCode() = 200) bufferedInputStream = new BufferedInputStream(conn.

18、getInputStream();byte bf = new byte1024;int i = 0;json = new StringBuffer();while (i = bufferedInputStream.read(bf) != -1) String str = new String(bf, 0, i);json.append(str); catch (MalformedURLException e) e.printStackTrace(); catch (IOException e) e.printStackTrace();if (json != null) / 有数据返回,下面解析

19、这些数据,并保存resolveJSONAndSave(constellationid);/解析回传的jsonprivate void resolveJSONAndSave(int constellationid) JSONArray array;try array = new JSONArray(json.toString();String zhys = array.getJSONObject(0).getString(rank);String aqys = array.getJSONObject(1).getString(rank);String gzzk = array.getJSONOb

20、ject(2).getString(rank);String lctz = array.getJSONObject(3).getString(rank);String jkzs = array.getJSONObject(4).getString(value);String stzs = array.getJSONObject(5).getString(value);String xyys = array.getJSONObject(6).getString(value);String xysz = array.getJSONObject(7).getString(value);String

21、spxz = array.getJSONObject(8).getString(value);String zhgs = array.getJSONObject(9).getString(value);String date = array.getString(11);/保存到sharedPreferencesSharedPreferences sharedPreferences = MainActivity.this.getSharedPreferences(xzlm, Context.MODE_WORLD_WRITEABLE);Editor editor = sharedPreferenc

22、es.edit();editor.putString(constellationid+_zhys, zhys);editor.putString(constellationid+_aqys, aqys);editor.putString(constellationid+_gzzk, gzzk);editor.putString(constellationid+_lctz, lctz);editor.putString(constellationid+_jkzs, jkzs);editor.putString(constellationid+_stzs, stzs);editor.putStri

23、ng(constellationid+_xyys, xyys);editor.putString(constellationid+_xysz, xysz);editor.putString(constellationid+_spxz, spxz);editor.putString(constellationid+_zhgs, zhgs);editor.putString(constellationid+_date, date);mit(); catch (JSONException e) / TODO Auto-generated catch blocke.printStackTrace();

24、/* * 判断有没有网络 * * return是否有网络 */private boolean isNetworkAvailable() Context context = getApplicationContext();ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);if (connectivity != null) NetworkInfo info = connectivity.getAllNetworkInfo();

25、if (info != null) for (int i = 0; i info.length; i+) if (infoi.getState() = NetworkInfo.State.CONNECTED) return true;return false;7.2 MVC (Model View Controller)决定运用MVC模式的需求:(1)实现测试题目选项统计,进行测试结果分析。MVC核心代码如下:/Model:/package com.example.service;import java.util.ArrayList;import java.util.List;import j

26、ava.util.Observable;public class Model extends Observable private List mList ;public int get(int idx) return mList.get(idx);public void set(int idx) mList.set(idx,1); setChanged(); notifyObservers();public void back(int idx) mList.set(idx,0);setChanged();notifyObservers();public Model()mList = new A

27、rrayList(4);mList.add(0);mList.add(0);mList.add(0);mList.add(0);/Controller:/answerGroup.setOnCheckedChangeListener(new OnCheckedChangeListener()Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) / TODO Auto-generated method stubnextBtn.setEnabled(true);switch (group.getCheckedRad

28、ioButtonId() case R.id.answerA:model.set(0);model.back(1);model.back(2);model.back(3);break;case R.id.answerB:model.set(1);model.back(0);model.back(2);model.back(3);break;case R.id.answerC:model.set(2);model.back(0);model.back(1);model.back(3);break;case R.id.answerD:model.set(3);model.back(0);model

29、.back(1);model.back(2);break;7.3 Publish/Subscrib决定运用“发布订阅”模式的需求:(1)测试题库需定期更新,并自动提示用户。Publish/Subscrib核心代码如下:/Publish/Subscribe接口:/public interface ISubscribe void getNewPaper();/个人订阅者:/public class PersonalSubscriber implements ISubscribe private String strName;public void setNewsPaperName(String s

30、trName)this.strName = strName;public String getNewsPaperName()return strName;Overridepublic void getNewPaper() / TODO Auto-generated method stubSystem.out.println(尊敬的用户,+getNewsPaperName()题库已更新,欢迎测试!);/发布者:/public abstract class Publish public List list;public Publish()list = new ArrayList(); public

31、 void registered(ISubscribe iSubscribe) list.add(iSubscribe); public void unregistered(ISubscribe iSubscribe) list.remove(iSubscribe); public abstract void sendNewsPaper();/下面是实现:public class PostOffice extends PublishOverridepublic void sendNewsPaper() / TODO Auto-generated method stubIterator iter

32、ator = list.iterator();while(iterator.hasNext()(ISubscribe) iterator.next().getNewPaper();/测试:/public static void main(String args) / TODO Auto-generated method stubPostOffice postOffice = new PostOffice();/得到个人用户PersonalSubscriber person = new PersonalSubscriber();person.setNewsPaperName(智力测试);/注册观察者postOffice.registered(person);postOffice.registered(enterprise);/发布订阅消息postOffice.sendNewsPaper();

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服