浅析家庭自动化系统(2)
浅析家庭自动化系统
(4)查看设备的状态摘要:包括对连接到系统控制器中的所有设备的状态以及是否出现异常现象进行查看。
(5)控制子系统接受主系统发送的信息;以及向子系统设备发送信息;控制子系统将子系统发送的信息发送给指定的设备。
(6)对设备进行监控摘要:包括启动监控设备、停止监控设备、监控设备中。
(7)对系统中的设备进行管理摘要:包括增加新设备以及删除已经连接到系统中的设备。
(二)、总体结构和模块外部设计
在应用系统总体设计中,以Servlets为前端控制器,负责管理用户的登录,以及数据的获取等。以会话Bean实现系统的工作流,将会话Bean作为一个外观,来封装应用程序的业务逻辑,业务逻辑再通过实体Bean组件来操作相关数据,从而形成HAS系统的总体结构体系。
(三)、接口设计
1、用户接口
本系统的用户界面如下所示摘要:
SHAPE \* MERGEFORMAT
图7、 用户登录界面
2、外部接口
本系统采用基于C/S模式的系统主机和系统终端的结构,接口设备不仅要完成系统主机和各个终端之间的标准化物理连接之外,还要完成数据在系统主机和各个终端之间的传送。故接口采用集成式、标准化的设备来完成,实现其功能。
(四)、数据结构设计
1、 数据库三级模式结构
数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级构成。
其中模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。外模式也称子模式或用户模式,它是数据库用户(包括应用程序员和最终用户)看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是和某一应用有关的数据的逻辑表示。内模式也称存储模式,它是数据物理结构和存储结构的描述,是数据在数据库内部的表示方式。数据库的三级模式是对数据的三个抽象级别,它把数据的具体组织留给DBMS管理,使用户能逻辑的抽象的处理数据,而不必关心数据在计算机中的具体表示方式和存储方式。为了能够在内部实现这三个抽象层次的联系和转换,数据库系统在这三级模式之间提供了两层映像摘要:外模式|模式映像和模式|内模式映像。正式这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
影响一个系统性能的主要因素是数据库性能和客户端程序设计,所以进行数据库的设计和整个系统的性能、升级等都息息相关,在数据库设计时,要考虑的主要原则有摘要:
(1)、命名的格式规范摘要:为了便于系统适应不同的数据库,数据库中各种对象的命名应采用大小写敏感的形式。
(2)、索引的使用摘要:合理使用索引,如表的规模不大、表需要频繁更新、以及查询字段不确定时,尽量不用索引。
(3)、数据的一致性和完整性摘要:为了提高系统的响应速度,合理的冗余是必要的,所以设计时,要用有效手段保证数据的一致性和完整性。
(4)、数据库性能的调整。
2、 主要表结构
将对象模型映射成数据库模型,也就是向数据表转换。转换方式如下摘要:
(1)、一个对象类可以映射为一个以上的库表,当类间有一对多的关系时,一个表也可以对应多个类。
(2)、关系的映射可能有多种情况,但一般映射为一个表,也可以在对象类表间定义相应的外键。对于条件关系的映射,一个表至少应有三个属性。
(3)、减少表之间的冗余字段。
(4)、映射后的表进行冗余控制调整,使其达到合理的安息范式,一般达到3NF即可。
在映射应用对象时,除关系映射规范化后可能出现一对多的表映射外,大多数应用对象和表对象是一一对应的。可以将规范化处理后,有一个应用对象映射出来的多个表看成一个数据库对象。因此当部分应用需求变更时,首先,系统修改可以不涉及需求不变更的部分,其次,变更部分的修改可以基本上只限于追加或删除程序模块或追加新库表,而基本上不必修改原有程序代码或原有库表定义,从而大大减少了工作量,降低了工作难度。
根据对系统所进行的分析,以及对未来系统的扩展考虑,确定数据库中的主要数据表有以下几个摘要:
表1、用户信息表(user –info)
名称
代码
主要的
数据类型
长度
用户代码
user-id
TRUE
VARCHAR(20)
20
用户类型
user-type
FALSE
CHAR(1)
1
用户密码
password
FALSE
VARCHAR(8)
8
用户名称
user-name
FALSE
VARCHAR(40)
40
用户手机号码
mobileNO
FALSE
VARCHAR(20)
20
表2、操作日志表(operate-log)
名称
代码
主要的
数据类型
长度
操作内容
message
FALSE
VARCHAR(300)
300
录入时间
inputTime
TRUE
TIMESTAMP
表3、家电信息表(appliance-info)
名称
代码
主要的
数据类型
长度
家电代码
applianceID
TRUE
VARCHAR(10)
10
家电名称
applianceName
FALSE
VARCHAR(20)
20
家电通讯地址
address
FALSE
VARCHAR(20)
20
家电通讯端口
port
FALSE
INT
加入系统时间
inputTime
FALSE
TIMESTAMP
表4、家电状态表(appliance-state)
名称
代码
主要的
数据类型
长度
家电代码
applianceID
TRUE
VARCHAR(10)
10
状态
state
FALSE
CHAR(2)
2
状态变更时间
updateTime
FALSE
TIMESTAMP
(五)、运行设计
(1)、系统用户或者一般用户通过登录程序Login登录到HAS系统中。
(2、用户通过菜单(主菜单main;以及用户菜单user;家电设备管理菜单appliance;操作记录日志管理菜单log)选择要执行的操作。
(3)、用户从子系统传送过来的请求,通过服务器端控制程序HASServer进行解析,并且发送到相应的类,并将处理结果返回给主系统。
(六)、出错处理设计
当系统在执行中间发现有异常情况发生或被要求执行异常操作,系统要能自动检测到并进行相应的处理或形成报告返回给用户进行相关处理会恢复操作。
1、出错输出信息
在系统进行完相关解析后形成日志保存,并有提示信息被显示给用户或系统操作员。
2、出错处理策略
(1)、联机事务处理(OLAP)是建立在TCP/IP 协议上,有多阶段事务处理响应控制,保证事务处理前后台一致性。
(2)、数据库处理事务失败自动回滚技术,保证数据库表的数据一致性和完整性。
(3)、重要数据的校验检查。
(4)、各个子系统的操作监控,异常情况报告;并提供报表等跟踪记录。
(5)、提供友好的用户界面和帮助信息及配合严格的检查,减少用户出错机会。
五、具体设计
(一)、软件结构
图9、系统用例图
(二)、程序描述
面向对象程序设计的基本思想
(1)、面向对象的由来和发展
对象代表着待处理新问题中的一个实体,在处理新问题过程中,一个对象可以以某种形式和其他对象通信。从概念上讲,一个对象是既包含数据又包含处理这些数据操作的一个程序单元。类用来描述特性相同或相近的一组对象的结构和行为。该语言还支持类的继续,可将多个类组成为层次结构,进而答应共享结构和行为。
后来出现的Smalltalk语言是第一个比较成功的面向对象语言,对后来面向对象语言的发展产生过重大影响。该语言丰富了Simula中类和对象的概念,信息也更加隐蔽,程序设计就是向对象发送信息。20世纪80年代以后,面向对象的程序设计语言广泛应用于程序设计,并且有许多新的突破。非凡是随着操作系统和软件项目日益庞大,人们日益需要一种更高效的开发方式,这更加推动了面向对象语言的发展。
(2)、 面向对象的要素
面向对象的系统包含了3个要素摘要:对象、类和继续,这3个要素反映了面向对象的传统观念。面向对象的语言应该支持这3个要素。首先,应该包括对象的概念。对象是状态和操作的封装体,状态是存储操作结果的。满足这一点的语言被认为是基于对象的语言。其次,应该支持类的概念和特征,类是以接口和实现来定义对象行为的样板,对象是由类来创建的。支持对象和类的语言被认为是基于类的语言。最后,应该支持继续,已存在的类具有建立子类的能力,进而建立类的层次。支持上述3个方面的语言称为面向对象的语言。
(三)、功能
本系统由灯光控制、保安控制、环境控制、家电控制、用户登录及管理等各模块组成。
灯光控制摘要:实现对室内外所有灯光的时间周期性控制和用户的直接控制;保安控制摘要:实现对室内外所有视频监控设备的周期性工作控制及异常处理,和防盗防火设备的控制及异常处理;环境控制摘要:实现对家庭环境设备(包括花园、阳台、室内温湿度报告)的时间周期性控制以及各设备的异常处理;家电控制摘要:实现对家庭中各个聪明家用电器的人性化控制及各设备的异常处理;用户登录及管理模块摘要:实现用户对各个模块中所用设备的时间周期性定义以及对各个设备的直接管理和控制。
本系统将采用面向对象程序设计的基本思想编写各个模块的程序,实现其应用的各项功能。
(四)、程序逻辑
图10、用户登录模块程序流程图
图11、灯光控制模块程序流程图
图12、家电控制模块程序流程图
(五)、接口
本系统采用基于C/S模式的系统主机和系统终端的结构,接口设备不仅要完成系统主机和各个终端之间的标准化物理连接之外,还要完成数据在系统主机和各个终端之间的传送。故接口采用集成式、标准化的设备来完成,实现其功能。
(六)、测试要点
本系统的最终实现是将各个信号功能于各个实体,即各个家电设备包括照明灯、空调、洒水喷头、门窗监听器、摄像头等具体设备。所以系统测试时,可模拟具体设备的状态信号,将这些模拟的状态信号功能于本系统中,达到测试的目的。
六、软件测试
(一)、测试计划
1、测试方案
本系统的最终实现是将各个信号功能于各个实体,即各个家电设备包括照明灯、空调、洒水喷头、门窗监听器、摄像头等具体设备。所以系统测试时,可模拟具体设备的状态信号,将这些模拟的状态信号功能于本系统中,达到测试的目的。