




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、理工学院考试成绩分析第一章 绪 论pb8.0是powerbuilder诞生10年来最新的一个版本,被认为是当今最具影响力的4gl/rad开发工具。sybase公司8月2日推出最新版本的应用开发工具pb8.0 (powerbuilder 8.0)。pb8.0通过诸多创新特性以及与应用服务器的无缝集成,提供了基于客户机/服务器、web及多层结构的快速开发环境。同时,卓越的应用开发效率及强大的web功能为新版本增色不少。 powerbuilder 80是什么sybase powerbuilder 8.0是易于使用的、可伸缩的、并经实践证明的快速集成开发环境,它在给用户提供一条转移到下一代平台的途径的
2、同时,使用户仍能够保护和扩展他现有的在技术和应用上的投资。多年来,用户一直赞赏powerbuilder 用于客户机/服务器应用开发的快捷性、简便性以及先进性。现在,用户可以在他熟悉的相同的powerbuilder环境中使用相同的技术来创建同样的功能强大的web和分布式应用。pb8.0新版增加了许多强大的功能,包括卓越的应用开发效率,与sybase easerver的紧密集成以及强大的web应用开发能力,具体表现在三个方面:在java应用开发方面,pb8.0使powerbuilder的代码能够在easerver服务器内部与java、c、c+,以及与其它组件一道执行。在客户机/服务器应用的开发方面
3、,pb8.0增加了国际化支持、扩展的数据库支持、增强的autoscript功能、例外处理功能的支持。在将客户机/服务器应用移植到web方面,pb8.0则提供对统一的用户界面、工作区与对象的支持,简化的web站点创建、基于事件驱动体系结构的高效页面开发功能,以及与easerver增强的集成。从熟悉的powerbuilder环境中,客户就可以充分地利用大量新的web应用开发功能,将应用、用户以及技术带到web世界与分布式计算领域。卓越开发效率powerbuilder通过提供大量新的功能和特征,继续拓展其快速应用开发和无比卓越的生产率传统,显著地加快了应用开发的周期。工作区与对象新的工作区意味着你能
4、够同时而且高效率地创建、预览和部署多个应用。在工作区中,你可以创建“对象”-你部署的最终产品。目前,powerbuilder具有三种类型的对象, 它们是基于windows的应用、部署到easerver 中的powerbuilder组件、以及web对象。系统目录树这一激活的、自动缩进的、适合浏览的资源,以分层的格式可视化地显示工作区中的内容、html页面、web应用可用的语言,以及驻留在easerver中的组件。它还使你能够拖放组件和对象,从而使程序代码的编写量降到最低。例外处理 powerbuilder 8.0现在包含例外处理类和语法分析功能,用于对应用程序内部的上下文相关的错误分析处理。你可
5、以很轻松地处理来自 easerver组件的例外,定义和丢弃你自己的例外类型。内置的国际化支持powerbuilder现在支持双字节字符集。数十项可用性增强 sybase公司已把50个以上增强的可用性增加到开发环境中。web的快速应用开发powerbuilder 8.0现在是一个综合性的web集成开发环境,它提供了一个基于图形用户界面、功能强大而快捷的环境,用于高级web应用和web站点的创建。从熟悉的powerbuilder环境中,你可以充分地利用大量新的web应用开发功能,将你的应用、你的用户以及你的技术带到web世界与分布式计算领域。无论是从事企业级系统开发,还是从事商业应用软件开发,高度
6、灵活性、快速性以及强大的功能都是你所需要的。而这些正是sybase powerbuilder 8.0所能提供的。借助于powerbuilder,你能够创建、增强和扩展驱动当今商务运作的客户机/服务器应用。而且,你还能够快速地创建并充分利用新的internet和分布式体系结构优势的复杂web及多层应用。紧密集成easerver easerver是sybase公司的一个独具特色的应用服务器,它融合了组件事务处理服务器和动态页面服务器的功能。 这就是powerbuilder提供与j2ee应用服务器easerver之间无缝集成用于应用开发、测试、调试和部署过程的原因。利用easerver,你就能够支持
7、包括corba、javabeans与enterprise javabeans、com与c/c+组件在内的不同种类的组件模型以及本地powerbuilder组件。easerver还提供了你部署全球应用所需要的负荷平衡、高可用性、高安全性,以及高伸缩性特性。 idechanges : pb8.0用诸多细致的视觉手法进一步改进了它的ide(集成开发环境),由此反映出该产品在结构上的一些重大改变,包括了开发人员生产力、web客户开发和easerver集成三个方面的重要升级。 workspaces和系统树窗口 pb8.0提供的workspace使开发人员可以同时在多个应用或者组件上工作。系统树窗口为开发
8、人员提供了一个关于workspace的活动状态视图,所有的组件、功能、属性、事件和结构都可以通过系统树窗口来访问。 输出窗口和剪贴(clip)窗口 pb8.0新增了输出窗口和剪贴窗口。系统树窗口和workspace的强大功能,再加上输出窗口、剪贴窗口的帮助,pb8.0的ide已经有了显著的改进。 与powersite合并 将powersite完全整合进pb8.0,使pb8.0能够轻松建立事务型web应用,同时也消除了sybase产品线的重叠。 easerver整合 存在于easerver上的pb8.0应用程序和不可视对象现在可以与ejb组件直接进行通信,从而为开发人员提供了更好的组件间的互操作
9、能力以及与easerver更好的集成,普及并简化了pb8.0的组件化开发。 web功能 将powersite整合进pb,使得powerbuilder可以开发扩展的瘦客户应用,而增加瘦客户功能对促进web应用开发是不可或缺的。 sybase做了很多努力来满足pb用户的需求,让他们发现这些新特性对他们构建或维护两层事务型应用非常有用。同时,sybase希望这些新特性也能告诉所有人,powerbuilder8.0能够轻松构建更为复杂的n层和以web为中心的应用。使用powerbuider可以快速地开发出当今最流行的各种商业应用,如客户/服务器应用、分布式应用、基于组件的应用和web应用。在power
10、buider8.0强大的功能和友好的集成开发环境支持下,开发人员的效率得到空前的提高,是程序设计与开发工作变的更加有趣,仿佛是一个艺术家在创作一件艺术品,因此它深受国内外广大开发人员的喜爱。作为一名企业应用的开发人员,你必须紧跟市场和企业规则的变化,不断地为企业用户开发出优质的应用系统,以使企业能在信息时代立于不败之地。选择powerbuider8.0,定能使你从容应对各种变化,在激烈竞争环境中游刃有余。在满足用户和完成系统的需要前提下,我们认为选用powerbuider8.0来开发本次毕业设计课题是最佳选择。sybase做了很多努力来满足pb用户的需求,让他们发现这些新特性对他们构建或维护两
11、层事务型应用非常有用。同时,sybase希望这些新特性也能告诉所有人,powerbuilder8.0能够轻松构建更为复杂的n层和以web为中心的应用。 第二章 可行性分析 为了以最小的代价在尽可能短的时间内确定问题是否能够解决,在进行设计开发前首先进行了可行性分析。 考试是教学过程的重要环节,认真、严密的考试过程,科学、准确的结果分析可以为评价教学效果,以及提高教学质量、改进教学方法和教学管理工作提供可靠的依据。 a、新学期开始时,对应每一位新生输入相关的详细记录。 b、建立各类课程的详细记录。 c、各专业每学期要选择各类课程安排本学期的教学计划。 d、各个对应专业年纪的学生可选择教学计划范围
12、内的课程或选择重修课程并在每学期末输入成绩。e、随时可对学生记录、课程信息及学生成绩进行查询并且统计分析。f、只有有权限的人才可以对数据库进行维护。第三章 需求分析学生成绩管理工作被视作高校管理工作中一项不容忽视的重要分支,其工作量大,涉及面广,学生成绩管理工作进行的好坏直接影响着整个高校管理工作的各个环节。由于成绩管理工作的本身特点及特殊性质,单纯依靠人力,会使从事这项工作的管理人员过度疲劳,难免会发生许多错误,难以做到管理的规范化,这不符合管理工作的令后发展趋势。因此,需要开发一种功能全面,操作简便的管理系统来辅助作用,人机配合,能够使机器承担部分工作,是管理员逐步摆脱一些无谓的,烦琐的业
13、务,这对充分利用人力资源的主导作用及使管理工作逐步步入规范化轨道有着重要意义。根据上一章可行性研究及对用户调查,我们可确定本系统必须完成的工作,下面将来做简单介绍。1 输入部分新学期开始需将学生基本信息输入,一般来讲,学生基本信息有姓名,学号,还有学生所属专业。在学生基本信息里可以选择同样专业的学生,可以对学生基本信息进行修改。每个新学期的信息都不同,还要设置学期。在设置专业时要设专业名称和专业代号,以便查询或者维护。每学期末应输入学生的各门课程成绩,但必须是该学生所在专业年级在本学期开了这门课,所以输入部分还需试卷登记,在试卷登记里要详细区分每个专业,每个班级的试卷。试卷登记就需要试卷信息。
14、在输入模块里需要专业设置,学期设置,学生信息,试卷登记,试卷信息。该部分是本系统最重要部分,着重分析,还应考虑数据的完整性,使用视图。2 统计分析部分为了是各项记录可供有关人员随时查询,统计分析当中需要查询部分,查询应可以用按学生学号和学生姓名检索该学生的所有信息。期末考试结束后,各教研室应至少要抽取一个授课班进行试题的难度,区分度分析。a考试难度指数(p)值的计算方法:客观题难度指数计算公式:p=r/n(r为某一题参加考试的学生中答对的人数,n为参加考试的学生数。)非客观题难度指数计算公式:p=x/w(x为某题的平均分,w为该题的最高分值)b试题区分度(d)值的计算方法:计算某一班学生答某一
15、题的区分度,首先要在该班中确定一个高分组,一个第分组。在考生中按名次排列位于前25%的学生为高分组,位于后25%的学生为底分组。客观题分度计算公式:d=ph-pl(ph为高分组学生答对的百分比,pl为底分组学生答对的百分比)难度指数和区分度计算完后要在教研室同考试题一同存档,为以后的命题工作提供依据。另外试题的难度情况和区分度情况要写入下表考试总结和成绩分析中。标准差:数据离散趋势最灵敏、最标准的指标,能准确反映数据的差异程度,是对数局进行同意分析的前提与基础。客观题:评分而得名。试题类型有概念题、见大题、天空题、排列题、多重选择题等。优点:有明确的标准答案,简单,题量多,有足够的覆盖率:缺点
16、:难于测量综合、平分两级复杂的认知目标。区分度:用极端分组把学生按其水平分开的能力。具有良好的能力。具有良好的句粉能力的测验能使水平高的学生得高分,水平低的学生得低分,因此,区分度通常作为测验是否具有效应的“显示器”,是坚定试题质量、筛选试题的主要指标与依据。学生成绩统计专业年级考试人数缺考人数平均成绩标准差各额分数段人数缺考学生名单9080706060学生考试成绩频数分布图第四章 总体设计 本次设计选择powerbuilder8.0为开发工具,以mirocsoft sql server2000分布式客户服务器数据库系统,作为数据库后台,windows2000操作平台。学生成绩分析系统是一个很
17、大的系统,若要求一个人独立地较完善地完成各项功能,在如此短暂的时间内简直是天方夜谈。所以,我侧重于输入模块进行了本次设计。下面我将分为两部分介绍总体设计。本课题采用microsoft sql server2000作为数据库后台,sql语言功能丰富,使用方式灵活,语言简洁易学,它的功能包括查询,操纵,定义和控制4个方面。它的主要特点是:一体化,联机交互使用和嵌入式有统一的语法结构,过度非过程化以及语言简洁,易学易用等。程序设计: 对整个系统动能有了总体上的认识之后,应对每一个模块的任务有一个清晰的认识,以防代码重复,责任模糊而浪费不必要的工作量。下面谈一谈我对每一个模块总体认识。1 数据输入:
18、a、 专业设置:可新增输入专业代码及专业名称。也可以删除专业代码及其专业名称 b、学期设置:可新增输入学期 c、学生信息:可新增输入学号,姓名和专业。 d、试卷登记:显示各专业每个学期的试卷登记信息。 e、试卷信息:显示各专业每个学期的每一学生的试卷信息、即考试成绩。2 统计分析模块: a、查找学生:可以按学号进行查询也可按姓名进行查询。 b、成绩统计和频数分布图。 c、成绩分析。3 退出系统。sql的数据定义包括3部分:定义基本表,定义视图和定义索引。视图是从一个或几个基本表(或视图)导出的表。在应用系统中视图是极其重要组成部分。它的外模式是由若干基本表和若干视图组成的,视图是一个虚表。它的
19、优点有:1 对于数据库的重构造提供了一定程度上的逻辑独立性。2 简化了用户观点3 视图的机制是不同的用户能以不同的方式看待同一数据。4 视图的机制对机密数据提供了自动的安全保护功能。索引是数据库检索经常用到的对象,为了提高查找速度应该给表建立索引。索引可以是唯一的或不唯一的,可以是簇类的或非簇类的。对一个基本表,可以根据应用环境的需要建立若干索引,以提供多种存取路径,提高系统的运行速度。根据以上分析将数据库设计成若干个基本表,它们是paper试卷信息含 义字 段 名类 型长 度主 键专业代码spec_codechar7学 期semesterchar9第一题分数due1tinyint1第二题分数
20、due2tinyint1第三题分数due3tinyint1第四题分数due4tinyint1第五题分数due5tinyint1第六题分数due6tinyint1第七题分数due7tinyint1第八题分数due8tinyint1第九题分数due9tinyint1第十题分数due10tinyint1说明:a、 专业代码和学期作为主码。b、 due1due10均为该题目满分成绩。score成绩信息含 义字 段 名类 型长 度主 键学生学号stu_idchar10学 期semeterchar9第一题分数score1float8第二题分数score2float8第三题分数score3float8第四题
21、分数score4float8第五题分数score5float8第六题分数score6float8第七题分数score7float8第八题分数score8float8第九题分数score9float8第十题分数score10float8是否缺考absenttinyint1说明:a、 学生学号为主键。b、 score1score10为该学生在考试中取得的考试分数。c、 是否缺考、默认值为0,即为不缺考student学生信息含 义字 段 名类 型长 度主 键学生学号stu_idchar10学生姓名stu_namechar10专业代码spec_codechar7说明:a、 学生学号为主码。semete
22、r学期信息含 义字 段 名类 型长 度主 键学 期semeterchar9说明:a、学期为主码。specicalty专业信息含 义字 段 名类 型长 度主 键专业代码spec_codechar7专业名称spec_namechar22说明:a、 专业代码为主码。各表之间的关系第五章 详细设计本章将想次地对各个模块进行分解和剖析,包括程序、变量使用和窗体的构成等。系统氛围四个模块,下面依次对各个模块进行叙述。基本界面:专业设置窗口:数据窗口dw_1连接dataobject:dw_spec学期设置:数据窗口dw_1连接dataobject:dw_xueqi select semester.semes
23、ter from semester 学生基本信息:数据窗口dw_1连接dataobject:dw_xueshengxinxi代码部分: select student.stu_id, student.stu_name, student.spec_code from student where student.spec_code = :scode 试卷登记:数据窗口dw_1连接dataobject:dw_analysisselect specialty.spec_name, paper.semester, paper.due1, paper.due2, paper.due3, paper.due4
24、, paper.due5, paper.due6, paper.due7, paper.due8, paper.due9, paper.due10, paper.spec_code from paper, specialty where ( paper.spec_code = specialty.spec_code ) and ( ( paper.spec_code = :spec ) and ( paper.semester = :semes ) ) 试卷信息:数据窗口dw_1连接dataobject:dw_analysis控键:tv_1代码:treeviewitem tvithis.get
25、item(handle,tvi)var_spec = tvi.datathis.hideselection = falseparent.init_score()控键:tv_2代码:treeviewitem tvithis.getitem(handle,tvi)var_semeter = tvi.datathis.hideselection = falseparent.init_score()查找学生:数据窗口dw_1连接dataobject:dw_analysis检索:string get_strget_str = trim(sle_1.text)if sle_1.text = "&
26、quot; thenreturnend ifchoose case tab_1.selectedtabcase 1dw_1.dataobject = "dw_find_stu_by_id"dw_1.settransobject(sqlca)dw_1.retrieve(get_str)case 2dw_1.dataobject = "dw_find_stu_by_name"dw_1.settransobject(sqlca)dw_1.retrieve(get_str)end choose成绩统计和频数分布图:datawindowchild dwc_scor
27、e, dwc_absent,dwc_graphdw_1.getchild("dw_score", dwc_score)dw_1.getchild("dw_graph1",dwc_graph)if var_semester <> "" thendecimal there_paperselect top 1 paper.due1 into :there_paper from paper where ( paper.semester = :var_semester ) ; if sqlca.sqlcode <> 0
28、thenmessagebox("´错误","您所指定的专业在指定的学期不存在试卷!")dwc_score.settransobject(sqlca)dwc_score.retrieve("")dwc_graph.settransobject(sqlca)dwc_graph.retrieve("")return end ifdwc_score.settransobject(sqlca)dwc_score.retrieve(var_semester)dwc_graph.settransobject(sqlca
29、)dwc_graph.retrieve(var_semester,var_spec)elsedwc_score.settransobject(sqlca)dwc_score.retrieve("")dwc_graph.settransobject(sqlca)dwc_graph.retrieve("","")end if成绩分析:datawindowchild dwc_section1,dwc_section2dw_1.getchild("dw_section1", dwc_section1)/dw_1.getch
30、ild("dw_section2", dwc_section2)if var_semester <> "" thendecimal there_paper6,10select top 1 paper.due1, paper.due2, paper.due3, paper.due4, paper.due5, paper.due6, paper.due7, paper.due8, paper.due9, paper.due10 into :there_paper1,1, :there_paper1,2, :there_paper1,3, :the
31、re_paper1,4, :there_paper1,5, :there_paper1,6, :there_paper1,7, :there_paper1,8, :there_paper1,9, :there_paper1,10 from paper where ( paper.semester = :var_semester ) ; if sqlca.sqlcode <> 0 thenmessagebox("错误","您所指定的专业在指定的学期不存在试卷!")dwc_section1.settransobject(sqlca)dwc_sec
32、tion1.retrieve()/dwc_section2.settransobject(sqlca)/dwc_section2.retrieve("","")return end ifint var_questions = 1 /get questins numbersfor var_questions=1 to 10if there_paper1,var_questions = 0 then exitnextvar_questions -= 1/calculate difficultreal temp2,10select sum( case when
33、 paper.due1=score.score1 then 1 else 0 end), sum( case when paper.due2=score.score2 then 1 else 0 end), sum( case when paper.due3=score.score3 then 1 else 0 end), sum( case when paper.due4=score.score4 then 1 else 0 end), sum( case when paper.due5=score.score5 then 1 else 0 end), sum( case when pape
34、r.due6=score.score6 then 1 else 0 end), sum( case when paper.due7=score.score7 then 1 else 0 end), sum( case when paper.due8=score.score8 then 1 else 0 end), sum( case when paper.due9=score.score9 then 1 else 0 end), sum( case when paper.due10=score.score10 then 1 else 0 end),avg( score.score1), max
35、(score.score1), avg( score.score2), max(score.score2),avg( score.score3), max(score.score3),avg( score.score4), max(score.score4),avg( score.score5), max(score.score5),avg( score.score6), max(score.score6),avg( score.score7), max(score.score7),avg( score.score8), max(score.score8),avg( score.score9)
36、, max(score.score9),avg( score.score10), max(score.score10)into :there_paper2,1, :there_paper2,2, :there_paper2,3, :there_paper2,4, :there_paper2,5, :there_paper2,6, :there_paper2,7, :there_paper2,8, :there_paper2,9, :there_paper2,10, :temp1,1,:temp2,1,:temp1,2,:temp2,2,:temp1,3,:temp2,3,:temp1,4,:t
37、emp2,4,:temp1,5,:temp2,5,:temp1,6,:temp2,6,:temp1,7,:temp2,7,:temp1,8,:temp2,8,:temp1,9,:temp2,9,:temp1,10,:temp2,10 from score, paper, student where ( score.semester = paper.semester ) and ( paper.spec_code = student.spec_code ) and ( score.stu_id = student.stu_id ) and ( ( score.semester = :var_se
38、mester ) and ( score.absent = 0 ) ) ; int stu_nums stu_nums = there_paper2,var_questions+1 /the number of students int i for i = 1 to var_questionsthere_paper2,i = round( there_paper2,1 /stu_nums, 2) next if temp2,var_questions = 0 thenthere_paper2,var_questions = 0elsethere_paper2,var_questions = r
39、ound(temp1,var_questions / temp2,var_questions, 2)end ifreal data_trans8for i = 1 to var_questionschoose case there_paper2,icase 0 to 0.30data_trans1 += 1case 0.31 to 0.50data_trans2 += 1case 0.51 to 0.70data_trans3 += 1case 0.71 to 1data_trans4 += 1end choosenextfor i = 1 to 4data_transi = round( 1
40、00*data_transi / var_questions, 2)nextdwc_section1.settransobject(sqlca)dwc_section1.retrieve()/dwc_section2.settransobject(sqlca)/dwc_section2.retrieve(var_semester,var_spec)if dwc_section1.rowcount() = 0 thendwc_section1.insertrow(0)end ifdwc_section1.setitem(1, "difficult30",data_trans1
41、)dwc_section1.setitem(1, "difficult50",data_trans2)dwc_section1.setitem(1, "difficult70",data_trans3)dwc_section1.setitem(1, "difficult100",data_trans4)/calculate partitiondatastore ds_difficultds_difficult = create datastoreds_difficult.dataobject = "dw_analysis_t
42、op25"ds_difficult.settransobject(sqlca)ds_difficult.retrieve(var_semester,var_spec)stu_nums = ds_difficult.getitemdecimal(1,"compute_stu_num")for i = 1 to var_questionsthere_paper1,i = ds_difficult.getitemdecimal(1,"compute_"+trim(string(i)nextfor i = 1 to var_questionsthere
43、_paper2,i = ds_difficult.getitemdecimal(1,"compute_"+trim(string(i+10)nextds_difficult.dataobject = "dw_analysis_end25"ds_difficult.settransobject(sqlca)ds_difficult.retrieve(var_semester,var_spec)for i = 1 to var_questionsthere_paper3,i = ds_difficult.getitemdecimal(1,"comp
44、ute_"+trim(string(i)nextfor i = 1 to var_questionsthere_paper4,i = ds_difficult.getitemdecimal(1,"compute_"+trim(string(i+10)nextdestroy ds_difficultselect max(score.score1),max(score.score2),max(score.score3),max(score.score4), max(score.score5),max(score.score6),max(score.score7),ma
45、x(score.score8), max(score.score9),max(score.score10),min( score.score1), min( score.score2), min( score.score3), min( score.score4),min( score.score5), min( score.score6), min( score.score7), min( score.score8),min( score.score9), min( score.score10)into :there_paper5,1, :there_paper5,2, :there_pap
46、er5,3, :there_paper5,4, :there_paper5,5, :there_paper5,6, :there_paper5,7, :there_paper5,8, :there_paper5,9, :there_paper5,10, :there_paper6,1, :there_paper6,2, :there_paper6,3, :there_paper6,4, :there_paper6,5, :there_paper6,6, :there_paper6,7, :there_paper6,8, :there_paper6,9, :there_paper6,10 fro
47、m score, paper, student where ( score.semester = paper.semester ) and ( paper.spec_code = student.spec_code ) and ( score.stu_id = student.stu_id ) and ( ( score.semester = :var_semester ) and ( score.absent = 0 ) ) ;for i = 1 to var_questionstemp1,i = round(there_paper1,i - there_paper3,i) / stu_nu
48、ms, 2)nextif there_paper5,var_questions - there_paper6,var_questions <> 0 thentemp1,var_questions = round( (there_paper2,var_questions - there_paper4,var_questions) / (there_paper5,var_questions - there_paper6,var_questions)*stu_nums), 2)elsetemp1,var_questions = 0end iffor i = 1 to var_questi
49、onschoose case temp1,icase is <= 0.19data_trans5 += 1case 0.20 to 0.29data_trans6 += 1case 0.30 to 0.39data_trans7 += 1case is >= 0.40 data_trans8 += 1end choosenextfor i = 5 to 8data_transi = round( 100*data_transi / var_questions, 2)nextdwc_section1.setitem(1, "part19",data_trans5)
50、dwc_section1.setitem(1, "part29",data_trans6)dwc_section1.setitem(1, "part39",data_trans7)dwc_section1.setitem(1, "part40",data_trans8)elsedwc_section1.settransobject(sqlca)dwc_section1.retrieve()/dwc_section2.settransobject(sqlca)/dwc_section2.retrieve("",&qu
51、ot;")end if第六章 测 试测试在开发软件过程中是一个不可缺少的部分。因为在开发软件系统的漫长过程中,面对着极其错综复杂的问题,人的主观认识不可能完全符合客观现实,与工程密切相关的各类人员之间的通信和配合也不可能完美无缺,因此,在软件生命周期的各个阶段都不可避免地产生差错。我们力求在每个阶段结束之前通过严格的技术审查,尽可能早地发现并纠正错误;但是,经验表明审查并不能发现所有的差错,此外在编码过程中还不可避免地会引入一些新的错误。如果在软件生产性运行之前,没有发现并纠正软件中的大部分差错,则这些错误迟早在生产过程中暴露出来,那时不仅仅改正这些错误的代价更高,而且往往会造成很恶劣的后果。测试的目的就是在软件投入生产运行之前,尽可能多地发现并纠正软件中的错误。基于上述
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安陆市2024-2025学年八年级下学期语文期中测试试卷
- 安徽省阜阳市太和县2023-2024学年高二上学期第一次月考化学试题及答案
- 浦东新区2025学年度第二学期教学质量检测
- 浙江省杭州市青春中学2025-2026学年下学期八年级历史与社会、道德与法治期中试卷(无答案)
- 2025-2026学年苏科版八年级数学上册第一次月考检测卷(含答案)
- 道路运输土方合同范本
- 闲置东西收购合同范本
- 托管联盟经营合同范本
- 入股养殖公司合同范本
- 单位电脑采购合同范本
- Revit-基础教程课件
- 大学美育(第二版) 课件 第五单元:书法艺术
- 消防工程技术咨询合同
- 从《史记》看司马迁的命运观
- 高中新外研版单词总表(必修123+选修1234)
- 区域新能源集控中心建设方案
- 电气控制与plc实训教程PPT完整全套教学课件
- 《寻梦环游记(2017)》完整中英文对照剧本
- 2023年医药卫生技能鉴定考试-角膜接触镜验配员考试参考题库(含答案)
- 肿瘤患者食欲症状问卷
- 高考语文专题复习:小说阅读特殊“异常视角”知识-儿童视角、女性视角、动物视角
评论
0/150
提交评论