第一篇:软件工程期末复习总结
软件工程期末复习总结
第一章 软件工程学概述
1.软件危机:是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。包括如何开发软件,如何维护数量不断膨胀的已有软件。
2.软件生命周期的定义及划分
3.软件从定义、开发、使用和维护,直到最终废弃的过程称为生命周期
4.按照软件生命周期全过程应完成的任务性质,在概念上可以把软件生命周期划分成问题定义、可行性研究、需求分析(定义时期)、总体设计、详细设计(系统设计)、编码和单元测试、综合测试以及运行维护(系统实现)共8个阶段
5.最基本的测试是集成测试和验收测试
6.软件配置主要包括:程序+数据+文档
7.软件工程的定义软件工程是把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;并研究其中提到的途径。
8.软件工程的基本原理
1.用分阶段的生命周期计划严格管理
2.坚持进行阶段评审
3.实行严格的产品控制
4.采用现代程序设计技术
5.结果应能清楚地审查
6.开发小组的人员应该小而精
7.承认不断改进软件工程实践的必要性
9.软件工程方法学包含3要素:方法、工具和过程。
分成传统方法学和面向对象方法学,其中传统方法学采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务。
10.软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定各项任务的工作步骤(who,when,what,how)
11.软件过程模型有瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型
12.瀑布模型优点
1.阶段间具有顺序性和依赖性
2.推迟实现的观点
3.质量保证的观点
13.软件工程由方法、(工具)和过程三部分组成,称软件工程的三要素。
14.从工程管理的角度软件设计可分为概要设计和(详细)设计两大步骤。
15.基于计算机系统的软件要素中的软件由程序、数据和(文档)组成。
16.软件设计也可看作将需求规格说明逐步转换为软件源代码的过程。()
17.软件生存周期(名词解释)软件从定义、开发、使用和维护,直到最终废弃的过程称为生命周期
18.软件危机(名词解释)是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题 原型法模型一般适应哪些场合?
它适合于那些不能预先确切定义需求的软件系统的开发,更适合于那些项目组成员(包括分析员、设计员、程序员和用户)不能很好交流或通信有困难的情况。
瀑布模型一般适应哪些场合?
瀑布模型一般适用于功能、性能明确、完整、无重大变化的软件系统的开发。例如操作系统、编译系统、数据库管理系统等系统软件的开发。应用有一定的局限性。
第二章 可行性研究
1.可行性研究的目的,就是用最小的代价尽可能短的时间内确定问题是否能够解决
2.至少包含下述3个方面:
1.技术可行性
2.经济可行性
3.操作可行性
3.数据流图的用途
1.交流信息的工具
2.作为分析与设计的工具
4.数据字典的内容由4类元素组成1.数据流
2.数据流分量(即数据元素)
3.数据存储
4.处理
5..系统流程图是物理系统模型
数据流图和数据字典是系统逻辑模型
5.成本/效益分析的方法:1.货币的时间价值,2投资回收期3纯收入4投资回收率
6.数据字典:是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合.第三章 需求分析
1.需求分析是软件定义时期的最后一个阶段,它的基本任务是准备地回答“系统必须做什么”这个问题
2.需求分析的任务
1.确定对系统的综合要求
2.分析系统的数据要求
3.导出系统的逻辑模型
4.修正系统开发计划
3.需求分析的结果是软件需求规格说明书
4.需求分析的方法
1.访谈
2.面向数据流自顶向下求精
3.简易的应用规格说明技术
4.快速建立软件原型,5…实践表明,快速建立软件原型是最准确、最有效和最强大的需求分析技术
6需求分析建模的工具
1.E-R图
2.层次方框图,描绘数据的层次结构
3.Warnier图
4.IPO图
7.验证软件需求应该从下面4个方面验证
1.一致性
2.完整性
3.现实性
4.有效性
第五章 总体设计
1.总体设计的基本目的就是回答“概括地说,系统该如何实现?”
2.总体设计也称概要设计或初步设计
3.总体设计的重要任务
1.划分系统元素和边界
2.设计软件的结构,即系统的模块组成和模块间的关系。
4.总体设计通常由两个阶段组成:
系统设计阶段,确定系统的具体实现方案
结构设计阶段,确定软件结构
5.模块是构成程序的基本构件。
6.模块化就是把程序分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户需求
7.模块化的根据就是分解复杂的问题容易解决
8.软件设计原理
1.模块化
2.抽象
3.逐步求精
4.信息隐藏和局部化
5.模块独立
9.模块设计的原则是高内聚,低耦合耦合是衡量不同模块彼此间互相依赖的紧密程度
内聚是衡量一个模块内部各个元素彼此结合的紧密程度
10.耦合的类型及设计原则:尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合内聚:使用功能内聚和顺序内聚
11.设计的启发式规则
1.提高独立性
2.模块适中
3.深度、宽度、扇入和扇出适当
4.模块作用域应该在控制域之内
5.降低模块接口的复杂度
6.设计单入口单出口的模块
7.模块功能可以预测
12.据流的设计方法的两种不同类型的设计:变换分析和事务分析
优化方法的格言:先使它能工作,然后再使它快起来
第六章 详细设计
设计阶段的根本目录是确定应该怎样具体地实质所要求的系统。
详细设计不是编码,而是设计出程序的“蓝图”
结构程序设计最早由Dijkstra提出
只要3种基本的控制结构就能实现任何单入口单出口的程序,这3种基本的控制结构是“顺序”、“选择”和“循环”
1.程序设计的经典定义:如果一个程序的代码块仅仅透过顺序、选择和循环这3中基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的结构程序设计是尽可能少用GOTO语句的程序设计方法,最好仅在检测出错误时才使用GOTO语句,而且应该总是使用前向GOTO语句
人机界面的设计质量,直接影响用户对软件产品的评价
设计人机界面总会遇到下述四个问题:
1.系统响应时间
2.用户帮助设备
3.出错信息处理
4.命令交互
人机界面设计指南:
1.置用户于控制之下
2.减少用户的记忆负担
3.保持界面一致
判定表可用作软件测试
Jackson图包含3类逻辑数据结构,顺序结构,选择结构,重复结构
第七章 实现
通常把编码和测试统称为实现
编码就是把软件设计结构翻译成某种程序设计语言书写的程序
测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误
软件测试的工作量往往占软件开发总工作量的40%以上
调试是测试阶段最困难的工作
G.Myers测试的目标或定义:
1.测试是为了发现程序中的错误而执行程序的过程
2.好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案
3.成功的测试是发现了至今为止尚未发现的错误的测试
软件测试准则
1.所有测试都应该能追溯到用户需求
2.应该远在测试开始之前就制定出测试计划
3.把Pareto原理应用到软件测试中
4.应该从“小规模”测试开始,并逐步进行“大规模”测试【(8020)测试发现的错误80%很可能是由程序中20%的模块造成的】
5.穷举测试是不可能的6.第三方测试(A编写,B测试)
V字型模型
测试分为白盒测试(结构测试)和黑盒测试(功能测试)
具体的测试方法{【(测试用例)()】【(覆盖条件)()】}
测试步骤:1.模块测试.2子系统测试 3.系统测试 4.验收测试 5.平行运行
软件可靠性:是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率
软件可用性:是程序在给定的时间点,按照规格说明书的规定,成功地运行的概率
第八章 维护
软件工程的主要目的是提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的总成本
所谓维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
四类维护
1.改正性维护纠正使用过程中暴露出来的错误
2.适应性维护适应外部环境变化
3.完善性维护改进原有软件
4.预防性维护改进将来的可维护性和可靠性
软件维护的特点
1.结构化维护与非结构化维护差别巨大
2.维护的代价高昂
3.维护的问题很多
决定软件可维护性的因素
1.可理解性
2.可测试性
3.可修改性
4.可移植性
5.可重用性
文档是影响软件可维护性的决定因素
软件系统的文档可以分为用户文档和系统文档两类
1.用户文档主要描述系统功能和使用方法
2.系统文档指从问题定义,需求说明验收测试计划这样一系列实现有关的文档
Miller:“把今天的方法学应用到昨天的系统上,以支持明天的需求。”
第二篇:软件工程-期末总结
软件工程期末总结
课程:姓名:学号:班级:xxxxx xxxxx xxxxxx xxxxxx
目录
1.软件工程学概述.........................................................1 1.1软件危机..........................................................1 1.2软件工程..........................................................1 1.3软件生命周期......................................................2 1.4软件过程..........................................................2 2.可行性研究:............................................................2 2.1可行性研究的任务..................................................2 2.2可行性研究的过程..................................................3 2.3数据流图..........................................................3 3.需求分析...............................................................3 4.形式化说明技术.........................................................4 5.模块设计...............................................................4 1.耦合:............................................................4 2.内聚..............................................................4 6.详细设计...............................................................5 6.1结构程序设计......................................................5 6.2人机界面设计......................................................5 7.软件测试...............................................................5 7.1软件测试的目标....................................................5 7.2软件侧试准则......................................................6 7.3测试方法..........................................................6 8.软件可靠性.............................................................7 8.1软件质量..........................................................7
1.软件工程学概述
1.1软件危机
1.1.1 软件危机的介绍:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。具体地说,软件危机主要有以下一些典型表现:1.对软件开发成本和进度的估计常常很不准确。2.用户对“已完成的”软件系统不满意的现象经常发生。3.软件产品的质量往往靠不住。4.软件常常是不可维护的。5.软件通常没有适当的文档资料。6.软件成本在计算机系统总成本中所占的比例逐年上升。7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。1.1.2产生软件危机的原因:在软件开发和维护的过程中存在这么多严重问题,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。1.1.3消除软件危机的途径:
1、认识到软件是程序、数据及相关文档的完整集合。2.认识到软件是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目;
3、推广使用在实践中总结出来的开发软件的成功的技术和方法,探索更好更有效的技术和方法;
4、开发和使用更好的软件工具。总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。
1.2软件工程
1.2.1软件工程的介绍:软件工程是指导计算机软件开发和维护的一门工程学科。定义:采用工程的概念、原理和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。1.2.2软件工程的基本原理:
1、用分阶段的生命周期计划严格管理
2、坚持进行阶段评审
3、实行严格的产品控制
4、采用现代程序设计技术
5、结果应能清楚地审查
6、开发小组的人员应该少而精
7、承认不断改进软件工程实践的必要性 1.2.3 软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型。软件工程方法学包含3个要素方法、工具和过程。目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学
1.3软件生命周期
软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。软件定义的3个阶段:问题定义、可行性研究、需求分析;软件开发的四个阶段:总、详(系统设计)、编、综(系统实现)软件生命周期每个阶段:1.问题定义2.可行性研究3.需求分析4.总体设计5.详细设计6.编码和单元测试7.综合测试8.软件维护
1.4软件过程
软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
1.4瀑布模型瀑布模型
一直是唯一被广泛采用的生命周期模型,有下述的几个特点:1.阶段间具有顺序性和依赖性(1)必须等前一阶段的工作完成之后,才能开始后一阶段的工作(2)前一阶段的输出文档就是后一段的输入文档,因此,前一阶段的输出文档必须正确。2.推迟实现的观点;3.质量保证的观点(1)每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务,(2)每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题改正错误。
优点:可强迫开发人员采用规范的方法;严格地规定每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。缺点:瀑布模型是由文档驱动的
2.可行性研究: 可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
2.1可行性研究的任务
可行性研究的目的不是解决问题,而是确定问题是否值得去解决。可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。在澄清了问题定义之后,分析员应该导出系统的逻辑模型。然后从系统逻辑模型出发,探索若干种可供选择的主要解法(即系统实现方案)。对每种解法都应该仔细研究它的可行性,一般说来,至少应该从下述3个方面研究每种解法的可行性。
1)技术可行性 使用现有的技术能实现这个系统吗?
2)经济可行性 这个系统的经济效益能超过它的开发成本吗? 3)操作可行性 系统的操作方式在这个用户组织内行得通吗?
必要时还应该从法律、社会效益等更广泛的方面研究每种解法的可行性。可行性研究需要的时间长短取决于工程的规模。一般来说,可行性研究的成本只是预期的工程总成本的5%-10%。
2.2可行性研究的过程
步骤:1.复查系统规模和目标2.研究目前正在使用的系统3.导出新系统的高层逻辑模型4.进一步定义问题5.导出和评价供选择的解法6.推荐行动方针7.草拟开发计划8.书写文档提交审查
2.3数据流图
数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。数据流图有四种基本符号:
正方形(或立方体)表示数据的源点或终点; 圆角矩形(或圆形)代表变换数据的处理; 开口矩形(或两条平行横线)代表数据存储; 箭头表示数据流,即特地数据的流动方向。
在数据流图中应该描绘所有可能的数据流向,而不应该描绘出现某个数据流的条件。数据存储和数据流都是数据,仅仅所处的状态不同。数据存储是处于静止状态的数据,数据流是处于运动中的数据。数据流图的基本要点是描绘“做什么”,而不是“怎么做”。数据流图的4种成分:源点或终点,处理,数据存储,数据流数据流图的基本目的是利用它作为交流信息的工具,另一个主要用途是作为分析和设计的工具。
3.需求分析
3.1.1确定对系统的综合需求1.功能需求2.性能需求3.可靠性和可用性需求4.出错处理需求5.接口需求6.约束7.逆向需求8.将来可能提出的需求
4.形式化说明技术
PSL/PSA系统的主要优点是它改进了文档质量,能保证文档具有完整性、一致性和无二义性,从而可以减少管理和维护的费用。数据存放在数据库中,便于增加、删除和更改,这也是它的一个优点。
5.模块设计
模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块独立。
1.耦合:
耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度因此,模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性。公共环境耦合的复杂程度随耦合的模块个数而变化,当耦合的模块个数增加时复杂程度显著增加。如果只有两个模块有公共环境,那么这种耦合有下面两种可能。1.一个模块往公共环境送数据,另一个模块从公共环境取数据。这是数据耦合的于一种形式,是比较松散的耦合。2.两个模块都既往公共环境送数据又从里面取数据,这种耦合比较紧密,介于数据耦合和控制耦合之间。如果两个模块共享的数据很多,都通过参数传递可能很不方便,这时可以利用公共环境耦合。最高程度的耦合是内容耦合。如果出现下列情况之一,两个模块间就发生了内容耦合。一个模块访问另一个模块的内部数据。一个模块不通过正常入口而转到另二个模块的内部。两个模块有一部分程序代码重叠(只可能出现在汇编程序中)。一个模块有多个入口(这意味着一个模块有几种功能)。应该坚决避免使用内容耦合。事实上许多高级程序设计语言已经设计成不允许在程序中出现任何形式的内容耦合。总之,耦合是影响软件复杂程度的一个重要因素。应该采取下述设计原则:尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。
2.内聚
内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件事情。内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合。内聚和耦合都一是进行模块化设计的有力工具,但是实践表明内聚更重要,应该把更多注意力集中到提高模块的内聚程度上。低内聚:偶然内聚、时间内聚、逻辑内聚;中内聚主要有两类:过程内聚和通信内聚;高内聚也有两类:顺序内聚和功能内聚。功能内聚是最高程度的内聚。
6.详细设计
详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。详细设计阶段的任务还不是具体地编写程序,而是要设计出程序的“蓝图”,以后程序员将根据这个蓝图写出实际的程序代码。因此,详细设计的结果基本上决定了最终的程序代码的质量。考虑程序代码的质量时必须注意,程序的“读者”有两个,那就是计算机和人。在软件的生命周期中,设计测试方案、诊断程序错误、修改和改进程序等都必须首先读懂程序。实际上对于长期使用的软件系统而言,人读程序的时间可能比写程序的时间还要长得多。因此,衡量程序的质量不仅要看它的逻辑是否正确.性能是否满足要求,更主要的是要看它是否容易阅读和理解。详细设计的目标不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。结构程序设计技术是实现上述目标的关键技术,因此是详细设计的逻辑基础。
6.1结构程序设计
如果一个程序的代码块仅仅通过顺序,选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称为程序的结构化。
6.2人机界面设计
人机界面设计是接口设计的一个重要的组成部分。在设计人机界面过程会遇到下面4个问题:系统响应时间,用户帮助设施,出错信息处理和命令交互。用户界面设计过程是一个迭代的过程,首先创建设计模型,再用原型实现这个设计模型,并由用户试用和评估,然后根据用户意见进行修改。为了支持上述迭代过程,各种用于界面设计和原型开发的软件工具产生。它们为简化窗口,菜单,设备交互,出错信息,命令及交互环境的许多其它元素的疮疖提供各种历程或对象。用户界面评估周期如下,完成初步设计之后就创建第一级原型,用户使用并评估该原型,直接向设计者表述对界面的评价,设计中根据用户意见修改设计并实现下一级原型。
7.软件测试
7.1软件测试的目标
1.测试是为了发现程序中的错误而执行程序的过程。2.好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。3.成功的测试是发现了至今为止尚未发现的错误的测试。从上述规则可以看出,测试的正确定义是“为了发现程序中的错误而执行程序的过程”。这和某些人通常想象的“测试是为了表明程序是正确的”,“成功的
测试是没有发现错误.的测试”等是完全相反的。正确认识测试的目标是十分重要的,测试目标决定了测试方案的设计。如果为了表明程序是正壑耍进行测试,就会设计一些不易暴露错误的测试方案;相反,如果测试是为了发现程序中的错误,就会力求设计出最能暴露错误的测试方案。由于测试的目标是暴露程序中的错误,从心理学角度看,由程序的编写者自己进行测试是不恰当的。因此,在综合测试阶段通常由其他人员组成测试小组来完成测试工作。此外,应该认识到测试决不能证明程序是正确的。即使经过了最严格的测试之后,仍然可能还有没被发现的错误潜藏在程序中。测试只能查找出程序中的错误,不能证明程序中没有错误。关于这个结论下面还要讨论。
7.2软件侧试准则
怎样才能达到软件测试的目标呢?为了能设计出有效的测试方案,软件工程师必须深人理解并正确运用指导软件测试的基本准则。下面讲述主要的测试准则。1.所有测试都应该能追溯到用户需求。2.应该远在测试开始之前就制定出测试计划。3.把Paret原理应用到软件测试中。Pareto原理说明,测试发现的错误中的80%很可是由程序中20%的模块造成的。当然,问题是怎样找出这些可疑的模块并彻底地测试它们。4.应该从“小规模”测试开始,并逐步进行“大规模”测试。通常,首先重点测试单个程序模块,然后把测试重点转向在集成的模块簇中寻找错误,最后在整个系统中寻找错误。5.穷举测试是不可的。所谓穷举测试就是把程序所有可能的执行路径都检查一遍的测试。即使是一个中等规模的程序,其执行旋的排列数也十分庞大,由于受时间、人力以及其他资源的限制,在测试过程中不可能执行每个可能的路径。囚此,测试只能证明程序中有错误,不能证明程序中没有错误。但是,精心地设计测试方案,有可能充分覆盖程序逻辑并使程序达到所要求的可靠性。6.为了达到最佳的测试效果,应该由独立的第三方从事测试工作。所谓“最佳效果”是指有最大可能性发现错误的测试。由于前面已经讲过的原因,开发软件的软件工程师并不是完成全部测试工作的最佳人选(通常他们主要承担模块测试工作)。
7.3测试方法
测试任何产品都有两种方法:如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用琅口果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正乒进行。前一种方法称为黑盒测试,后一种方法称为白盒测试。对于软件测试而言,黑盒测试法把程序看作一个黑盒子,完全不考虑程序的内部结均和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序否能适当地接收输人数据并产生正确的输出信息,程序运行过程中能否保持外部信息(例如,数据库或文件)的完整性。黑盒测试又称为功能测试。白盒测试法与黑盒测试法相反,它的前提是可以把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按测程序中的主要执行通路是否都能按预定要求正确工作。照程序内部的逻辑测试程序,白盒测试又称为结构测试。
8.软件可靠性
可靠性定义:软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功的运行的概率可用性定义:软件可用性是程序在给定的时间点,按照规格说明书的规定,成功的运行的概率基本假定 1.在测试之前每1000条指令中大约有5~20个错误 2.失效率正比于剩余的错误数,平均无故障时间MTTF与剩余错误数成反比3.为了简化讨论假设发现的每一个错误都立即正确地改正了。
8.1软件质量
概括地说,软件质量就是“软件与明确地和隐含地定义的需求相一致的程度”。更具体地说,软件质量是软件与明确地叙述的功能和性能需求、文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。上述定义强调了下述的6个要点: 1.正确性(它按我的需要工作吗?)系统满足规格说明用户目标的程度,即,在预定环境下能正确的完成预期功能的程度。
2.健壮性(对息外环境它能适当地响应吗?)在硬件发生故障、输入的数据无效或操作错误等意外环境下,系统能做出适当的响应程度。
3.效率〔完成预定功能时它需要的计算机资源多吗?)为了完成预定的功能,系统需要的计算资源的多少。
4.完整性(安全性)(它是安全的吗?)对未经授权的人使用软件或数据的企图,系统能够控制(禁止)的程度。
5.可用性(我能使用它吗?)系统在完成预定应该完成的功能时令人满意的程度。6.风险(能按预定计划完成它吗?)按预定的成本和进度把系统开发出来,并且为用户所满意的概率。
第三篇:软件工程复习总结
第1章
1什么是软件危机,产生软件危机的原因,消除软件危机的途径。
落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
软件维护费用的急剧上升,直接威胁计算机应用的扩大;软件生产技术进步缓慢,是加剧软件危机的重要原因。
既要有技术措施,又要有必要的组织管理措施。2什么是软件,软件的精确定义。
软件是程序以及开发、使用和维护程序所需的所有文档.。3软件工程的精确定义,软件工程的7个特征,7基本原理。
软件工程是指导计算机软件开发和维护的一门工程学科。1,软件工程关注于大型程序的构造; 2,软件工程的中心课题是控制复杂性; 3,软件经常化;
4,开发软件的效率非常重要; 5,和谐地合作是开发软件的关键; 6,软件必须有效地支持它的用户;
7,在软件工程领域中是由一种文化背景的人替具有另一种文化背景的人创造产品。基本原理:
1,用分阶段的生命周期计划严格管理; 2,坚持进行阶段评审; 3,实行严格的产品控制; 4,采用现代程序设计的技术; 5,结果应能清楚地审查;
6,开发小组的人员应该少而精;
7,承认不断改进软件工程实践的必要性。
4软件工程方法学的精确定义,它的三要素。二种方法学,面向结构,面向对象
3个要素:方法 工具和过程 两种方法学:1传统方法学2面向对象方法学 5什么是软件生命周期,它有哪几个阶段(8个阶段),各个阶段分别做什么,这些阶段的重要性。
一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。阶段:1问题定义2可行性研究3需求分析4总体设计5详细设计6编码和单元测试7综合测试8软件维护
6软件过程的精确定义,它与软件工程的关系,它的各种模型,各种模型的优缺点,适用范 围。
软件过程为一个为建造高质量软件所需完成的任务的框架,它规定了完成各项任务的工作步骤。瀑布模型 快速原型模型 增量模型 螺旋模型 喷泉模型 第2章
1什么是可行性研究,它的目的,它的任务,可行性研究是在项目建议书被批准后,对项目在技术上和经济上是否可行所进行的科学分析和论证。目的:用最小的代价在尽可能短的时间内确定问题是否能够解决。任务:对以后的行动方针提出建议。
2从哪几个方面进行可行性研究,每个方面研究什么,它的目的,它的任务。
1技术可行性2经济可行性3操作可行性 3可行性研究的过程,8个阶段。
1.复查系统规模和目标2.研究目前正在使用的系统3.导出新系统的高层逻辑模型4.进一步定义模型5.导出和评价供选择的解法6.推荐行动方针7.草拟开发计划8.书写文档提交审查 4系统流程图,表达什么,它的符号,符号含义 概括地描绘物理系统的传统工具。
5数据流程图,描绘什么,它的符号,符号含义,画法,数据流程图的用途(重点)描绘信息流和数据从输入移动到输出的过程中所经受的变换。
6数据字典的精确定义,作用,内容(4类定义组成)定义数据的方法,用途,实现。
数据字典是关于数据的信息的集合。对数据流图中包含的所有元素的定义的集合。
内容1.数据流2数据流分量3数据存储4处理 7成本效益分析,使用的方法 第3章
1需求分析,它的任务,它的重要性,它的结果,要遵守的4条准则。
开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。
基本任务: ⑴问题识别:双方确定对问题的综合需求,这些需求包括功能需求,性能需求,环境需求,用户界面需求。
重要性:需求分析可以使得开发和测试更能够了解客户的需求,把一些技术难点和可能遇到的难点问题提出来,尽早解决,并且达到一致,便于以后的开发和测试
需求分析结果是产生:需求规格说明书
⑵分析与综合,导出软件的逻辑模型
⑶编写文档:包括编写“需求规格说明书”,“初步用户使用手册”,“确认测试计划”,“修改完善软件开发计划” 任务的7项要求,与用户沟通的方法
获取需求的方法,用到的图形工具:E_R图,图描述什么,使用符号 状态转换图,其他图形,IPO图等 验证需求,4个方面 第5章
1总体设计的目的,任务
总体设计的基本目的就是回答“概括地说,系统应该如何实现?”这个问题。任务是设计软件的结构,也就是明确系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。必要性:可以站在全局的高度上,花较少成本,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软件系统。2设计过程,二个阶段9个步骤
两个阶段:1系统设计阶段,确定系统的具体实现方案2结构设计阶段,确定软件结构。设计过程的9个步骤:1设想供选择的方案2选取合理的方案3推荐最佳方案4功能分解5设计软件结构6设计数据库7制定测试计划8书写文档9审查和复审。3设计原理,模块化,与模块化有关的独立,度量标准:耦合,内驟
设计原理:1模块化2抽象3逐步求精。模块独立程度的两个定性标准度量:1内聚2耦合。
4启发式7条规则,启发规则:1改进软件结构提高模块独立性2模块规模应该适中3深度、宽度、扇出、扇入都应适中4模块的作用域应该在控制域之内5力争降低模块接口的复杂程度6设计单入口单出口的模块7模块功能应该可以预测。5各种图形工具,HIPO,结构图,数据流图
描绘软件结构的图形工具:1层次图2 HIPO图3结构图;面向数据流的设计方法把信息流映射程软件结构,信息流的类型决定了映射的方法信息流有下述两种类型:1变换流2事务流。第6章
1详细设计的目的,任务
详细设计的根本目标 :是确定应该怎样具体地实现所要求的系统,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言写的程序。
任务:是要设计出程序的“蓝图”,以后程序员将根据这个蓝图写出实际的程序代码。必要性:衡量程序的质量不仅看它的逻辑是否正确,性能是否满足要求,更重要的是要看它能够简单易懂,详细设计的目的不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。
2结构化:定义,指导思想,哪几种结构,使用的工具,建立什么模型使用什么工具
结构化的定义:结构化程序设计是尽可能少用GOTO语句的程序设计方法,最好仅在检测出错误时才使用GOTO语句,而且应该总是使用前向goto语句。结构有三种:顺序,选择,和循环。
指导思想:采用自顶向下,逐步求精的程序设计方法,使用三种基本控制结构构造程序,任何程序都可由顺序,选择,重复三种基本控制结构构造。结构:顺序结构,选择结构,循环结构 工具:图形,表格,和语言
3人机界面设计,要解决的问题,设计过程,设计指南
人机界面设计是接口设计的一个重要组成部分,遇到的四个问题:系统响应时间,用户帮助设施,出错信息处理和命令交互。
设计过程,用户界面设计是一个迭代的过程,通常先创建设计模型,再用原型实现这个设计模型,并由用户试用和评价,然后根据用户意见进行修改。设计指南:一般交互指南,信息显示指南和数据输入指南
4过程设计的各种工具,程序流程图,盒图,PAD图,判定表,判定树,过程设计语言
过程设计的工具有三类:图形,表格,语言。具体有如下几种
程序流程图,盒图,pad图,判定表,判定树,过程设计语言(PDL)
5面向数据结构的设计方法,jackson方法,使用的图形工具
设计方法:根据数据结构设计程序处理过程的方法。
数据的3种使用方法:顺序,选择,重复。Jackson方法
Jackson结构程序设计方法基本上由下述5个步骤组成,(1)分析并确定输入数据和输出数据的逻辑结构,并用jackson图描述这些数据结构(2)找出输入数据结构和输出数据结构中有对应关系的数据单元。
(3)用下述3条规则从描绘数据结构的jackson图导出描绘程序结构的jackson图。
1、为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框。
2根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。总之,描绘程序结构的jackson图应该综合输入数据结构和输出数据结构的层次关系而导出来。在导出程序结构图的过程中,由于改进的jackson图规定在构成顺序结构的元素中不能有重复出现或选择出现的元素,因此可能需要增加中间层次的处理框图。(4)、列出所有操作和条件,并且把它们分配到程序结构图的适当位置。(5)用伪码表示程序。使用的图形工具:jackson图
6复杂度的度量,McCabe方法,流图,(2014年重点)
复杂度度量:把程序的复杂程度乘以适当的常数即可估算出软件中的错误的数量以及软件开发需要的工作量
Mccabe方法:根据程序控制流的复杂程度定量度量程序的复杂程度 第7章
1实现的重点是测试
2软件测试的基础:目标,准则,方法,测试5步骤
软件测试的基础:在测试阶段测试的人员努力设计出一系列的方案,目的却是为了“破坏”已经建造好的软件系统—竭力证明程序中有错误,不能按照预定要求正确工作。发现问题是为了解决问题,测试阶段的根本目标是尽可能多地发现并排除软件中潜在的错误,最终把一个高质量的软件系统交给用户使用。软测的目标:①测试是为了发现程序中的错误而执行程序的过程。②好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。③成功的测试是发现至今为止尚未发现的错误的测试。
软测的准则:①所有的测试都应该能追溯到用户的需求。②应该远在测试开始之前就制定出测试计划。③把Pareto原理应用到软测中。④应该从“小规模”测试开始,并逐步进行“大规模”测试。⑤穷举测试是不可能的。⑥为了达到最佳的测试效果,应该由独立的第三方从事测试工作。
测试方法:白盒测试(结构测试)、黑盒测试(功能测试)。
测试步骤:①模块测试②子系统测试③系统测试④验收测试⑤平行测试。3单元测试,测试的重点,测试方案
单元测试:在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试;集中检测软件设计的最小单元---模块。
单元测试方法有:人工测试和计算机测试;单元测试主要使用白盒测试技术,而且对多个模块的测试可以并行的进行。
单元测试的重点:①模块接口②局部数据结构③重要的执行通路④出错处理通路⑤边界条件
4集成测试:集成的策略,自顶向下,自底向上
集成测试:测试和组装软件的系统化技术。
集成测试的策略:自顶向下和自底向上。
自顶向下集成方法是一个日益为人们广泛采用的测试和组成软件的途径。从主控制模块开始,沿着程序的控制层次向下移动,逐渐把各个模块结合起来。自底向上集成:从“原子”模块开始组成和测试。
5确认测试,范围,Alpha测试Beta测试
确认测试:又称验收测试,它目标是验证软件的有效性。
Alpha测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试,其是在受控的环境中进行的。
Beta测试由软件的最终用户们在一个或多个客户场所进行。与Alpha测试不同,开发者通常不在Beta测试的现场,因此Beta测试是软件开发者不能控制的环境中的“真实”应用。6白盒测试,黑盒测试(重点)
白盒测试:通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行。黑盒测试:通过测试来检测每个功能是否都能正常使用。
7软件的可靠性,计算公式
软件的可靠性:程序在给定的时间间隔内,按照规格说明书的规定成功的运行的概率。设计白盒测试方案的技术主要有逻辑技术和控制结构测试;设计黑盒测试方案的技术主要有等价划分、分界值分析和错误推测。
第8章
1软件维护的定义,4项活动,4类维护
软件维护的定义:在软件已经交付使用后,为了改正错误或满足新的需要而修改软件的过程。
四项维护:第一项维护活动:在任何大型程序的使用期间,用户必然会发现程序错误,并且把他们遇到的问题报告给维护人员,让维护人员诊断和改正的过程。第二项维护活动:为了和变化了的环境适当地配合而进行的修改软件的活动,是既必要又经常的维护活动。第三项维护活动:在使用软件的过程中用户往往提出增加新功能或修改已有功能的建议,还可能提出一般性的改进意见。第四项维护活动:为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件。
四类维护:改正性维护、适应性维护、完善性维护、预防性维护 2软件维护的特点,问题,软件维护的特点:结构化维护与非结构化维护差别巨大、维护的代价高昂、维护的问题很多
软件维护的问题:
1)理解别人写的程序通常非常困难,而且困难程度随着软件配置成分的减少而迅速增加。2)需要维护的软件往往没有合格的文档,或者文档资料显著不足。
3)当要求对软件进行维护时,不能指望有开发人员给人们仔细说明软件。由于维护阶段持续的时间很长,因此,当需要解释软件时,往往原来写程序的人已经不在附近了。4)绝大多数软件在设计时没有考虑将来的修改。5)软件维护不是吸引人的工作。3软件维护的过程
软件维护的过程:维护组织、维护报告、维护的事件流、保存维护记录、评价维护活动 4软件的可维护性
软件可维护性定义:维护人员理解、改正、改动或改进这个软件的难易程度。决定软件可维护性的因素:可理解性、可测试性、可修改性、可移植性、可重用性 5预防性维护与软件再工程。
预防性维护由Miller提出来把今天的方法学应用到昨天的系统上以支持明天的明天的需求
6软件再工程
6类活动:1.库存目录分析2.文档重构3.逆向工程4.代码重构5.数据重构6.正向工程 第9章
1面向对象方法学的定义,要点,优点
定义:面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO(Object-Oriented)方法,是建立在“对象”概念基础上的方法学。
要点:1认为客观世界是由各种对象构成的,任何事物都是对象,复杂的对象可以由简单的对象以某种方式组合而成。2,把所有的对象都划分成各种对象类,每个对象类都定义了一组数据和一组方法。3,按照子类与父类的关系,把若干个对象组成一个层次结构的的系统。4,对象之间仅能通过传递消息互相联系。
优点:1.与人类习惯的思维方法一致2.稳定性好3.可重用性好4.较易开发大型软件产品5.可维护性好
2对象的定义,要点,优点
定义:1.对象是具有相同状态的一组操作的集合2.对象是对属性值和操作的封装。3.对象::=
3面向对象的概念,定义,特点
面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术[1]发展到一定阶段后的产物。
特点:1对象唯一性2分类性3继承性4多态性 优点:1易维护2质量高3效率高4易扩展 4类的定义,实例、消息、方法、属性,继承等概念
类的定义:类就是具有相同数据和相同操作的一组相似对象的定义。实例:实例就是由某个特定类所描述的一个具体的对象。
消息:小时就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。方法:方法就是对象所能执行的操作,也就是类中所定义的服务。
属性:属性就是类中所定义的数据,它是对客观世界实体说具有的性质的抽象。封装:在面向对象的程序中,把数据和实现操作的代码集中放在对象内部。
继承:在面向对象的软件技术中,继承是子类自动地共享基类中的数据和方法的机制。多态:多态性是指子类对象可以像父类对象那样使用,同样地消息既可以发给父类对象也可以发给子类对象。重载:函数重载是指在同一作用域类的若干个参数特征不同的函数可以使用相同的函数名字,运送符号重载是指同一个运算符可以施加在不同类型操作数上面。5面向对象建模,对象模型(重点),功能模型(重点)动态模型,模型怎么画,各种符号 6面向对象方法学使用的语言
面向对象语言是一类以对象作为基本程序结构单位的程序设计语言,指用于描述的设计是以对象为核心,而对象是程序运行时刻的基本成分。语言中提供了类、继承等成分。第10章
3个子模型和5个层次 怎样确定类与对象
类是对象的抽象,对象是类的具体实例。确定关联,各种关联怎样确定
建立动态模型,编写脚本,画事件跟踪图
第四篇:软件工程复习知识点总结
1.软件危机的概念,内容,原因及消除的途径; 2.软件工程的定义,基本原理;
3.软件工程方法学的基本概念、内容;
4.软件生命周期的具体内容,每一个阶段的任务是什么?结合具体的工程例子来理解做软件项目主要分那几个阶段。
5.理解几个典型软件过程的内容及其优点与缺点:瀑布模型、增量模型、快速原型模型、螺旋模型、喷泉模型等; 6.了解可行性研究中的任务和过程;
7.掌握系统流程图的概念和方法,会从具体的案例中抽象出系统流程图; 8.掌握数据流图的概念和方法,会从具体的案例中画出0层数据流图和功能级数据流图;
9.掌握数据字典的内容、方法、用户和实现; 10.了解成本/效益分析方法;
11.了解需求分析过程中任务是什么.12.理解面向数据流自顶向下逐步求精的方法和意义;
13.理解分析及建模的意义,需求分析中应该建立哪三种模型?有哪些工具来帮助建立这些模型?
14.掌握实体关系(E-R)图的概念,内容和实现方法,能结合具体实例建立实体关系图;
15.掌握状态图的概念,内容,实现方法和作用;
16.掌握层次方框图、warnier图、IPO图的概念,内容和作用; 17.有穷状态机的概念和内容;
18.总体设计是做什么?总体设计的过程是怎样的?总体结构设计的目的是什么?
19.掌握几个设计原理,理解他们的内容和意义;
20.掌握耦合和内聚的概念和内容,理解这些原理对设计有哪些指导意义; 21.耦合包含了哪些类型?每个类型的具体内容是什么?要求能通过程序代码识别出耦合类型。
22.启发性规则的内容及部分概念。23.层次图、HIPO图和结构图的内容;
24.掌握面向数据流的设计方法,了解其中涉及到的概念(变换流,事务流),结合例子理解变换分析的具体过程。25.详细设计是做什么? 26.什么是结构程序设计?
27.人机界面设计问题包含哪些?
28.掌握设计过程中用到的工具:程序流程图的概念,内容和方法;盒图的概念、内容和方法;会结合实例使用这些工具;掌握PAD 图的概念和内容;掌握判定表的概念和内容。要结合实例来掌握它们。
29.了解结合Jackson图来掌握面向数据结构的设计方法;会用Jackson程序设计方法对具体的实例进行设计。
30.掌握几种测试:单元测试、集成测试、确认测试、白盒测试技术和黑盒测试技术;掌握它们的概念,内容和方法;
31.对每一种测试方法,理解其具体细节:比如理解什么是渐增式测试和非渐增式测试,什么是Alpha测试和Beta测试.....; 32.结合G.J.Myers的观点理解软件测试的目的;(教材p150)33.掌握白盒测试的技术细节(比如:掌握逻辑覆盖中的8个覆盖点;掌握基本路径测试,会根据过程设计结果画出相应的流图;会计算流图的环形复杂度;会计算出线性独立路径的基本集合);掌握黑盒测试的技术细节; 34.理解软件维护的定义、特点和维护过程; 自测练习题:
一、选择题
1.瀑布模型的存在问题是()
A.用户容易参与开发
B.缺乏灵活性
C.用户与开发者易沟通
D.适用可变需求
2.可行性分析是在系统开发的早期所做的一项重要的论证工作,它是决定该系统是否开发的决策依据,因必须给出()的回答。
A.确定
B.行或不行
C.正确
D.无二义
3. 系统流程图是用来
()
A 描绘程序结构的 B 描绘系统的逻辑模型
C 表示信息层次结构的图形工具 D 描绘物理系统的 4.下列属于维护阶段的文档是()
A.软件规格说明
B.用户操作手册
C.软件问题报告
D.软件测试分析报告 5.软件按照设计的要求,在规定时间和条件下达到不出故障,持续运行的要求的质量特性称为()
A.可用性
B.可靠性
C.正确性
D.完整性
6、快速原型模型的主要特点之一是()A.开发完毕才见到产品
B.及早提供全部完整的软件产品 C.开发完毕后才见到工作软件 D.及早提供工作软件
7、软件需求分析的主要任务是准确地定义出要开发的软件系统是()A.如何做
B.怎么做 C.做什么
D.对谁做
8.若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0,1.0],现从输入的角度考虑一组测试用例:-1.001,-1.0,1.0,1.001。设计这组测试用例的方法是()
A.条件覆盖法
B.等价分类法
C.边界值分析法
D.错误推测法
9.研究开发所需要的成本和资源是属于可行性研究中的研究的一方面。()A.技术可行性
B.经济可行性 C.社会可行性
D.法律可行性 10.模块的内聚性最高的是()A.逻辑内聚
B.时间内聚 C.偶然内3 聚
D.功能内聚
12.()是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是隐蔽的,外界只能通过有限的接口与对象发生联系。A 多态性 B 继承 C 封装 D 消息
二、填空题
1.将数据流图映射为程序结构时, 所用映射方法涉及信息流的类型。其信息流分为 和 两种类型。
2.为了便于对照检查,测试用例应由输入数据和预期的_ _____两部分组成。3.软件由程序、、组成。
4.在学校中,一个学生可以选修多门课程,一门课程可以由多个学生选修,那么学生和课程之间是
关系。
5.软件工程釆用层次化的方法,每个层次都包括、方法、三要素。6.一个模块拥有的直属下级模块的个数称为,一个模块的直接上级模块的个数称为。
三、名词解释题 1.内聚性 2.软件危机 3.完善性维护 4.数据字典 5.程序流图 6.驱动程序 7.数据耦合 8.类图
9.Alpha测试与Beta测试 10.软件产品
四、简答题
1.黑盒测试旨在测试软件是否满足功能要求,它主要诊断哪几类错误? 2.瀑布模型、增量模型的优缺点
3.程序流程图或者盒图的5种基本结构的画法 4.简述过程设计语言(PDL)的特点。
5.根据特定的项目,你会考虑哪些因素来选择合适的程序设计语言。6.(教材P141)画出下列伪码程序的程序流程图和盒图 START IF p THEN WHILE q DO f END DO ELSE BLOCK 4 g n END BLOCK END IF STOP 7.(教材P141)研究下面的PDL语言(过程设计语言,也称伪码程序): LOOP: Set I to(START + FINISH)/2 If TABLE(I)=ITEM goto FOUND If TABLE(I)
五、综合题(三题分别5,7,8分,共20分)
1.某培训中心要研制一个计算机管理系统。它的业务是: 将学员发来的信件收集分类后,按几种不同的情况处理。
如果是报名的,则将报名数据送给负责报名事务的职员,他们将查阅课程文件,检查该课程是否额满,然后在学生文件、课程文件上登记,并开出报告单交财务部门,财务人员开出发票给学生。
如果是想注销原来已选修的课程,则由注销人员在课程文件、学生文件和帐目文件上做相应的修改,并给学生注销单。
3)如果是付款的,则由财务人员在帐目文件上登记,也给学生一张收费收据。要求:
(1).对以上问题画出功能级数据流程图。(2).画出该培训管理的软件结构图。
2.某旅馆的电话服务如下:
可以拨分机号和外线号码。分机号是从7201至7299。外线号码先拨9,然后是市话号码或长话号码。长话号码是以区号和市话号码组成。区号是从100到300中任意的数字串。市话号码是以局号和分局号组成。局号可以是455,466,888,552中任意一个号码。分局号是任意长度为4的数字串。
要求:写出在数据字典中,电话号码的数据条目的定义即组成。
3.软件测试的过程包括哪些?黑盒测试与白盒测试的具体内容是什么?它们分别针对哪几类错误?
一.集成测试中自顶向下集成和自底向上集成的优缺点?
1、自顶向下集成 优点:较早地验证了主要控制和判断点;按深度优先可以首先实现和验证一个完整的软件功能;功能较早证实,带来信心;只需一个驱动,减少驱动器开发的费用;支持故障隔离。
缺点:柱的开发量大;底层验证被推迟;底层组件测试不充分。适应于产品控制结构比较清晰和稳定;高层接口变化较小;底层接口未定义或经常可能被修改;产口控制组件具有较大的技术风险,需要尽早被验证;希望尽早能看到产品的系统功能行为。
2、自底向上集成
优点:对底层组件行为较早验证;工作最初可以并行集成,比自顶向下效率高;减少了桩的工作量;支持故障隔离。
缺点:驱动的开发工作量大;对高层的验证被推迟,设计上的错误不能被及时发现。
适应于底层接口比较稳定;高层接口变化比较频繁;底层组件较早被完成。
二.简述螺旋模型的基本开发过程。正确答案
(1)需求定义。利用需求分析技术理解应用领域,获取初步的用户需求,制定项目开发计划。
(2)风险分析。根据初始需求或改进意见评审可选用的方案,给出消除或减少风险的途径。
(3)工程实现。利用快速原型构造方法针对已知的用户需求生成快速原型。(4)评审。将原型提交用户使用并征询用户改进意见。
上述过程将不断迭代,直至给出用户满意的目标软件产品。
三.一般而言,衡量某种程序语言是否适合于特定的项目,应考虑哪些因素?(1)应用领域;(2)算法和计算复杂性;(3)软件运行环境;(4)用户需求中关于性能方面的需要;(5)数据结构的复杂性;(6)软件开发人员的知识水平;(7)可用的编译器与交叉编译器。
四.名词解释:
软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象
软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的和隐含特征相一致的程度。
恢复测试是指采取各种人工干预方式强制性地使软件出错,使其不能正常工作,6 进而检验系统的恢复能力。
类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等
数据耦合指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递
第五篇:软件工程复习点总结
软件工程
第一章
1.软件过程模型有:线性顺序模型(瀑布模型),原型实现模型,螺旋模型,快速应用开发模型RAD,并发模型,基于构件的开发模型,形式化方法模型,第四代技术。2.软件危机变现:《1》软件代价高
《2》开发进度难以控制
《3》工作量估计困难 《4》质量差
《5》修改、维护困难
3.维护类型:改正性维护,适应性维护,完善性维护,预防性维护。
4.软件是计算机系统中与硬件相互依存的另一部分,它是包括程序在,数据及其相关文档的集合。
5.软件工程是一门旨在生产无故障的,及时交付的,在预算之内的和满足用户需求的软件学科。
6.软件生命周期包括了软件定义,软件开发和运行维护3个时期组成。
7.软件生命周期模型有问题定义,可行性研究,需求分析,总体详细设计,总体编码和单元测试,综合测试软件维护组。
8.CMM是用于评价一个组织软件过程成熟度和识别增加这些过程的成熟度所需要的关键实践的一个模型,是建立软件组织所使用的进程成熟度的模型以及定义和测量过程成熟度的有效方法,在实际中被软件开发组织用于软件过程改进和评估。9.软件过程开发模型: 1)线性模型(瀑布模型):特点:自上而下,相互衔接如同瀑布流水,逐级下落,体现不可逆转性。
优点:强调开发的阶段性、强调早期计划和需求调查以及强调产品测试。
(1)为项目提供了按阶段划分的检查点
(2)当前一阶段完成后,你自需要去关注后序阶段。(3)开在迭代模型中应用瀑布模型。
缺点:(1)在项目各阶段之间极少有反馈。
(2)只用在项目生命周期的后期才能看到结果。
(3)通过过多的强制完成时期和里程碑来跟踪各个阶段。
适用性:用户的需求非常清楚全面。2)快速原型模型:(1)可以得到比较良好的需求定义,容易适应需求的变化。
(2)有利于开发与培训的同步
(3)开发费用低,开发周期短且对用户更友好
缺点:(1)客户与开发者对原型模型理解不同
(2)准确的原型设计比较困难(3)不利于开发人员开发
3)增量型优点:(1)人员分配灵活
(2)如果核心产品很受欢迎,则可增加人力实现下一个增量(3)可先发布部分功能给客户,对客户起到镇静剂的作用
缺点:(1)并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构。
(2)容易退化为边做边改模型。从而使软件过程的控制失去整体性。
4)螺旋模型:(1)设计上的灵活性,可以在项目的各个阶段进行变更。
(2)以小的分段来构建大型系统,使成本计算变得简单容易。
(3)随着项目推进,客户始终掌握项目的最新消息,从而他或她能够和管理层有效交互。
缺点:(1)采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。
(3)过多的迭代次数会增加开发成本,延迟提交时间。
10.可行性分析法包括:(1)经济可行性(2)技术可行性(3)运行可行性(4)法律可行性
(5)开发方案的选择 11.需求工程分为:
(1)系统可行性研究:它指的现有的软件、硬件技术能否实现用户对新系统的需求。,从业务角度来决定系统开发是否划算以及在预算范围内能否开发出来。
(2)需求导出和分析:这是一个通过对现有系统分析与潜在用户和购买者讨论。进行任务分析等导出系统需求的过程,也可能需要一个或多个不同的系统模型和原型
(3)需求描述。需求描述就是把分析活动中收集信息以文档的形式确定下来。(4)需求有效性验证。这个活动检查需求实现、一致和完备。
(5)需求管理。需求管理是一种系统化方法,可用于获取、组织和记录系统需求并使客户和项目团队在系统变更需求上达成并保持一致。12.软件需求5个方面:(1)问题识别(2)评估与综合(3)建模
(4)规约(5)评审 13.需求获取方法:(1)建立联合分析小组
(2)客户访谈(3)问题分析与确认(4)快速原型法
14.需求分析原则:(1)必须能够表达和理解问题的数据域和功能域
(2)按按自顶向下,逐层分解。
(3)要给出系统的逻辑视图和物理视图。15.软件设计分为总体设计和详细设计。16.总体设计任务:
(1)系统分析员审查软件计划、软件需求分析、提供的文档、提出最佳推荐方案,用系统流程图,组成物理元素清单,成本效益分析,系统的进度计划,供专家审定后进入设计。(2)去顶模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。确定模块之间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。(3)编写概要设计说明书,用户手册、测试计划、选用相关的软件工具来描述软件结构,结构图是经常使用的软件的软件描述工具。选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐藏原则等。
17.信息隐蔽是指每个模块内部信息对于其他不需要此信息的模块来说是不可访问的,即外部模块对模块内部的实现过程的不可见性。
18.模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能,以满足用户的需求。
19.模块独立性概括了把软件划分为模块时要遵守的准则,也是判断模块够着是否合理的标准。
20.衡量模块独立的两个标准是耦合性和内聚性。21.耦合性:也称块间联系,指软件系统结构中各模块间相互联系和紧密程度的一种度量。模块之间联系月紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性,调用的方式以及传递的信息。
22.内聚性:又称为块间联系。指模块的躬耕强度的度量即一个模块内部各个元素,彼此结合的紧密程度的度量。若一个模块内各个元素联系的越紧密,则它的内聚性越高。23.模块独立原则也称为模块设计的原则:高内聚、低耦合。
24.耦合性包括:非直接耦合,数据耦合,标记耦合,控制耦合,外部耦合,公共耦合,内容耦合
25.内聚性包括:巧合内聚,逻辑内聚,时间性内聚,过程内聚,通信内聚,信息内聚,功能内聚。
26.数据流程图的定义和作用:数据流程图有两个特征:抽象性和概括性。抽象性指的是数据流程图把具体的组织机构、工作场所、物质流都去掉,只剩下信息和数据存储,流动,使用以及加工情况。
概括性则是指数据流图把系统对各种业务的处理过程联系起来考虑,形成一个总体。27.数据流程图的组成:外部实体、数据流、处理、数据存储。
28.面向对象的基本概念:对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。
29.对象:它是分装了数据结构及可以施加在这些数据结构上的操作的封装体。30.类:用于表示某些对象的共同特征(属性和操作),对象是类的实例。31.实例:就是由某个特定类所描述的一个具体对象。32.消息:消息传递时对象与外界相互关系的唯一途径。
33.方法:方法就是对象所能执行的操作,也就是类中所定义的服务。
34.属性:属性就是类中定义的数据,它是对客观世界实体所具有的性质的抽象。35.封装:封装也就是信息隐藏,通过封装对外界隐藏了对象的实现细节。36.继承:是现实世界中遗传关系的直接模拟。
37.多态性:指允许不同类的对象对同一信息做出响应
38.重载:函数重载是指在同一个作用域内的若干个参数特征不同的函数可以使用相同的函数名字
运算重载是指同一个运算符可以施加不同类型的操作数上面 39.UML是面向对象的方法
40.静态结构图包括类图和对象图 41.UML由九种图构成:
用例图
类图
对象图
活动图
状态图
序列图(顺序图)
协作图
构件图(组件图)
部署图(配置图)
42.UML视图大体分为三大类:
结构分类
动态行为
模型管理
43.类图有3种属性
“+”public(公共)
“#”protected(保护)
“-”private(私有)
操作一样
44.类之间的关系有用关联:泛化
聚合依赖
组合
45.用例图有3种关系:communicates(通信)
extends(延伸)
uses(使用)46.程序设计语言3种结构:顺序
判断
循环
47.良好的编码风格:
缩进良好,没有过多嵌套
变量名,空间名,类名都取直接有意义的字眼
有一些必要注释
符合思维习惯使用运算符
模块化 48.软件测试定义:为了发现程序中的错误而执行程序的过程 49.测试方法
黑盒测试(功能测试)
白盒测试(结构测试)
50.黑盒测试如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都正常使用 白盒测试:如果知道产品内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明的规定正常进行
51.软件测试:
单元测试
集成测试
确认测试
系统测试
52.单元测试也称为模块测试或结构测试,通常可放在编程序段,主要采用逻辑覆盖技术,目的是检查模块是否能实现了详细设计说明书种规定的功能和算法 53.单元测试主要发现编程和详细设计中产生的错误 54.测试一个模块是需要为该模块编写一个驱动模块和若干桩模块。顶层测试无需驱动模块,底层测试无需桩模块
55.集成测试也称为组装测试,在单元测试的基础上把所有模块组装成一个系统进行测试。主要测试设计阶段产生的错误
56.非渐增式集成测试(先测试后组装)和渐增式集成测试(测试一个组装一个)57.确认测试目标是检验软件的有效性,在需求分析阶段制定
58.白盒测试技术:语句覆盖
判定覆盖
条件覆盖
判定条件覆盖
条件组合覆盖
路径覆盖
59.黑盒测试技术:等价类划分,边值分析,错误推测和因果图等 60.按照测试过程是否在实际应用过程中来分,有静态分析与动态测试
测试方法有分析法(静态分析和白盒测试)与非分析法(黑盒法)
61.软件维护分为以下4类:改正性维护;适应性维护;完善性维护;预防性维护
62.决定软件可维护性的因素: 可理解性
可测试性
可修改性
可移植性
可重用性 63.基本路径测试:环路复杂性的3种计算方法: <1>将环路复杂度定义为流图种区域的数量
<2>设E为流图的边数,N为图中的节点数,则定义环路复杂度
V(G)=E-N+2 <3>设p为流图G中的制定节点数,则有V(G)=p+1 64.关键路径测试