




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、密级:内部公开文档编号:1002版本号:V3.0测测(基于安卓平台的测评软件)软件架构设计文档文件状态:口草稿口正在修改正式发布文件标识:开发组当前版本:V3.0作者:张放、张行若、陈国忠完成日期:2014-5-26中国石油大学(华东)计算机与通信工程学院天师团开发团队项目名称:测测基于安卓平台测评软件版本:vV3.0>软件架构设计文档日期:<2014/5/26)修订历史记录日期版本说明作者2014.5.13<V3.0>对软件架构进行初始设计陈国忠,张放2014.5.23<V3.0>对软件架构进行初始设计进行修正陈国忠,张放2014.5.26<V3.0
2、>确定软件架构陈国忠,张放目录1 文档介绍4.1.1 文档目的4.12文档范围4.7.3读者对象4.74参考文献4.2架构设计思想5.3. 架构体系描述54. views5.4.1 Modulestructs5.4.2 Component&Connector(组件-连接器视图)74.3 Allocation8.5. Mapppingbetweenviews8.5.1 ClassmaptoPackage8.5.2 PackagemaptoAllocation8.6. Utilitytree9.6.1 Qualityattributeseenario(质量属性场景)96.2 Util
3、itytree1.16.3 Tactics127. Architecture137.1 WebService137.2 MVC(ModelViewController)167.3 Publish/Subscrib181 文档介绍1.1 文档目的本文档是对于测测软件系统进行详细设计和编码的重要依据。对该软件的整个系统的结构关系进行了详细描述,阐述了系统的总体框架,包括物理、逻辑结构,说明了体系结构所采取的设计策略和所有技术,并对相关内容做出了统一的规定。为今后的设计、编码、测试都提供了可以参考的模版并且提高效率,使整个开发过程做到资源利用最大化,减少由于需求变更而修改的时间,大大的降低了成本,节
4、约了时间,也使得客户更加的满意。1.2 文档范围本文档包含以下几个部分:1、架构设计思想2、架构体系描述3、系统模块化分4、系统模块描述5、模块接口设计1.3读者对象本文档主要读者包括:1、本系统的设计人员:包括模块设计人员(理解用户需求,在设计时把握用户需求)。2、本系统的系统开发人员:编码人员(了解用户需求,为编码提供模版)3、本系统的测试人员(了解用户需求,为测试提供参考)。4、客户(检查是否满足要求)。1.4参考文献软件工程讲义测测需求规格说明书2架构设计思想为了降低系统耦合度,增加系统内聚性,在需求发生更改时能在较短的时间内对系统做出修改,并重新投入使用,我们决定以分层体系架构风格作
5、为整个系统的体系风格,严格按照一定的规则来进行接口设计,并以之为根据进行详细设计。分为数据层、业务逻辑层、表示层。3. 架构体系描述整个系统顶层架构采用分层的风格,整个系统的体系结构非常清晰,使得后期易于详细设计、编码、维护以及适应需求变更。通过分层,定义出层与层之间的接口,使得在更加规范的同时拥有更为多台花的接口描述,使得层与层之间的耦合度降低,增强了模块的服用型和可扩展性以及可维护性。同时,分层也有益于项目模块的划分以及任务的分配,通过明确清晰的接口,降低集成的难度,提高效率。4. views4.1 Modulestructs(1)具有三层结构的测测软件包图:(2)测测软件领域模型图:FT
6、测试性恪圳试隹户图4.1.2领域模型图(3)测测软件类图:L'OLventStPeamBackSerwi匚亡Se-vieeCoi*ufeiUserConsc&lat:on-fendgncyDaIvdQuGsbonDas©UseintoUlrACtXltKjlfelTLndentyControlter图4.1.3类图(4)测测系统用例图:图4.1.4系统用例图(组件-连接器视图)4.2 Component&Connector(1)性格测试顺序图:1'getSelectt.3.(o(urrX<ChjractCoTolerChet:Ktfest工tan
7、spOfi忐ssohculculateGpyont八6:roturnO,17.deive'41iRescIK);8sfx)vAesut()图421性格测试顺序图4.3Allocation(i)测测软件部署图:喜户揣数尿库;cAndroiddimrnin twAXcb1 dcpkiTncntSfXC& webconfig.xml(Vi cb Scrvq 5 5-1*).Net 1.1 Formwotk I1哎 sinibctrButiimsRukAdUsWeb.dll anifact > DicaAccfss.dlic/s«.户嫦.OS二 Android (jit
8、tp+soAP +Ncworlc1图431部署图较据库服务器r <55. Mapppingbetweenviews5.1 ClassmaptoPackage(1)类图中的TTestController类、UserContainer类、TendencyContainer类对应于包图中表示层的UI包。(2)类图中的TTest类、UserTest类、InteligentTest类、CharactTest类、Tendency类、DailyTrend类、ServiceController类对应于包图中业务逻辑层的测试模块包和评价模块包。(3)类图中的DataHelp类、l/OEventStream
9、类、QuestionBase类、Userinfo类对应于包图中数据层的题库管理包和用户管理包。5.2 PackagemaptoAllocation(1)包图中的UI包、测试模块包、评价模块包位于部署图中的C/S客户端(2)包图中的题库管理包和用户管理包位于部署图中的客户端数据库和数据库服务器。6. Utilitytree(质量属性场景)6.1 Qualityattributescenario(1)可用性:情节描述:用户在进行性格测试时,点击无反应。相关质量属性:可用性刺激源:进行性格测试的用户刺激:用户点击性格测试环境:正常运行状态制品:性格测试功能模块反应:提示程序无响应,需重启软件反应度量
10、:在2s内给出提示策略:异常检测异常处理(2)互操作性:情节描述:用户完成测试,进行提交,数据库返回测试结果。相关质量属性:互操作性刺激源:进行测试的用户刺激:用户完成测试,进行提交环境:正常运行状态制品:数据库、测试模块反应:显示测试结果反应度量:在1s内显示测试结果。策略:发现服务(3)可修改性:情节描述:开发人员更新数据库相关质量属性:可修改性刺激源:开发人员刺激:开发人员更新数据库数据环境正常运行状态制品数据库,反应显示测试结果反应度重,在1s内显示测试结果。策略:减少耦合提高内聚封装(4)性能:情节描述:用户完成测试,提交,数据库返回测试结果。相关质量属性:性能刺激源:进行测试的用户
11、刺激:开发人员更新数据库数据环境:用户完成测试,提交。制品:正常运行状态反应:显示测试结果反应度量:在1s内显示测试结果。荣略同时计算(5)安全性:情节描述:黑客侵入数据库盗取用户密码。相关质量属性:安全性刺激源:黑客刺激:黑客非法侵入数据库环境:正常运行状态制品:数据库安全保护模块反应:阻止黑客获取数据库内容反应度量,在1s内进仃寸二截策略:拒绝攻击反应攻击确定用户(6)可测试性情节描述:在开发阶段开发者对自己的模块进行单兀测试。相关质量属性:可测试性刺激源:开发人员刺激:对已完成的子系统进行测试环境:系统开发中制品:被测代码段反应:显示代码出错情况反应度量:执行测试的时间不能超过2s荣略限
12、制复杂性(7)易用性情节描述:用户在完成某一测试后重新进行测试相关质量属性:易用性刺激源:欲进行重新测试的用户刺激:用户点击重新测试环境:软件正常运行环境制品:相应测试功能模块反应:进入该测试,显示测试题反应度量,重新跳转到相应测试界面的时间不超过2s。6.2 Utilitytree质量属性属性细化场景ASR性能题库更新响应时间在系统处于正常运行时,为对题库更新做出响应,用户更新题库要在3分钟内完成(H,M)可维护性软件更新软件产商发布了一个新版本,必须尽快安装该版本。(H,L)维护人员发现了软件的缺陷,修复该bug。(H,M)安全性机密性完整性非维护人员侵入数据库,需在1S内完成拦截。(H,
13、M)系统拒绝未经登录的访向。(H,M)可用性发布新版本网络环境不佳软件产商发布了一个新软件,该软件是热插拔的。(H,L软件产商发布了一个新软件,支持用户随时进行更新。(M,L)用户进行每日运势测评无响应,终端在1S内提示用户网络环境不佳,请打开网络连接。(M,L)性能响应时间吞叶量用户提父测评后,系统在0.5s内显不测评结果。(M,H)100名用户同时在线时,系统每秒能处理150个正常请求。(M,H)可修改性优化算话的复杂性优化测评结果分析算法,两名开发人员在一个工作日内完成。(H,L)6.3 Tactics一,安全性策略:6.4 应攻击2、确定用户二,可用性策略:1、异常检测2、异常处理3、
14、实时监听三,安全性策略1、加密数据2、拒绝攻击3、反应攻击4、确定用户四,可修改性策略1、降低依赖2、减少耦合3、提高内聚4、封装五,性能策略1、同时计算7. Architecture根据软件的重要需求,确定了本软件所采用的设计模式:7.1 WebService决定运用该模式的需求:(1)客户端数据库与服务器同步,采用双数据库实现效率提高(2)需调用API,进行每日运势分析。WebService调用每日星座运势API核心代码如下:privatevoidupdateEverydayFortune()if(isNetworkAvailable()/有网络就更新启动更新数据线程newThread(n
15、ewupdateEverydayFortuneRunnable().start();privateclassupdateEverydayFortuneRunnableimplemeRunnableSimpleDateFormatsimpleDateFormatntsnewSimpleDateFormat("yyyy-MM-dd");Stringnow=simpleDateFormat.format(newDate();SharedPreferencessharedPreferencesMainActivity.this.getSharedPreferences("
16、xzlmH,Context.MODE_WORLD(©Overridepublicvoidrun()将值取获,然后保存for(inti=1;i<=12;i+)判断是否要更新Stringdate=sharedPreferences.getString(i+H_dateHMNoDate");if(date.equals("NoDate")|!date.equals(now)/需要更新的星座就去更新。sendinfo(i);)privateStringBufferjsonprivatevoidsendlnfo(int发送http请求constellatio
17、nid)URLurl=null;HttpURLConnectionconn=null;DataOutputStreamoutputstream=null;BufferedlnputStreambufferedInputStream=StringrequestUrl=Hastro/astro.http.phpH;Stringparam=Hfun=day&id=HEverydayFortune.httpConstellationNumberconstellationid*'&format=json"byteentity=param.getBytes();1+try
18、url=newURL(requestUrl);conn=(HttpURLConnection)url.openConnection()conn.setConnectTimeout(5000);conn.setDoOutput(true);conn.setUseCaches(conn.setRequestMethod(conn.setRequestProperty(conn.setRequestProperty(String.valueOf(entity.length);outputstreamDataOutputStream(conn.getOutputStream();false);'
19、;POST1);"Charset1',"UTF-8n);"Content-Length"newoutputStream.write(entity);outputStream.flush();=200)if(conbu辨函即阿Ste()BufferedlnputStream(conn.getlnputStream。);newbytebf=newbyte1024;inti=0;json=newStringBuffer();while(i=bufferedInputStream.read(bf)!=-1)Stringstr=newString(bf,0
20、,i);json.append(str);catch(MalformedURLExceptione)e.printStackTrace();catch(lOExceptione)e.printStackTrace();)if(json!=null)有数据返回,下面解析这些数据,并保存resolveJSONAndSave(constellationid);解析回传的jsonprivatevoidresolveJSONAndSave(JSONArrayarray;intconstellationid)tryarray=newJSONArray(json.toString();Stringzhys=
21、array.getJSONObject(0).getString(Stringaqys=array.getJSONObject(1).getString(Stringgzzk=array.getJSONObject(2).getString(StringIctz=array.getJSONObject(3).getString(Stringjkzs=array.getJSONObject(4).getString(Stringstzs=array.getJSONObject(5).getString(Stringxyys=array.getJSONObject(6).getString(Str
22、ingxysz=array.getJSONObject(7).getString(Stringspxz=array.getJSONObject(8).getString(Stringzhgs=array.getJSONObject(9).getString(Stringdate=array.getString(11);保存至UsharedPreferencesSharedPrefere“rank”);“rank”);“rank”);“rank”);'value*1)"value'1)"value'1)'value,1)11value'
23、1)11value'1)ncesMainActivity.this.getSharedPreferences(Context.MODE.WORW=WRITEABLESharedPreferencesEditoreditor=SharedPreferences.edit();editor.putString(constellationid+editor.putString(constellationid+editor.putString(constellationid+editor.putString(constellationid+editor.putString(constellat
24、ionid+editor.putString(constellationid+editor.putString(constellationid+editor.putString(constellationid+editor.putString(constellationid+editor.putString(constellationid+editor.putString(constellationid+mit();n_zhysH_aqysgzzk”H_lctz"uJkzs"H_stzs""_xyys""_xysz"n_sp
25、xznzhgs”H_date",zhys);,aqys);,gzzk);Jctz);Jkzs);,stzs);,xyys);,xysz);,spxz);,zhgs);,date);catch(JSONExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();判断有没有网络return是否有网络*/privatebooleanisNetworkAvailable()Contextcontext=getApplicationContext();ConnectivityManagerconnectivity=(Connectiv
26、ityMacontext.getSystemService(Context.CONNECTIVITYnager)SERVICE);if(connectivity!=null)NetworkInfoinfo=connectivity.getAIINetworklnfo();if(info!=null)for(inti=0;i<info.length:i+)if(infoi.getState()Networklnfo.State.CONNECTEDreturntrue;)returnfalse;)7.2 MVC(ModelViewController)决定运用MVC模式的需求:(1)实现测试
27、题目选项统计,进行测试结果分析cMVC核心代码如下:/ModHJ/packagecom.example.service;importjava.utiLArrayList;importjava.util.List;importjava.utiLObservable;publicclassModelextendsObservableprivateList<lnteger>mList;publicintget(intidx)returnmList.get(idx);publicvoidset(intidx)mList.set(idx,1);setChanged();notifyObser
28、vers();)publicvoidback(intidx)mList.set(idx,O);setChanged();notifyObservers();)publicModel()mList=newArrayList<lnteger>(4);mList.add(O);mList.add(O);mList.add(O);mList.add(O);)/Controller:/answerGroup.setOnCheckedChangeListener(newOnCheckedChangeListener()(©OverridepublicvoidonCheckedChan
29、ged(RadioGroupgroup,checkedld)int/TODOAuto-generatedmethodstubnextBtn.setEnabled(true);switch(group.getCheckedRadioButtonld()caseR.id.answerA:model.set(O);model.back(1);model.back(2);model.back(3);break;caseR.id.answerB:model.set(1);model.back(O);model.back(2);model.back(3);break;caseR.id.answerC:mo
30、del.set(2);model.back(O);model.back(1);model.back(3);break;caseR.id.answerD:model.set(3);model.back(O);model.back(1);model.back(2);break;7.3 Publish/Subscrib决定运用“发布一订阅”模式的需求:(1)测试题库需定期更新,并自动提示用户。Publish/Subscrib核心代码如下:/Publish/Subscribe接口:IIIIIIIIIIIIIIIIIIIpublicinterfaceISubscribevoidgetNewPaper();)个人订阅者:lllllllllllllllllllllllllllllllllllllllpublicclassPersonalSubscriberimplementsISubscribeprivateStringstrName;publicvoidsetNewsPap
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年陪诊师职场适应试题及答案
- 2024年家庭教育指导师实际操作试题及答案
- 全球化对区域经济的影响试题及答案
- 报名须知2024人力资源管理师试题及答案
- 中医康复理疗师考试形式试题及答案
- 动物体表寄生虫防治试题及答案
- 投资咨询工程师现代投资理论试题及答案
- 2025湖北省建筑安全员B证考试题库及答案
- 2024年育婴师家庭照护支持试题及答案
- 前沿知识:人力资源管理师试题及答案
- 人事行政管理培训课程
- 量具能力准则Cg-Cgk评价报告
- GB/T 43392-2023地铁防灾系统安全性能测试与评估方法
- 全宋词目录完整版本
- 诺基亚改革与失败案例分析
- 福建师范大学地理科学学院859人文地理学历年考研真题汇编(含部分答案)
- 单原子催化剂
- 九十年代生活
- GB/T 20688.4-2023橡胶支座第4部分:普通橡胶支座
- bilibili内容审核笔试题
- 手术室护理实践指南之术中保温(手术科培训课件)术中低体温的预防
评论
0/150
提交评论