第一篇:软件工程名词解释
Adaptive maintenance适应性维护:为使软件产品在新的环境下仍能使用而进行的维护,称为适应性维护。
Data flow diagram数据流图:描述系统中数据流程的图形工具,它标识了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换为逻辑输出的加工过程。
baseline基线:它提供一个正式标准,随后的工作基于此标准,并且只有经过授权后才能变更这个标准。建立一个初始基线后,以后每次对其进行的变更都将记录为一个差值,直到建成下一个基线。
Big-bang testing一次性组装测试:也叫集成测试,是单元测试的扩展,最简单的形式是两个已经测试过的单元组成一个整体,并且测试他们的接口。
Black box黑盒:是对一个项目组建造的软件的修改标识,组织和控制的技术,其目标是通过最大限度的减少错误,来最大限度提高生产率。
白盒测试:也称结构测试或透明盒测试,测试应用程序的内部结构或运作,而不是测试应用程序的功能。
Software configuration item软件配置项:软件生存周期各个阶段活动的产物经审批后即可称之为软件配置项。为了配置管理而作为单独实体处理的一个工作产品或软件。
Configuration management配置管理,配置管理是对软件产品及其开发过程和生命周期进行控制、规范的一系列措施。
Corrective maintenance 改正性维护:在软件交付运行以后,由于开发阶段测试工作的不彻底,不完全,一些隐藏的软件错误在系统运行的过程中逐步暴露出来,通常把发现和改正这类错误的过程叫做改正性维护。
Coupling 耦合:何亮不同模块之间接口的相对独立性。
Integration testing集成测试:在单元测试的基础上,将所有模块按照概要设计组装成为子系统或系统进行测试 cohesion内聚:衡量一个模块内部各个元素彼此结合的紧密程度。
Detailed design详细设计:是对概要设计的一个细化,就是详细设计每个模块实现算法所需的局部结构。
Test case测试用例:是一组条件或变量,测试者根据它来确定应用软件系统是否正确工作。
Program design language 过程设计语言:它是用正文现实表示数据和处理过程的设计工具。
模块化:把软件按照规定原则,划分为一个个较小的相对独立的但又相对关联的部件
prototyping原型:目标系统软件的一个可操作的模型,它实现了目标软件系统的某些重要方面的功能。
Information hiding信息隐蔽:模块应该设计设计的使共所信息(过程和数据)对于哪些不需要这些信息的模块来说是隐蔽的,每个模块只完成一个相对独立的特定功能,模块这件仅仅叫唤哪些为完成系统功能而必须交换信息。
requirement软件需求:用户对目标软件系统在功能,性能,介为,设计约束等方面的期望
Requirement analysis需求分析:通过对应用问题及其环境的分析与理解,采用一系列的分析方法和技术,将用户的需求逐步精确化,完全化,一致化,最终形成需求规格说明文档的过程。
software软件:软件=程序 数据 文档
Software life cycle软件生命周期:软件产品从形成概念开始,经过定义,开发,使用和维护知道最后退役的过程
Stepwise refinement逐步求精:随着软件开发过程的进展,在软件结构每一层中的模块,表示了对软件抽象层次的一次精化。Structured program结构化编程:一种编程典范,采用子程序、for循环以及while循环等结构,来取代传统的goto。
testing软件测试:使用人工或自助手段来运行或测定某个系统的过程
Walk-through代码走查:是一个开发人员与构架师讨论代码的过程
Waterfall model瀑布模型:将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水。
Regression testing回归测试,在发生修改之后重新测试前的测试保证修改的正确性
Unit testing单元测试:是开发者编写的一小段代码,用于检测被测代码的一个很小的很明确的功能是否正确。//指对软件中的最小可测试单元进行检查和验证。
1、软件的特点:P3
1软件是一种逻辑实体,具有抽象性
2软件的生产与硬件的生产存在某些相同点,但二者有根本上的不同。
3软件的维护更为复杂,成本更高。
4软件在运行和使用期间,没有硬件的机械磨损,老化问题,但软件存在退化问题
5大多数软件是根据客户实际需求制定的,而不是通过已有构件组装而成的。
2、计算机软件的发展阶段,各有何特点?P2
第一阶段:编写程序只有低级语言,不存在什么系统化的方法,程序的质量完全依赖于程序员个人的技巧。
第二阶段:高级程序设计语言出现,开始用工程化的方法解决软件危机问题。
第三阶段:分布式系统出现,硬件的发展使软件危机加剧。开始研究软件工程学的科学理论、方法等一系列问题。
第四阶段:面向对象的技术的出现,多媒体技术快速发展。//
3、什么是软件危机?其产生的原因是什么?P5
软件危机是指由于落后的软件生产力方式无法满足迅速增长的计算机软件应用需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
原因:1和软件本身的特点有关2和软件开发与维护的方法不正确有关
//
4、什么是软件工程,其目标和内容是什么?P6
软件工程,将系统化的,规范的,可度量的方法应用于软件的开发,运行和维护的过程。目标:在给定的成本和进度前提下,开发出具有可修改性,可理解性,可维护性,有效性,可靠性,可适应性,可移植性,可跟踪性和互化性并且满足用户需求的软件产品内容
5、什么是软件生存周期模型?它有哪些主要模型?
软件周期模型:即软件的开发模型,清晰直观的反映了软件开发的全部过程、所涉及的活动和任务结构框架,并指出了开发各阶段的关系、开发活动的衔接情况。
模型:瀑布模型,原型模型,螺旋模型,增量模型,喷泉模型,迭代模型。
6、什么是软件生命周期?包括哪些阶段?各阶段有哪些活动?P10
我们把软件产品从形成概念开始,经过定义、开发、使用、维护直到退役的全过程称为软件生命周期。
软件定义:问题定义、系统的可行性研究、需求分析 软件开发:概要设计、详细设计、编码、软件测试 软件使用维护:软件发布与实施、软件维护 退役:版本更新或退役
7、瀑布模型和原型模型的特点:P12
瀑布模型特点: 阶段间具有顺序性和依赖性关系、推迟实现、质量保证 缺点:逆转性差,错误的传递会采取发散扩大的方式。
原型模型的特点:1适合需求不确定的情况2使用软件重用技术3缩短了开发周期,降低成本
8、什么是软件开发方法?软件开发有哪些主要方法?
定义:软件开发过程所遵循的办法和步骤。
主要方法:1结构化方法2面向对象的方法
//
9、讲述软件需求,需求分析,需求建模概念,含义与区别:p26,p38
软件需求:指用户对目标软禁系统在功能,性能,行为,设计约束等方面的期望,这种期望可能是原始的,笼统的,也可能是抽象的太细节化的
需求分析:通过对应用问题及环境的分析与理解,采用一系列的分析方法和技术,将用户的需求逐步精确换,完全化,一直化,最终形成需求规格说明文档的过程
需求建模:为了理解事物所做出的一种抽象,用符号语言对事物屋歧义的书面描述。//
10、可行性研究的目标及主要内容是什么?
目标:用最小的代价在尽可能短的时间内确定该软件项目是否能够开发是否值得去开发
内容:1经济可行性2技术可行性3方案可行性4社会环境和人的可行性
//
11、成本效益分析可用哪些指标进行度量?
//
12、需求分析各阶段的基本任务是什么?P28 1明确所开发的软件必须具备什么样的功能,获得当前系统的物理模型
2抽象出当前系统的逻辑模型建立目标系统的逻辑模型
3为了对目标系统做完整的描述,还需要对得到的逻辑模型做一些补充
4编写文档
5需求验证
13、常见的初步软件需求获取的方法有哪些?为什么用这些方法进行需求获取?P33
1访谈与会议
2观察用户工作流程
3建立联合小组
4快速原型法
5基于本体的需要获取方法。为了准确、全面的获取软件需求的信息。
14、简述需求分析阶段的过程P36
问题识别、分析与综合、编制需求分析阶段的文档、需求验证。//
15、可行性研究的具体步骤
1确定项目规模和目标 2研究正在运行的系统
3建立新系统的高层逻辑模型
4导出和评价各种方案
5推荐可行的方案
6编写可行性研究报告
//
16、在软件需求分析时,应首先建立当前系统的物理模型,再根据物理模型建立当前系统的逻辑模型,试问,什么是当前系统的物理模型?当前系统的物理模型与逻辑模型有什么区别?P28
物理模型:确定待开发软件系统的系统元素,并将功能和数据结构分配到这些系统元素中,它是软件的基础。
与物理模型不同,逻辑模型很是实现机制与细节,只描述系统要完成的功能和要处理的数据。
//
17、什么是软件的概要设计?该阶段的基本任务是什么?
软件的概要设计:设计出软件的总体结构框架
基本任务:1设计软件系统结构(软件结构)2数据结构及数据库设计3编写概要设计文档4评审
//
18、详细设计的基本任务是什么?有哪几种描述方法?
基本任务:1为每个模块进行详细的算法设计2为每个模块内的数据结构进行设计3对数据库进行设计4其他设计5编写详细设计说明书6评审
描述方法:程序流程图2PAD图3过程设计软件
//
19、软件设计的基本原理包括哪些?P51
1抽象与逐步求精2模块化3信息屏蔽4模块独立
20、衡量模块独立性的两个标准是什么?个表示什么含义?P57
1内聚,衡量一个模块内部各个元素彼此结合的紧密程度
2耦合,衡量不同模块之间的相对独立性
21、模块的内聚有哪几种?各表示什么含义?P61
1巧合内聚2逻辑内聚3时间内聚,4过程内聚5通信内聚6信息内聚7功能内聚
22、模块的耦合有几种?各表示什么含义?P57
1非直接耦合2数据耦合3标记耦合4控制耦合5外部耦合6公共耦合7内容耦合
23、结构化程序设计的基本要点是什么?P76
任何程序逻辑都可以用顺序,选择,循环三种基本控制结构,并且每个代码块只有一个入口和一个出口,逐步求精,则称这个程序是结构化的。结构化设计方法的主要思想是进行逐层分解和模块化。
//
25、什么是结构分析方法?该方法使用什么描述工具?
机构化分析方法:一种利用自顶向下逐层分解,由粗到细,有复杂到简单技术的求解方法
描述工具1数据流图2实体关系图3数据字典4描述基本加工的小说明
//
26、什么是数据流图?作用是什么?其中个符号表示什么含义?P87 数据流图是描述熟路流程的图形工具,它标识了一个系统的逻辑输入和逻辑输出,一级把逻辑输入转换逻辑输出所需的加工处理。
//27什么是数据字典?作用是什么?有哪些条目?P94 数据字典是软件分析工程中对数据的描述,是数据流程图的必不可少的辅助资料。条目:数据项条目,数据流条目,数据库文件条目
//
28、简述如何画分层数据流图?对分层数据流图的审查有哪些审查要点.P89--92
29、什么是“变换流”,什么是“事务流”?P104
变换流:信息通常外部形式进入系统,经过处理后又以这种形式离开系统。
事务流:信息由外部形式变换为内部形式后到达事务中心,事务中心根据不同结果从若干路径中选择一条继续执行。
30、试述“变换分析”,“事务分析”设计步骤P106
变换映射:把DFD图划分为输入、变换和输出三个部分
建立初始SC图的框架
分解SC图的各个分支
事务映射:在DFD图中确定接收部分、事务中心和发送部分
画出SC框架图
分解SC图的各个分支
按照优化规则改进初始SC图,获得最终SC图
31、简述哪些启发式设计策略可以帮助软件设计人员改善软件质量、优化软件结构?
模块的高独立性和规模适中 保持高扇入和低扇出 模块的作用域应在控制域之内 降低模块接口的复杂度
33、什么是UML?为什么使用UML?P118
UML是统一建模语言,用来对面向对象开发系统的产品进行说明,可视化和编制文档的方法。UML是用来描述建模活动的,有利于更好的理解和认识软件。
34、在UML中用例图的作用是什么,其包括哪些符号?
作用:捕获系统中用户的需求。
符号:系统,参与者,用例,参与者与用例的联系,用例与用例之间的关系
35、用例建模的步骤:P125
1识别参与者2识别用例3识别关系4建模
36、什么是用例规约?包括哪些基本内容?什么是基本流和备选流?
37、在UML中的状态图,活动图,时序图在系统分析中各起到什么作用?
状态图:用来描述对象、子系统、系统在生命周期中响应外部事件的状态转换行为,通过状态的变化来描述系统功能模型的事项过程
活动图:主要目的是描述动作以及对象状态改变的结果。有助于理解系统高层活动的执行行为,通过其可以深入描述系统功能的实现流程P148
时序图:是一种强调消息时间顺序的交互图,是一种详细表示对象之间以及对象与系统外部的参与者之间动态联系的图形文档,它详细而直观地表现了一组相互协作的对象在执行一个用例的行为为依赖关系,以及操作和消息的时序关系。//
38、简述关联和依赖的区别
关联表示两个类的对象之间存在某种意义上的联系
依赖表示描述两个模型元素(类、用例等)之间的语义连接关系 //
41、软件维护的副作用有哪些?
1修改编码的副作用2修改数据结构的副作用3修改文档的副作用
42、什么是白盒测试?有哪些覆盖标准?对他们的检错能力进行比较?
白盒测试法:全面了解程序内部逻辑结构,对所有逻辑路径进行测试。覆盖标准:P206 检错能力:P206
43、什么是黑盒测试法?有哪几种方法?各有什么特点?P198
黑盒测试,着眼于程序外部结构,不考虑内部逻辑结构,针对软件界面和软件功能进行测试。
方法:等价类划分,边界值分析,因果图法,错误推测法,比较测试
44、软件测试要经过哪些步骤?这些测试与软件开发个阶段之间有什么关系?
45、单元测试有哪些内容?测试中采用什么方法?P213,P214 46什么是集成测试?非渐增式测试与渐增式测试有什么区别?渐增式测试如何组装模块?P2115,216,217
47、软件维护有哪些内容?P229
48、何为非结构化维护和结构化维护?P231
第二篇:软件工程 期末考试 名词解释
面向对象建模及它们之间的关系:对象建模:定义了做事情的实体;动态模型:明确规定了什么时候做;功能模型:指明了应该做什么;他们相互补充,相互配合。对象模型是最基本最重要的,他为其他两种模型奠定了基础,我们依靠对象模型完成了3种模型的集成软件工程定义:1把系统的,规范的,可度量的途径应用于软件开发,运行和维护过程,也就是把工程应用于软件;2研究1中提到的的途径
软件生命周期各阶段的基本任务:问题定义;可行性研究;需求分析;总体设计;详细设计;编码和单元测试;综合测试;软件维护
软件过程定义:软件过程是为了获得高质量软件所需要完成的一系列任务的框架,他规定了完成各项任务的工作步骤
生命周期:它规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,也称过程模型
生命周期/过程模型:瀑布模型;快速原型模型;增量模型;螺旋模型
可行性研究过程步骤:1复查系统规模和目标;2研究目前正在使用的系统;3导出新系统的高层逻辑模型;4进一步定义问题;5导出和评价供选择的解法;6推荐行动方针;7草拟开发计划;8书写文档提交审查 系统流程图定义:它是概括地描绘物理系统的传统工具
数据流图DFD定义:它是一种图形化技术,他描绘信息流和数据从输入移动到输出地过程中所经受的变换 符号:数据流图有4种基本符号:正方形表示数据原点或终点;圆角矩形或圆形代表变换数据和处理;开口矩形代表数据存储;箭头表示数据流,即特定数据的流动方向
典型总体设计过程的9个步骤:1设想供选择的方案;2选取合理的方案;3推荐最佳方案;4功能分解;5设计软件结构;6设计数据库;7制定测试计划;8书写文档(系统说明;用户手册;测试计划;详细实现计划;数据库设计结果);9审查和复审
模块独立程度的定性标准度量:1耦合:对一个软件结构内不同模块之间互联程度的度量;2内聚:它标志一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然拓展
结构程序设计经典定义:如果一个程序的代码块仅仅通过顺序,选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的人机界面设计,设计指南:1一般交互指南;2信息显示指南;3数据输入指南
程序流程图:又称程序框图,优点:对控制流程的描绘很直观,便于初学者掌握;缺点:1程序流程图本质上不是逐步求精的好工具,他透使程序员过早地考虑程序的控制流程而不去考虑程序的全局结构;2程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计精神随意转移控制;3程序流程图不易表示数据结构
盒图:又称S-N图,特点:1功能域明确,可以从盒图上一眼就看出来;2不可能任意转移控制;3很容易确定局部和全程数据的作用域;4很容易表现嵌套关系,也可以表示模块的层次结构
Jackson图:1顺序结构:数据由一个或多个数据元素组成,每个元素按确定次序出现一次;2选择结构:数据包含两个或多个数据元素,每次使用这个数据时按一定条件从这些数据元素中选择一个;3重复结构:重复结构的数据,根据使用时的条件由一个数据元素出现零次或多次构成Jackson图的优点:1便于表示层次结构,而且是对结构进行自顶向下分解的有力工具;2形象直观可读性好;3技能表示数据结构也能表示程序结构
计算环形复杂度的方法:1流程图中的区域数等于环形复杂度;2流程G的环形复杂度V(G)=E-N 2,其中E是流程图中边的条数,N是结点数;3流程G的环形复杂度V(G)=P 1,其中P是流程图中判定结点的数目
程序编码的风格应遵循的规则:1程序内部文档;2数据说明;3语句构造;4输入输出;5效率
软件测试的目标(定义):1测试是为了发现程序中的错误而执行的过程;2好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;3成功的测试是发现了至今为止尚未发现的错误的测试
测试的目标:暴露程序中的错误
软件测试的准则:1所有测试都应该能追述到用户需求;2应该远在测试开始之前就制定出测试计划;3把
Pareto原理应用到软件测试中;4应该从小规模测试开始,并逐步进行大规模测试;5穷举测试是不可能的;6为了达到最佳测试效果,应从独立的第三方从事测试工作
测试方法:1白盒测试即结构测试;2黑盒测试即功能测试
测试步骤(先后顺序):1模块测试;2子系统测试;3系统测试;4验收测试;5平行测试
软件维护的定义:在软件应经交付使用之后,为了改正错误或满足新需要而修改软件的过程
软件的可维护性定义:维护人员理解,改正,改动或改进这个软件的难易程度
决定软件可维护的5个因素:1可理解性;2可测试性;3可修改性;4可移植性;5可重用性
面向对象方法学的优点:1与人类习惯的思维方式一致;2稳定性好;3可重用性好;4轻易开发大型软件产品
启发规则:1设计结果应该清晰易懂;2一般到特殊结构的深度适当;3设计简单的类;4使用简单的协议;5使用简单的服务;6把设计变动减成至最小
软件重用:也叫再用或复用,是指同一事物不做修改或稍加改动就多次重复使用
软件重用的三个层次:1知识重用;2方法和标准重用;3软件成分重用
软件维护的特点:1结构化维护和非结构化维护差别巨大;2维护代价高昂;3维护的问题很多
需求分析任务:确定对系统的综合要求;分析系统的数据要求;导出系统的逻辑模型;修正系统的开发计划
验证软件需求:一致性;完整性;现实性;有效性
黑盒测试力图发现下述类型错误:功能不正确或遗漏了功能;界面错误;数据结构错误或外部数据库访问错误;性能错误;初始化和终止错误
黑盒测试满足标准的测试用例集:所设计出的测试用例能减少为达到合理测试所需要设计的测试用例的总数;所设计出的测试用例能告诉我们能否存在某些类型的错误,而不仅仅指出与特定测试相关的错误是否存在1在软件开发过程中要产生大量的信息,要进行大量的修改,软件配置管理能协调软件开发,并使混乱减到最低程度。
2规定功能的软件,在一定程度上对自身错误的作用(软件错误)具有屏蔽能力,则称此软件具有容错功能的软件。
3McCall提出的软件质量模型包括11个软件质量特性。
4软件可维护性度量的七个质量特性是可理解性、可测试性、可修改性、可靠性、可移植性、可使用性和效率。
5为了便于对照检查,测试用例应由输入数据和预期的输出结果两部分组成。
6程序设计语言的心理特性主要表现在歧义性、简洁性、传统性、局部性和顺序性。
7软件结构是以模块为基础而组成的一种控制层次结构。
8在结构化分析中,用于描述加工逻辑的主要工具有三种,即:结构化语言、判定表、判定树。
9结构化语言是介于自然语言和形式语言之间的一种半形式语言。
10若年利率为i,不计复利,n年后可得钱数为F,则现在的价值P= F/(1 (n*i))
11软件可靠性是指在给定的时间间隔内,程序成功运行的(概率)。0101
12高级语言:独立于机器,面向过程或面向(对象)0101
13软件项目管理的范围主要集中于3个P上,即:People人员、Problem问题和(过程)。0201 14人机界面的风格第一代界面是命令和(询问)方式。1202
15由于维护或在维护过程中其他一些不期望的行为引入的错误称为维护的(副作用)。1504
16在公式V(G)= E – N 2中:E为程序图G中边的总数; N 为程序图中结点的总数。V(G)又称为图G的环形(复杂度)0204。
17任何一个基于计算机系统都可以用输入-处理-输出(IPO)图来描述,它将系统转成一个信息变换模型
18为提高可交互性一般对所有可能造成损害的用户操作动作,应坚持要求用户(确认),例如,提问“你确实要删除„?”。1204
19文档是一种数据媒体和其上所记录的(数据)。0101
20文档(document)—一种数据媒体和其上所记录的(数据)。0101
21机器语言、汇编语言:依赖于机器,面向(机器)0101
22软件有效性(efficiency),指软件系统的时间和(空间)效率。0103
23软件定义过程可通过软件系统的(可行性研究)和需求分析两个阶段来完成。0103
24软件定义的基本任务是确定软件系统的工程(需求),也就是要搞清“做什么”。0103
25为了使用户需求逐步精细化、完全化、一致化,通常采用(需求建模技术)。0402
一个软件的深度是指其控制的(层数)。0801
26以详细设计说明书为输入,将该输入用某种程序设计语言翻译成计算机可以理解并最终可运行的代码的过程叫(编码)过程。1301
27软件维护是软件生命周期的(最后)一个阶段。1501
28软件的可互操作性,是指多个软件元素相互(通信)并协同完成任务的能力。0201
29第三代语言也称为(高级)语言。1301
30软件测试是软件投入运行(前),对软件需求分析、设计、实现的强有力的最终审查。1401
31黑盒测试主要是测试软件是否满足(功能)需求。1402
32(调试)的目的是确定错误的位置和引起错误的原因,并加以改正。因此,又称为排错或纠错。1404 33软件工程由方法、工具和(过程)三部分组成,称软件工程的三要素。0101
34软件可追踪性(traceability),是指根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行(逆向)追踪的能力。0103
35瀑布模型是由W.Royce于1970年提出来的。又称为软件(生存周期)模型。0104
36程序设计语言的(可维护)性通常指这种语言编写的程序被理解,被修改及调整和改进的难易程度。1302 37软件工程由方法、(工具)和过程三部分组成,称软件工程的三要素。0101
38软件可理解性,指系统具有清晰的结构,能直接反映问题的(需求)。0103
39在实体-关系图简称E-R图中,数据对象实体用长方形、关系用(菱形)、属性用椭圆表示。0502
40建立数据流模型要遵循的原则包括:每个加工至少应有一个输入数据流以反映被处理数据的来源和一个(输出)数据流来反映加工的结果。0503
41从工程管理的角度软件设计可分为概要设计和(详细)设计两大步骤。0801
42通过向用户提供视觉和听觉上反馈,保持用户与界面间的双向通信,是提高界面可(交互)性的措施之一 43程序设计语言的可靠性是指程序设计语言本身不出错或对错误的(纠正)能力。1302
44对发现错误较多的程序模块,应进行(重点)测试。1401
45测试用例中,不仅要选择合理的输入数据,还要选择(不合理)的输入数据。
46软件工程由(方法)、工具和过程三部分组成,称软件工程的三要素。0103
47基于计算机系统的软件要素中的软部件由程序、数据和(文档)组成。0301
48数据流图就是用来刻画数据流和转换的信息系统建模技术。它用简单的图形记号分别表示数据流、转换、(数据源)以及外部实体。0501
49被继承的类我们称之为基类(父类),在基类的基础上新建立的类我们称之为派生类子类。0701
50流程图也称为程序框图是最常用的一种表示法,它有顺序、分支和(循环)三个基本控制构件。0802 51机器语言和汇编语言,也称为(低级)语言。1301
52软件测试是执行程序发现并排除程序中潜伏的(错误)的过程。1401
53动态测试有两种测试方法:黑盒测试和(白盒)测试。1401
54软件可维护性,是指软件产品交付使用后,在实现改正潜伏的错误、改进性能等属性、适应环境变化等方面工作的(难易)程度。0103
第三篇:软件工程判断题、名词解释、填空题
判断题
1.螺旋模型是在瀑布模型和增量模型的基础上增加了风险分析活动。(对)2.软件是指用程序设计语言编写的程序,软件开发实际上就是编写程序代码。(错)
3.过程描述语言可以用于描述软件的系统结构。(错)4.数据库设计说明书是一个软件配置项(对)5.软件模块之间的耦合性越弱越好。(对)
6.如果通过软件测试没有发现错误,则说明软件是正确的。(错)7.软件概要设计包括软件系统结构设计以及数据结构和数据库设计。(对)8.数据流图(DFD)和程序流程图没有区别。(错)
9.模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚,低耦合度的软件产品。(对)
10.白盒测试无需考虑模块内部的执行过程和程序结构,只要了解模块的功能即可。(错)
11.软件危机是指在软件开发和维护过程中遇到的一系列严重问题。(对)12.结构化分析方法就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。(对)
13.程序设计语言中应绝对禁止使用GOTO语句。(错)14.模块越小,模块的优点越大。(错)15.集成测试主要由用户来完成。(错)
16.确认测试计划应该在可行性研究阶段制定(错)17.快速原型模型可以有效地适应用户需求的动态变化。(对)18.需求规格说明书不是一个软件配置项(错)
19.黑盒测试无需考虑模块内部的执行过程和程序结构,只要了解模块的功能即可。(对)
20.UML只能应用于软件系统模型的建立。(错)
名词解释
1.软件工程: 软件工程是一门研究如何将完善的科学与工程原理,先进高效的管理技术以
及完整、规范的设计方法应用于经济的开发既可靠,又能在实际计算机上有效运行的软件的一门工程学科。
2.软件宽度:是软件结构中同一层次上的模块总数的最大值。
3.软件测试:在精心控制的系统环境下,采用相应的技术手段,利用一组事先构造好的测试实例执行程序以发现程序中存在的问题,并确认系统功能、性能符合需求的一个综合过程。
4.软件维护 5.软件质量保证
6.软件危机:软件危机就是软件在开发和维护过程中存在的一系列严重问题的总称。
7.软件生存周期 8.白盒法 9.数据字典
10.内聚性:指模块的功能强度的度量,即一个模块按照设计要求组装成为子系统或系统,进行集成测试。
11.集成测试
12.软件:是计算机系统中与硬件系统相互依存的另一部份,是完成某类问题求解的程序和数据以及为维护程序必须提供的一系列文档组成的集合。
13.数据流图
14.黑盒测试: 测试是在软件接口上进行;也叫功能测试、输入/输出驱动测试。
15.软件深度: 表示软件结构中控制的层数,它往往能粗略地标志一个系 统的大小和复杂程度。
16.数据字典:是结构化分析方法中采用的表达数据元素的工具。是对数据流图中所有的数据元素、数据结构、数据文件、数据流等的格式与内容进行定义的数据集合。
17.白盒测试: 是对软件实现的过程性细节做认真的运行检查;也叫结构测试、逻辑驱动
测试。31.经济可行性: 进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。
[解析]对于一个系统所必须要衡量的是经济上是否合算,经济可行性的范围很广,包括效益分析、潜在市场前景等。
32.社会可行性: 要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。
[解析]社会可行性包括合同、责任、侵权等技术人员不甚了解的诸多问题。
33.投资回收期: 投资回收期就是使累计的经济效益等于最初的投资费用所需的时间。[解析]通常我们用投资回收期来衡量一个开发项目的价值,投资回收期越短,就越快获得利润。
34.对应关系: 即有直接因果关系在程序中可以同时处理。[解析]对应关系是指数据单元在数据内容上、数量上和顺序上有直接的因果关系,对于重复的数据单元,重复的次序和次数都相同才有对应关系。
35.结构冲突: 输入数据与输出数据结构找不到对应关系的情况,称为结构冲突。[解析]使用JSP方法时会遇到此类结构冲突问题,对此,Jackson提出了引入中间数据结构或中间文件的办法,将冲突部分分隔开来,建立多个程序结构,再利用中间文件把它们联系起来,构成一个系统的整体。
填空题
21.系统流程图是描述物理模型的传统工具,用图形符号表示系统中各个元素表达了系统中各种元素之间的(信息流动)情况。
[解析]系统流程图是描述物理系统的传统工具,用图形符号表示系统中的各个元素,如人工处理、数据处理、数据库、文件、设备等,表达了元素之间的信息流动的情况。22.成本效益分析的目的是从(经济)角度评价开发一个项目是否可行。
[解析]成本效益分析首先是估算将要开发的系统的开发成本,然后与可能取得的效益进行比较和权衡,其目的是从经济角度评价开发一个新的软件项目是否可行。
23.自顶向下结合的渐增式测试法,在组合模块时有两种组合策略:深度优先策略和(宽度优先策略)。
[解析]渐增式测试法有自顶向下结合和自底向上结合两种组装模块的方法,其中自顶向下集成是构造程序结构的一种增量式方式,不需要编写驱动模块,只需要编写桩模块。它从主控模块开始,按照软件的控制层次结构,以深度优先或宽度优先的策略,逐步把各个模块集成在一起。
24.独立路径是指包括一组以前没有处理的语句或条件的一条路径。从程序图来看,一条独立路径是至少包含有一条(在其他独立路径中未有过)的边的路径。
[解析]在基本路径测试中,以详细设计或源程序为基础,导出控制流程图的拓扑结构——程序图,在计算了程序图的环路复杂性之后,确定只包含独立路径的基本路径图,其中独立路径是包括一组以前没有处理的语句或条件的一条路径。从程序图来看,一条独立路径是至少包含有一条在其他独立路径中未有过的边的路径。
25.汇编语言是面向(机器)的,可以完成高级语言无法完成的特殊功能,如与外部设备之间的一些接口工作。[解析]汇编语言属于低级语言,是一种面向机器的语言,它与高级语言相比有许多优越性:如操作灵活,可以直接作用到硬件的最下层,完成与外部设备的接口工作等,是能够利用计算机硬件特性直接控制硬件设备的唯一语言。
26.在JSP方法中解决结构冲突的具体办法是(中间数据结构或中间文件)。
[解析]JSP方法是面向数据结构的设计方法。它定义了一组以数据结构为指导的映射过程,根据输入、输出的数据结构,按一定的规则映射成软件的过程描述,在JSP方法中解决结构冲突的具体办法是引入中间数据结构或中间文件,将冲突部分分隔开来,建立多个程序结构,再利用中间文件把它们联系起来,构成一个系统的整体。
27.详细设计的任务是确定每个模块的内部特性,即模块的算法、(使用的数据)。[解析]详细设计的基本任务是为每个模块进行详细的算法设计,为模块内的数据结构进行设计,确定每个模块的内部特性,包括模块的算法和使用的数据。对数据库进行物理设计等。28.所有软件维护申请报告要按规定方式提出,该报告也称(软件问题)报告。
[解析]在软件维护的流程中,第一步就是制定维护申请报告,也称为软件问题报告,它是维护阶段的一种文档,由申请维护的用户填写。
29.有两类维护技术:在开发阶段使用来减少错误、提高软件可维护性的面向维护的技术;在维护阶段用来提高维护的效率和质量的(维护支援)技术。
[解析]面向维护的技术涉及软件开发的所有阶段,能够减少软件错误,提高软件的可维护性。而维护支援技术则包含信息收集,错误原因分析,维护方案评价等项,是在软件维护阶段用来提高维护效率和质量的技术。
30.科学工程计算需要大量的标准库函数,以便处理复杂的数值计算,可供选择的语言有:(FORTRAN语言)、PASCAL语言、C语言和PL/1语言。
[解析]计算机语言根据不同行业的需求,使用的侧重点也不尽相同,在办公管理方面,一些数据库语言如FOXPRO、ORICAL有很多的应用,在工程行业,计算机语言的科学计算能力就显得格外重要,如MATLAB、PL/
1、FORTRAN语言都是工程计算中常用的语言。
第四篇:软件工程
2.2软件开发的基本策略
人们都有自己的世界观和方法论,能自然而然地运用于生活和工作中。同样,程序员脑子里的软件工程观念会无形地支配其怎么去做事情。软件工程三十年的发展,已经积累了相当多的方法,但这些方法不是严密的理论。实践人员不应该教条地套用方法,更重要的是学会“选择合适的方法”和“产生新方法”。有谋略才会有好的战术。几千年前,我们的祖先就在打闹之际写下了很多心得体会,被现代人很好地运用于工业和商业。本节讲述软件开发中的三种基本策略:“复用”、“分而治之”、“优化——折衷”。
2.2.1复用
复用就是指“利用现成的东西”,文人称之为“拿来主义”。被复用的对象可以是有形的物体,也可以是无形的成果。复用不是人类懒惰的表现而是智慧的表现。因为人类总是在继承了前人的成果,不断加以利用、改进或创新后才会进步。所以当我们欢度国庆时,要搞清楚祖国远不止50岁,我们今天享用到的财富还有上下五千年人民的贡献。进步只是应该的,不进步则就可耻了。
复用的内涵包括了提高质量与生产率两者。由经验可知,在一个新系统中,大部分的内容是成熟的,只有小部分内容是创新的。一般地可以相信成熟的东西总是比较可靠的(即具有高质量),而大量成熟的工作可以通过复用来快速实现(即具有高生产率)。勤劳并且聪明的人们应该把大部分的时间用在小比例的创新工作上,而把小部分的时间用在大比例的成熟工作中,这样才能把工作做得又快又好。
把复用的思想用于软件开发,称为软件复用。据统计,世上已有1000亿多行程序,无数功能被重写了成千上万次,真是浪费哪。面向对象(Object Oriented)学者的口头禅就是“请不要再发明相同的车轮子了”。
将具有一定集成度并可以重复使用的软件组成单元称为软构件(Software Component)。软件复用可以表述为:构造新的软件系统可以不必每次从零做起,直接使用已有的软构件,即可组装(或加以合理修改)成新的系统。复用方法合理化并简化了软件开发过程,减少了总的开发工作量与维护代价,既降低了软件的成本又提高了生产率。另一方面,由于软构件是经过反复使用验证的,自身具有较高的质量。因此由软构件组成的新系统也具有较高的质量。利用软构件生产应用软件的过程如图1.5所示。
软件复用不仅要使自己拿来方便,还要让别人拿去方便,是“拿来拿去主义”。面向对象方法,Microsoft公司的COM规范 [Rogerson 1999],都能很好地用于实现大规模的软件复用。
2.2.2分而治之
分而治之是指把一个复杂的问题分解成若干个简单的问题,然后逐个解决。这种朴素的思想来源于人们生活与工作的经验,完全适合于技术领域。软件人员在执行分而治之的时候,应该着重考虑:复杂问题分解后,每个问题能否用程序实现?所有程序最终能否集成为一个软件系统并有效解决原始的复杂问题?
图1.6表示了软件领域的分而治之策略。诸如软件的体系结构设计、模块化设计都是分而治之的具体表现。软件的分而治之不可以“硬分硬治”。不像为了吃一个西瓜或是一只鸡,挥刀斩成n块,再把每块塞进嘴里粉碎搅拌,然后交由胃肠来消化吸收,象征复杂问题的西瓜或是鸡也就此消失了。
2.2.3优化——折衷
软件的优化是指优化软件的各个质量因素,如提高运行速度,提高对内存资源的利用率,使用户界面更加友好,使三维图形的真实感更强等等。想做好优化工作,首先要让开发人员都有正确的认识:优化工作不是可有可无的事情,而是必须要做的事情。当优化工作成为一种责任时,程序员才会不断改进软件中的算法,数据结构和程序组织,从而提高软件质量。
著名的3D游戏软件Quake,能够在PC机上实时地绘制高度真实感的复杂场景。Quake的开发者能把很多成熟的图形技术发挥到极致,例如把Bresenham画线、多边形裁剪、树遍历等算法的速度提高近一个数量级。我第一次看到Quake时不仅感到震动,而且深受打击。这个PC游戏软件的技术水平已经远胜于我所见识到的国内领先的图形学相关科研成果。这对我们日益盛行的点到完止的研发工作真是莫大的讽刺。所以当我们开发的软件表现出很多不可救药的病症时,不要怨机器差。真的是我们自己没有把工作做好,写不好字却嫌笔钝。
就假设我们经过思想教育后,精神抖擞,随时准备为优化工作干上六天七夜。但愿意做并不意味着就能把事情做好。优化工作的复杂之处是很多目标存在千丝万缕的关系,可谓数不清理还乱。当不能够使所有的目标都得到优化时,就需要“折衷”策略。
软件中的折衷策略是指通过协调各个质量因素,实现整体质量的最优。就象党支部副书记扮演和事佬的角色:“…为了使整个组织具有最好的战斗力,我们要重用几个人,照顾一些人,在万不得已的情况下委屈一批人”。
软件折衷的重要原则是不能使某一方损失关键的职能,更不可以象“舍鱼而取熊掌”那样抛弃一方。例如3D动画软件的瓶颈通常是速度,但如果为了提高速度而在程序中取消光照明计算,那么场景就会丧失真实感,3D动画也就不再有意义了(如果人类全是色盲,计算机图形学将变得异常简单)。
人都有惰性,如果允许滥用折衷的话,那么一当碰到困难,人们就会用拆东墙补西墙的方式去折衷,不再下苦功去做有意义的优化。所以我们有必要为折衷制定严正的立场:在保证其它因素不差的前提下,使某些因素变得更好。
下面让我们用“优化——折衷”的策略解决“鱼和熊掌不可得兼”的难题。
问题提出:假设鱼每千克10元,熊掌每千克一万元。有个倔脾气的人只有20元钱,非得要吃上一公斤美妙的“熊掌烧鱼”,怎么办?
解决方案:化9元9角9分钱买999克鱼肉,化10元钱买1克熊掌肉,可做一道“熊掌戏鱼”菜。剩下的那一分钱还可建立奖励基金。
2.3一些不正确的观念
本节例举并分析一些不正确的软件工程观念,可帮助初学者少犯相似的错误。
观念之一:我们拥有一套讲述如何开发软件的书籍,书中充满了标准与示例,可以帮助我们解决软件开发中遇到的任何问题。
客观情况:好的参考书无疑能指导我们的工作。充分利用书籍中的方法、技术和技巧,可以有效地解决软件开发中大量常见的问题。但实践者并不能因此依赖于书籍,这是因为:(1)现实的工作中,由于条件千差万别,即使是相当成熟的软件工程规范,常常也无法套用。(2)软件技术日新月异,没有哪一种软件标准能长盛不衰。祖传秘方在某些领域很吃香,而在软件领域则意味着落后。
观念之二:我们拥有最好的开发工具、最好的计算机,一定能做出优秀的软件。
客观情况:良好的开发环境只是产出成果的必要条件,而不是充分条件。如果拥有好环境的是一群庸人,难保他们不干出南辕北辙的事情。
观念之三:如果我们落后于计划,可以增加更多的程序员来解决。
客观情况:软件开发不同于传统的农业生产,人多不见得力量大。如果给落后于计划的项目增添新手,可能会更加延误项目。因为:(1)新手会产生很多新的错误,使项目混乱。(2)老手向新手解释工作以及交流思想都要花费时间,使实际开发时间更少。所以科学的项目计划很重要,不在乎计划能提前多少,重在恰如其分。如果用“大跃进”的方式奔向共产主义,只会产生倒退的后果。
观念之四:既然需求分析很困难,不管三七二十一先把软件做了再说,反正软件是灵活的,随时可以修改。
客观情况:对需求把握得越准确,软件的修修补补就越少。有些需求在一开始时很难确定,在开发过程中要不断地加以改正。软件修改越早代价越少,修改越晚代价越大,就跟治病一样道理。
2.4一些有争议的观念
本节探讨一些有争议的观念,目的不在于得出“正确”或“错误”的评断,而在于争议会激发更多理性的思考。
争议之一:如果软件运行较慢,是换一台更快的计算机,还是设计一种更快的算法?
观点:如果开发软件的目的是为了学习或是研究,那么应该设计一种更快的算法。如果该软件已经用于商业,则需谨慎考虑:若换一台更快的计算机能解决问题,则是最快的解决方案。改进算法虽然可以从根本上提高软件的运行速度,但可能引入错误以及延误进程。技术狂毫无疑问会选择后者,因为他们觉得放弃任何可以优化的机会就等于犯罪。
类似的争议还有:是买现成的程序,还是彻底自己开发?技术人员和商业人士常常会有不同的选择。
争议之二:有最好的软件工程方法,最好的编程语言吗?
观点:在软件领域永远没有最好的,只有更好的。能解决问题的都是好方法或是好语言。程序员在最初学习Basic、Fortran、Pascal、C、C 等语言时会感觉一个比一个好,不免有喜新厌旧之举。而如今 的Visual Basic、Delphi、Visual C 、Java等语言各有所长,真的难分优劣。开发人员应该根据客观条件,选择自己熟悉的方法和语言,才能保证合格的质量与生产率。
程序设计是自由与快乐的事情,不要发誓忠于某某主义而自寻烦恼。
争议之三:编程时是否应该多使用技巧?
观点:就软件开发而言,技巧的优点在于能另辟蹊径地解决一些问题,缺点是技巧并不为人熟知。若在程序中用太多的技巧,可能会留下隐患,别人也难以理解程序。鉴于一个局部的优点对整个系统而言是微不足道的,而一个错误则可能是致命的。建议用自然的方式编程,少用技巧。
《狼三则》的故事告诉我们“失败的技巧通常是技俩”。当我们在编程时无法判断是用了技巧还是用了技俩,那就少用。《卖油翁》的故事又告诉我们“熟能生巧”,表明技巧是自然而然产生的,而不是卖弄出来的。卖油翁的绝技是可到中央电视台表演的,而他老人家却谦虚地说:“没啥没啥,用熟了而已”。
争议之四:软件中的错误是否可按严重程度分等级?
观点:在定量分析时,可以将错误分等级,以便于管理。微软的一些开发小组将错误分成四个等级 [Cusumano 1996],如表1.1所示。
一级严重:错误导致软件崩溃。
二级严重:错误导致一个特性不能运行并且没有替代方案。
三级严重:错误导致一个特性不能运行但有替代方案。
四级严重:错误是表面化的或是微小的。
表1.1 错误的四个等级
上述分类是非常技术性的,并不是普适的。假设某个财务软件有两个错误:错误A使该软件死掉,错误B导致工资计算错误。按表1.1分类,错误A属一级严重,错误B属二级严重。但事实上B要比A严重。工资算多了或者算少了,将会使老板或员工遭受经济损失。而错误A只使操作员感到厌烦,并没有造成经济损失。另一个示例是操作手册写错,按表1.1分类则属四级严重,但这种错误可能导致机毁人亡。
开发人员应该意识到:所有的错误都是严重的,不存在微不足道的错误。这样才能少犯错误。
2.5小 结
软件工程学科发展到今天,已经有了很多方法和规范,学之不尽。本章只在宏观上讨论了软件工程的一些
思想,更具体的内容将在后面的章节论述。无论是什么好方法,贵在理解与灵活运用,而不可当成灵丹妙药,不象“吃了脑黄金或脑白金,就能使一亿人先聪明起来”。
3程序员与程序经理
工作在第一线的软件开发人员是程序员和程序经理,他们决定着软件的命运。良好的程序员队伍和出色的管理是软件项目成功的必要条件。管理不是管制,不是去卡住人家的脖子,因为程序员不是一群野鸭子。管理的目的是让大家一起把工作做好,并且让各人获得各自的快乐和满足。当一个组织被出色地领导时,雇员甚至不知道他们已被领导。在项目完成时,他们会自豪地说:“看看我们通过努力取得的成绩吧”。所以管理者不能老惦记着自己是一个官,而应时刻意识到自己是责任的主要承担者。
我们经常会听到有经理头衔的人在高谈阔论:“编程我不会,做个项目还不easy?派个人去搞系统分析,回头再叫几个程序员把需求译成程序,不就OK了吗?”
不懂英语的人准以为easy和OK是贬义词。要让软件项目失败很容易,只要符合下列条件之一即可:
(1)项目经理对软件一无所知;
(2)技术负责人对编程不感兴趣;
(3)真真编写代码的程序员是临时雇用的。
如果上述三个条件同时具备,就请放心失败好了。
让我们少幻想自己是比尔·盖茨,先当好程序员和程序经理再说。
3.1了解程序员
早期的程序员干活能从软件直通硬件,个个生猛无比。又因他们的作息时间、言行举止与常人不太一样,久而久之就给人们留下了“神秘”、“孤僻”的印象。如今软件行业被炒得热火朝天,有能耐的程序员即便躲在大山岙的军工厂里也能被挖出来。而更多原本不是程序员的人操起几本“速成”、“二十一天通”等书籍也加入了这个行业。现在国内号称有上百万程序员,这支大军鱼龙混杂,已搞不清那些是正规军,那些是民兵游击队了。
第五篇:软件工程
1.软件危机的概念 系统的数据要求,功能需求,性能需求,显示出程序的轮廓。
软件危机是指在计算机软件开发、使用与可靠性需求,可用性需求,出错处理需求,混合方式
维护过程中遇到的一系列严重问题和难接口需求,约束,逆向需求以及将来可能优点:综合了以上两种策略的长处 题。提出的需求。9.确认测试
补充: 5.常使用的图形工具 确认测试又称有效性测试。有效性测试是
1.软件危机的表现有哪些? 实体-联系图,数据流图,状态转换图,在模拟的环境下,运用黑盒测试的方法,答:1)对软件开发成本和进度的估计常层次方框图,warnier图,IPO图。验证被测软件是否满足需求规格说明书常很不准确。第五章 列出的需求。任务是验证软件的功能和性
2)用户对已完成的软件不满意1.总体设计的任务 能及其他特性是否与用户的要求一致。对的现象时有发生。划分出组成系统的物理元素——程序、文软件的功能和性能要求在软件需求规格
3)软件产品的质量往往是靠不件、数据库、人工过程和文档等等 说明书中已经明确规定,它包含的信息就住的。设计软件的结构。也就是要确定系统中每是软件确认测试的基础。
4)软件常常是不可维护的。个程序是由哪些模块组成的,以及这些模10.什么是白盒测试,其测试技术有那些,5)软件通常没有适当的文档资块相互间的关系。覆盖标准的强弱程度
料。2.模块化思想 白盒测试是一种测试用例设计方法,盒子
6)软件成本在计算机系统总成就是把程序划分成独立命名且可独立访指的是被测试的软件,白盒指的是盒子是本中所占比例逐年上升。问的模块,每个模块完成一个子功能,把可视的,你清楚盒子内部的东西以及里面
7)软件开发生产率提高的速度这些模块集成起来构成一个整体,可以完是如何运作的。“白盒”法全面了解程序内远跟不上日益增长的软件需求。成指定的功能满足用户的需求。部逻辑结构、对所有逻辑路径进行测试。
2.产生软件危机的原因主要有哪些? 3.衡量模块独立的标准(内聚和耦合的白盒测试的测试方法有代码检查法、静态答:1)用户对软件需求的描述不精确。含义,种类)结构分析法、静态质量度量法、逻辑覆盖
2)软件开发人员对用户需求的内聚:标志着每一个模块内各个元素彼此法、基本路径测试法、域测试、符号测试、理解有偏差。结合的紧密程度,是信息隐藏和局部化概路径覆盖和程序变异。
3)缺乏处理大型软件项目的经念的自然拓展。偶然内聚,逻辑内聚,时种覆盖标准:语句覆盖、判定覆盖、条件验。间内聚,功能内聚,顺序内聚,通信内聚,覆盖、判定/条件覆盖、条件组合覆盖和
4)开发大型软件易产生疏漏和过程内聚。路径覆盖发现错误的能力呈由弱至强的错误。耦合:是对一个软件结构内不同模块之间变化。
5)缺乏有力的方法学的指导和互连程度的度量。数据耦合,控制耦合,11.什么时候黑盒测试,其测试技术有哪有效的开发工具的支持。特征耦合,公共环境耦合,内容耦合。些,(等价划分,边介值分析法)
6)面对日益增长的软件需求,4.启发式规则 黑盒测试也称功能测试,它是通过测试来人们显得力不从心。1.改进软件结构提高模块的独立性检测每个功能是否都能正常使用。
2软件的概念 2.模块规模应该适中等价类划分的办法是把程序的输入域划完成特点功能的程序以及数据结构和文 3.深度、宽度、扇出和扇入都应适当 分成若干部分(子集),然后从每个部分档 4.模块的作用范围应在控制范围之内中选取少数代表性数据作为测试用例
3.软件工程的基本原理 5.力争降低模块接口的复杂程度 边界值分析是通过选择等价类边界的测
1.用分阶段的生命周期计划严格管理 6.设计单入口单出口的模块试用例。边界值分析法不仅重视输入条件
2.坚持进行阶段评审 7.模块功能应该可以预测 边界,而且也必须考虑输出域边界。它是
3.实行严格的产品控制 5.面向数据流的设计方法把信息流映射对等价类划分方法的补充。
4.采用现代程序设计技术 成软件结构 12.软件调试技术有哪些
5.结果应能清楚地审查 信息流:变换流,事物流 蛮干法,蛮干法可能是寻找软件错误原因
6.开发小组的人员应该少而精 映射:变换分析,事物分析 的最低效的方法,仅当所有其他方法都
7.承认不断改进软件工程实践的必要性失败的情况下才使用。
4软件生命周期分成哪几个阶段?各阶第六章 回溯法,回溯法是一种相当常用的调试方段的任务是什么? 1.详细设计的基本任务 法,当调试小程序时很有效。从发现症
1.问题定义: 1.为每个模块确定采用的算法。2.确定状的地方开始,人工沿程序的控制流往回
2.可行性研究:研究问题的范围,探索这每一模块使用的数据结构追踪分析源程序代码,知道找出错误原因个问题是否值得去解决,是否有可行的解3.确定模块接口的细节,包括对系统外为止。
决方法。部的接口和用户界面,对系统内部其 原因排除法,对分查找法、归纳法、演绎
3.需求分析:主要是确定目标系统必须具它模块的接口,以及关于模块输入数据、法都属于原因排除法。
备哪些功能 输出数据及局部数据的全部细节。13.软件可靠性(可靠性和可用性的含义)
4.总体设计: 4.为每一模块设计出一组测试用例。
5.详细设计:就是把解法具体化,设计出2.程序的三种基本结构
程序的详细规格说明。顺序结构,选择结构,循环结构
6.编码和单元测试:写出正确的容易理解3.详细设计的工具
容易维护的程序模块。1.图形工具
7.综合测试:通过各种类型的测试使软件2.表格工具
达到预定的要求 3.语言工具
8.软件维护:通过各种必要的维护活动使4.jackson方法
系统持久地满足用户的需要。(改正性维5.复杂性度量的方法
护,适应性维护,完善性维护,预防性维Halstead方法:它根据程序中运算符和
护)操作数的总数来度量程序的复杂程度
5.瀑布模型,快速原型模型,增量模型,McCabe方法 :McCabe方法根据程序控制
螺旋模型的特点 流的复杂程度定量度量程序的复杂程度,瀑布模型阶:段时间具有顺序性和依赖第七章
性。推迟现实的观点。质量保证的观点。1.选择程序设计语言应考虑哪些因素
快速原型模型:软件产品的开发基本上是1.系统用户的要求
线性顺序进行的,本质是“快速”加速软2.可以使用的编译程序
件的开发过程,节约软件开发成本。3.可以得到的软件工具
增量模型:能在较短时间内向用户提交可4.工程规模
完成部分工作的产品。逐步增加产品功5.程序员的知识
能,可以使用户有较充裕的时间学习和适6.软件可移植性要求
应新产品,从而减少一个全新的软件可能7.软件的应用领域
给客户组织带来的冲击。2.良好的编程风格包括哪些方面
螺旋模型:对可选方案和约束条件的强调1.程序内部的文档2.数据说明 3.语句构
有利于已有软件的重用,也有助于把软件造4.输入输出 5.效率
质量作为软件开发的一个重要目标。减少3软件测试的目标
了过多的测试或测试不足带来的风险。更目的:(1)测试是为了发现程序中的错误
重要的是在螺旋模型中维护只是模型的而执行程序的过程;
另一个周期,在维护和开发之间并没有本(2)好的测试方案是极可能发现迄今为
质区别。风险驱动的。止尚未发现的错误的测试方案;
(3)成功的测试是发现了至今为止尚未
第二章 发现的错误的测试。
1.可行性研究的目的 定义:为了发现程序中的错误而执行程序
就是用最小的代价在尽可能短的时间内的过程。
确定问题是否能够解决。补充:
补充: 软件测试步骤 :
可行性研究的步骤 :(1)模块测试(2)子系统测试(3)系统
1.复查系统规模和目标。测试(4)验收测试(5)平行运行
2.研究现有的系统。4.确定测试计划是在哪个阶段制定的3.导出新系统高层逻辑模型。5.黑盒测试和白盒测试的概念
4.进一步定义问题黑盒测试
5.导出和评价供选择的解法。1把程序看作一个黑盒子,完全不考虑程
6.推荐行动方针序的内部结构和处理过程
7.草拟开发计划2对程序接口进行测试,检查程序功能是
8.书写文档提交审查 否能按规格说明书的规定正常使用;
程序是否能适当地接受输入数据并产生
2.系统流程图的作用 正确的输出信息;
系统流程图是描绘物理系统的传统工具,程序运行过程中能否保持外部信息的完
它用图形符号来表示系统中的各个部件。整性
它表达了系统中各个元素之间的信息流白盒测试
动的情况。1把程序堪称装在一个透明的白盒子里,3.数据流图的概念 测试者完全知道程序的结构处理算法
数据流图是一种图形化技术,它描绘信息2按照程序内部的逻辑测试程序,检测程
流和数据从移动到输出的过程中所经受序中的主要执行通路是否都能按的变换。预定要求正确工作
4.数据流图里面的符号,画数据流图。6.测试的步骤及每个步骤形成的文档
5.数据字典最基本的功能,以及与数据流单元测试:(模块测试)发现的往往是编
图的关系。码和详细设计的错误
最基本的功能:在软件分析和设计的过程集成测试:着重测试模块的接口 中给人提供关于数据的描述信息。
关系:数据流图和数据字典共同构成系统系统测试:发现的往往是软件设计中的错的逻辑模型,没有数据字典,数据流图就误,也可能发现需要说明中的错误 不严格,然而没有数据流图,数据字典也验收测试:(确认测试)往往发现需求说难于发挥作用。只有数据流图和对数据流明书中的错误 图中每个元素的精确定义放在一起,才能7.渐增式和非渐增式的区别 共同构成系统的规格说明。“非渐增式”,即先独立地测试每一模块,第三章 然后将所有这些模块连接到一起运行; 1.需求分析属于哪一个阶段,任务是什“渐增式”,即在已测试过的N个模块的么。基础上再增加一个模块,再对N十1个模需求分析是软件定义时期的最后一个阶块进行测试。段.渐增式比非渐增式优越,因为用渐增式,1.确定对系统的综合要求(功能需求,性如果是“由顶向下”则可利用前面已测试能需求,可靠性和可用性需求,出错处理过的模块,而不必另外准备驱动模块,如需求,接口需求,约束,逆向需求,将来果是“由底向上”,也可利用已测试过的可能提出的要求)模块,不必再准备桩模块。渐增式可以较2.分析系统的数据要求早地发现模块界面之间的错误,有利于排3.导出系统的逻辑模型 错,检查比较彻底 4.修正系统开发计划2.需求分析的产品是什么 8.自顶向下,自下而上,以及混合策略的3.面向过程的分析方法主要是建立三类优缺点 模型 自顶向下数据模型(按照用户的观点对数据建立的优点:能较早显示整个程序的轮廓,向用模型,把用户的数据要求清楚,准确地描户展示程序的概貌,取得用户的理解与支述出来。描述了从用户角度看到的数据,持。缺点:当测试上层模块时因使用桩它反应了用户的现实环境,属性,联系),模块较多,很难模拟出真实模块的全部功功能模型,行为模型(通过描绘系统的状能,使部分测试内容被迫推迟,只能等待态及引起系统状态转换的事件来表示系换上真实模块后再补充测试。统的行为)由底向上4.软件需求规格说明书的内容 优点:测试从下层模块开始,测试设计用通常用自然语言完整,准确,具体地描述例比较容易。缺点:在测试的早期不能