前言:中文期刊网精心挑选了软件设计与开发范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。
软件设计与开发范文1
关键词:DIY;心理健康教育;测评软件
中图分类号:TP311.52 文献标志码:A 文章编号:1673-8454(2014)20-0073-02
从事学校心理健康教育,常遇到心理测评。对于个体测评而言,手工操作简单量表(SAS、SDS等)尚能应付,稍复杂的(SCL―90等)就感到烦与累了,16PF、MMPI等则望而生畏且准确性还难以保证;对于团体测评来说,手工几乎难以实现,市售软件价格较高,电脑移植不方便,查询分析不能满足个性需求。可否DIY网页呈现、即插即用、满足特殊需要的心理测评软件?本文将与同仁分享。
一、心理健康教育测评软件开发的一般方法
DIY心理健康教育测评软件可通过建立便携式数据库网站实现。[1]
1.前期准备
(1)知识准备。我们将要做的工作是建立一个数据库网站,事先应找到ASP和DreamWeaver两类书籍以备用。
(2)软件准备。建立网站(制作网页)需要相应软件作平台,这里主要是制作网页的软件(如DreamWeaver)和编译软件(如NetBox等)。
2.软件开发
心理健康教育测评软件(数据库网站)的一般开发过程如下:
(1)设计“主页”。主页有两大功能――测验与查询。测验就是启动量表让被试回答问题,查询则报告测评结果。用“超级链接”指向“问卷”网页实现测验功能;通过口令(设置密码)进入相应的“查询”网页。
(2)制作“问卷”网页。将测验量表制成网页,让测题呈现于电脑屏幕,前面再加上学生的基本信息。制作时答案分别处理,单选题用“单选按钮(radio)”,多选题用“复选框(checkbox)”,学生基本信息则根据情况选用“文本框(text)”等表单元素。学生基本信息、答案在网页上供被试输入或选择,在电脑后台分别对应相关变量。
(3)建立数据库。建立数据库存放测评信息,可用ACCESS或EXCEL新建一个数据库文件,一般应考虑学生基本信息(学号、姓名、性别、年龄、测验日期与时间等)、回答信息(被试选择的答案)、其它信息(检验是否重复提交)等,其数据结构(字段名称、类型、长度等)要与上步中答案变量相应(不是相同),以便建立数据联系。如果制作MMPI(至少399题)测验,许多非大型的数据库目前还无法突破255个字段,而EXCEL2007版不受此限。
(4)接收数据。建立一个专门网页,使用ADO数据访问技术访问数据库,再用SQL(主要是Insert语句)将被试回答的内容有序存入相应的数据表。此网页以后台运行为主,前台一般不向用户呈现信息(特殊情况提醒除外)。
(5)制作“查询”网页。查询网页是接受用户查询要求,并将其转换为相应查询命令的网页。前台供用户选择查询条件,后台则将其转为相应变量。此步的关键是将用户的查询条件(后台的相应变量)转换成SQL的SELECE语句。
(6)制作“测评结果”网页。根据量表测评规则(积分法、常模及解释等)和用户要求对数据进行统计和分析,以网页或打印的方式将测评结果展示给用户。结果展示方式多种多样,以数据呈现较容易,即将相应数据显示到网页上,但不够直观。而以图形方式则一目了然,如EXCEL,它能以图形(条形图、折线图、饼图等)直接呈现,也可采用相关软件(如VBChart、ASPChart等)辅助制作。查询内容一般有查询被试答案、查询分量和综合分析报告等。如“中小学生心理健康测验(MHT―CR)”可以数字表现分量,也可以折线图表现分量,报告可以批量,也可以个别;再如“大学生人格问卷(UPI)”结果分别以第一类、第二类和第三类报告被试信息;SCL―90结果既有曲线,也有数字,还有文字分析与建议。此步工作随用户需求难易程度差异较大。
制作网页时,凡是与数据相关(无论是存入还是查询)的网页,都要创建(如与之间)与数据库的连接,以便对数据库进行操作。
3.编译打包
网页运行要有支撑平台(浏览器),还须有引擎才能启动。网上有多种类型的引擎,各有特点。它们体积小,速度快,如绿三角AWS、绿四叶SERVICER(新生命专用)和红色字母b的Netbox。
源文件一般都是各自独立散布的,既不便于移植,更不利于产权保护。利用相关软件可以将它们编译成文件数量少、体积小且可以独立运行的文件。编译软件较多,如Netbox,国产软件,网上可下载,使用有说明。启动Netbox可以将所有网页(不含数据文件)编译成一个引擎文件(EXE文件,一般不足1M),配上相应的数据文件便可使用。编译后的软件置于U盘,即插即用,尤其适用于局域网,也可放在网站上。
二、心理健康教育测评软件专项功能开发
心理健康教育测评软件(数据库网站)可根据需要开发多种功能,举例如下。
1.建立心理档案
对于一些规模较大的学校(学生数千),可根据需要将相关心理量表(如“卡特尔人格特质(16PF)”等)做成问卷网页,收集学生的心理特征数据,建立心理档案数据库。为保证学生提交答卷的有效性,可(用JS语句)设置“限制与提醒”,对于每题必答测验,如有漏答题则不让提交答卷,并将光标自动移到该题处,让被试重新回答;如问题“与你童年一起生活的有:A.父亲;B.母亲;C.祖父;D.祖母……X.以上都不是”,有些能同时选择,而有些则不能。软件应自动查找矛盾回答,适时提醒被试选择或更正。
2.建立本体常模和心理健康统计学标准
许多著名心理量表因无适用常模而被束之高阁。具有一定规模的学校或区域可将某个测试群体(2000或3000以上)作为常模团体,通过标准化操作来收集数据,经过统计处理(平均值与标准差)得到常模,作为个体的参照常模。
心理健康统计学标准认为,健康心理是围绕某一群体的心理健康常模,在两个标准差(2S)范围内不断上下波动的相对平衡过程。[2] 有了本体常模,就可以用A(平均值)和S(标准差)表示健康心理的统计学标准:上限为A+2S,下限为A-2S。
3.用于个案(或同质群体)研究
以心理量表的某个或几个分量的界限值作为查询(SELECT语句 中WHERE子句)条件,提供相应个案(或同质群体),如将MHT―CR中的“对人焦虑”和“过敏倾向”分量作为条件查询个案(或同质群体)。
4.评估心理健康教育效果
将相应的心理量表制成网页问卷,收集相关数据,评估学生的心理健康教育效果。
5.预测(预警)危机
将适合学生的心理健康水平评估量表制作成网页,对学生进行普测,再以相应的标准设定界限,如前述的心理健康统计学标准,对数据进行分析、预测,并对超出正常范围的个体提出警示。
6.选择专业(高考志愿)、规划职业生涯
可用16PF对高考生作测验并分析,看看哪些专业适合,并预测大学学业成绩。也可用霍兰德(HOLLAND)职业兴趣测验,以供高考生作多种选择或职业生涯规划。[3]
7.评估睡眠状况
升学压力大,许多学生睡眠不足,特别是高中生,可以用匹兹堡睡眠质量指数(PSQI)编制相应网页,供学生自我评估睡眠质量。
三、注意事项
1.使用期限
软件成熟得有个过程,一般要经历试用与改进、使用与完善几个循环才相对“健壮”。因此,最好设个期限,到时自动失效,再更完善的软件。
2.适用范围
心理健康教育测评软件的针对性很强,应当明确它的适用范围,譬如MHT―CR是专门用来测评中小学生心理健康状况的,不可用作其它目的,更不可强行对学生进行测评。
四、结束语
DIY心理健康教育测评软件不难,只要肯在看书与上网两方面下功夫。看书――品尝“筵席”,上网――享用“快餐”。看书是学习系统理论,掌握一般方法,上网是学习前人(网友)如何解决千变万化的现实难题,二者相辅相成。想让心理健康教育测评得心应手,还是DIY吧! 参考文献:
[1]姚宏程.便携式数据库网站的一种建立方法[J].中国教育信息化(基础教育),2011(4).
软件设计与开发范文2
中图分类号:TP317 文献标识码:A 文章编号:1671-7597(2014)04-0019-01
使用C++语言进行跨平台的开发,目的是把应用程序的代码处理成能够在已有的平台下使用和能执行文件。但是在其他平台中,处理后的文件不可以被使用,特别在Windows与Unix平台下更不能使用。所以,要解决和处理这个缺陷,就要将源程序的代码翻译成在各个平台下都能使用的文件。通过几十年的发展和演变,C++语言基本上能够在所有的平台下进行工作,但是在不同平台下的编译也会不同,也造成了语言之间的不同。同样的,设计一个新产品就要对操作系统的函数进行使用和调用。因此,要避免这种区别就要在代码中使用条件选择编译、进行工程模式编译或可以使用预编译。各种平台使用的程序编译手段也是不一样的。要使在不同平台下进行程序编译时出现最小的差别就要手动对编译条件的设置控制或管理。使用脚本文件和环境变量,还可以使用第三方软件对代码进行动态编译,这样就能使跨平台开发的难度简化。
1 跨平台的概念
在软件开发中有个很重要的概念就是跨平台,跨平台和操作系统无关也与硬件环境不相关联。如果一个应用程序是在操作系统下开发和设计的,那把它放在其他操作系统中也能使用。随着软件工程的发展对跨平台开发的需求也在不断的增加,所以要开发出能够在各种各样的平台下都能使用的应用程序,就能为应用程序创造很大的市场份额。
2 跨平台的开发所需要的环境
软件编辑器、程序编译器和程序调试器是构成开发环境的三个组成部分。Sandbox是进行代码编译和调试的软件,其内部含有各种平台下需要的不同种类的依赖库和代码库。在程序的开发中它还含有各种源代码。它的配置对多元化的平台的要求也是很高的,通常讲,C/C++语言的软件开发和编译要在各个平台上能够使用,还要注意以下问题。
1)最终结果的质量:Sandbox中所选择的工具是否能够产生最好的代码。是否能够产生最简洁,最友好的配置文件以及在捕捉错误和调试时是否能够提供足够的支持。
2)Sandbox中含有的工具是否可以使应用程序与多元性的目标平台进行合理的整合。
3)创立的Sandbox是不是可以使管理更加的简单,即能否在不同的平台进行变换时出现最小差异的文件。
对跨平台开发来说实现抽象是很重要的一个因素,但是利用与平台相关的工具包也需要使用相适应的工具。这些开发工具往往并不是统一的,比如Linux上流行的GCC在Windows下的使用并不如VisualStudio.nct中的C++。要达到这个目的,就要把用抽象以及相关的设计使用新的开发手段进行开发,实现在不同的平台下都能进行编译。
3 C++语言的跨平台软件开发的设计
3.1 避免语言的扩展特性
不管我们依据哪一种形式的方法进行编程,一般要选择比较老的程序库或文件。比较老的程序库里面的一些原有程序和公式都是很规范的和标准的,不像现在的一些新的程序库一样比较的杂乱无章。有非常普遍出现的故障在跨平台上产生,有时在获得支持后,还是会出现没有定义精确的事故。跨平台开发是对异常灵敏度要求很高的,无限度的利用新特性,就会使软件很难排除异常情况。所以,在跨平台开发时要调用C++的标准函数模型,这样就会使已开发的软件和产品的稳定性更加强。
3.2 实现动态处理
在实际的开发过程中,每当编写一个旨在多种环境中运行的可移植代码库时,项目的开发就会不可避免的面临一个问题,即怎样处理在一个平台上有而在另外一个平台上没有的特性。
3.3 使用脚本文件进行管理
要达到使编写的程序代码简洁、易懂的目的,要使软件的结构更加的合理,这就要求先把与平台相关联的文件和数据库分割开来,再把在开发期间要用的脚本文件进行编译,再合理的分到各个部位。在使用应用程序时,要把配置文件里的配置选项调出来进行读取里面的程序。因此,当跨平台软件开发时,要使与平台相关联的文件全部进行分离,要利用特殊的手段来实现该功能。
3.4 使用安全的数据串行化
如何使用安全和可靠的对数据进行存储和加载是跨平台要解决的核心问题。利用软件的“fwrite”或“fread”指令可以对每个编译器和单一目标平台处理。若果是在跨平台的操作环境中,利用这种方法对数据进行存储和加载就不能做到平台间的独立性。如果要利用跨平台对数据存储到目标文件外,不同平台间是有差异的,这样也会引起结果的多样性。
3.5 跨平台开发中的编译与测试
当进行跨平台软件开发时会与修改和编写的很多代码有关联,相关联的代码会在很长的时期内不能在另外的平台检测,也会造成bug的潜藏时间增长。所以,要在多个不同的平台下进行测试,这样就能及时发现bug。
3.6 实现抽象
实现抽象是处理跨平台中应用程序能被移植难题的有效方式。通过这种方式我们就能不利用一般的结构体系而进行单独的软件开发,同时还能够使编出的程序更加的独立化和简洁化。当对跨平台进行开发时,会有非常多的函数要进行利用,但是开发时不用编译所有的函数,通常使用的方法是封装,这些就是实现抽象的过程。封装的方法并不是在任何情况下都是适用的,当遇到一些特殊的情况时,我们要使用其他的方式来进行程序的调用,我们提前可以将编写好的功能程序存放到程序空中,并以该功能命名,当我们使用该程序或公式的时候,可以直接调用该功能的程序,便可以实现该功能。不管选用哪一种方式无非是对任意接口函数与平台中的联系进行隐藏。
4 结束语
本文主要介绍了跨平台的定义和进行跨平台设计所需要的环境以及怎样进行跨平台设计。在进行跨平台设计的过程中我们结合了其他软件设计的一些思路和方法,经过大量的软件设计实践,得出了一套跨平台设计的方法和手段。与此同时我们还要在开发的软件中加入更多的功能和操作容积。对跨平台进行设计而言,经验是很重要的,经验越丰富的设计工程师设计的软件的功能会越好一些,没有经验的工程师,在首次设计时很难利用跨平台设计一个非常完美的应用软件。所以,本文介绍了跨平台软件设计的一些技术,希望可以为跨平台的开发的设计工程师提供一些帮助。
参考文献
软件设计与开发范文3
【关键字】自动化测试;ATS;软件开发平台;通用测试系统
一、引言
传统的ATS(Automatic Test System),即自动测试系统的软件设计方法中,要求测试人员面向测试仪器进行编程操作,测试软件则根据被测试的代码段的要求进行编程。这种软件设计方法有着层次分割不清的问题,容易将系统软件和测试软件的功能混淆,增大测试程序、测试仪器以及被测对象的关联性,严重降低了测试代码的可移植性。另外,传统的测试方法中,测试功能比较单一,由于测试代码已经被固化,因此测试功能得不到优化升级,缺乏灵活性。
目前,ATS得到了飞速发展,自动测试系统的单一、专用功能正在向通用的多元化功能方向发展。但是,如何实现测试软件的通用性仍然是一个急需解决的问题。本文以通用性ATS软件开发平台为研究对象,提出了通用型ATS软件开发平台的框架结构和设计方法。本文设计的通用性ATS软件开发平台能够有效地帮助测试人员提高维修以及测试工作,并且具有较高的推广价值。
二、通用性ATS软件开发平台的结构和功能
通用性的ATS软件开发平台主要的功能,是提供给用户一个通用性的测试软件开发工具,通过该软件开发平台运行测试系统的开发过程。通用性的ATS软件开发平台的功能一般分为如下五类:第一类,能够对测试资源进行动态的配置和重构;第二类,能够对测试对象的硬件资源进行初始化、扫描以及初始化等功能;第三类,为测试程序提供完备的开发与调试的空间;第四类,给测试程序提供强大的数据处理功能;第五类,对系统的消息系统,例如中断、触发等等,而且还能够满足系统资源并行处理。
三、通用性ATS软件开发平台的相关技术
IEEE1232的标准是将ATS体系结构进行层次划分的标准。通用性ATS软件开发平台要求与NxTestATS的框架对接。如何实现接口标准的规范、组件技术、软件的统一开发过程以及UML技术均是设计通用性ATS软件开发平台的关键技术。另外,本文研究的通用ATS软件开发平台主要是基于STD标准。基于STD标准的开发关键技术,能够利用C和C++等通用的程序设计语言开发基于信号的组件。在测试的时候,这些基于信号的组件可以进行信号操作,并且这些组件为TPS提供了可移植性能。
四、通用性ATS软件开发平台的设计
本文针对基于信号组件的通用性ATS软件开发平台进行研究与设计。本文给出的通用性ATS软件开发平台主要由信号组件、接口框架、测试仪器信号驱动器以及资源管理器构成。其中,信号组件则作为独立的COM组件,并且COM组件作为资源管理器以及仪器信号驱动的父类组件。下面探讨了每个功能组件的功能描述。
信号组件中,每个信号组件与一种信号进行一一映射,信号的类型可以参考STD标准。具体的功能,首先是将客户程序的输入信号的信息进行存储,并储备为仪器信号驱动的调用参数。其次是能够存储测试的结果,测试的应用程序进行吊调用。
接口框架中的功能描述为,将面向信号的仪器驱动接口的方法与属性进行定义,为其他组件的调用做准备。
资源管理器中,作为应用程序与仪器驱动信号驱动的中间层次,能够利用检索仪器的XML文件,进行仪器的查询,并且能够创建具体的仪器信号驱动程序。
作为仪器信号的驱动功能是进行测试的实现,通过对底层仪器驱动函数的封装,实现具体仪器信号测试的功能。
结束语
本文首先针对传统的ATS以及当前的通用性ATS进行比较,深入分析了通用性ATS的优势,详细阐述了ATS软件开发平台的功能与结构,对通用性ATS的相关技术做了深入的探讨,最后给出了以面向信号为基础的通用测试软件开发平台的设计。该通用性ATS软件开发平台具有广泛的应用范围,并且能有积极的提高测试人员的维护以及测试工作效率。
参考文献
[1] 叶海明,周绍磊,王昆平. 通用测试系统软件平台设计[J]. 国外电子测量技术. 2010(02):111-113.
[2] 戴豪民,牛双诚,张光轶,武恒州. 面向信号自动测试系统信号组件的设计[J]. 现代电子技术. 2012(05) :224-226.
软件设计与开发范文4
关键词 :网络课程;案例;树型结构
中图分类号:G642 文献标识码:B
1引言
在开放教育和远程教育中,网络教学正被越来越多地使用,开发适用于网络教学的高质量的网络课程已经成为发
展网络教育的一个非常重要的课题。
《现代远程教育技术标准体系和11项试用标准(简介)》中对网络课程进行了定义。网络课程是通过网络表现的某门学科的教学内容及实施的教学活动的总和,它包括两个组成部分:按一定的教学目标、教学策略组织起来的教学内容和网络教学支撑环境。
“软件工程”课程是本科计算机专业的一门重要课程。在当前的教学中,特别是开放教育和远程教育中还存在着很多欠缺,案例太少,或者各章中的案例相互割裂,使得学生学完该课程之后无法形成整体的软件工程概念和思想。因此设计和开发贯穿整个教学过程的案例成为“软件工程”网络课程的必然选择。
2 “软件工程”网络课程的教学内容设计
2.1以案例为中心
当前的计算机相关专业实践教学环境存在诸多薄弱环节,特别是在软件工程教学中,很难为学生提供一个全面的感性认识。而当前的教学是离散的过程,没有提供一个完整的商业软件的实例来讲解商业软件开发的全部过程。经过调查研究、综合对比和专家论证,我们选择了某
软件公司的商务软件“应急系统”作为整个软件工程网络课程的案例。选择该软件的原因是该系统在Windows平台上基于C++开发,而C++是大部分计算机科学与技术专业的学生都学习过的第四代开发平台,不足的地方是部分学生不了解应急系统。在教学内容设计中我们先对此公司“应急系统”的相关知识作了简单介绍,然后把软件工程的各个阶段与该软件的相关内容进行了一一映射和组合,公开了大部分相关设计和源代码。
2.2兼顾面向过程和面向对象
当前软件设计与开发的手段一般采用面向过程和面向对象这两种方法。虽然“应急系统”是采用面向对象方法设计的,但是我们补充了面向过程的设计内容,这样学生通过比较,既能熟悉和了解面向过程和面向对象的设计方法,又增强了理解,从而获得了比较好的教学效果。
3网络课程支撑环境的设计
3.1总体结构
系统设计应由上而下进行。首先设计总体结构,然后再逐层深入,直至进行每一个模块的设计。总体设计主要是在系统分析的基础上,将整个系统划分为若干子系统,子系统则由若干模块组成。数据的存储以及整个系统实现等方面都进行了合理的安排。图1所示为“软件工程网络”课程开发与设计的总体结构图。
3.1系统开发平台――Dorado MVC架构
Dorado全称“Dorado Web应用开发套件”,包含:Dorado Web UI控件集及UI引擎(Dorado Web UI Components and UI Engine),Dorado可视化集成开发工具 (Dorado Studio),Dorado MVC开发框架和Dorado Web应
用框架。其中Dorado MVC开发框架的主要功能有:提供类似Struts的MVC开发框架,以便更加方便地利用Dorado套件进行基于MVC架构的开发;提供性能监控控制台,可以方便地对系统运行过程中各功能点的运行效率进行统计和分析;支持国际化资源配置;支持模块化配置。Dorado MVC开发框架是一个可选件。Dorado套件完全支持各种第三方开发框架,如Struts、WebWork等。我们利用Dorado与目前较为流行的Struts+Hibernate+Spring进行协同开发。
3.2系统主要模块算法与设计
(1) 集合混淆算法
客观题测试用于学生自测。题目是随机排列的,顺序与数据库的存储顺序不同,它使用了Java.util.Collections中的shuffle(List list)方法来实现,下面是其在JDK 6.0中的算法和代码。
使用指定的随机源随机更改指定列表的序列。所有序列更改发生的可能性都是相等的,假定随机源是公平的。
此实现向后遍历列表,从最后一个元素向前一直到第二个元素,将随机选择的元素重复交换到“当前位置”。元素是从列表中随机选择的,从第一个元素运行到当前位置。
此方法以线性时间运行。如果指定列表没有实现RandomAccess接口并且是一个大型列表,则此实现在改组列表前将指定列表转储到该数组中,并将改组后的数组转储回列表中。这避免了二次型行为,该行为是因为在适当位置改组一个“有序访问”列表而引起的。
private static Random r;
public static void shuffle(List list) {
if (r == null) {
r = new Random();
}
shuffle(list, r);
}
public static void shuffle(List list, Random rnd) {
int size = list.size();
if (size < SHUFFLE_THRESHOLD || list instanceof RandomAccess) {
for (int i=size; i>1; i--)
swap(list, i-1, rnd.nextInt(i));
} else {
Object arr[] = list.toArray();
// Shuffle array
for (int i=size; i>1; i--)
swap(arr, i-1, rnd.nextInt(i));
// Dump array back into list
ListIterator it = list.listIterator();
for (int i=0; i
it.next();
it.set(arr[i]);
}
}
}
(2)DES加密算法
由于客观题的随机排列,使得试题的排列次序与数据库中有所不同。同时,考虑到通过逐条在数据库中查询来校验答案对数据库的压力过大,所以事先查询出试题的答案,然后根据打乱后的试题次序把正确答案拼成一个字符串,然后加密放到页面的隐藏域中。这样一来,当提交试题查看结果时不用再次查询数据库,只要把答案字符串解密,然后分割成数组校验即可。
这里的加解密采用了DES算法。
DES算法的入口参数有三个:Key、Data、Mode。其中Key为8字节共64位,是DES算法的工作密钥;Data也为8字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。
DES算法是这样工作的:如Mode为加密,则用Key去把数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位),作为DES的输出结果。在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点。数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。
下面是加密算法的部分代码(解密原理类似):
public class DesEncrypt {
private Key key;
/**
* 根据参数生成KEY
*
* @param strKey
*/
public void getKey(String strKey) {
try {
KeyGenerator _generator = KeyGenerator. getInstance("DES");
_generator.init(new SecureRandom (strKey.getBytes()));
this.key = _generator.generateKey();
_generator = null;
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 加密 String明文输入,String密文输出
*
* @param strMing
* @return
*/
public String getEncString(String strMing) {
byte[] byteMi = null;
byte[] byteMing = null;
String strMi = "";
BASE64Encoder base64en = new BASE64Encoder();
try {
byteMing = strMing.getBytes("UTF8");
byteMi = this.getEncCode(byteMing);
strMi = base64en.encode(byteMi);
} catch (Exception e) {
e.printStackTrace();
} finally {
base64en = null;
byteMing = null;
byteMi = null;
}
return strMi;
}
/**
* 解密 以String密文输入,String明文输出
*
* @param strMi
* @return
*/
public String getDesString(String strMi) {
BASE64Decoder base64De = new BASE64Decoder();
byte[] byteMing = null;
byte[] byteMi = null;
String strMing = "";
try {
byteMi = base64De.decodeBuffer(strMi);
byteMing = this.getDesCode(byteMi);
strMing = new String(byteMing, "UTF8");
} catch (Exception e) {
e.printStackTrace();
} finally {
base64De = null;
byteMing = null;
byteMi = null;
}
return strMing;
}
(3) 章节维护算法
本网络课程中的课程章节、目录均为树形结构,其数据模型采用了树的模型,然后通过递归从根开始逐层遍历显示每个节点,便于导航学生学习。
下面是显示树形结构的代码,由于树形结构的显示使用了ExtJs(Ajax)框架来渲染,所以代码最终将产生JavaScript代码的字符串,交由ExtJs框架完成最后显示工作。
public String getExtTreeString(String prexHref ,String target ,boolean allowEdit ) {
......
//查询根节点(包含子节点层次)
Course rootWithHierarchy = treeNodeDao. getTreeRootWithHierarchy();
StringBuffer rootInfo = new StringBuffer();
//构造ExtJs的树形代码
appendInfo(rootWithHierarchy , rootInfo);
StringBuffer treeInfo = new StringBuffer("new Ext. tree.AsyncTreeNode(" + Constants.PLACEHOLDER + rootInfo + ")");
return ExtUtil.formatExtStr(treeInfo);
}
private void appendInfo(Course node , StringBuffer buf){
if(node == null) return ;
//如果是叶子节点,构造叶子信息
if(node.getIsLeaf()) appendLeaf(node,buf);
//如果是目录,构造目录信息
else appendFolder(node , buf);
}
private void appendFolder(Course node , StringBuffer buf){
buf.append(",{text:'" + node.getText() + "',");
if(allowEdit){
buf.append("href:'"+prexHref+node.getId()+"',");
buf.append("hrefTarget:'" + target + "',");
}
buf.append("id:'" + node.getId() + "',");
buf.append("leaf:false,");
buf.append("children:[" + Constants.PLACEHOLDER);
//遍历子节点,构造子节点信息
for(Course child: node.getChildren()){
appendInfo(child , buf);
}
buf.append("]}");}
private void appendLeaf(Course node , StringBuffer buf){
buf.append(",{text:'" + node.getText() + "',");
buf.append("id:'" + node.getId() + "',");
buf.append("iconCls:'user',");
buf.append("href:'"+prexHref + node.getId() + "',");
buf.append("hrefTarget:'" + target + "',");
buf.append("leaf:true");
buf.append("}");
}
从上述代码中可以看出,首先找出(包含子节点信息的)根节点,然后通过appendInfo方法来产生ExtJs的JavaScirpt代码,appendInfo会根据节点类型(叶子或目录)来调用appendLeaf或appendFolder方法,其中appendFolder首先生成该目录的信息,然后逐个显示子节点信息,子节点又会调用appendInfo方法。就是这样递归的调用,形成了最终的字符串,然后通过服务器传到表现层,通过ExtJs来显示整棵树。
4结束语
我们在设计和开发“软件工程”网络课程时,采用基于案例的教学内容设计,同一个案例贯穿所有章节,增强了学生对知识点的掌握和理解。开发环境采用Dorado MVC架构(Struts+Hibernate+Spring),获得了好的效果。这种开发模式与传统MVC的开发模式比较,其最大的优势在于可以节省开发人员在开发Web应用表现层式的工作量,同时又为用户提供非常友好的交互界面。
从表1中可以看出,本文采用的方法在开发工作量、用户界面、软件可扩展性等三个方面都具有相当大的优势。
本网络课程的设计和开发是从教学内容和网络教学支撑环境两个方面展开的,已在教学中使用一年,收到了较好的教学效果。特别是课程章节采用树型结构,使得学生在自主学习的过程中获得了更好的导航效果,提高了学习效率。下一步的工作是多增加艺术性方面的内容,尤其是媒体素材设计方面。
参考文献:
软件设计与开发范文5
因此,开发一套具有通用性并能克服上述不足的权限管理软件来确保信息系统的信息安全是十分必要作。本文基于B/S架构,设计开发了一套权限管理软件。该软件用户体验性强,客户端无需下载控件,能同时支持多种数据库;实现了按一定的组织结构访问网页,确保信息系统安全。
1 软件设计
1.1软件整体设计
权限管理软件设计是基本文由LWlm.cOm收集整理于角色的访问控制(Role-Based Access Control,简称RBAC)设计模型。RBAC是美国NIST于20世纪90年代初提出了一种基于角色的访问控制模型。其核心思想是:不是直接将用户和权限进行关联,而是引入“角色”概念,将代表行为的权限和角色相互关联,角色与用户相互关联,用户和权限通过角色而间接关联。
在软件具体设计中,首先通过系统的域验证来保证用户合法性;域验证通过后,从数据库中读取该用户具备哪种角色,然后根据用户的角色,来确定该用户可以访问的页面;最后将这些页面生成菜单,从而实现权限管理的功能。
1.2软件体系架构的设计
在软件体系架构设计中,采用分层式结构,添加了Model层,并将数据访问层做了一定程度上的扩展,具体软件体系架构图1所示。
表示层:是系统的展示部分,负责用户与整个系统的交互。表示层仅仅包含页面上控件的逻辑代码,只与界面上的元素有关,而与系统的业务逻辑无关。
业务逻辑层:是整个系统的核心。它与这个系统的业务逻辑相关。在权限管理软件中,业务逻辑层的相关设计主要涉及到页面、角色和菜单处理的业务逻辑。如果涉及到数据库的访问,则调用数据访问层。
数据访问层:其功能主要是负责数据库操作。该层包括DAL接口、DAL工厂、Oracle Dal、SqlServer Dal以及最后产生的Model层。该数据访问层中完全采用了“面向接口编程”的思想。抽象出来的IDAL模块,脱离了与具体数据库的依赖,从而使得整个数据访问层更加有利于数据库迁移。只需添加一个相应数据库版本的DAL并且实现IDAL接口即可连接到各种数据库。业务逻辑层和表现层不需要任何的改动,从而提高了代码的复用率。
实体层:该层主要将数据库中定义的表映射成程序可以访问的业务实体,并且只定义实体的属性,并无实体的行为。该层由数据访问层产生,贯串了业务管理层和表示层。权限管理系统主要涉及的实体有:用户类、页面类和角色类等。
1.3系统功能设计
权限管理软件主要包括四个模块:用户管理、页面管理、角色管理和菜单管理。
1.4系统数据库设计
数据库设计是软件开发过程中的基础环节。良好的数据库设计不但有利于提高系统的整体性能,而且也方便将来使用过程中的数据维护。权限管理软件数据库设计达到了第三范式(3NF),这种设计能够有效保证数据的完整性和参照完整性,同时降低数据的冗余度。
2 软件实现
该软件实现了与域无缝集成。用户登录后首先通过域验证来确保登录用户的合法性。这样既方便了用户,避免用户记住多个用户名和密码也保证了系统的安全性。
在权限管理系统中,利用了C#中DLLImport直接调用Windows已经存在的域验证功能。DllImport所在的名字空间是 using System.Runtime.InteropServices。
MSDN中对DllImportAttribute的解释是这样的:可将该属性应用于方法。DllImportAttribute 属性提供对从非托管 DLL 导出的函数进行调用所必需的信息。作为最低要求,必须提供包含入口点的 DLL 的名称。
3 软件应用
软件设计与开发范文6
【关键词】pcap文件格式;数据包分析;流量统计;网络协议
1.引言
随着网络维护规模的加大,网络技术的变化,网络关键数据的采集也越来越困难。有时为了分析和采集数据,必须能在异地同时地进行采集,于是将协议分析仪的数据采集系统独立开来,能安置在网络的不同地方,由能控制多个采集器的协议分析仪平台进行管理和数据处理,这种应用模式就诞生了分布式协议分析仪。这种分布式协议分析仪是未来网络安全分析和研究的一个重要发展趋势。网络测量作为一种收集网络运行数据和分析网络协议运行状态的重要手段之一,在帮助网络管理人员分析网络异常的原因方面发挥了重要的作用。
2.本文研究内容
本课题针对网络数据包的捕获和分析技术做了比较深入的阐述。设计并实现了一个基于Pcap的实时网络数据包捕获和协议统计分析系统。该系统WinPcap网络数据包捕获机制,对流经网络的数据包进行监测和统计分析,系统提供了网络数据包的抓取和分析功能。
本文研究与开发一套用于中小规模网络系统的网络监控软件,重点考虑对网络故障的分析功能,设计并实现了一个基于WinPcap的实时网络数据包捕获和协议统计分析系统。该系统在RTFM流量测量框架体系结构上,采用WinPcap网络数据包捕获机制,对流经网络的数据包进行监测和统计分析,并通过多线程技术和读写缓冲技术,解决了读取缓冲区中数据和网络数据到来之间的速度差异:在连续地捕获数据包的同时,对数据包进行同步地分析和归类,并进行应用级处理。完成了数据包级和流级的流量指标,包括TCP/IP各层协议分布,包大小分布,前N名的IP主机和主机对分布等;并提供网络运行状态的告警指示,可以根据网络安全管理员设定的特征信息,对具有特征信息的数据包进行分类解析、还原和预警。系统使用了基于五元组的Flow结构,并加入了Hash算法,添加了对TopN主机进行排序的数组,从而提高了检索和监测效率。有效地解决了目前根据RTFM实现的网络测量系统,如NeTraMet,存在功能有限、性能不高,并且配置麻烦的局限性。
3.软件详细设与计实现
3.1 软件设计流程
软件利用VC++与MFC技术设计一个基本的针对PCAP文件格式的网络数据包分析软件。界面采用MFC实现一个单文档的程序,用户区分为上下连个视图,上面视图是一个列表,显示捕获的数据包主要信息,信息内容包括:时间、序号、长度、源MAC、目的MAC、类型、端口等内容。下面视图显示数据包分析的时间以及数据保存的目录等信息。点击文件——打开,选择一个事先保存好的pcap文件格式数据包如图1所示:
3.2 网络协议分析的总体流程
该模块从缓冲区内读取数据包,首先对数据包进行分解,然后按照网络协议对数据包进行解析。并以列表的形式实时显示数据包的解析结果,包括数据报的包长度、源IP、目的IP、端口、使用协议等相关信息。数据包分析显示流程图如2所示:
3.3 分析模块的实现
被捕获的数据只要经过解析才能够对协议的分析提供有用的数据。本模块就是对捕获的数据包按照数据链路层(MAC)、网络层(IP, ARP/RARP)、传输层(TCP, UDP, ICMP)和应用层(HTTP等)的层次结构自底向上进行解析,并将解析结果显示输出。
4.结束语
本文研究与开发一套用于中小规模网络系统的网络监控软件,重点考虑对网络故障的分析功能。设计并实现了一个基于WinPcap的实时网络数据包捕获和协议统计分析系统。系统在RTFM流量测量框架体系结构上,采用WinPcap网络数据包捕获机制,对流经网络的数据包进行监测和统计分析,并通过多线程技术和读写缓冲技术,解决了读取缓冲区中数据和网络数据到来之间的速度差异;在连续地捕获数据包的同时,对数据包进行同步地分析和归类,并进行应用级处理。完成了数据包级和流级的流量指标,包括TCP/IP各层协议分布,包大小分布,前N名的IP主机和主机对分布等;并提供网络运行状态的告警指示,可以根据网络安全管理员设定的特征信息,对具有特征信息的数据包进行分类解析、还原和预警。
参考文献
[1]谢鳃,张大方,文吉刚.基于WinPcap的实时网络监测系统[J].湖南大学学报(自然科学版),2006.
[2]WILLIAMSON C.Internet traffic measurement[M]. IEEE Internet Computing,2001,Vol.5(6):70-74.
[3]庄春兴,彭奇志.基于WinPcap的网络嗅探程序设计[M].计算机与现代化,2002.Vol.5:34-36.
[4]赵心宇,朱齐丹,朱达书.应用WinPcap捕获网络数据包[J].应用科技,2004,Vol.31(11):29-31.
[5]循序渐进学习使用WinPcap[J].中国协议分析网.http://pafnet,2005.
[6]Charles Hornig.A Standard for the Transmission of IP Datagazns~EthemetNetworks[M].RFC894,1984.
[7]J.Postel,J.Reynolds.A Standard for the Transmission of 1P Datagrams over IEEE 802 Networks[M].RFC1042,198.
作者简介: