软件定义:能够完成预定功能和性能的可执行的指令(计算机程序);使得程序能够适当地操作信息的数据结构;
描述程序的操作和使用的文档.
软件测试定义:IEEE/ANSI标准:在既定的状况条件下,运行一个系统或组建,观察记录结果,并对其某些方面进行评价的过程。《软件测试技巧》:软件测试是为了发现错误而运行程序的过程。
广义软件测试的定义:由确认、验证、测试3方面组成。
软件开发过程:需求分析(可行性报告,项目初步开发计划,需求规格说明,用户手册概要,测试计划);设计(概要:建立系统总体结构,划分功能模块;定义各功能模块接口;数据库设计;指定组装测试计划.详细:设计各模块具体实现算法;确定模块间的详细接口;指定模块测试方案)[设计说明书,测试计划]编码(编程,进行模块调试和测试,编写用户手册)[调试报告,用户手册]测试、维护(纠错、适应、增强、预防)
软件质量:与软件产品满足规定的和隐含需求的能力有关的特性
1.运行质量成本:企业内部损失成本、鉴定成本、预防成本和外部损失成本
软件= 程序(数据) + 文档+ 服务2.软件产品组成部分:程序代码、帮助文件、用户手册、样本和示例、标签、产品支持信息、图表和标志、错误信息、广告与宣传材料、软件的安装、软件说明文件、测试错误提示信息
3.软件特征:功能的多样性、实现的多样性、能见度低、结构的合理性差
4.项目MM:全程负责整个软件项目的开发。系统设计师:设计整个系统构架或软件构思。程序员:负责设计、编写程序,并修改软件中的缺陷。
软件测试员(QA):负责找出并报告软件产品的问题,与开发组密切合作,进行测试并报告发现的问题。
技术制作、用户助手、用户培训员、手册编写和文件档案专员:负责编写软件产品附带的文件和联机文档。
结构管理和制作人员:负责将程序员编写的全部文档资料合并成一个软件包
5.软件生命周期:
6.维护阶段可能遇到四类修改要完成:纠错、适应、增强、预防
7.软件开发模型:
a.瀑布模式(优点:保证整个软件产品较高的质量和系统在整体上的充分把握,使系统具备良好的扩展性和可维护性):易于理解、调研开发的阶段性、强调早期计划及需求调查、确定何时产生可交付的产品及何时进行评审和审查、强调产品测试
大棒模式(既没有规格说明,没有经过设计,软件随客户需要不断被修改):优点(简单)几乎无计划。可能是开发者的“突发奇想”,项目成员精力都花在开发软件和编写代码上。
缺点:开发过程非工程化,随意性大。
最终的软件产品是什么样不可知。
边写边改模式(在大棒模式基础上考
虑了产品的要求。项目成员通常只有
粗略的想法就进行简单的设计,然后
开始漫
长的编码、测试、修复这样一个循环
的过程。在认为无法更精细的描述软
件产品要求时,就发布产品):优点:能
够较为迅速展现成果,适合需要快速
制作而且用完就扔的小项目.缺点:
编码和测试可能是长期循环往复的
过程。
原型模式(基本需求分析后,快速开发
出产品原型,然后基于这个原型,更
好了解客户需求,不断修改这个原型,
到双方认可的程度,再详细分析、设
计和编程,最终开发出令客户满意的
产品)
快速应用(RAD)模式(通过使用基
于构件的开发方法来缩短产品开发
周期,提高开发速度。实现的前提是
做好需求分析,且项目范围明确,这
点正好和
原型模型相反)
增量模式:描述软件产品不同阶段是
按产品所具有的功能进行划分,先开
发主要功能或用户最需要的功能,随
着时
间推进,不断增加新的辅助功能或次
要功能,最终开发出强大的、功能完
善的、高质量的、稳定的产品。
迭代模式:描述软件产品不同阶段是
按产品深度或细化程度来划分。先将
产品的整个框架建立起来,在系统初
期,
已具有用户所需求全部功能。随着时
间推进,不断细化已有功能或完善已
有功能,这个过程好像是一个迭代的
过程。最终实现一个强大、功能完善、
高质量、稳定的产品
螺旋模式:开始时不必详细定义所有
细节,从小开始,定义重要功能,尽
量实现,接受客户反馈,进入下一阶
段,并重复上述过程,直到获得最终
产品。
敏捷开发敏捷方法论采用迭代/增量
开发的过程模型:以人为核心、迭代、
循序渐进的开发方法。
? 组织上,软件项目的构建被切分
成多个子项目,各个子
项目的成果都经过测试,具备集成和
可运行的特征。
? 时间上,相对于传统的瀑布式开
发,迭代开发把软件生
命周期分成很多个小周期(一般不大
于2个月,建议2周)每一次迭代
都可以生成一个可运行、可验证的版
本并确保软件不断的增加新的价值
敏捷开发方法:精益开发
(LeanDevelopment)、极限编程(XP)[编
写用户案例,架构规范,实施规划,
迭代计划,代码开发、单元测试、验
收测试]、
S crum(是一个敏捷开发框架,由一个
开发过程,几种角色以及一套规范的
实施方法组成.可运用于软件开发,项
目维护,也可用来作为一种管理敏捷
项目的框架)定义了四种角色:产品
拥有者、利益相关者、Scrum专家、
团队成员
进入sprint开发周期,在此周期内,
每天需要召开DailyScrum meeting
敏捷开发原则和方法:迭代式开发、
增量交付、开发团队和用户反馈推动
产品开发、持续集成、开发团队自我
管理
MSF:经验知识库(若干原则和准则:
基础原则:观念、项目管理准则、风
险管理准则、就绪管理准则二种模型:
小组模型、监管模型)
UML代表着软件建模的发展趋势
8.敏捷宣言:个体和交互胜过过程和
工具、可以工作的软件胜过面面俱到
的文档、客户合作胜过合同谈判、响
应变化胜过遵循计划
MSF检查点主要检查站和临时检查
点
MSF准则:风险管理:风险识别、
分析、计划、跟踪、控制、学习
就绪管理:定义、评估、变更(培训、
进度跟踪),评价项目管理:项目范
围、变更控制、预算、成本控制和时
间表、沟通、供应商管理、
9.RUP:面向对象且基于网络的程
序开发方法论
RUP软件开发生命周期是一个二维
的软件开发模型
RUP迭代式开发(生命周期):周期、
阶段、迭代和里程碑
周期(四阶段):初始、细化、构造、
提交(动态结构:每个阶段分解为
迭代)
RUP迭代开发过程(迭代的个数、每
个迭代的延续时间、目标)是受控的
静态结构:RUP采用以下四个基本
模型元素,组织和构造系统开发过程
Workers(角色)、Activities(明确目的的
独立工作单元)、Artifact (多种形式存
在:模型、源代码、可执行文件和文
档)、Workflows(产生一些有价值的
Artifacts)
两种组织WF的方式:核心工作流(9
个(6个核心过程+3个核心支持),被
轮流使用,在每一次迭代中以不同重
点和强度重复)和迭代工作流
RUP裁剪分以下几步:1) 确定本项
目需要哪些工作流。2) 确定每个工
作流需要哪些制品。3)以风险控制为
原则确定4个阶段之间如何演进。4)
确定每个阶段内的迭代计划。规划
RUP的4个阶段中每次迭代开发的内
容。5) 规划工作流内部结构。通常
用活动图的形式给出
最佳软件工程实践:迭代式开发、管
理需求、基于组件的体系结构、可视
化建模、验证软件质量、控制软件变
更
10.不同的项目需要不同的方法论,
一个项目的最佳过程是这个项目所
能负担的最小过程自我定义的软件
过程是最好的
11.模型的是指:对现实的简化
混合模型、
12.建模目标:便于展现系统、允许
指定系统的结构或行为、提供构造系
统的模板、记录决策
两种建模方法:基于算法(难维护)、
面向对象(主要模块是对象或类)
13.模型图:结构类(类图、对象图、
组件图、配置图)、行为类(用例图、
序列图、行为图、协作图、状态图)、
模型管理类(软件包、子系统、模型)
14.缺陷(破坏程序正常运行)error:在
软件生存期内不希望或不可接受的
人为错误,其结果是导致软件缺陷的
产生。bug:是存在于软件(文档、
数据、程序)之中不希望或不可接受
的偏差。其结果是软件运行于某一特
定条件时出现软件故障,这时称软件
缺陷被激活。fault:运行过程中出现
的不希望或不可接受的内部状态。此
时若无适当措施(容错)加以及时处理,
便产生软件失效。failture:是指软件
运行时产生的一种不希望或不可接
受的外部行为结果
15.错误分类(软测观点):功能错误、
系统错误、加工错误、数据错误、代
码错误逻辑错误(按生存期不同阶段
分):问题定义错误、规格说明错误、
设计错误、编码错误
16.缺陷构成(技术、团队、软件本身)
17.软件缺陷状态:激活(问题还没解
决)、已修正(问题解决或通过单元测
试)、关闭或非激活(bug已改)、
Hold(无法解决的bug)、Differed(不需
解决)
18.可靠性指标:MTBF:平均故障间隔
时间(t失效时间) MTTF:平均故障
时间
软件测试则是保证软件质量、提高软
件可靠性的最重要手段
测试与开发:项目规划:负责从单元测
试到系统测试的整个测试阶段的监
控。需求分析:确定测试需求分析、
系统测试计划的制定.评审后成为管
理项目设计:确保集成测试计划和单
元测试计划完成。编码:由开发人员
进行自己负责部分测试代码.项目较
大时,由专人进行编码阶段的测试任
务。测试(单元集成系统):依据测试代
码进行测试并提交相应测试状态报
告和测试结束报告
软件错误不可避免
19.测试步骤:详细规定了如何设置、
执行、评估特定的测试用例。
精确和准确:准确是指得到的测试结
果与真实值之间的接近程度。
精确是指同样环境下重复测测试所
得到的结果之间的重现性。
确认和验证:确认是保证软件符合产
品说明书的过程。
验证是保证软件满足用户要求的过
程。
20.测试分类:按测试过程:单元、
集成、确认、系统、验收。按测试用
例设计方法分:白盒(结构或逻辑驱动测试[语句覆盖、判定覆盖(支覆盖)、条件覆盖、判定/条件覆盖、条件组合覆盖、基本路径测试])、黑盒(功能或数据驱动测试)、灰盒测试(介于黑白之间)
按实施对象分:Alpha测试(企业内部测试):由用户在开发环境下进行测试,也可由公司内部的用户在模拟实际操作环境下进行的受控测试。Beta 测试(最终用户测试):是软件的多个用户在实际环境下进行的测试。第三方测试(独立测试)按执行方式分:人工测试:手工执行的测试; 自动化测试
按测试方式分:静态测试:只对被测程序进行特性分析(文档评审、代码检查、代码度量)包括检查单和静态分析方法测试的内容与选择的测试方法有关动态测试:必须真正运行被测试的程序(主要是白盒为主和黑盒为辅)通常对软件单元的功能、性能、接口、局部数据结构、独立路径、出错处理、边界条件和内存使用情况进行测试
按测试形态分:建构性测试(当程序还是处于建设阶段时所进行的测试;是属于前置性的测试,它主要是偏重于程序端的功能测试,以确保程序执行运行正常);系统测试(针对概要设计,是针对系统的行为来做测试;是属于中后期的整合测试,所进行的测试是以使用者的观点为主,模拟外界使用者会如何的使用产品); 特殊测试:根据产品的本质特性来安排或剔除特殊测试
完全测试是不可能的,测试需要终止测试原则:尽早和不断测试;测试用例要有测试输入和对应的输出;程序员避免检查自己的程序;设计测试用例应包含合理的和不合理的输入条件;妥善保存测试计划,测试用例,出错统计和最终分析报告;测试需要终止;进行正确判断;对每一个测试做全面的检查;时间服从质量;合理取舍,根据风险分析决定哪些故障必须修复,哪些故障可以不修复
21.好测试用例4特性:检测软件质量的有效性,是否能发现缺陷,或至少可能发现缺陷;可仿效的测试用例可以测试很多内容,因而减少测试用例的数量;经济性,测试用例的执行、分析和调试是否经济;测试用例的可修改性,每次软件修改后对测试用例的维护成本
22.V模型价值:非常明确标明测试过程中的不同级别,并且描述了这些测试阶段和开发过程各阶段的对应关系
23.(每阶段要检测)测试对象是程序
需求分析验收测试
概要测试(开发之后测试)系统测试
详细设计集成测试
编码单元测试
价值明确标明测试过程中不同级别,并描述了这些测试阶段和开发过程各阶段的对应关系问题:测试在开发之后、测试对象是程序本身、易导致需求阶段的错误直到系统测试阶段才被发现
24.W模型(整个开发周期测试对象:程序需求设计): 是V模型的改进,主要思想:尽早和不断地进行软件测试。优点:强调了测试计划等工作的先行
和对系统需求和设计的测试。
缺点:没有对软件测试流程予以说明
25.H模型(将测试作为独立流程,贯穿
整个开发周期,与其他流程并行,同
时测试准备和测试执行分离)特性:测
试不仅仅指测试的执行,还包括许多
其他活动;测试是一个独立流程,贯穿
产品整个生命周期;与其它流程并发
进行;测试要尽早准备,尽早执行;测
试是根据被测对象的不同而分层进
行.意义:测试准备和测试执行分离,
有利于资源调配,降低成本,提高效率;
充分体现测试过程(不是技术)的复杂
性;有组织、结构化的独立流程,有助
于跟踪测试投入的流向
26.前置测试:(V模型和X模型是当
前被测试专家所推崇的主要的测试
模型。前置测试从V模型和X模型中
汲取其中精华,并设法弥补其不足之
处。虽然前置测试并不完美,但以带
来明显益处)开发和测试相结合,标识
了项目生命周期从开始到结束之间
的关键行为,对每个交付内容测试:
每个交付的开发结果都必须通过一
定的方式进行测试
设计阶段是做测试计划和测试设计
的最好时机(较低的成本及早发现错
误)
验收test应独立于技术测试(针对码)
27.结论:实测中,灵活运用各模型
优点,通常在W模型框架下,运用H
模型的思想进行独立测试。当有变更
时,按X模型和前置模型的思想进行
处理
27.测试用例:为特定目的而设计的
一组测试输入、执行条件和预期的结
果。
执行的最小实体编写标准::标识符、
测试项、测试环境要求、输入标准、
输出标准、测试用例之间的关联
28.设计测试用例准则:用例代表性、
结果的可判定性、结果的可再现性
29.黑盒测试(已知软件产品所具有
的功能的基础上) 测试的错误类型:
①不正确或遗漏的功能;②接口、界
面错误;③性能错误;④数据结构或
外部数据访问错误;⑤初始化或终止
条件错误
30.黑盒测试分为:功能测试(等价类
划分、边界值分析、因果图法、判定
表法、场景法、正交实验法,随机测
试法、错误推测法)、非功能测试(配
置/安装测试、兼容性测试、互操作
性测试、文档和帮助测试、性能测试、
可靠性测试、易用性测试和界面测
试)
31.等价类特性:完备性、无冗余性
确认等价类(列出等价类)、确认UC
有效等价类(实现规格说明中预先规
定的功能和性能)、无效等价类(无意
义的、不合理的输入数据)
划分原则:按区间、按输入限制、按
输入布尔量、按数值、按限制条件或
划分规则、细分等价类
等价类划分是边界值分析的补充
弱等价类测试(单缺陷假设)
强等价类测试(多缺陷假设)
32.因果图法:约束(输入约束):
E约束(异):a,b不能同时为1
I约束(或):a、b 和c不能同时为0。
O约束(唯一);a和b有且仅有1个
为1。
④R约束(要求):a是1时,b必须是
1,即不可能a是1时b是0
输出约束:M约束(强制)若结果a是
1,则结果b强制为0
生成判定
表
基于判定表的测试是最为严格、最具
有逻辑性的测试方法
33.判定表组成:条件桩(问题的所
有条件)、动作桩(问题规定可能采取
的操作)、条件项(左列条件的可能取
值-真假)、动作项(应采取的动作)
34.规则:任何一个条件组合的特定取
值及其相应要执行的操作称为规则
35.正交试验:正交表的形式:
行数(Runs):正交表中行数,即试验
次数,也是正交实验法设计测试用例
的。
因素数(Factors) :正交表中列的个数,
即要测试的输入数。
水平数(Levels):任何单个因素取值的
最大个数。正交表中的包含的值为从
0到“水平数-1”,或从1到“水平数”
36.正交表的正交性:
整齐可比性:每个因素(列)的每个
水平值出现的次数是完全相同的
均衡分散性:任意两列的水平搭配
(横向形成的数字对)是完全相同的。
37.评审是一种保证质量的方法
评审步骤:计划、概述、准备、检查
(评审会议)、返工和跟踪
评审会议通用准则:评审会议限制2
小时内;如有评审人缺席或准备不充
分,主持人有权取消或中止会议;检查
对象是被提交的文档,而非作者;评审
人必须注意他们的言语及表达方式;
作者不应为自己或文档辩护;主持人
不应同时作为评审人;不讨论方针之
外的问题;开发方案和对应的讨论不
是评审团队的任务;每个评审人员必
须有机会充分表达各自论点;会议纪
要必须完整表达评审人的意见;问题
不应以命令的形式写给作者;问题必
须划分为不同的权重:严重缺陷、重
要缺陷、一般缺陷、好的;评审团队
应对评审对象给出最后意见:接受
(无需修改)、有条件接受(需修改,但
不需进一步评审)、不接受(需进一步
评审或其他的检查);要有会议纪要及
总结,包括会议中讨论的问题或发现
问题的列表,评审总结报告等。
返工:经理决定接受评审团队意见修
正缺陷,或选择另外的方法(经理必
须对此全权负责)
跟踪:专人跟踪缺陷的修改
38.评审角色职责:经理(确保文档、
必需资源可用、选择评审人),经理
不一定得是管理层人员。主持人(管
理评审有关工作:计划、准备并保证
评审有序进行且满足目标,收集评审
数据、发布评审报告).作者(文档的创
建者,如有多人应为主要负责人)。
评审人(最多5个。应能识别并描述
评审对象中存在的问题)。为保证有
效的覆盖率,可给评审人分配制定的
评审主题。记录员(记录所有的发现:
问题、采取的措施、决定和建议等。
文字应简短和准确,最好由文档作者
来担当)
39.评审失败可能原因:需要的人没
空或不具备必须的资格和技术技能。
管理层在资源计划时不准确的估计
准备不足。文档不足
缺少管理层支持
40:。代码检查(检查代码和设计的一
致性,在编译和动态测试前进行):桌
面检查(程序员自查)、代码审查(若干
程序员和测试员组成一个会审小组,
对程序静态分析.两步:阅读材料、
召开审查会)、代码走查(分两步。避
免现场修改)
41.覆盖分类(覆盖标准从低到高):语
句、判定、条件、判定/条件、组合
和路径
42.基本路径覆盖:覆盖程序中所有
可能的路径。这是最强的覆盖准则
43.条件测试(穷举或分支):测试程序
条件错误和程序的其他错误
域测试:对大于小于等于值的测试策
略数据流分析:此方法在程序代码经
过的路径上检查数据的用法,以期发
现异常
44.三种变量状态:已定义的(d):变
量已赋值;引用的(r):访问变量;没
有定义的(u):变量没有定义具体的值
45.循环测试(白盒的一种):注重于循
环构造的有效性。简单循环,串接(连
锁)循环(相互独立和非独立),嵌套循
环(逐步外推)和不规则循环。
46.类测试:功能性测试(以类的规格
说明为基础)和结构性测试(从程序出
发)
47.测试分类:单元、集成、配置项(也
称软件合格性试或确认)、系统、验
收
48.测试过程四步:测试策划、测试
设计、测试执行、测试总结。
49.工作角色具体职责
测试项目负责人管理监督测试项目,
提供技术指导,获取适当资源,制定
基线,技术协调,负责项目的安全保
密和
质量管理测试分析员确定测试计划、
测试内容、测试方法、测试数据生成
方法、测试(软、硬件)环境、测试
工具,评价测试工作的有效性
测试设计员设计测试用例·确定测试用例的优先级,建立测试环境
测试程序员编写测试辅助软件
测试员执行测试、记录测试结果
测试系统管理员对测试环境和资产进行管理和维护
50. 测试充分性准则单调性、非复合性、非分解性、复杂性、回报递减率51.单元测试(针对编码过程中可能存在的问题)技术要求(模块测试):对软件单元进行动态测试之前,应对软件单元的源代码进行静态测试:语句覆盖率达到100%、分支覆盖率要达到100%,
对输出数据及其格式进行测试
多个模块可平行地独立进行单元测试。
52.独立路径指在程序中至少引进一个新处理语句集合或新条件的任一路径
53.好的设计:应能预见各种出错条件,并预设各种出错处理通路
边界值是单元测试最后最重要的任务
53.单元测试的文档:计划、说明、报告、记录、问题报告
54.驱动模块:模拟被测模块的上级模块桩模块:模拟被测模块的调用模块
55.集成测试目的(组装测试、联合测试)发现与接口有关的问题
56.集成策略:一次性组装(先分散测试,再集中起来一次完成集成测试。应避免此方式)、增值组装(自顶向下、自底向上、混合增值式)
57.回归测试:已进行过测试的某些子集再重新进行一遍,以保证上述改变不传播无法预料的副作用或引发新问题、
回归测试集包括三种类型的测试用例:
1)能够测试软件的所有功能的代表性测试用例2)专门针对可能会被修改而影响软件功能的附加测试
3)针对修改过的软件成分的测试58.确认测试:验证软件功能和性能及其特性是否与用户要求一致
对象:包括有效性测试和软件配置审查
59.有效性测试(功能测试):验证被测软件是否满足需求规格说明列出的需求
61.效率有关术语:响应时间:完成一项规定任务所需的时间周转时间:从发出一条指令开始到一组相关的任务完成的时间;周转时间极限:指在最大负载条件下,系统完成一项任务所需要时间的极限。
62.负载类型:flat测试(一次加载所有负载,在预定时间段内持续运行,取平均值-产生波动效应)、ramp-up测试(负载是交错上升,无法产生精确和可重现的平均值)
对企业级系统性能测试方法有:基准(关键是要获得一致的、可再现的结果)、性能规划、渗入测试、峰谷测试
63.验收测试(交付测试,UC根据需求分析规格说明设计,并在实际使用环境下来运行):是否满足软件合同中的确认标准对象:是完整的、集成的计算机系统步骤:确定测试计划;建立测试环境;准备测试数据,执行测试用
例,记录测试结果,分析测试结果。
与系统测试区别:组织机构、测试地
点、覆盖范围、实施人员
64.产品说明包含:标识和标示功能
性、可靠性、易用性、效率陈述可维
护性陈述可移植性陈述使用质量陈
述
65.文档编写原则:完备性、正确性、
一致性、易理解性、易学性、可操作
性
66.软件质量要求:功能、可靠、易
用性、效率、维护、可移植性、使用
质量
66.自动化测试(模拟手动测试步骤,
控制被测软件的执行):一般是指软件
测试的自动化。自动化测试可理解为
测试过程自动化和测试结果分析自
动化,包括测试活动的管理与实施、
测试脚本的开发与执行。
意义:测试量大,重复性高,手工测
试局限性;软件自动化测试所带来的
好处。
好处:缩短测试周期,可让产品更快
投放市场,提高测试效率,充分利用
硬件资源。节省人力资源,降低测试
成本。
增强测试的稳定性和可靠性。提高软
件测试的准确度和精确度,增加软件
信任度。测试工具使测试工作相对较
容易,且能产生更高质量的测试结果。
手工不能做的事情,自动化测试能做,
如负载、性能测试
原理:通过设计的特殊程序模拟测试
人员对计算机的操作过程、操作行为。
方法:直接对代码进行静态和动态分
析(针对不同语言构造分析工具,在工
具中定义相关规则);测试过程的捕
获(将用户每步操作都记录)和回放
(将脚本语言所描述的过程转换为屏
幕上的操作)[捕获和回放时黑盒测试
技术,能大大减少工作量];测试脚本
技术(一组测试工具执行的指令集)、
虚拟用户技术和测试管理技术
存在的问题:不正确的观念或不现实
的期望;缺乏良好素质和有经验的测
试人才;测试工具本身的问题影响测
试的质量;没有进行有效充分的培训;
不考虑公司的实际情况、盲目引入测
试工具;没有形成一个良好的测试工
具使用环境;其他技术问题和组织问
题
限制:不能取代手工测试;手工测试比
自动测试发现的缺陷更多;对测试质
量的依赖性极大;测试自动化不能提
高有效性;测试自动化可能会制约软
件开发;工具本身并无想象力。
67.ISO9000:2000质量管理体系文件
结构:质量手册(QM):将管理层的质
量方针及目标以文件形式告诉全体
员工或顾客.程序文件(QP):指导员工
如何进行及完成质量手册内容所表
达的方针及目标的文件.作业指导书
(WI):详细说明特定作业是如何运作
的文件.记录表格(F):证实产品或服务
是如何依照所定要求运作的文件。
八项原则:以顾客为关注焦点,领导作
用,全员参与,过程方法,管理的系统
方法,持续改进,基于事实的决策方法,
互利的供方关系
68.CMM:软件过程策划两个阶段:组
织标准生产过程策划和项目产品策
划。三个关键过程域实现过程策划:
组织过程定义,软件项目策划,软件产
品工程.成熟度等级:初始、可重复性、
已定义、已管理、优化
69.测试与调试区别:测试是为发现错
误,贯穿于整个开发过程,调试是找出
错误原因和错误发生地方并排除错
误,是编码活动的一部分;指导原则、
方法、操作者不同;
70.McCall质量模型包括质量要素、
准则、度量三层次:
1)McCall质量模型软件质量要素(11
个分为3类)产品修正:可维护性、
可测试性、灵活性、产品转移:互联
性、可移植性、复用性、产品运行:
正确性、可使用性、完整性、可靠性、
效率
2) 质量要素评价准则:可审查性、准
确性、通信通用性、完全性、简明性、
一致性、数据通用性、容错性、执行
效率、可扩充性、通用性、硬件独立
性、检测性、模块化、可操作性、安
全性、子文档化、简单性、软件系统
独立性、可追踪性、易培训性
3)软件质量度量:确定软件质量需求、
确定度量、分析度量结果确认质量度
量
71.ISO-9126软件质量模型:包括
SQRC(软件质量需求评价准则)、
SQDC(软件质量设计评价准则)、
SQMC(软件质量度量评价准则),对应
于McCall质量模型的质量要素、准
则、度量。
Iso9126
1)8个要素:正确性、可容性、效率、
安全性、可用性、可维护性、适应性、
连接性2)23个评价准则:和McCall
一样
3)6个质量特性4)质量特性使用:
定义软件质量需求、评价软件产品。
软件质量观点(用户、开发者、管理
者)5)质量评价。目的:1.确定产
品是否通过验收 2.与其他类似产品
相比较选择 3.评估产品正面和负面
影响4.确定何时优化。步骤:1.质量
要求定义:据软件需求定义软件质量
特性和可能的子特性,将用户的质量
要求转化为软件开发不同阶段的质
量要求,并及时分解为软件产品组成
部分的质量要求。2.评价准备:(1)
选择质量度量;(2)定义等级;(3)
定义评估准则;3.评价过程:(1)测
量:把选定的度量应用到软件产品上
(2)评级(3)评估。
7.软件质量管理:
1)ISO9000:2000:本标准表述了质
量管理体系的基础。1 质量管理体系
的理论说明 2 质量管理体系要求与
产品要求3 质量管理体系方法4 过
程方法5 质量方针和质量目标6 最
高管理者在质量管理体系中的作用7
文件8 质量管理体系评价9 持续改
进10 统计技术的作用11 质量管理
体系与其他管理体系的关注点12
质量管理体系与优秀模式之间的关
系
1.什么是软件质量?请写出
ISO/IEC9126中如何评价和度量软件质
量的。
ISO 8402中把软件质量定义为“反
映实体满足明确和隐含需要的能力和
特性总合”。即软件质量是软件一些特
性的组合。
在ISO/IEC9126中将质量特性定
义为6(包括个21个子特性),即:1)
功能性:在指定条件下使用时,软件产
品提供满足明确和隐含需求功能的能
力;2)可靠性:在指定条件下使用时,
软件产品维持规定的性能级别的能力;
3)易用性:在指定条件下使用时,软件
产品被理解、学习、使用及其吸引用户
的能力;4)效率:在规定条件下,相对
于所用资源的数量,软件产品可提供适
当性能的能力;5)易维护性:软件产品
可被修改的能力,修改可能包括修正、
改进或者适应环境、需求和功能规约的
变化;6)易移植性:软件产品从一种环
境迁移到另一种环境的能力;
这6个特性作为软件质量的内部度
量和外部度量,同时ISO/IEC9126还定
义了使用质量度量,包括4个特性:1)
有效性:软件产品在指定使用环境下,
使用户准确、完整地获得规定目标的能
力;2)生产率:软件产品在指定使用环
境下,使用户花费合适的与有效性相关
的资源数量的能力;3)安全性:软件产
品在指定使用环境下,获得可接受的损
害人类、商务、软件、财产或环境风险
级别的能力;4)满意度:软件产品在指
定使用环境下,使用户满意的能力。
2. 怎样做好文档测试
文档测试:是检查用户文档(如需
求、用户手册、安装手册等)的正确性、
清晰性和精确性,检验文档是否和实际
应用存在的差别。对用户文档中所使
用的例子必须在测试中一一试过,确保
叙述正确无误。
对文档的测试一般从正确性、完备
性和易理解性几个方面去测试,具体包
括以下内容:
(1)检查产品说明书属性、(2)检查
是否完整、(3)检查是否准确、(4)
检查是否精确、(5)检查是否一致、(6)
检查是否贴切、(7)检查是否合理、(8)
检查代码无关、(9)检查可测试性。
3.请简要描述几种主要的软件测试模
型22.24.25.26
4. 请描述实现软件自动化测试用例的
几个主要技术。
? QTP
1. ? WinRunner
2. ? Rational Robot
3. ? AdventNet QEngine
4. ? SilkTest
1. ? QA Run
2. ? Test Partner
3. ? Holodeck
4. ? Telelogic TAU
5. ? AutoRunner
6. ? Phoenix Framework
5. 请描述对一个嵌套循的环循环测试。
6. 什么是黑盒测试?
黑盒测试主要采
用的技术有哪些? 30
黑盒测试又称功能测试、数据驱动测试或基于需求说明书的测试,是从用户观点出发的测试。30
1、问:为何说软件缺陷的最大来源是产品说明书?答:软件需求规格说明书描述了系统应该具有哪些功能/不应该具有哪些功能/功能的操作性如何/性能如何等等具体规格, 是开发初期最重要的过程文档, 也是后期开发与测试的重要依据, 可以说是开发流程与测试流程的输入, 计划、说明、报告、记录、测试问题报告
2、软件质量保证和软件测试的关系:软件测试能够找出软件缺陷,确保软件产品满足需求。测试可以查找错误并进行修改,从而提高软件产品的质量。软件质量保证测试避免错误以求高质量,并且还有其他方面的措施以保证质量问题。
3、问:什么是单元测试?答:对软件中的最小可测试单元进行检查和验证。
4、问:单元测试主要采用什么测试方法?答:代码走读(Code review),静态分析(Static analysis)和动态分析
5、等价类划分的原则:集合的划分,划分为互不相交的一组子集,而子集的并是整个集合
等价类划分法步骤:1)确定等价类,列出等价类表。2)确定测试用例。
划分等价类可分为两种情况:(1)有效等价类(2)无效等价类
六条确定等价类的原则:①按照区间划分②按照输入限制划分③按照输入布尔量划分④按照数值划分⑤按照限制条件或规则划分⑥细分等价类
6、简述边界值分析法的原则:1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。3)将规则1和2应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值。4)如果程序的规格说明给出的输入域或输出域是有序集合(如有序表、顺序文件等),则应选取集合的第一个元素和最后一个元素作为测试用例。5)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。6)分析规格说明,找出其它可能的边界条件。
7、什么是测试桩?什么是驱动模块?
在我们进行单元测试的时候,单元本身无法构成一个切实可运行的程序系统,所以我们需要为单元测试来开发桩模块和驱动模块,从而完成我们的单元测试目的,这是桩模块和驱动模块的作用。测试桩:被测试的模块在调用的方法/模块称为桩;驱动模块:用来调用被测试模块的模块。
8、简述验收测试的步骤:(1)确定测试计划。(2)建立测试环境。(3)准备测试数据、执行测试用例,记录测试结果。(4)分析测试结果。
9、简述面向对象软件测试和传统软件测试的不同。以往采用的是过程性的测试方法,程序单元即为功能单元,系统由一系列相关联的序单元构成。可以认为程序具有单一入口和单一出口,程序之间的关系是调用关系。而面向对象的系统由一些相互关联的对象构成,对象之间靠消息传递信息,对象由数据和服务组成,程序的基本单元是“类”。10、测试结束的依据有那些?
1第一类标准:测试超过了预定时间,
则停止测试。
2第二类标准:执行了所有的测试用例,
但并没有发现故障,则停止测试。
3第三类标准:使用特定的测试用例设
计方案作为判断测试停止的基础。
4第四类标准:正面指出停止测试的具
体要求,即停止测试的标准可定义为查
出某一预订数目的故障。
5第五类标准:根据单位时间内查出故
障的数量决定是否停止测试。
11、榨汁机1、榨汁机可以榨汁的水
果/蔬菜等被榨产品类型2榨汁机的工
作效率3榨汁后得到的榨汁的效果4榨
汁机的额定功率/刀片的旋转速度5榨
汁机的破坏性测试,比如放入一些坚硬
的被榨对象6榨汁机的易用性7榨汁机
的可维护性,比如,榨汁机是否方便清
洗8榨汁机的使用寿命,包括每种具体
的刀片的使用寿命和整机的使用寿命9
榨汁机的容量测试10榨汁机的噪声11
榨汁机的耗电量12榨汁机的使用安全
性测试13在电压过高或过低的状态能
否正常使用榨汁机
WEB测试一、功能测试
1、链接测试
链接是Web应用系统的一个主要特
征,它是在页面之间切换和指导用户
去一些不知道地址的页面的主要手
段。链接测试可分为三个方面。首先,
测试所有链接是否按指示的那样确
实链接到了该链接的页面;其次,测
试所链接的页面是否存在;最后,保
证Web应用系统上没有孤立的页面,
所谓孤立页面是指没有链接指向该
页面,只有知道正确的URL地址才
能访问。链接测试可以自动进行,现
在已经有许多工具可以采用。链接测
试必须在集成测试阶段完成,也就是
说,在整个Web应用系统的所有页
面开发完成之后进行链接测试。
2、表单测试
当用户给Web应用系统管理员提交
信息时,就需要使用表单操作,例如
用户注册、登陆、信息提交等。在这
种情况下,我们必须测试提交操作的
完整性,以校验提交给服务器的信息
的正确性。例如:用户填写的出生日
期与职业是否恰当,填写的所属省份
与所在城市是否匹配等。如果使用了
默认值,还要检验默认值的正确性。
如果表单只能接受指定的某些值,则
也要进行测试。例如:只能接受某些
字符,测试时可以跳过这些字符,看
系统是否会报错。3 、Cookies测试
4、设计语言测试
5、数据库测试
二、性能测试
1、连接速度测试用户连接到Web
应用系统的速度根据上网方式的变
化而变化,他们或许是电话拨号,或
是宽带上网。当下载一个程序时,用
户可以等较长的时间,但如果仅仅访
问一个页面就不会这样。如果Web
系统响应时间太长(例如超过5秒
钟),用户就会因没有耐心等待而离
开。另外,有些页面有超时的限制,
如果响应速度太慢,用户可能还没来
得及浏览内容,就需要重新登陆了。
而且,连接速度太慢,还可能引起数
据丢失,使用户得不到真实的页面。
2、负载测试负载测试是为了测量
Web系统在某一负载级别上的性能,
以保证Web系统在需求范围内能正
常工作。负载级别可以是某个时刻同
时访问Web系统的用户数量,也可
以是在线数据处理的数量。例如:
Web应用系统能允许多少个用户同
时在线?如果超过了这个数量,会出
现什么现象?Web应用系统能否处
理大量用户对同一个页面的请求?
3、压力测试负载测试应该安排在
Web系统发布以后,在实际的网络
环境中进行测试。因为一个企业内部
员工,特别是项目组人员总是有限的,
而一个Web系统能同时处理的请求
数量将远远超出这个限度,所以,只
有放在Internet上,接受负载测试,
其结果才是正确可信的。进行压力测
试是指实际破坏一个Web应用系统,
测试系统的反映。压力测试是测试系
统的限制和故障恢复能力,也就是测
试Web应用系统会不会崩溃,在什
么情况下会崩溃。黑客常常提供错误
的数据负载,直到Web应用系统崩
溃,接着当系统重新启动时获得存取
权。压力测试的区域包括表单、登陆
和其他信息传输页面等。
12圈复杂度:判定节点+1 或边-点
+2
由以上分析可知,排序程序具有双重
嵌套循环结构。其内外循环体各包含
一条选择语句,用于在条件满足时提
前推出循环。程序中得4个判断是测
试时考察得重点。以下分别列出按不
同覆盖标准设计得测试用例:语句
覆盖。稍作分析便不难看出,只要送
入先大后小得两个数,程序执行时就
可以遍历流程图中的所有框。因此,
仅需选用一组测试数据如{A={8,4},
K=2},就能实现语句覆盖。这类覆
盖发现错误得能力不强,例如若将程
序中得两个“>=”均误写为“=”,
用上述得测试数据就不能发现。判
定覆盖。选用上述得测试数据,内、
外层循环都是从正常得循环出口退
出得。要实现判定覆盖,还需在语句
覆盖得基础上,增加两个能使程序从
非正常出口退出的测试数据。例如,
用以下两组数据: {A={8,4,8},K
=3}和{A={8,4,4},K=3}或{A=
{8,4,8,4},K=4}
则程序将在满足A[I]=A[I-1]或
A[J]=A[J-1]的条件下通过非正常出
口,也能实现判定覆盖。但又可能出
现另一种偏向,掩盖把“>=”误写为
“=”的错误,造成更加严重得测试
漏洞。条件覆盖。从以上分析很容
易想到,必须选取足够得测试,使复
合条件占的每个条件分别按“真”、
“假”出现一次,才能克服前述的缺
点,进一步提高发现错误的能力。测
试用例:{A={8,4,9,6},K=4} {A
={8,4,8,4},K=4} 就能对程序实
现条件覆盖。此时A[I](或A[J])大
于、等于或小于A[I-1](或A[J-1])
的3中情况将分别至少出现一次,无
论把“>=”误写为“>”或“=”,都
可用这两组数据检查出来。其它覆
盖。本例中得两个复合条件,其组成
条件都不是互相独立的。如果其中有
一个条件(例如A[I]=A[I-1] )为
真,则另一个条件(例如
A[J]=A[J-1])必然为假。所有就本
例来说,判定条件覆盖及条件组合覆
盖都没有实际意义,可以不必讨论。
由此可见,本例宜选择条件覆盖,以
便得到较强得查错能力。测试数据可
选择 {A={8,4,9,6},K=4} {A
={8,4,8,4},K=4}或合成一组:{A
={8,4,8,4,9,6},K=
6}
《面向对象编程技术》试卷 注:1)请将答案写在答题纸上,写在试卷上不算分。答题纸在试卷的最后页。 2)交卷时,试卷和答题纸一起交。 一、单选题 (每小题1.5分,共30分) 1. C++中,以下有关构造函数的叙述不正确的是 ______ 。 A. 构造函数名必须和类名一致 B. 构造函数在定义对象时自动执行 C. 构造函数无任何函数类型 D. 在一个类中构造函数有且仅有一个 2.以下叙述不正确的是 ______ 。 A. 在类的定义中,通常是成员变量描述对象的属性;用成员函数描述对象的行为 B. 类的一个成员只能具有一种访问控制属性 C. 构造函数和析构函数是特殊的成员函数,因此不允许重载 D. 通过对象只能访问类的公有成员 3. 以下关于虚函数的叙述不正确的是 ______ 。 A. 虚函数属于成员函数 B. 虚函数不允许说明成静态的 C. 凡是虚函数必须用virtual说明 D. 虚函数可以被继承 4. cout是I0流库预定义的______ 。 A.类 B. 对象 C. 包含文件 D. 常量 5.面向对象程序设计中的数据隐藏指的是______ 。 A.输入数据必须输入保密口令 B.数据经过加密处理 C. 对象内部数据结构上建有防火墙D.对象内部数据结构的不可访问性6.拷贝(复制)构造函数的作用是______ 。 A.进行数据类型的转换 B.用对象调用成员函数 C.用对象初始化对象D.用一般类型的数据初始化对象 7. 下列不是描述类的成员函数的是______ 。 A.构造函数 B.析构函数 C.友元函数 D.拷贝构造函数 8. 如果类A被说明成类B的友元,则______ 。 A. 类A的成员即类B的成员 B. 类B的成员即类A的成员 C. 类A的成员函数不得访问类B的成员 D. 类B不一定是类A的友元 9. 对于任何一个类,析构函数最多有______ 个。 A. 0 B. 1 C. 2 D. n 10. 下列特性中,C与C++共有的是______ 。 A.继承 B.封装 C.多态性 D.函数定义不能嵌套 11. 在公有继承的情况下,基类公有和保护成员在派生类中的访问权限______ 。 A. 受限制 B. 保持不变 C. 受保护 D. 不受保护 12. 通过______ 调用虚函数时,采用动态束定。 A. 对象指针 B. 对象名 C. 成员名限定 D. 派生类名 13. C++ 类体系中,不能被派生类继承的有______ 。 A. 成员转换函数 B. 构造函数 C. 虚函数 D. 静态成员函数 14. 假定 ab 为一个类,则执行 ab x;语句时将自动调用该类的______ 。 A. 有参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值构造函数 15. 静态成员函数不能说明为______ 。 A. 整型函数 B. 浮点函数 C. 虚函数 D. 字符型函数 16. 在 C++ 中,数据封装要解决的问题是______ 。 A. 数据规范化排列 B. 数据高速转换 C. 避免数据丢失 D. 保证数据完整性
一、给定关系 R(A,B) 和 S(B,C) ,将下面的关系代数表达式转换为相应的SQL语句: π (attribute-list) [ (condition) [ R ? S ] ] 二、Megatron 747 磁盘具有以下特性: 1)有8个盘面和8192个柱面 2)盘面直径为英寸,内圈直径为英寸 3)每磁道平均有256个扇区,每个扇区512字节 4)每个磁道10%被用于间隙 5)磁盘转速为 7200 RPM 6)磁头启动到停止需要1ms,每移动500个柱面另加1ms 回答下列有关Megatron 747的问题(要求写出式子并且计算出结果,精确到小数点后两位): 1)磁盘容量是多少GB 2)如果一个块是8KB,那么一个块的传输时间是多少ms 3)平均寻道时间是多少ms 4)平均旋转等待时间是多少ms 三、下面是一个数据库系统开始运行后的undo/redo日志记录,该数据库系统支持simple checkpoint (1)(2)(3) 1)
1.ipv4 的替代方案; 2.单链表原地逆向转置; 3.折半查找算法 4.简述操作系统中系统调用过程; 5.在数据库中什么是关系,它和普通二维表啥区别; 6.什么是原子操作; 7.路由协议有哪些; 8.进程的三种状态,以及之间转换的过程; 9.快速排序的基本过程; 10.什么叫视图?视图在数据库的第几层; 11.二叉树的搜索; 12.什么叫冲突?解决冲突的办法都有哪些; 13.java 与 C++区别; 14.深度、广度搜索的过程; 15.迪杰斯克拉算法的过程; 16.关系模式和关系; 17.数据链路停发协议,就是流量控制; 18.虚拟存储器及相关算法;段存储器; 19.进程线程树图; 20.传输等待协议; 21.堆栈排序及其与快速排序的不同; 22.386 的保护模式是什么; 23.页表; 24.ER图; 25.关系范式 26.链表查询某个元素,平均时间复杂度是多少; 27.路由协议有哪些; 28.网络服务质量包括哪些方面; 29.并发控制是为了保证事务的?; 30.什么是 DMA; 31.两个时钟不同步的设备怎么通信; 32.操作系统的调度算法有哪些; 33.单链表的原地逆置算法 34.数据库的两级模式以及它们的关系和作用(貌似是这样) 35.操作系统的进程调度算法有哪些,并介绍其中两种 36.计算机的一条指令有几个机器周期,为什么 37.原子操作, pv 操作的要点和注意事项 38.内核、芯片(记不清了) 39.DMA控制器的组成和工作原理 40.简述最短路径的迪杰斯特拉算法 41.什么是 P 操作与 V 操作。 42.一个深度为 N的满二叉树有多少个结点。 43.实现一个队列的方法 44.折半查找调节与时间复杂度
中科大考博辅导班:2019中科大软件学院考博难度解析及经验分享中国科学院大学2019年博士研究生招生统一实行网上报名。报考者须符合《中国科学院大学2019年招收攻读博士学位研究生简章》规定的报考条件。考生在报考前请联系所报考的研究所(指招收博士生的中科院各研究院、所、中心、园、台、站)或校部相关院系,了解具体的报考规定。 下面是启道考博辅导班整理的关于中国科学技术大学软件学院考博相关内容。 一、院系简介 中国科学技术大学是中国科学院直属的唯一院校,是一所以前沿科学和高新技术为主、科技人文与科技管理兼备的综合性全国名校,为国家教育重点建设的9所世界知名高水平研究型大学之一,在国际上享有较高的声誉。学校力争在2018年建校60周年前后,把学校建设成为“规模适度、质量优异、结构合理、特色鲜明”的世界知名的高水平研究型大学。目前,校本部共有10个学院、25个系和少年班,43个本科专业;一级学科博士学位授权点17个,国家重点学科19个,二级学科博士学位授权点89个,二级学科硕士学位授权点105个,有工商管理(MBA)、公共管理(MPA)和工程硕士3个专业硕士学位授权点;17个博士后流动站,45个博士后流动站专业,具备培养学士、硕士、博士的完整教育体系。其严谨务实的学风、创新探索的精神、高水平级的成果、国际化办学的追求,都使得这所年轻的研究型大学受到国际社会越来越强的关注 二、招生信息 中国科学技术大学软件学院博士招生专业有1个: 085271电子与信息 研究方向:不区分研究方向 三、报考条件 (1)中华人民共和国公民;拥护中国共产党的领导,愿意为祖国社会主义现代化建设服务;品德良好,遵纪守法,学风端正,无任何考试作弊、学术剽窃及其它违法违纪行为; (2)身体健康状况符合我校规定的体检要求,心理正常; (3)申请者原则上应来自国内重点院校或所在高校学习专业为重点学科; (4)专业基础好、科研能力强,在某一领域或某些方面有特殊学术专长及突出学术成果; (5)对学术研究有浓厚的兴趣,有较强的创新意识、创新能力和专业能力;
第一次实验报告 1、实验任务 根据下面的需求描述,使用Sybase Power Designer设计相应的数据库概念模型,并转换成Oracle或MS SQL Server上的物理数据库结构: 某银行准备开发一个银行业务管理系统,通过调查,得到以下的主要需求: 银行有多个支行。各个支行位于某个城市,每个支行有唯一的名字。银行要监控每个支行的资产。银行的客户通过其身份证号来标识。银行存储每个客户的姓名及其居住的街道和城市。客户可以有帐户,并且可以贷款。客户可能和某个银行员工发生联系,该员工是此客户的贷款负责人或银行帐户负责人。银行员工也通过身份证号来标识。员工分为部门经理和普通员工,每个部门经理都负责领导其所在部门的员工,并且每个员工只允许在一个部门内工作。每个支行的管理机构存储每个员工的姓名、电话号码、家庭地址及其经理的身份证号。银行还需知道每个员工开始工作的日期,由此日期可以推知员工的雇佣期。银行提供两类帐户——储蓄帐户和支票帐户。帐户可以由2个或2个以上客户所共有,一个客户也可有两个或两个以上的帐户。每个帐户被赋以唯一的帐户号。银行记录每个帐户的余额、开户的支行以及每个帐户所有者访问该帐户的最近日期。另外,每个储蓄帐户有其利率,且每个支票帐户有其透支额。每笔贷款由某个分支机构发放,能被一个或多个客户所共有。每笔贷款用唯一的贷款号标识。银行需要知道每笔贷款所贷金额以及逐次支付的情况(银行将贷款分几次付给客户)。虽然贷款号不能唯一标识银行所有为贷款所付的款项,但可以唯一标识为某贷款所付的款项。对每次的付款需要记录日期和金额。
2、实验过程 (1)确定实体和属性 由上面的需求描述我们可以很容易得出以下几个实体: ●员工(身份证号,姓名,电话号码,家庭地址,开始工作日 期) ●存储账户(账户号,余额,利率) ●支票账户(账户号,余额,透支额) ●客户(身份证号,姓名,街道,城市) ●支行(支行名称,城市,资产) ●贷款(贷款号,总额) ●支付(日期,金额) 图1 PS: 1、在此ER图中我没有设计账户类,然后派生出存储账户和支票账户,因为在客户的需求中,只有两种账户类型,除了支票账户类型就是存储账户类型,没有所谓的“一般的账户”,所以就不
算法实验报告 快速排序 1. 问题描述: 实现对数组的普通快速排序与随机快速排序 (1)实现上述两个算法 (2)统计算法的运行时间 (3)分析性能差异,作出总结 2. 算法原理: 2.1快速排序 快速排序是对冒泡排序的一种改进。它的基本思想是:选取一个基准元素,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比基准元素小,另外一部分的所有数据都要比基准元素大,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 设要排序的数组是A[0]……A[N-1],首先选取一个数据(普通快速排序选择的是最后一个元素, 随机快速排序是随机选择一个元素)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。 一趟快速排序的算法是: 1)设置两个变量i、j,排序开始的时候:i=0,j=N-1; 2)以第一个数组元素作为关键数据,赋值给key,即key=A[0]; 3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]赋给A[i]; 4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]赋给A[j]; 5)重复第3、4步,直到i=j;(3,4步中,没找到符合条件的值,即3中A[j]不小于key,4中A[i]不大于key的时候改变j、i的值,使得j=j-1,i=i+1,直至找到为止。找到符合条件的值,进行交换的时候i,j指针位置不变。另外,i==j这
一过程一定正好是i+或j-完成的时候,此时令循环结束)。 2.2随机快速排序 快速排序的最坏情况基于每次划分对主元的选择。基本的快速排序选取第一个或者最后一个元素作为主元。这样在数组已经有序的情况下,每次划分将得到最坏的结果。一种比较常见的优化方法是随机化算法,即随机选取一个元素作为主元。这种情况下虽然最坏情况仍然是O(n^2),但最坏情况不再依赖于输入数据,而是由于随机函数取值不佳。实际上,随机化快速排序得到理论最坏情况的可能性仅为1/(2^n)。所以随机化快速排序可以对于绝大多数输入数据达到O(nlogn)的期望时间复杂度。 3. 实验数据 本实验采用对80,000个随机数据进行十次排序,并取出平均值。分别用普通快速排序和随机快速排序对数据排序。用毫秒作为运行计数单位,观测两种算法所用的时间的不同。 4. 实验截图 如下图所示的时间,普通快速排序所用的平均时间为181毫秒,而随机化版本的快速排序所用时间仅仅为119毫秒。 5. 结果分析 5.1 时间分析 从实验截图得到的结果来看,随机化版本的快速排序所用时间比普通快速排序所用的平均时间少。 快速排序的平均时间复杂度为O(nlogn),最坏时间时间可达到O(n^2),最坏情况是当要排序的数列基本有序的时候。根据快速排序的工作原理我们知道,
复习提纲:(C语言翻译汇编) 一、概述 1. 嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置 国内普遍认同的嵌入式系统定义为: 以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 2.嵌入式系统的几个重要特征(简述5特征) (1) 嵌入式系统工业是不可垄断的高度分散的工业 从某种意义上来说,通用计算机行业的技术是垄断的。 嵌入式系统则不同,它是一个分散的工业,充满了竞争、机遇与创新,没有哪一个系列的处理器和操作系统能够垄断全部市场。 (2)操作系统内核小 由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统的操作系统要小得多。 比如ENEA公司的OSE分布式系统,内核只有5K,而Windows的内核则要大得多。 (3)专用性强 嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植。 即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。 同时针对不同的任务,往往需要对系统进行较大更改,程序的编译下载要和系统相结合,这种修改和通用软件的“升级”是完全不同的概念。 (4)系统精简 嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。(5)高实时性OS 这是嵌入式软件的基本要求,而且软件要求固态存储,以提高速度。软件代码要求高质量和高可靠性、实时性。 6)嵌入式软件开发走向标准化 嵌入式系统的应用程序可以没有操作系统直接在芯片上运行。 为了合理地调度多任务、利用系统资源、系统函数以及和专家库函数接口,用户必须自行选配RTOS(Real-Time Operating System)开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量。 (7)嵌入式系统开发需要开发工具和环境 由于其本身不具备自主开发能力,即使设计完成以后,用户通常也是不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。 这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。 开发时往往有主机和目标机的概念,主机用于程序的开发,目标机作为最后的执行机,开发时需要交替结合进行。
一、给定关系R(A,B) 和S(B,C) ,将下面的关系代数表达式转换为相应的SQL语句: π (attribute-list) [ (condition) [ R ? S ] ] 二、Megatron 747 磁盘具有以下特性: 1)有8个盘面和8192个柱面 2)盘面直径为3.5英寸,内圈直径为1.5英寸 3)每磁道平均有256个扇区,每个扇区512字节 4)每个磁道10%被用于间隙 5)磁盘转速为7200 RPM 6)磁头启动到停止需要1ms,每移动500个柱面另加1ms 回答下列有关Megatron 747的问题(要求写出式子并且计算出结果,精确到小数点后两位): 1)磁盘容量是多少GB? 2)如果一个块是8KB,那么一个块的传输时间是多少ms? 3)平均寻道时间是多少ms? 4)平均旋转等待时间是多少ms? 三、下面是一个数据库系统开始运行后的undo/redo日志记录,该数据库系统支持simple checkpoint 设日志修改记录的格式为
四、查询处理器在回答涉及R(A, B)和S(B, C)的查询“Select * From R, S Where R.B=S.B and R.B=10”时,生成了下面的逻辑查询计划:() ()S R B S B R 10.10.==σσ,已知有关参数为: ● R 和S 的元组都是定长的,在磁盘块中连续存放 ● T(R) = 60000,V(R, B) = 12,B(R) = 6000,T(S) =30000, V(S, B) = 5,B(S) = 1000 我们假设: 1)此查询计划中的连接实现时采用散列连接算法(非“混合散列连接”) 2)中间结果不写回磁盘 3)散列的桶存储在磁盘上 4)最终结果存放在内存中 5)有足够的内存可以执行散列连接算法 请估计此查询计划的I/O 代价。 五、我们想将关系R 按某个字段排序。已知R 的下列信息: ? R 包含 100000 个元组,即 T(R) = 100000. ? 一个磁盘块大小为 4000 bytes. ? R 的元组大小为 400 bytes ,即S(R) = 400. ? 关系R 在磁盘上是连续(contiguous )存放的,并且每个磁盘块中仅存放R 的记录 ? 排序字段的大小为 32 bytes. ? 记录指针的大小为 8 bytes. 回答下面的问题: (1) 如果使用两阶段归并排序,要求的最小内存是多少 (用块数表示)? (2) 使用两阶段归并排序需要多少次磁盘I/O ?(包括最后将排序文件写回磁盘的代价) (3) 考虑下面改进的归并排序算法。原来的两阶段归并排序的第一阶段是将排序后的整个元组写到 chunk 中,现在我们仅将排序后的
一.软件质莹 1?软件二程序(敷据)?文档+服务 软件产品组成部分:程用代码?帮助文件、用戶手册.样本和示例、标签■产品支持信息、图表和标志、错误信息.广 倂与宜传材料.软件的安装、软件说明文件、测试锚谊提示信息. 2 ?软件开发过程凋求分析(可行性报乩 项目初步开发汁划.需求规格说明?用户手册概要?测试讣划);设汁複耍:建立系统 总体结构.划分功能模块:定义备功能模块接口:数据库设计:播定组袋测试计划.详细:设汁备模块八体实现以法:确定模块间 的详细接口 :折定模块测试方案)[设计说明忱测试计划〕编码(編祝,进行模块调试和测试,编写用戶手册)[调试报俗,用户手 册]测试.錐护(纠错、适应.增强、预防)。 3. 软件测试与软件开发过程的关系: 1)项目规划阶段:员贵从单元测试到系统测试的整个测试阶段的监控。2)需求分析阶段:确定测试需求分析、系统测试il ?划 的制定.评审后成为管理项目。3)详细设计和概耍设il ?阶段:确保集成测试计划和单元测试汁划完成。1)綁码阶段:由开发 人员进行自己负贵部分的测试代码。在项目较人时?由专人进行編码阶段的测试任务。引测试阶段(单元、集成、系统測 试):依据测试代码进行测试.井捉交相应的测试状态报倂和测试结束报乩 4. 软件虜量的定义:"徹件产品满足规定的和隐含需求的能力冇关的特件 质量模型包括质fit 要素、准則.度酣三层次: 1) McCall^*模型软件质童要素(11个分为3类) 1. 产品修正,吋维护性、町测试性.灵活性 2. 产品转移:互联性■可移植性.复用性 3. 产品运行,正确性?叮使用性、完整性.叮绥性.效率 2) 质量要素评价准則1〉对审査性2)准确性3〉通信通用性4)完全性5)简明 性6) 一致性7)数据通用性S )客钳性9>执行效率10)对扩充性11〉通用性 15) 作性16)安全性17)子文档化18)简单性19)软件系统独立性20) nf 追踪性21)易培训性3)软件质童的度量:1)确定软件质需求2)确定?ft 3)分析度就结果1)确认质fit 度it 软件质量模型:包播SQRC (软件质fit 需求评价准則)、SQDC (软件质壇设计评价准则)、SQMC (软件质试度猷评价准则几对应干McCall 质扯模型的质:K 要素、准则、度扯。 1) 8个要素:止确性.町容性、效率、安全性、可用性.可维 护性.适应性.连接性2)23个评价准鹏 McCall-样 3) 6个质量特性(左图)4)贞量特性使用:定文软件质母盂 求、 评价软件产品。软件质址观点(用户.开发者.管理者〉 5)质最评价?目的:1?确定产品足否通过峻收2与其他类似 产品相比较选择3.评估产品正面和奂面越啊4.确定何时优化 步探:1?质虽要求定义:据软件需求定义软件质址特性和可能 的子特性.将用户的质扯要求转化为软件开发不同阶段的质址要求. 并及时分解为软件产品组成部分的质fit 要求。2.评价准备: <1)选择质敞度fit (2)定义等级:(3)定义评估准则:3.评价过程:(1)测敞:把选定的度址应用到秋件产品上<2)评级 <3)评估。 7-软件质童管理: 1) IS09000: 2000:本标准浪述了质蛍沽理体系的基础。1质址管理体系的理论说明2质址管理体系要求与产品要求3质fit 骨理体系方法\过程方法5质fit 方针和质敬目标6恿岛管理者?在质飛管理体系中的作用7文件S 质就管理体系评价9 持续改进10统计技术的作用11质蛾骨理体系与其他骨理体系的关注点12质1ft 骨理体系与优秀枳式之闻的关系 2) 3(能力成熟度模型): 二.软件测试 1?软件缺陷: 1)定义:软件岀惜机理叮描述为:软件错気软件缺陷?软件故障?软件失效。 1 依从" 安金H 衣曲怜 it 迢皈tl ?am 12)硕件独立性13)检测ft 14)枳块化 KiMIttVCA^aiSII McCI 诚悄度IK 檢中*:
考研究生调剂到了中科大软件学院,现在看来是一件让我觉得十分幸运的事情。中科大的学习气氛非常的浓,课程的内容也十分有新意,虽然有新意,但是又都是很基础的内容,让我收获很大,很多课程给我带来了很大的启发。直到过年时候,才腾出时间来写上一篇总结,记录我这一学期的生活和学习。我一直是一个地地道道的北方人,生在北京,长在北京,却跑到哈尔滨读了四年书。哈工大学习负担不轻,假期也很短,一直没有时间到处玩玩,再加上自己比较懒,大学期间也就去了趟长春。这次考到了中科大苏州研究院,心中对于南方的风土人情很是期待,内心中也不乏有些忐忑。 开学前,我直接跑到了南京玩了一周,玩的十分痛快,题外话暂且不提,然后从南京坐高铁到了苏州。中科大苏州研究院地处独墅湖高教园区,正巧高铁有工业园区一站,我就在工业园区站下了车。人生地不熟找不到合适的公交,直接拦下一辆出租车奔着学校这边就来了。苏州的出租车司机素质感觉比较高,礼让行人等做的都很不错,开车也很规矩。出租车司机还很健谈,就像北京的老师傅一样,听说我是来上学的,给我说了很多苏州的情况。我是提前一天前来报道的,物业态度很不好,不过好在顺利办理了入住手续,搬进了宿舍。宿舍两人寝,上床下桌,屋子不小,但是什么都没有,不过比较干净,我开学前几天都在置备东西。苏州的空气很好,略显湿润但却不潮湿,气温跟北京差不多,略高3℃左右,我很适应。住宿的地方离学校不近,走路30分钟左右,不过每天都有班车。中科大开的课程都很有意思,很多课程我遗憾的没有抢到,不过幸好没有全抢到我喜欢的课程,不然估计得累到爆。曾经我很不理解哈佛的学生为什么一学期只有8门课程还累得要死,知道我来到了号称不要命的来科大的中科大,才彻底理解了原因。中科大的课很有意思,难度也颇高,想要学好,就要付出150%的努力,而且基本上我学的所有的课都需要这种程度的努力。 下面说说我都上了些什么课,都有什么好玩的内容。英语免修过关考试侥幸水过,让我能够选一些其他我感兴趣的课程。一开始我选的是实用算法设计一课,第一节课时,老师负责任的指出此课程针对于没有算法基础的同学,恰巧此时算法分析与设计一课有一个空位,我就改选了算法分析与设计。实用算法设计一课使用的是《程序员实用算法》一书,说实在的,里面的例子都是经过精心编写的算法,非常优美,很多细节处理的十分精妙,可惜我还是更喜欢算法分析与设计一课。算法分析与设计使用的教材是经典的《算法导论》一书,整个课程跳过了一些简单的章节,但是覆盖到了算法导论中的大部分章节(不含第七部分和第八部分)。这课说实在的,超赞啊!我本科学的算法课用的是《算法概论》一书,比较偏重于算法设计,《算法导论》则是设计与分析并重。自己看《算法导论》的时候真心看不进去,这门课程一口气跟下来觉得并不吃力,而且有一种融会贯通的感觉。发现很多的时候,一个算法的时间复杂度暗示了其设计思想。上这门课的感觉还是很多问题都似曾相识,比如说经典的八皇后问题,这些问题以前在遇到的时候都是采用一些固定的策略来进行处理,并不知道为什么要采用这样的策略。这门课程让我认识到了三类基本问题:组合计数、组合优化、组合设计,每一类问题都有很多数学工具来对其进行分析和解决。顺便说一下,书中对于如何构造GF(pk)讲解的实在是让人有点稀里糊涂的,恰巧我另一门课程密码学及其应用中讲到了这些内容,让我在这点上没有稀里糊涂的跳过去。随机过程是一门神奇的课,说实在的,我一直都挺怕概率论的,我觉得概率论十分的违反直觉,很多时候得出的答案都令我十分费解,也不能够肯定是否正确。这有助于我们抛弃一些不必要的tricks,在关键的时候进行优化。(这也是CSAPP所需要达到的一个目标之一) 说完这两门课程,不妨看看上面提到过的密码学及其应用一课。在上这门课程以前,我一直认为密码学领域主要是一些数学问题,程序员需要关注的内容很少;上了这门课程后,我发现,所有的程序员都应该学习一下密码学的基本知识,走出密码学的误区。在这门课程上,我了解了,即便是有了安全的加密方式,如果使用不当的话,仍然可能会泄密或收到被攻击者伪装成正常消息而受到欺骗,非对称加密并不比对称加密更安全,反而,非对称加密方式由于加密速度较慢,使用范围会受到限制。有些不
第五次实验报告 ——最长公共子序列的生成算法 1.1算法应用背景 最长公共子序列是一个序列S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则S称为已知序列的最长公共子序列。而最长公共子串(要求连续)和最长公共子序列是不同的。 最长公共子序列是一个十分实用的问题,它可以描述两段文字之间的“相似度”,即它们的雷同程度,从而能够用来辨别抄袭。对一段文字进行修改之后,计算改动前后文字的最长公共子序列,将除此子序列外的部分提取出来,这种方法判断修改的部分,往往十分准确。简而言之,百度知道、百度百科都用得上。 1.2算法原理 若给定序列X={x1,x2,…,xm},则另一序列Z={z1,z2,…,zk},是X的子序列是指存在一个严格递增下标序列{i1,i2,…,ik}使得对于所有j=1,2,…,k有:zj=xij。例如,序列Z={B,C,D,B}是序列X={A,B,C,B,D,A,B}的子序列,相应的递增下标序列为{2,3,5,7}。 例:∑= {x, y, z} ,A = x y z y x z x z x x x 是长度为3 的子序列 x z y z x 是长度为5 的子序列 例:A = x y z y x z x z,B = x z y x x y z x x x x是长度为3 的公共子序列 x z y z 是长度为4 的公共子序列 x z y x x z 是长度为6 的最长公共子序列 1.3算法描述 记L n,m为序列A n和B m的最长公共子序列长度,则L i,j为序列A i和Bj的最长公共子序列的长度。根据最长公共子序列的性质,则得到:
阶段的划分和最长公共子序列长度的获取 第一阶段:计算A1和Bj的最长公共子序列的长度L1,j ,j=1,2,…m 第二阶段:计算A2和B j的最长公共子序列的长度L2,j, j=1,2,…m 第n 阶段:计算A n和B j的最长公共子序列的长度L n,j, j=1,2,…m 第n 阶段的L m,n便是序列A n和B m的最长公共子序列的长度 为了得到A n和B m最长公共子序列,设置一个二维的状态字数组s i,j,在上述每一个阶段计算L n,j过程中,根据公共子序列的性质则有按照如下方法把搜索状态登记于状态字s i,j中:s i,j =1 a i=b j s i,j =2 a i≠b j L i-1,j>= L i,j-1 s i,j =3 a i≠b j L i-1,j< L i,j-1 设L n,m=k,S k=c1c2……c k是序列A n和B m的长度为k的最长公共子序列。最长公共子序列的搜索过程为状态字s n,m开始。搜索过程如下: S m,n =1 a n=b m c k=a n下一个搜索方向是S n-1,m-1 S m,n =2 a i≠b j L i-1,j>= L i,j-1下一个搜索方向是S n-1,m S m,n =3 a i≠b j L i-1,j< L i,j-1 下一个搜索方向是S n,m-1 递推关系: 若s i,j =1 则c k=a i,i=i-1,j=j-1,k=k-1 s i,j =2 a i≠b j 则i=i-1 s i,j =3 a i≠b j 则j=j-1 从i=n,j=m开始搜索,直到i=0或j=0结束,即可得到A n和B m的最长公共子序列。1.4程序实现及程序截图 1.4.1程序源码 #include
实验一常见排序算法的实现与性能比较 一、实验环境 操作系统:Windows XP操作系统 编程语言:C语言 开发工具:Microsoft Visual C++ 6.0 二、问题描述 实现合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序算法 三、实验要求 A.在随机产生的空间大小分别为 N = 10, 1000,10000,100000 的排序样本(取值为[0,1])上测试以上算法。 B.结果输出: 1) N=10时,排序结果。 2) N=1000,10000,100000时,对同一个样本实例,不同排序完 成所需的时间。 3) N=1000,10000,100000时,每个排序用不同的样本多试验几次(最低5次)得出平均时间,比较不同排序算法所用的平均时间。 四、各种排序算法的原理及算法语言描述 (1)合并排序算法 1)合并排序的原理: 采用分治法。分解: 把待排序的 n 个元素的序列分解成两个子序列, 每个子序列包括n/2 个元素。治理: 对每个子序列分别调用归并排序MergeSort, 进行递归操作。合并: 合并两个排好序的子序列,生成排序结果。 2)合并排序算法语言描述: void Merge(float A[],int p,int q,int r){ int n1,n2,i,j,k; float L[10],R[10]; n1=q-p+1; n2=r-q; for(i=1;i<=n1;i++){ L[i]=A[p+i-1]; } for(j=1;j<=n2;j++){ R[j]=A[q+j]; } L[n1+1]=MAX; R[n2+1]=MAX; i=1; j=1;
一、软件质量 1.软件= 程序(数据) + 文档+ 服务 软件产品组成部分:程序代码、帮助文件、用户手册、样本和示例、标签、产品支持信息、图表和标志、错误信息、广告与宣传材料、软件的安装、软件说明文件、测试错误提示信息。 2.软件开发过程:需求分析(可行性报告,项目初步开发计划,需求规格说明,用户手册概要,测试计划);设计(概要:建立系统总体结构,划分功能模块;定义各功能模块接口;数据库设计;指定组装测试计划.详细:设计各模块具体实现算法;确定模块间的详细接口;指定模块测试方案)[设计说明书,测试计划]编码(编程,进行模块调试和测试,编写用户手册)[调试报告,用户手册]测试、维护(纠错、适应、增强、预防)。 3.软件测试与软件开发过程的关系: 1)项目规划阶段:负责从单元测试到系统测试的整个测试阶段的监控。2)需求分析阶段:确定测试需求分析、系统测试计划的制定,评审后成为管理项目。3)详细设计和概要设计阶段:确保集成测试计划和单元测试计划完成。4)编码阶段:由开发人员进行自己负责部分的测试代码。在项目较大时,由专人进行编码阶段的测试任务。5)测试阶段(单元、集成、系统测试):依据测试代码进行测试,并提交相应的测试状态报告和测试结束报告。 4.软件质量的定义:与软件产品满足规定的和隐含需求的能力有关的特性 5.McCall质量模型包括质量要素、准则、度量三层次: 1)McCall质量模型软件质量要素(11个分为3类) 1.产品修正:可维护性、可测试性、灵活性 2.产品转移:互联性、可移植性、复用性 3.产品运行:正确性、可使用性、完整性、可靠性、效率 2) 质量要素评价准则1)可审查性2)准确性3)通信通用性4)完全性5)简明 性6)一致性7)数据通用性8)容错性9)执行效率10)可扩充性11)通用性12)硬件独立性13)检测性14)模块化15)可操作性16)安全性17)子文档化18)简单性19)软件系统独立性20)可追踪性21)易培训性3)软件质量的度量: 1)确定软件质量需求2)确定度量3)分析度量结果4)确认质量度量 6.ISO-9126软件质量模型:包括SQRC(软件质量需求评价准则)、SQDC(软件质量设计评价准则)、SQMC(软件质量度量评价准则),对应于McCall质量模型的质量要素、准则、度量。 1)8个要素:正确性、可容性、效率、安全性、可用性、可维护 性、适应性、连接性2)23个评价准则:和McCall一样 3)6个质量特性(左图)4)质量特性使用:定义软件质量需求、 评价软件产品。软件质量观点(用户、开发者、管理者)5)质 量评价。目的:1.确定产品是否通过验收2.与其他类似产品相 比较选择3.评估产品正面和负面影响4.确定何时优化。步骤: 1.质量要求定义:据软件需求定义软件质量特性和可能的子特性,将用户的质量要求转化为软件开发不同阶段的质量要求,并及时分解为软件产品组成部分的质量要求。 2.评价准备:(1)选择质量度量;(2)定义等级;(3)定义评估准则; 3.评价过程:(1)测量:把选定的度量应用到软件产品上(2)评级(3)评估。 7.软件质量管理: 1)ISO9000:2000:本标准表述了质量管理体系的基础。1 质量管理体系的理论说明2 质量管理体系要求与产品要求3 质量管理体系方法4 过程方法5 质量方针和质量目标6 最高管理者在质量管理体系中的作用7 文件8 质量管理体系评价9 持续改进10 统计技术的作用11 质量管理体系与其他管理体系的关注点12 质量管理体系与优秀模式之间的关系 2)CMM(能力成熟度模型): 二、软件测试 1.软件缺陷: 1)定义:软件出错机理可描述为:软件错误,软件缺陷,软件故障,软件失效。 1. 软件错误(error) :是指在软件生存期内的不希望或不可接受的人为错误,其结果是导致软件缺陷的产生。 2. 软件缺陷(bug) :是存在于软件(文档、数据、程序)之中的那些不希望或不可接受的偏差。其结果是软件运行于某一特定条件时出现软件故障,
中科大复试准备 数据结构->操作系统->计算机网络->通信原理->微机原理-> 软件工程,编译原理,数据库
数据结构 1.时间复杂度 时间复杂度是指执行算法所需要的计算工作量,因为整个算法的执行时间与基本操作重复执行的次数成正比,所以将算法中基本操作的次数作为算法时间复杂度的度量,一般情况下,按照基本操作次数最多的输入来计算时间复杂度,并且多数情况下我们去最深层循环内的语句所描述的操作作为基本操作。 2.循环队列的顺序表中,为什么要空一个位置? 这是为了用来区分队空与队满的情况。如果不空一个位置,则判断队空和队满的条件是一样的。 3.什么是二叉排序树?以及它的原理,算法。(二叉排序树的查找过程) 二叉排序树又称二叉查找树,它或者是一颗空树,或者满足一下性质的二叉树: ①若左子树不空,则左子树上所有结点的值均小于根节点的值; ②若右子树不空,则右子树上所有结点的值均大于根节点的值; ③左右子树也分别是二叉排序树。 原理步骤: 若根结点的关键字值等于查找的关键字,成功。 否则,若小于根结点的关键字值,递归查左子树。 若大于根结点的关键字值,递归查右子树。 若子树为空,查找不成功。 4.哈夫曼树 定义: 给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。 构造方法: 假设有n个权值,则构造出的哈夫曼树有n个叶子结点。n个权值分别设为w1、w2、…、wn,则哈夫曼树的构造规则为: (1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点); (2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和; (3)从森林中删除选取的两棵树,并将新树加入森林; (4)重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为所求得的哈夫曼树。 特点: ①权值越大的结点,距离根节点越近; ②树中没有度为一的结点。 应用: 哈夫曼编码,减少编码的长度。哈夫曼编码就是长度最短的前缀编码。 5.什么是哈希冲突?以及如何解决。 散列(哈希)表: 根据关键码值(Key value)而直接进行访问的数据结构。根据给定的关键字来计算出关键字在表中的地址,以加快查找的速度。 冲突:指的是多个关键字映射同一个地址的情况。 解决办法:
1. ipv4 的替代方案; 2. 单链表原地逆向转置; 3. 折半查找算法 4. 简述操作系统中系统调用过程; 5. 在数据库中什么是关系,它和普通二维表啥区别; 6. 什么是原子操作; 7. 路由协议有哪些; 8. 进程的三种状态,以及之间转换的过程; 9. 快速排序的基本过程; 10. 什么叫视图?视图在数据库的第几层; 11. 二叉树的搜索; 12. 什么叫冲突?解决冲突的办法都有哪些; 13. java 与C++区别; 14. 深度、广度搜索的过程; 15. 迪杰斯克拉算法的过程; 16. 关系模式和关系; 17. 数据链路停发协议,就是流量控制; 18. 虚拟存储器及相关算法;段存储器; 19. 进程线程树图; 20. 传输等待协议; 21. 堆栈排序及其与快速排序的不同; 22. 386的保护模式是什么; 23. 页表; 24. ER 图; 25. 关系范式 26. 链表查询某个元素,平均时间复杂度是多少; 27. 路由协议有哪些; 28. 网络服务质量包括哪些方面; 29. 并发控制是为了保证事务的?; 30. 什么是DMA 31. 两个时钟不同步的设备怎么通信; 32. 操作系统的调度算法有哪些; 33. 单链表的原地逆置算法 34. 数据库的两级模式以及它们的关系和作用(貌似是这样) 35. 操作系统的进程调度算法有哪些,并介绍其中两种 36. 计算机的一条指令有几个机器周期,为什么 37. 原子操作,pv操作的要点和注意事项 38. 内核、芯片(记不清了) 39. DMA控制器的组成和工作原理 40. 简述最短路径的迪杰斯特拉算法 41. 什么是P操作与V操作。 42. 一个深度为N的满二叉树有多少个结点。 43. 实现一个队列的方法