软件架构设计文档
Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】
密级:内部公开
文档编号:1002
版本号:
测测(基于安卓平台的测评软件)
软件架构设计文档
计算机与通信工程学院天师团开发团队
修订历史记录
目录
1.文档介绍
文档目的
本文档是对于测测软件系统进行详细设计和编码的重要依据。
对该软件的整个系统的结构关系进行了详细描述,阐述了系统的总体框架,包括物理、逻辑结构,说明了体系结构所采取的设计策略和所有技术,并对相关内容做出了统一的规定。
为今后的设计、编码、测试都提供了可以参考的模版并且提高效率,使整个开发过程做到资源利用最大化,减少由于需求变更而修改的时间,大大的降低了成本,节约了时间,也使得客户更加的满意。
文档范围
本文档包含以下几个部分:
1、架构设计思想
2、架构体系描述
3、系统模块化分
4、系统模块描述
5、模块接口设计
读者对象
本文档主要读者包括:
1、本系统的设计人员:包括模块设计人员(理解用户需求,在设计时把握用户需求)。
2、本系统的系统开发人员:编码人员(了解用户需求,为编码提供模版)。
3、本系统的测试人员(了解用户需求,为测试提供参考)。
4、客户(检查是否满足要求)。
参考文献
《软件工程讲义》
《测测需求规格说明书》
2.架构设计思想
为了降低系统耦合度,增加系统内聚性,在需求发生更改时能在较短的时间内对系统做出修改,并重新投入使用,我们决定以分层体系架构风格作为整个系统的体系风格,严格按照一定的规则来进行接口设计,并以之为根据进行详细设计。
分为数据层、业务逻辑层、表示层。
3.架构体系描述
整个系统顶层架构采用分层的风格,整个系统的体系结构非常清晰,使得后期易于详细设计、编码、维护以及适应需求变更。
通过分层,定义出层与层之间的接口,使得在更加规范的同时拥有更为多台花的接口描述,使得层与层之间的耦合度降低,增强了模块的服用型和可
扩展性以及可维护性。
同时,分层也有益于项目模块的划分以及任务的分配,通过明确清晰的接口,降低集成的难度,提高效率。
4. views
Module structs
(1)具有三层结构的测测软件包图:
图
(2)测测软件领域模型图:
图
(3)测测软件类图:
(4)测测系统用例图:
图系统用例图
Component & Connector(组件-连接器视图)
(1)性格测试顺序图:
Allocation
(1)测测软件部署图:
图部署图
5. Mappping between views
Class map to Package
(1)类图中的TTestController类、UserContainer类、TendencyContainer类对应于包图中表示层的UI包。
(2)类图中的TTest类、User类、Test类、InteligentTest类、CharactTest类、Tendency类、Daily Trend类、ServiceController类对应于包图中业务逻辑层的测试模块包和评价模块包。
(3)类图中的DataHelp类、I/OEventStream类、QuestionBase类、UserInfo类对应于包图中数据层的题库管理包和用户管理包。
Package map to Allocation
(1)包图中的UI包、测试模块包、评价模块包位于部署图中的C/S客户端。
(2)包图中的题库管理包和用户管理包位于部署图中的客户端数据库和数据库服务器。
6. Utility tree
Quality attribute scenario (质量属性场景)
(1)可用性:
策略:
异常检测
异常处理(2)互操作性:
策略:
发现服务(3)可修改性:
策略:
减少耦合
提高内聚
封装
(4)性能:
策略:
同时计算(5)安全性:
策略:
拒绝攻击
反应攻击
确定用户(6)可测试性
策略:
限制复杂性(7)易用性
Utility tree
Tactics
一,安全性策略:
1、反应攻击
2、确定用户二,可用性策略:
1、异常检测
2、异常处理
3、实时监听
三,安全性策略
1、加密数据
2、拒绝攻击
3、反应攻击
4、确定用户
四,可修改性策略
1、降低依赖
2、减少耦合
3、提高内聚
4、封装
五,性能策略
1、同时计算
7. Architecture
根据软件的重要需求,确定了本软件所采用的设计模式:
WebService
决定运用该模式的需求:
(1)客户端数据库与服务器同步,采用双数据库实现效率提高。
(2)需调用API,进行每日运势分析。
WebService 调用每日星座运势API核心代码如下:
private void updateEverydayFortune() {
if(isNetworkAvailable()){tart();
}
}
private class updateEverydayFortuneRunnable implements Runnable{
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String now = (new Date());
SharedPreferences sharedPreferences = "xzlm",;
@Override
public 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();
}
}
}
//测试:
//////////////////////////////////////////////////////////////
public static void main(String[] args) {
// TODO Auto-generated method stub
PostOffice postOffice = new PostOffice();
//得到个人用户
PersonalSubscriber person = new PersonalSubscriber();
("智力测试");
//注册观察者
(person);
(enterprise);
//发布订阅消息
();
}。