版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章可行性研究可行性研究是指在调查的基础上,通过技术分析、经济分析、操作分析和法律分析,对各种项目的技术可行性与经济合理性进行的综合评价。可行性研究的基本任务,是对新建或改建项目的主要问题,从技术经济角度进行全面的分析研究,并对其投产后的经济效果进行预测,在既定的范围内进行方案论证和选择,以最合理地利用资源,达到预定的社会效益和经济效益。可行性研究必须从系统总体出发,对技术、经济、财务、商业以至环境保护、法律等多个方面进行分析和论证,以确定建设项目是否可行,为正确进行投资决策提供科学依据。项目的可行性研究是对多因素、多目标系统进行的不断的分析研究、评价和决策的过程。它需要有各方面知识的专业人才通力合作才能完成。软件项目开发的可行性一般包括了可能性、效益性和必要性三个方面,三者相辅相成,缺一不可。可能性包括了技术、物资、资金和人员支持的可行性;效益性包括了实施项目所能带来的经济效益和社会效益;必要性则比较复杂,包括了社会环境、领导意愿、人员素质、认知水平等诸方面的因素。因此,在项目启动之前进行项目的可行性研究是非常必要的,而且也是必须的。要从技术可行性、经济可行性、操作可行性和法律可行性四个方面来进行研究。1.1技术可行性进二十年来,国内外的互联网和计算机技术都取得了飞跃式的发展,很多公司都逐渐在网络上提供基于Internet的信息服务,分析现今互联网络的发展势头,建立基于Web的资料共享系统在技术上是完全可行的:一方面,计算机设计和制造技术都取得了技术性突破,计算机的体积缩小了很多倍,而计算性能却提升了成千上万倍。现在一台普通的服务器足以满足资料分享系统的计算需求。而且硬盘的存储量也得到了较大提升,足以适应资料分享系统的存储要求。另一方面,计算通信网络也取得了深远发展,现在人们可以方便的接入互联网络,多数家庭都通过宽带连接网络,网络通信的带宽也足以满足资料分享系统的数据传输需求,这也为资料共享系统奠定了物质基础。另外因特网的各种软件开发技术的发展更是日新月异,可以通过这些软件技术快捷的进行资料分享系统的设计开发,安装与部署,所有这些,都为基于Web的资料共享系统的实现提供了强大的技术保证。1.2经济可行性在现代计算机和网络的成本都比较低。一台拥有4核处理器8GB内存的服务器的价格在1万元左右;而且硬盘的单位存储价格也很低,现在市场上1TB的硬盘价格在400元左右,即便存储海量的资料文件成本也不高;网络带宽的价格也比较低,10M带宽一年的费用在1000元上下,因此开发这样系统的硬件成本相对比较低,在一个可以接受的范围内。软件系统的开发经费也比较低。由于系统是单人在较短时间内开发出来的资料分享系统软件,不需要昂贵的软件开发支出,所以其开发费用相对较低。在系统运行阶段,只需要一台服务器,单人就可以进行部署和维护操作,而且操作简单,根本不需要进行单独培训。单人单机的操作方式节省了多人劳作的不必要开支,大大减少了系统运行和维护的经济成本。纵观硬件和软件方面,开发这样的一个资料共享系统的成本相对比较低,因此从经济角度考虑开发这样的系统是切实可行的。1.3操作可行性近几年计算机的设计技术和制造工艺都取得了快速发展,计算机的运算性能得到了突破性的提升。对于运行这样的一个资料共享系统,在初始运行阶段1台标准的服务器足以胜任,在发展阶段可以根据用户数量动态增加或减少服务器。另一方面,互联网通信技术也取得飞跃发展,宽带网络也带到了普及,像北京、上海、广州这样的大城市已经开始普及光纤入户,一些家庭的网络速度已达到百兆带宽。这个系统对于网络速度的要求不是很高,可以根据运行发展的不同阶段动态提高网络带宽,已给用户比较好的用户体验。从硬件层面来说,其操作是可行的。计算机已经成为生活中的使用工具,人们对计算机的操作并不陌生。而且计算机通信技术在近几年取得了较快发展,宽带技术也得到了普及,人们可以方便快捷的接入互联网络,进行网上冲浪。经过近几年的发展,中国的网民规模达到5.64亿,全年新增网民5090万人,互联网普及率为42.1%,普及率在持续增高,而且手机网民也达到4.2亿。这么大的网络用户群,他们对计算机相对比较了解,上手比较快,操作起来不会有太大难度。另外在用户使用系统的过程中系统还会给用户有相关的提示信息,引导用户按步骤操作,即便对于没有任何经验的用户来说操作起来也容易上手。由于其是在充分研究了互联网信息服务行业之后而开发的,所以它给了操作人员以全新且实用的方法来管理信息,操作更简单,功能更强大。用户也可以很方便的进行信息传送。1.4法律可行性社会主义市场经济从某种意义上来说就是法制经济,企业、其他商业组织以及个人在各项活动中都应当依法处理事情,针对每一个项目都要进行充分的法律可行性研究。否则,不仅有可能无法达到预期的运营效果,还有可能造成国家、社会、企业以及个人难以挽回的重大损失。法律对于企业来说不仅是一种行为规范,而且对企业还能产生显而易见的经济效益和社会效益。软件项目也必须在法律许可的范围内进行,这样当遭受到外界的侵害,危及到软件项目的正常运营时,企业可以通过法律进行自我保护,以保证软件系统的正常运作。运用法律在维护正常的社会经济秩序的同时也会间接提升社会效益。因此在软件项目开展之前进行法律可行性研究十分必要。基于Web的资料共享系统的设计、开发与实现,其中运用到的各项技术都符合软件行业的法律规定。这个系统是由单人设计开发的,运用的都是已经比较成熟的技术,不会存在知识产权纠纷的问题。对用户的个人隐私信息都做了加密处理,因此在用户信息管理方面可以保证安全,保护用户的隐私权,不违反国家规定。随着系统的运转,用户可能会上传一些违反国家法律规定或侵犯知识产权的资料,根据法律规定,系统对于这样的文件会做出及时的处理。通过以上分析,可知系统在法律方面也是可行的。
第2章相关技术说明这里主要针对系统设计和实现中使用到的Web相关技术做出简要的说明,主要内容包括ASP.NET2.0技术、Access数据库技术以及JavaScript脚本技术。2.1.NET框架应用.NET具有很多优势,具体表现在:通过标准集成XML和SOAP、简化应用、Web服务支持、标准工具集、对移动设备的支持、代码管理、平台独立、充足的学习资源、现代化语言、跨语言标准基本类型,这些优点可以提高开发人员效率,减少bug,加快应用开发并简化使用。针对体育运动会管理系统的特点,非常适合于用.NET开发。.NET框架结构如图1所示。ADO.NetandXMLClassADO.NetandXMLClass图1.NET框架.NETFrameworkclasslibraryWebFormsWebServicesWinFormsBasicframeworkclassCLR(CommonLanguageRuntime)CLS(CommonLanguageSpecification)CTS(CommonTypeSystem).NETFramework主要有两个组件:.NETFrameworkclasslibraryandCommonlanguageruntime(CLR)。.NETFrameworkclasslibrary是一个由类、接口和值类型组成的库,通过该库中的内容可访问系统功能,是生成.NETFramework应用程序、组件和控件的基础。.NETFrameworkclasslibraryincludeWebForms,WebServices,WinForms,ADO.NETandXMLClass,Basicframeworkclass.既可开发图形用户界面(GraphicalUserInterface,GUI)应用程序,也可开发基于ASP.NET的Web应用程序。CLR是一个运行时环境,负责资源管理(内存分配和垃圾收集),并保证应用和底层操作系统之间必要的分离,includeCommonlanguagespecification(CLS)andCommonTypeSystem(CTS)[8]。编程语言的区别不仅仅在于类型,一些语言支持多继承性,一些语言支持无符号数据类型,一些语言支持运算符重载,CLS限制了由这些不同引发的互操作性问题。CTS不但实现了COM的变量兼容类型,而且还定义了通过用户自定义类型的方式来进行类型扩展。任何以.NET平台作为目标的语言必须建立数据类型与CTS的类型间的映射。2.2ASP.NETMVC框架ASP.NETMVC的基本处理流程是,从用户端传来的URL请求,从中找到Controller和Action的值,将请求传递给Controller处理。Controller获取Model数据对象,并且将Model传递给View,最后View负责呈现页面。直观地可理解成:Model就是获取网页需要的数据,Controller就是获取数据,然后将数据绑定到页面控件的业务流程,Controller就是ASP.NET中的PageLoad方法逻辑,View就是aspx页面。处理流程如图3所示。图2图2ASP.NETMVC处理流程ProductsController(Controller)Product(Model)DatabaseList.aspx(View)ViewdataURLDetail.aspx(View)ASP.NET模型。ASP.NET的模型对象是应用程序中实现数据域的逻辑。模型对象检索和存储状态在数据库中。例如,Product对象从数据库中检索信息,操作数据,接着将更新后的信息写回到数据库的Products表中。ASP.NET视图。ASP.NET视图是显示应用程序用户界面UI的组件。一般情况下,UI根据模型数据来创建。例如,基于当前Product对象的状态,编辑Product表的视图,显示文本框、下拉列表和复选框等等。ASP.NET控制器。控制器用来处理用户交互,与模型一起工作,选择一个视图来呈现用户界面。在MVC应用程序中,视图用来显示信息,控制器负责处理和响应用户输入和交互。例如,控制器处理查询字符串值,并传递给模型,通过这些值来查询数据库。ASP.NETMVC的优点很多,主要表现在:通过把项目分成Model、View和Controller,使得复杂项目更加容易维护,减少项目之间的耦合;没有使用ViewState和服务器表单控件,可以更方便地控制应用程序行为;应用程序通过Controller来控制程序请求,并提供了原生的UrlRouting功能来重写Url;使Web程序对单元测试的支持更加出色;在团队开发模式下表现更出众。2.3ASP.NET2.0配置要求ASP.NET2.0运行必需安装以下软件。Internet信息服务管理器(IIS5.0及以上版本)。VisualStudio2005集成开发环境。安装VisualStudio2005集成开发环境的Windows操作系统要求如下。带有ServicePack1.0(SP1)的WindowsServer2003带有ServicePack2.0(SP2)的WindowsXPProfessional。带有ServicePack4.0(SP4)的WindowsServer2000系列。VisualStudio2005集成开发环境对计算机硬件的要求如下。CPU:CPU要求IntelPentiumIII-class600MHz以上。内存:内存要求256MB以上。磁盘:全部安装(包括帮助文档,即MSDN),安装盘上至少需要3.8GB磁盘空间,系统盘至少1GB磁盘空间;不含MSDN的安装,安装盘上至少需要2GB磁盘空间,系统盘上至少需要1GB磁盘空间。显示器:显示器要求至少800×600像素,256色2.4Access数据库技术Access数据库是Office软件包系列产品的一员,它属于桌面关系数据库管理系统,提供了一个数据管理工具包和应用程序的开发环境,主要适用于小型数据库系统的开发,如利用它作为后台数据库制作动态网页等,Access工作窗口类似于InternetExplorer操作界面,并尽可能地保持与Office其他应用程序界面的一致性,使得熟悉IE、Word、Excel等软件操作的用户很容易地学会Access的操作。Access数据库是许多数据对象的集合,包含表、查询、窗体、报表等对象。建立Access数据库即是创建诸多与特定应用有关的对象,这些数据库对象均保存在一个以.md为扩展名的数据库文件中。操作时,用户只要单击左窗格中的对象就可进入相应功能的操作界面。Access提供了7种对象,以概括数据库应用开发所需的功能。其主要对象及功能为:1.表:是一种用于存放数据的二维表状结构,由若干行和列组成。一个数据库可包含一个或多个数据表。表提供了设计视图和数据表视图。设计视图用于创建和修改表结构,为用户提供了可视化的定义表结构的方法。数据表视图以表格的形式向用户提供了直观的数据录入、修改和删除等数据维护功能,同时还提供了数据筛选、排序、打印、数据导出等其他功能。2.查询:查询用于在一个或多个数据表内查找选定的数据或对数据进行统计汇总,也可利用查询进行数据表的生成、删除和替换等。3.窗体:利用窗体可以创建用户应用程序窗口,方便数据的输入、修改、显示等。窗体可利用向导一步一步地建立,也可利用窗体设计视图进行可视化手工创建。4.报表:报表对象用来设计和打印报表,可以在报表设计视图中控制每个要打印元素的大小、位置和显示方式,使报表按照用户所需的方式显示和打印。除了以上对象外,Access数据库还包括数据访问页对象、宏以及模块对象。2.5JavaScript技术JavaScript是一种脚本语言,相关知识描述如下:1.JavaScript的发展历史JavaScript是1995年Netscape的BrendanEich为Netscape(Navigator2.0)浏览器的应用而发明的,写在HTML(HyperTextMarkupLanguage)文件中的基于面向对象和事件驱动的脚本语言,浏览器执行JavaScript程序,以实现HTML所不能实现的功能。例如,可以实现检验功能,对用户的输入进行校验;可以改变网页中的颜色等信息;也可以向用户发出警告信息。JavaScript在Navigator2.0浏览器应用不久,Microsoft公司推出了用于InternetExplorer浏览器的类似于JavaScript的程序设计语言,商标名称为Jscript。1999年ECMA在Netscape的JavaScript1.5版本的基础上,制定了“ECMAScript程序设计的规范书”,又称为“ECMA-262标准”,作为各种浏览器生产开发所使用的脚本语言的统一标准。2.JavaScript的特点从JavaScript的发展历史可以看出JavaScript具有如下特点:解释性,与MicrosoftVisualBasic和MicrosoftVisualC++等编译性语言不同,JavaScript不需要连接编译,不需要生成目标代码,而是像传统的MicrosoftVisualFoxpro一样,边解释边运行,即不用编译,直接使用Explorer对其翻译,又称为“脚本式”语言;基于对象,JavaScript将按钮、文本框、下拉列表框、多选框、单选按钮等网页中的任一元素都视为一个对象,作为对象进行处理,网页中各元素之间的关系,都被描述为层次结构关系,称为“文档对象模型(DOM,DocumentObjectModel)”;用于客户端,JavaScript主要应用于客户端,与服务器程序不同,服务器端程序在服务器端运行,增加服务器的负荷,增加网络负担,而客户端程序直接在客户端被解释执行,速度快,充分发挥客户端机器的功能;与Java比较,由Java开发的Applets与HTML(HyperTextMarkupLanguage)无关,而JavaScript直接嵌入在HTML代码中。JavaScript在Explorer中使用,而Java开发的应用程序可以作为独立的应用程序使用。Java可以作用于HTML元素外的任何对象,而JavaScript只能作用于HTML对象元素。3.JavaScript的作用在浏览器中运行JavaScript,主要是与用户实现动态交互功能。主要作用如下:校验用户输入,在Internet的校验中,功能性校验与服务器端的数据库相关联,格式校验使用JavaScript在客户端进行,窗口未提交之前完成;有效地组织网页内容,制作友好美观适用的用户界面,减少用户操作,有效地编排用户输入,JavaScript可完成这一工作;弥补静态网页不能实现的功能,例如,当显示多行数据时,用户滚动表格内容时,可以用JavaScript固定表头及任意列;动画显示,动画技术可以使网页更加生动,广泛应用于网上游戏、广告宣传、演示推广等,也可用于通常的Web应用程序,动画设计往往比单纯的文字设计更吸引人;动态地显示网页内容,JavaScript仅在客户端动态地显示网页内容,不必通过应用服务器,既可以节省窗体与服务器端的数据通信,又可以制作出易于用户使用的、美观友好的界面。4.JavaScript的使用环境要求硬件要求。JavaScript主要面向Windows用户,适用于各种支持Internet浏览器平台,包括Windows、Macintosh、Linux或UNIX变形系统等。在Microsoft的InternetExplorer6.0所需要的最低系统要求。英Intel/英特尔P3或以上机型;1G内存;100M可用硬盘空间;16位或以上的适配卡和800*600分辨率以上的显示器;CD-ROM驱动器。软件要求。JavaScript基本功能适应于各种浏览器,目前广泛使用的Microsoft的InternetExplorer、360安全浏览器、谷歌浏览器(GoogleChrome)、Netscape的Navigator、\o"百度浏览器6.1官方正式版"百度浏览器等;编辑软件可以是任何一种文本编辑器,常用的|MacromediaDreamweaver、Windows的记事本和写字板、MicrosoftFrontpage等都可以使用;调试软件,除了可以使用JavaScript自带的函数外,可以使用Microsoft的InternetExplorer浏览器的脚本调试工具MicrosoftScriptDebugger、Netscape的Navigator浏览器的JavaScript。
第3章需求分析3.1功能需求基于Web的资料共享系统用户方面主要分为系统管理员、注册会员和游客三类。系统管理员具有管理注册用户、资料的管理以及系统管理首页的公告栏等功能;注册会员可以上传资料与其他用户共享、下载其他注册会员共享的资料、对下载的资料进行留言评价;而游客仅有搜索查找资料、预览部分资料内容,不能对资料进行下载和留言评价。系统的总体用例图如图3.1所示:图3.1总体用例图根据以上信息的分析与实际问卷调研,获得系统的需求功能如下:界面简洁而不失美观,操作简单易上手。有注册功能,游客可以通过该功能成为一名注册会员,享有更多的服务。有搜索查询功能,用户可以快速查找到自己所需要的资料。有上传和下载资料的功能,会员可通过该功能上传自己的资料与大家共享,下载其他注册会员上传的资料来学习,游客不能享有这些功能。具有简单的预览功能,方便用户在线观看。有积分功能,这样对会员是一种激励措施,鼓励更多的用户来上传共享资料。有留言功能,注册的会员可以对下载过的资料就行留言评价。有找回密码功能,注册的会员可以通过该功能找回自己的密码。有后台管理功能,管理员可以通过这个功能对系统进行维护管理。3.2性能需求软件系统必须拥有较高的处理效率,这样整个系统运行起来才能拥有较高的性能。基于Web的资料共享系统,是一个Web系统,用户范围比较广泛,用户群也较大,这对系统的性能提出了较高的要求,需要满足同时大批量用户的并发访问。系统的核心是资料共享,这要求具有较高性能的存储系统来适应广大用户的大数据存储,还要有冗余备份,当存储介质发生损坏时可以根据备份资料来进行快速恢复,保证用户资料的可靠完整性。系统需要接入网络,供广大用户访问。随着系统的运行,会有大量新用户加入,这样对系统的带宽性能提出了较高要求,在设计的时候要充分考虑到将来的升级,使系统可以平稳的过度,供海量用户并发使用。在总体上系统响应速度要快,单个页面的加载时间一般不应超过5秒,页面更新后的内容能够及时反映出来,这样可以具有良好的用户体验,才能够吸引更多的用户来使用。3.3可靠性和可用性需求软件可靠性是软件产品在规定的条件下和规定的时间区间完成规定功能的能力。规定的条件是指直接与软件运行相关的使用该软件的计算机系统的状态和软件的输入条件,或统称为软件运行时的外部输入条件;规定的时间区间是指软件的实际运行时间区间;规定功能是指为提供给定的服务,软件产品所必须具备的功能。软件可靠性不但与软件存在的缺陷和(或)差错有关,而且与系统输入和系统使用有关。软件可靠性的概率度量称软件可靠度。系统要求具有较高的可靠性和可用性。由于系统的使用者是广大的网民,要对广大用户负责,保证系统的可靠性,保证用户共享资料的完整正确性。系统还保存有注册用户的相关信息,要保证系统的安全性,对用户的信息负责。由于系统面对的是广大用户,所以要保证可以持续工作,以满足广大用户的随时访问需求。另一方面要有应急预案系统,以保证系统出现不可预知的故障时能够快速恢复正常运转,保证系统的持续可用性。系统在正式上线投入运行之后要充分考虑系统的可用性,尽量达到即便是一个对计算机没有任何经验的新手在初次接触系统也可以正常使用,因此系统的设计要尽量简单易懂,容易上手,并且给出用户相应的指引,指导用户去使用。另外还应有相应的帮助文档和答疑区,对用户的疑问和反馈给出及时确切的回应。在设计时应充分考虑系统的可靠性和可用性,从每一个细节做起,全面考虑系统的各个方面,以保证系统的高可靠性和易用性。
第4章概要设计4.1系统特点本系统采用资料通过网络集中存储的方式,充分利用了网络的方便快捷特性。基于Web的资料共享系统主要运用了ASP.NET平台与Access数据库的开发技术,实现了注册用户登录、在线留言评价等交互功能,提供了资料的上传与下载功能,这样可以方便用户共享和获取资料,充分发扬我为人人,人人为我的精神。基于网络的资料共享系统打破了传统的资料交换方式在时空上的限制,使用户可以在任意时间在任何可以接入网络的地方来共享资料和获取其他用户共享的资料,这样使得基于Web的资料共享系统的设计和开发具有广阔的前景。基于Web的资料共享系统,采用B/S架构模式。这是Web兴起后的一种网络结构模式,Web浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器(Browser),即可以访问系统,非常简便快捷。4.2功能模块描述用户注册登录功能模块:提供用户注册功能;在用户登录时可以验证用户账号和密码,验证过程中密码错误次数多于5次则暂时锁定用户;通过用户登录状态以区分注册会员、系统管理员以及游客的浏览内容和功能权限。搜索查找功能模块:所有用户可以使用该功能以便快速搜索到自己所需要的相关资料,具有模糊查找功能。资料的上传共享功能模块:提供资料的上传功能,注册会员以及系统管理员都可以上传资料,在上传资料时需要选择资料的分类。资料预览与下载功能模块:提供资料的预览与下载功能,注册会员可以预览所有内容并且拥有下载权限,而游客仅能预览部分内容且不能下载资料。留言评价功能模块:该功能仅供登录会员使用,而且用户必须下载过该资料才能对其进行留言评价以保证评价的真实与合理性。会员管理功能模块:该功能仅供系统管理员使用,系统管理员可以通过此功能来添加、删除或者暂时禁用注册会员账户。资料管理功能模块:资料的拥有者和系统管理员都可以使用该功能,但对于系统管理员已修改过的资料其拥有者是不能再修改的;该功能模块主要提供对资料的信息修改功能,包括资料名称的修改、资料简介的修改、资料所属分类的修改等。公告栏管理:系统管理员可以通过该功能模块来添加、修改、或者删除系统公告栏中的公告内容。4.3架构设计根据资料共享系统的特性,整体上可以将系统分为前台设计和后台设计两个部分。前台部分的主要服务用户为注册会员以及游客,给他们提供注册登录功能、搜索查找资料功能、预览下载资料功能、留言评价等功能;后台部分主要为系统管理员服务,提供用户的管理、资料的管理以及公告栏的管理等功能。系统的主要业务活动图如图4.1所示:图4.1主要业务活动图前台部分的功能结构图如图4.2所示:
系统前端系统前端我的资料注册登录搜索查找资料上传共享资料我的资料注册登录搜索查找资料上传共享资料待评价的资料我下载的资料我上传的资料预览下载待评价的资料我下载的资料我上传的资料预览下载留言评价留言评价图4.2前台功能结构图后台部分的功能架构图如图4.3所示:系统后台 系统后台资料管理公告栏管理用户管理资料管理公告栏管理用户管理删除资料上传资料排序公告修改公告发布公告删除资料上传资料排序公告修改公告发布公告修改资料信息禁用用户删除用户增加用户修改资料信息禁用用户删除用户增加用户图4.3后台功能结构图第5章数据库设计本系统采用Access数据库系统,在设计数据库的时候考虑简单、清晰、明了的原则,根据数据库设计的思想,以保证系统数据的安全和正确性。本系统总共建立了了6张数据库表,下边依次分析。5.1概念设计根据以上分析,可建立对应的数据表格,详细设计如下。用户信息表:存储用户相关的信息包括登录信息等。实体关系如图5.1所示:性别性别E-mail用户属性密码提示问题密码提示答案用户登录名用户ID用户权限用户密码用户状态图5.1用户属性图资料信息表:存储资料相关的信息。实体关系如图5.2所示:资料地址资料地址资料名称资料编号点击率资料评分资料类型编号上传日期资料简介资料属性上传用户ID图5.2资料属性图留言信息表:存储与资料相关的留言信息。实体关系如图5.3所示:留言属性留言编号留言属性留言编号留言时间留言内容资料编号留言人ID图5.3留言属性图公告信息表:存储公告相关信息。实体关系如图5.4所示:公告内容公告属性公告编号公告内容公告属性公告编号公告标题发布时间发布人ID图5.4公告属性图资料类型表:存储资料类型相关信息。实体关系如图5.5所示:资料类型属性资料类型属性类型编号类型名称类型等级图5.5资料类型属性图我的资料信息表:存储与我的资料相关信息。实体关系如图5.6所示:我的资料属性我的资料属性用户ID资料编号评价时间评价分值资料状态评价状态图5.6我的资料属性图5.2逻辑设计用户信息表(用户ID,用户登录名,密码,用户性别,E-mail,密码提示问题,密码提示答案,用户权限,用户状态);资料信息表(资料编号,资料名称,资料简介,资料地址,资料类型编号,上传用户ID,上传日期,资料评分,点击率);留言信息表(留言编号,留言内容,资料编号,留言人ID,留言日期);公告信息表(公告编号,公高标题,公告内容,发布人ID,发布时间);资料类型表(资料类型编号,资料类型名称,资料类型等级);我的资料信息表(用户ID,资料编号,资料状态,评价状态,评价分值,评价时间)。详细设计如下所示:表5.1用户信息表字段名含义类型及长度是否为空备注user_id用户IDInt否自动增长user_name用户登录名Varchar(16)否user_pwd密码Varchar(24)否user_sex性别Int否0为女,1为男user_emailE-mailVarchar(24)否pwd_question密码提示问题Varchar(24)否用来找回密码pwd_answer密码提示答案Varchar(24)否user_right用户权限Int否user_statue用户状态Int否表5.2资料信息表字段名含义类型及长度是否为空备注data_NO资料编号Int否自动增长data_name资料名称Varchar(16)否data_profile资料简介Varchar(160)否data_url资料地址Varchar(120)否资料文件地址data_typeNO资料类型编号Int否user_id上传用户IDInt否data_date上传日期Datetime否系统自动获得data_rate资料评分Float是data_ctr点击率Int是表5.3留言信息表字段名含义类型及长度是否为空备注message_NO留言编号Int否自动增长message_content留言内容Varchar(240)否data_NO资料编号Int否留言所对应资料的编号user_id用户IDInt否留言人的IDmessage_date留言时间Datetime否系统自动获取表5.4公告信息表字段名含义类型及长度是否为空备注bulletin_NO公告编号Int否自动增长bulletin_title公告标题Varchar(24)否bulletin_content公告内容Varchar(240)否user_id用户IDInt否公告发布人的IDbulletin_date发布时间Datetime否系统自动获取表5.5资料类型表字段名含义类型及长度是否为空备注datatype_NO资料类型编号Int否自动增长datatype_title资料类型名称Varchar(24)否datatype_level资料类型级别Int否表5.6我的资料信息表字段名含义类型及长度是否为空备注user_id用户IDInt否data_NO资料编号Int否data_type资料状态Int否0为下载,1为上传rate_status评价状态Int否0为未评价1为已评价rate_value评价分值Int是有1-5分共5个分值rate_date评价时间Datetime是评价时自动获取5.3物理设计数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于给定的计算机系统。为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程,就是数据库的物理设计。数据库的物理设计的内容主要包括:确定数据的存储结构(在数据库中怎么存放)和存取方法;为数据选择和调整存取路径,即索引的设计;确定数据分布,如数据的垂直划分和水平划分;调整和优化数据库的性能,如调整DBMS的某些系统参数。数据库物理设计的主要目标有两个:其一是为了提高数据库的性能,特别是满足主要应用的性能要求;其二是为了有效地利用存储空间。而在这两个目标中,第一个目标显得更加重要,因为性能依然是当今数据库系统的薄弱环节,相比较而言存储介质的价格已经变得比较便宜,而且还在不断降低中。关系模式存取方法是快速存取数据库中数据的技术。数据库管理系统一般都提供多种存取方法。而常用的存取方法有三类。第一类是索引方法,第二类是聚簇方法,第三类是HASH方法。系统采用了第一、二种存取方法。确定数据库物理结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、聚簇、日志、备份等的存储结构;系统配置:使用数据库的用户数无限制,同时打开的数据库对象数在一般范围内无限制。安全性、可靠性、实时性是软件系统的要求,系统建立了一个Access数据库,在数据库中总共有6个表,对于用户的隐私信息和机密信息进行加密存储,以保证系统的安全性;数据库文件存放在非系统盘中,备份在另外的硬盘中,以保证系统的可靠性。任何系统都不是绝对可靠的,发生故障是不可避免的,这就需要有应急预案系统,以保证系统出现不可预知的故障时能够快速恢复正常运转,保证系统的持续可用性。
第6章详细设计6.1主要业务逻辑设计系统业务逻辑层是系统业务逻辑的核心,介于数据访问层和表现层之间,在数据交换中起到了承上启下的作用,是系统的重中之重,下面进行详细分析。6.1.1会员注册游客可以通过会员注册功能注册成为本系统的注册会员,用户注册并登陆后,可以把自己的资料文件上传到系统与大家共享,也可以搜索下载自己需要的资料文件,还可以对自己下载过的资料进行留言评价。用户可以通过系统首页的注册链接或在登录模块中单击“会员注册”按钮进入用户注册页面。填写会员注册信息的要求:用户名不能为空且不能与系统已存在的用户名重复、性别必需选择、密码必须填写、两次密码输入必须一致、电子邮件地址格式需正确、密码提示问题和密码提示问题答案需要填写。当用户忘记密码时可以根据填写的密码提示问题和答案来找回登陆密码。这些信息的验证都是通过服务器验证控件来实现的,通过add操作将会员注册信息存储到数据库中。其流程如图6.1所示:图6.1用户注册流程图核心代码如下:protectedbooladd(){dataAccessmydo=newdataAccess();//创建数据库操作类的对象stringname=txtName.Text;stringpass=Operate.Encrypting(txtPass.Text);stringsex;//获取性别if(RadioButtonMan.Checked){sex=1;}else{sex=0;}stringpassQuestion=this.txtPassQuestion.Text;stringpassSolution=FormsAuthentication.HashPasswordForStoringInConfigFile(this.txtPassSolution.Text,"MD5");stringemail=txtEmail.Text;//获取用户电子邮件stringsql="insertintotb_user(user_name,user_pwd,user_sex,user_email,pwd_questionpwd_answer,user_right)values('"+name+"','"+pass+"','"+sex+"','"+email+"','"+passQuestion+"','"+passSolution+"','"+1+"')";returnmydo.addData(sql);}6.1.2会员登录会员登录用来核实注册会员的身份,会员在登录界面输入相应的用户名、密码后,进行登录,提交后首先通过用户名对数据库中的tb_user表进行检索,若检索到的记录集为空,提示用户名不正确,若记录不为空,再进行密码判断,若密码与数据表中的密码不一致,则提示会员密码错误,当用户名与密码都正确后才能成功登录,并将用户以session对象保存起来。若用户密码错误次数多于5次则暂时禁用该账户。登录过程流程如下所示:图6.2用户登录流程图核心代码如下:protectedvoidimgbtnLanding_Click(objectsender,ImageClickEventArgse){stringname=txtName.Text;stringpass=Operate.Encrypting(txtPass.Text);stringyzm=txtYzm.Text;if(Session["CheckCode"].ToString().Equals(yzm)){try{stringsql="selectcount(*)fromtb_userwhereName='"+name+"'andPass='"+pass+"'";inti=mydo.isData(sql);if(i>0){sql="select*fromtb_userwhereName='"+name+"'";OleDbDataReaderodr=mydo.row(sql);odr.Read();if(odr["lock"].ToString()=="0"){Session["UserName"]=name;Response.Redirect("index.aspx");}else{Page.RegisterStartupScript("false","<script>alert('此用户已被锁定!')</script>");}}else{Response.Write("<script>alert('密码或用户名错误!')</script>");}}catch(Exceptionex){Response.Write(ex.Message.ToString());}}else{Page.RegisterStartupScript("false","<script>alert('验证码错误!')</script>");}}6.1.3资料上传系统的注册会员可以将自己的资料上传到系统网站上与其他用户共享,还可以对自己上传的资料进行管理。用户登录成功后可以进行资料上传操作,在资料上传页面填写资料的相关信息,选择资料文件之后上传与其他用户共享。其流程图如图6.3所示:图6.3资料上传流程图6.1.4留言评价由于在下载资料前用户并不清楚资料的真实内容,所以为了给其他用户提供参考,系统提供了留言评价内容。用户可以把留言和评分作为参考来选择是否下载该资料文件。为了使资料的留言评价内容真实且具有可参考性,系统限制只有注册用户且下载过该资料的用户才可以进行留言评价,这样做在一定程度可以杜绝无意义的留言评分。其流程图如图6.4所示:图6.4留言评价流程图6.1.5搜索查找系统正式投入运行之后,随着运营时间的推移,系统会存储较多的资料文件,这对于用户来说查找起来是比较费劲的,所以系统提供了搜索查找功能,并且系统支持模糊查询。通过搜索查找资料功能模块,用户可以输入自己需要的资料名字中所包含的关键字,以及资料类别信息,系统会列出相关的资料文件。用户可以点击需要的资料进入资料信息页面查看资料的详细信息。其流程图如图6.5所示:图6.5搜索查找资料流程图核心代码如下:protectedvoidImageButton1_Click(objectsender,ImageClickEventArgse){stringtable=this.ddlType.SelectedValue.ToString();stringtype=this.ddlLanguage.SelectedValue.ToString();stringtkey=this.txtKey.Text;stringsql; sql="select*fromtb_type,tb_datawheretb_type.data_typeNO=tb_data.data_typeNOandtb_data.data_namelike'%"+tkey+"%'";Session["searchSql"]=sql;Session["table"]=table;Response.Redirect("searchList.aspx");}6.2数据访问层设计数据访问层主要用来完成数据库的连接操作以及数据库的查、增、删和改操作。将这四类操作编写到一个公共类里,这样可以减少代码的重复编写,而且有利于代码的维护。由于数据访问层需要对数据库进行操作,所以这个公共类需要引用命名空间System.Data.OleDb。具体代码如下所示:usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.Data.OleDb;///<summary>///dataAccess的摘要说明///</summary>publicclassdataAccess{ publicdataAccess() { // //TODO:在此处编写构造函数的代码 // }dataAccess公共类中一共定义了6个操作,包括了系统所需要的数据访问操作,下面分别对这几个操作进行详细设计。createCon操作:createCon()操作用来连接数据库,此方法返回的类型为OleDbConnection,主要用来与数据库建立连接。具体代码如下:publicOleDbConnectioncreateCon(){OleDbConnectionodbc=newOleDbConnection(“Provider=Microsoft.Jet.OLEDB.4.0;Datasource=|DataDirectory|db_datasharing.mdb;”);//新建一个OleDbConnection对象用于连接数据库Returnodbc;}addData操作:addData(stringsql)方法用来添加或删除数据。此方法返回一个布尔值,用来表示添加或删除数据是否成功,执行成功返回true,否则返回false。调用此方法时应传入一个string类型的参数,此参数表示所经执行的SQL语句。具体代码如下:publicbooladdData(stringsql){OleDbConnectionOdbc=createCon();//调用createCon方法连接数据库Odbc.Open();//打开数据库连接OleDbCommandcom=newOleDbCommand(sql,Odbc); //对Access数据库执行一个SQL语句inti=Convert.ToInt32(com.ExecuteNonQuery()); //返回所影响的行并转换成int类型Odbc.Close();if(i>0){returntrue;}else{returnfalse;}}isData操作:isData(stringsql)操作用来判断需要查找的数据是否存在。此方法返回一个整形值,用来表示是否查找到数据,查找到数据则返回一个大于0值,否刚返回0。调用此方法时应传入一个string类型的参数,此参数表示所要执行的SQL语句。具体代码如下:publicintisData(stringsql){OleDbConnectionOdbc=createCon();//调用createCon连接数据库Odbc.Open();//打开数据库连接OleDbCommandcom=newOleDbCommand(sql,Odbc);inti=Convert.ToInt32(com.ExecuteScalar());//返回首行首列Odbc.Close();returni;}UpdateData操作:updateData(stringsql)操作用来更新数据。此方法没有返回值。在调用此方法时应传入一个string类型的参数,此参数表示所要执行的SQL语句。具体代码如下:publicvoidupdateData(stringsql){OleDbConnectionOdbc=createCon();Odbc.Open();OleDbCommandcom=newOleDbCommand(sql,Odbc);com.ExecuteScalar();Odbc.Close();}Row操作:Row(stringsql)操作用来查找并返回一行数据。此方法返回一个OleDbDataReader对象。在调用此方法时应传入一个string类型的参数,此参数表示所要执行的SQL语句。具体代码如下:publicOleDbDataReaderRow(stringsql){OleDbConnectionOdbc=createCon();//创建OleDbDataReader对象Odbc.Open();//打开数据库连接OleDbCommandcom=newOleDbCommand(sql,Odbc);returncom.ExecuteReader();//返回OleDbDataReader对象}Rows操作:Rows(stringsql,stringtable)操作用来查找并返回多行数据。此操作返回一个DataTable对象。在调用此操作时应传入两个string类型的参数,第一个参数表示要执行的SQL语句,第二个参数表示表名。具体代码如下:publicDataTableRows(stringsql,stringtable){DataSetds;OleDbConnectionOdbc=createCon();Odbc.Open();OleDbDataAdapteroda=newOleDbDataAdapter(sql,Odbc);ds=newDataSet();//创建数据集oda.Fill(ds,table);//填充数据集Odbc.Close();returnds.Tables[table];//返回数据表};6.3表现层设计表现层通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得,用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。表现层设计的原则是简洁美观,方便用户操作。软件界面设计就像工业产品中的工业造型设计一样,是产品的重要买点。一个友好美观的界面会给人带来舒适的视觉享受,拉近人与电脑的距离,为商家创造卖点。界面设计不是单纯的美术绘画,他需要定位使用者、使用环境、使用方式并且为最终用户而设计,是纯粹的科学性的艺术设计。检验一个界面的标准即不是某个项目开发组领导的意见也不是项目成员投票的结果,而是最终用户的感受。所以界面设计要和用户研究紧密结合,是一个不断为最终用户设计满意视觉效果的过程。UI即UserInterface(用户界面)的简称,是软件的人机交互、操作逻辑、界面美观的整体设计。好的UI设计不仅是让软件变得有个性有品味,还要让软件的操作变得舒适、简单、自由,充分体现软件的定位和特点。基于Web的资料共享系统,具有较强的人机交互性,在进行界面设计时,根据UI设计规范,体现UI设计一致性原则、布局合理原则、系统操作合理性原则、系统相应时间原则以及准确性原则,充分考虑用户的使用体验,对于用户的操作都会给予其相应的回应,或提示或警告,尽量做到简洁美观。其用户登录界面示意图如图6.6所示:图6.6用户登录界面示意图
第7章软件测试软件测试是为了发现错误而执行程序的过程。软件测试不仅是软件开发阶段的组成部分,而且在整个软件工程过程(即软件定义、设计和实现等阶段)中具有非常重要的作用。软件测试是软件质量保证的关键环节,直接影响着软件的质量评估。7.1软件测试过程软件测试过程按测试的先后顺序可分为:单元测试、集成测试、确认测试、系统测试,分别与软件开发过程的软件编码、软件设计、软件需求、系统需求(整个项目的需求)相对应,软件测试过程流程如图7.1所示。图图7.1软件测试过程流程系统需求交付用户软件模块单元测试软件模块单元测试软件模块单元测试软件模块单元测试集成测试集成测试确认测试系统测试软件需求软件设计软件编码用户立项(1)单元测试。对用源代码实现的每一个程序单元进行测试,检查各个程序模块,是否正确地实现了规定的功能,并发现程序内部错误。(2)集成测试。把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。(3)确认测试。检查已实现的软件,是否满足需求规格说明中确定的各种需求,以及软件配置是否完全、正确。(4)系统测试。把经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。7.2软件测试原则软件测试从不同角度出发,会派生出两种不同的测试原则。从用户角度,希望通过软件测试,充分暴露软件中存在的问题和缺陷,从而考虑是否可以接受该产品;从开发者角度,希望通过测试,表明软件产品不存在错误,已经正确地实现了用户的需求,确立人们对软件质量的信心。无论从哪个角度出发,都必须做好软件测试工作,都应掌握一定的策略和方法,通常遵循以下一些原则:(1)尽早和不断地进行软件测试。不应把软件测试仅仅看作软件开发的一个独立阶段,而要贯穿到软件开发的各个阶段中。坚持在软件开发的各个阶段实施技术评审,才能在开发过程中尽早发现和预防错误。随着开发过程的进行,发现和修复缺陷的平均代价呈指数级增长。(2)开发人员原则上不测试自己的程序。程序员应避免测试自己编写的程序,开发小组也应尽可能避免测试自己小组开发的程序。如果条件允许,最好建立独立的软件测试机构。这点不能与程序调试相混淆。(3)完全测试程序是不可能的。初涉软件测试者认为,可以对软件进行完全测试,找出所有的软件缺陷,并使软件臻于完美。这种想法固然很好,但在测试过程中,是不现实的。即使最简单的程序也未必可行,因为输入量太多,软件实现途径太多。(4)软件测试是有一定风险的行为。如果不测试所有情况,那就是选择了风险。有可能程序员恰好留下一个软件缺陷,测试员没有测试,用户却会用到它,并发现缺陷,这就成为修复代价很高的缺陷。软件测试员要掌握如何把软件缺陷减少到可以控制的范围,并针对软件缺陷可能带给用户的风险进行分析,寻找最合适的测试用例。(5)充分注意测试中的群集现象。在被测试程序段中,若发现错误数目多,则残存错误数目也比较多。这种错误群集现象,也被许多程序测试的实践所证实。根据这个规律,应当对错误群集的程序段进行重点测试。(6)严格执行测试计划,排除测试的随意性。测试之前应仔细研究被测试的项目,对每一项测试做出周密的计划,包括被测试程序的功能、输入输出、测试内容、进度安排、资源需求、测试用例选择、控制方式和过程等;还包括系统的组装方式、跟踪规程、调试规程、回归测试的规定以及评价标准等。对于测试计划,要明确制定,不能随意修改。(7)应当对每一个测试结果进行全面检查。有些错误征兆在输出实例结果时,已明显地表现出来,但是如果不仔细全面地检查测试结果,就会使这些错误被遗漏掉。所以必须对预期的输出结果明确定义,对结果仔细分析检查,抓住征兆,发现错误。(8)妥善保存测试文档。妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。(9)软件测试的Pareto法则(8:2)。20%的模块产生80%的缺陷;20%的缺陷消耗80%的维护费用;20%的原因导致了80%的缺陷。(10)并非所有的软件缺陷都能被修复。在软件测试过程中不能修复所有缺陷,并不意味着软件测试员未达到目的,或者项目小组将发布质量欠佳的产品。项目小组需要对每一个缺陷进行取舍,根据风险决定哪些需要修复,哪些不需要修复。不需要修复所有缺陷的原因如下:●没有足够的时间。通常是软件功能多或者交付产品时间短,代码编写人员和软件测试人员少,而且在项目进度中,没有为软件测试和修改缺陷,留出足够的时间;●修复风险太大。软件复杂,难以理清头绪。修复一个软件缺陷,可能导致其它缺陷出现。在紧迫的产品发布进度压力下,修改软件将冒很大的风险;●不值得修复。不常出现的缺陷或不常用功能中出现的缺陷,用户可能有办法预防或避免这种缺陷,通常不用修复。(11)Bug的80%原则。一般情况下,在分析、设计、实现阶段的复审和测试工作,能够发现80%的Bug,而系统测试能够找出其余Bug中的80%,最后约5%的Bug只有在用户长期的使用过程中才能发现。因此测试要尽可能多地发现错误,而并非是发现所有错误。(12)软件测试在项目小组中的处事原则。软件测试员的任务,是检查和指正同事的工作、挑毛病、公布发现的问题,这项工作是不受欢迎的。测试人员与开发人员和睦相处的建议如下:●尽早找出软件缺陷;●不要总报告坏消息;●控制情绪。软件测试员发现严重的软件缺陷时,如果兴冲冲告诉开发人员,会令人反感。可以通过电子邮件或管理软件的方法通知开发人员。7.3软件测试方法软件测试方法很多,常用的有:静态测试、动态测试、覆盖分析、黑盒测试、白盒测试、α测试与β测试等。7.3.1静态测试与动态测试根据测试时是否实际运行程序,可以将测试分为静态测试和动态测试。静态测试静态测试不实际执行程序代码,主要对软件的编程格式、结构等方面,进行评估并发现可能存在错误的测试方法。静态测试的优点是:●不必动态地运行程序,不必设计测试用例,不用判读结果;●可以由人工进行,充分发挥人的逻辑思维优势,检测出错误的水平很高;●不需要特别条件,容易开展。静态测试主要由代码检查和静态分析组成。(1)代码检查。包括代码审查、代码走查、桌面检查等。代码审查(CodeInspection),是由若干个程序员与测试员组成一个审查小组,集体阅读并讨论程序,对照代码审查单检查程序代码,以发现程序中的缺陷、违返标准之处和其它问题。代码走查(CodeWalkthrough),是由若干个程序员与测试员组成一个走查小组,集体阅读并讨论程序,设计一些典型的测试用例,用“人脑”执行并检查程序,以找出程序中的缺陷。桌面检查(DeskTesting),是由程序员阅读自己编写的程序,发现程序中的缺陷。这种方法有下述3个方面的缺点:一是由于心理上的原因,容易对自己的程序存在偏爱,没有发现错误的欲望;二是由于人的思维定势,有些习惯性的错误自己不易发现;三是如果对功能的理解存在错误,那么只靠自己是不容易纠正的。所以,这种方法效率不高,但可以作为一种用于自我检查程序中存在的明显疏漏或笔误的方法。代码审查和代码走查不仅比桌面检查优越得多,而且与计算机的测试方法相比,也有许多优点。一旦发现错误,就能知道错误的性质和位置,因而程序调试花费的代价就低;一次能揭示一批错误,而不是一次只揭示一个错误。如果使用计算机测试,通常仅能揭示错误的征兆(例如,程序不能正常运行),而对错误的性质与位置还要逐个查找。研究表明,代码审查和代码走查发现某类错误,比使用计算机的测试方法更为有效,而对于另一类错误,情况则正好相反。由此可见,代码审查和代码走查方法,与使用计算机的测试方法是相互补充的,缺少任何一种方法都会使错误的检测率下降。(2)静态分析。是分析一个程序,但并不实际执行这个程序,可分为手工和自动两类。静态分析的技术结构如图7.2所示。图图7.2静态分析的技术结构静态分析静态验证手工自动检视走读语法分析器符号执行器手工静态分析包括检视和走读两种。检视是使用预先定义好的检视规则,对代码、文档等工作产品进行检查。实际操作中,检视过程一般根据检查表来进行;走读,又称走查,是由分析者对程序的运行细节进行想象,以检查程序的正确性,是一个类似同行评审的过程。自动静态分析包括:静态验证、语法分析、符号执行等,需要相应的工具。自动静态分析用于发现代码、文档等工作产品,在规范化和形式化方面的缺陷很方便。如果要通过自动静态分析发现更深层次的问题,则在形式化和规范化方面要求很高。有些软件开发工作在文档规范化和形式化方面很差,使用这些工具和技术就非常困难。2.动态测试动态测试方法是通过运行软件,来检查软件的动态行为和运行结果是否正确的方法。动态测试的特点是:●实际运行被测程序,取得程序运行的真实情况和动态情况,再进行分析;●必须生成测试数据来运行程序,测试质量依赖于测试数据;●生成测试数据、分析测试结果的工作量很大,开展测试工作费时、费力;●动态测试中涉及多方面的工作,人员多、设备多、数据多,要求有较好的管理和工作规程。动态测试包括:功能确认与接口测试、覆盖率分析、性能分析、内存分析等。(1)功能确认与接口测试。包括各个单元功能的正确执行,以及单元接口、局部数据结构、重要的执行路径、错误处理路径和影响上述几个点的边界条件等内容。(2)覆盖率分析。主要是对代码的执行路径覆盖范围进行评估,语句覆盖、判定覆盖、条件覆盖、条件/判定覆盖、修正条件/判定覆盖、基本路径覆盖等,都是从不同要求出发,为设计测试用例提供依据。(3)性能分析。程序运行缓慢是开发过程中常见的问题。如果不能解决应用程序的性能问题,将降低并影响程序的质量,查找和修改性能瓶颈成为调整代码性能的关键。目前性能分析工具大致分为:纯软件的测试工具、纯硬件的测试工具、软硬件结合的测试工具等三类。(4)内存分析。内存泄露会导致系统运行崩溃,尤其对于嵌入式系统,这种资源比较匮乏、使用非常广泛,且往往又处于重要部位的软件,将可能导致无法预料的损失。通过测量内存使用情况,可以了解程序内存分配的真实情况,发现对内存的不正常使用,在问题出现前发现征兆,在系统崩溃前发现内存泄露错误;通过内存分析,精确显示发生错误时的上下文情况,指出发生错误的原因。7.3.2覆盖分析测试覆盖,是对测试完全程度的评测,由测试需求和测试用例的覆盖或已执行代码的覆盖表示。通过覆盖指标,可以回答“测试的完全程度如何”这一问题。目前最常用的覆盖评测是基于需求的测试覆盖和基于代码的测试覆盖。简单的说,测试覆盖是就需求(基于需求的)或代码的设计∕实施标准(基于代码的)而言的完全程度的任意评测,如已设定测试用例的核实(基于需求的)或所有代码行的执行(基于代码的)。1.基于需求的测试覆盖如果需求已经完全分类,则基于需求的覆盖策略足以生成测试完全程度的可计量评测。例如,已经确定了所有性能测试需求,就可以引用测试结果得到评测,如已经核实了75%的性能测试需求。基于需求的测试覆盖在测试生命周期中要评测多次,并在测试生命周期的里程碑处提供测试覆盖的标识(如已计划的、已实施的、已执行的和成功的测试覆盖)。测试覆盖通过以下公式计算:测试覆盖=Tc∕RfT(7.1)式(7.1)中,Tc是用测试过程或测试用例表示的测试数(根据覆盖的内容不同,可以是已计划的、已实施的、已执行的、已成功的);RfT是测试需求总数。2.基于代码的测试覆盖基于代码的测试覆盖,评测测试过程中已经执行代码的多少,与之相对的是要执行剩余代码的多少。具体而言代码覆盖率分析是这样一个过程:●找出程序经过一系列测试而没有执行的部分代码;●创建一个附加的测试用例来增加覆盖率;●决定代码覆盖的定量度量。针对代码的测试覆盖率有以下一些度量方式:(1)语句覆盖(Statement
Coverage)。也称为行覆盖(line
coverage)、段覆盖(segment
coverage)和基本块覆盖(basic
block
coverage)。度量每一个可执行语句是否都被执行到了。优点是可以直接应用在目标代码上,不需要对源代码进行处理;缺点是对一些控制结构反应迟钝。(2)判定覆盖(Decision
Coverage)。也称为分支覆盖(branch
coverage)、所有边界覆盖(all-edges
coverage)、基本路径覆盖(basis
path
coverage)、判定路径覆盖(decision-decision-path或DDP
testing)。度量是否每个BOOL型的表达式取值true和false在控制结构中是否都被测试到了。优点是具有语句覆盖的简单性,但是没有语句覆盖的问题;缺点是忽略了在BOOL型表达式内部的BOOL取值。(3)条件覆盖(Condition
Coverage)。独立地度量每一个子表达式,报告每一个子表达式结果的true或false。和判定覆盖相似,但是对控制流更敏感。完全的条件覆盖并不能保证完全的判定覆盖。(4)路径覆盖(Path
Coverage)。也称为断言覆盖(predicate
coverage),度量每一个可能分支是否都被执行。优点是能够彻底测试。缺点有两个,一是路径是以分支的指数级别增加的,例如一个函数包含10个IF语句,就有1024条路径要测试,如果加入一个IF语句,路径数就达到2048条;二是许多路径不可能与执行的数据无关。(5)循环覆盖(Loop
Coverage)。度量是否执行每个循环体零次、一次还是多余一次(连续地)。对于do-while循环,循环覆盖度量是否执行了每个循环体一次还是多余一次(连续地)。对于while循环和for循环执行是否多于一次,该信息在其它覆盖率报告中是没有的。测试覆盖分析是一种对测试阶段度量及测试工作情况分析的好方法,可以使测试程度更为明确,阶段进度一目了然,统计值也便于管理部门对当前测试状态进行了解与把握。7.3.3黑盒测试与白盒测试黑盒测试和白盒测试是两种不同的测试方法,有的测试阶段是以黑盒测试为主,有的测试阶段是以白盒为主,有的测试阶段则将二者结合起来使用。1.黑盒测试黑盒测试也称功能测试或数据驱动测试,是已知产品所应具有的功能,通过测试来检测每个功能是否都正确时使用。在测试时,把程序看成是一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的前提下,测试者对程序接口进行测试,只检查程序功能是否按照需求规格说
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能穿戴产品可靠功能保障承诺函(3篇)
- 2026届浙江省嘉兴、舟山重点达标名校初三英语试题复习作业含解析
- 工程项目质量保障责任承诺书5篇范文
- 会议纪要快速生成与分发模板
- 幸福家园守护责任书5篇
- 企业信用信息查询回复(5篇)
- 准时完成生产订单承诺书5篇
- 维护信息隐秘安全承诺书范文6篇
- 企业品宣活动策划及执行工具集
- 公共关系危机传播管理预案
- 2025-2026学年 新人教版数学 八年级下册 第一次月考试卷(原卷)
- 2026年辽宁石化职业技术学院单招职业技能考试题库有答案详细解析
- 施工图纸审查流程方案
- (二模)黄冈市2026年3月高三年级模拟考试化学试卷(含答案解析)
- 城市更新合作开发计划
- (三调)武汉市2026届高中毕业生三月调研考试化学试卷(含答案)
- 碳足迹评估-第2篇-洞察与解读
- 《工程造价管理》中职全套教学课件
- 3 《做个“开心果”》 课件 2025-2026学年道德与法治二年级下册统编版
- 2026届江苏南京市高三一模高考模拟数学试卷(含答案详解)
- 2026年财政局事业单位招聘试题及答案解析
评论
0/150
提交评论