软件工程复习的几个知识点和例题.docx
- 文档编号:30706486
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:25
- 大小:506.32KB
软件工程复习的几个知识点和例题.docx
《软件工程复习的几个知识点和例题.docx》由会员分享,可在线阅读,更多相关《软件工程复习的几个知识点和例题.docx(25页珍藏版)》请在冰豆网上搜索。
软件工程复习的几个知识点和例题
1.软件危机的概念,内容,原因及消除的途径;
概念:
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
内容:
.对软件开发成本和进度的估计常常很不准确。
.用户对“已完成”软件系统不满意的现象经常发生。
.软件产品的质量往往靠不住。
.软件常常是不可维护的。
.软件通常没有适当的文档资料。
.软件成本在计算机系统总成本中所占的比例逐年上升。
.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
原因:
一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。
消除的途径:
要缓解软件危机,既要有先进的技术和方法,又需要高水平的组织管理措施。
而软件工程正是综合了管理和技术两方面,研究如何更好地开发软件的一门新兴学科。
所以,就目前而言,软件工程是缓解软件危机的最好途径。
2.软件工程的定义,基本原理;
定义:
软件工程是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
基本原理:
.用分段的生命周期计划严格管理。
.坚持进行阶段评审。
.实行严格的产品控制。
.采用现代程序设计技术。
.结果能清楚地审查。
.开发小组的人员应尽量少而精。
.承认不断改进软件工程实践的必要性。
3.软件工程方法学的基本概念、内容;
基本概念:
软件工程方法学就是指在软件生命周期全过程中使用的一整套管理和开发技术方法的集合。
内容:
.传统方法学(也称为生命周期方法学或结构化范型)
.面向对象方法学。
4.软件生命周期的具体内容,每一个阶段的任务是什么?
结合具体的工程例子来理解做软件项目主要分那几个阶段。
软件生命周期由定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。
软件生命周期每个阶段的基本任务:
.问题定义:
问题定义阶段必须回答的关键问题是:
“要解决的问题是什么”
.可行性研究:
这个阶段的任务不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。
.需求分析:
确定目标系统必须具备哪些功能,是用正式文档准确地记录对目标系统的需要,这份文档通常称为规格说明书。
.总体设计:
设计出实现目标系统的几种可能的方案,制定出实现最佳方案的详细计划,设计程序的体系结构,也就是确定程序由哪些模块组成以及模块间的关系。
.详细设计:
详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。
.编码和单元测试:
写出正确的容易理解、容易维护的程序模块。
.综合测试:
通过各种类型的测试(及相应的调试)使软件达到预定的要求。
5.理解几个典型软件过程的内容及其优点与缺点:
瀑布模型、增量模型、快速原型模型、螺旋模型、喷泉模型等;
发方法和工具的研究,从而提高了大型软件项目开发的质量和效率。
瀑布模型的缺点:
(1)开发过程一般不能逆转,否则代价太大;
(2)实际的项目开发很难严格按该模型进行;(3)客户往往很难清楚地给出所有的需求,而该模型却要求如此。
(4)软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心。
快速原型模型的优点:
(1)可以得到比较良好的需求定义,容易适应需求的变化;
(2)有利于开发与培训的同步;(3)开发费用低、开发周期短且对用户更友好。
快速原型模型的缺点:
(1)客户与开发者对原型理解不同;
(2)准确的原型设计比较困难;(3)不利于开发人员的创新。
增量模型的优点:
(1)采用增量模型的优点是人员分配灵活,刚开始不用投入大量人力资源;
(2)如果核心产品很受欢迎,则可增加人力实现下一个增量;(3)可先发布部分功能给客户,对客户起到镇静剂的作用。
增量模型的缺点:
(1)并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构;
(2)增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。
螺旋模型的优点:
(1)设计上的灵活性,可以在项目的各个阶段进行变更;
(2)以小的分段来构建大型系统,使成本计算变得简单容易;(3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性;(4)随着项目推进,客户始终掌握项目的最新信息,从而他或她能够和管理层有效地交互。
螺旋模型的缺点:
(1)采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失;
(2)过多的迭代次数会增加开发成本,延迟提交时间。
喷泉模型:
喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。
就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。
6.了解可行性研究中的任务和过程;
任务:
用最小的代价在尽可能短的时间内确定问题是否能够解决.
过程:
(1)复查系统规模和目标
(2)研究目前正在使用的系统
(3)导出新系统的高层逻辑模型(4)进一步定义问题
(5)导出和评价供选择的解法(6)推荐进行方针
(7)草拟开发计划(8)书写文档提交审查
7.掌握系统流程图的概念和方法,会从具体的案例中抽象出系统流程图;
系统流程图:
是概括地描绘物理系统的传统工具.它的基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件.
8.掌握数据流图的概念和方法,会从具体的案例中画出0层数据流图和功能级数据流图;
数据流图有四种基本符号:
(1)正方形(或立方体)表示数据的源点或终点;
(2)圆角矩形代表变换数据的处理;
(3)开口矩形代表数据存储;(4)箭头表示数据流,即特定数据的流动方向。
9.掌握数据字典的内容、方法、用户和实现;
数据字典的内容:
(1)数据流
(2)数据流分量(即数据元素)(3)数据存储(4)处理
由数据元素组成数据的方式有3种基本类型:
(1)顺序
(2)选择(3)重复
数据字典基本的表示符号:
=意思是等价于(或定义为);
+意思是和(即,连接两个分量);
[]意思是或(即,从方括弧内列出的若干个分量中选择一个),通常用“|”号分开供选择的分量;
{}意思是重复(即,重复花括弧内的分量);
()意思是可选(即,圆括弧里的分量可有可无)。
数据字典最重要用途:
作为分析阶段的工具
10.了解成本/效益分析方法;
11.了解需求分析过程中任务是什么.
基本任务:
⑴问题识别:
双方确定对问题的综合需求,这些需求包括功能需求,性能需求,环境需求,用户界面需求。
⑵分析与综合,导出软件的逻辑模型
⑶编写文档:
包括编写"需求规格说明书","初步用户使用手册","确认测试计划","修改完善软件开发计划"
12.理解面向数据流自顶向下逐步求精的方法和意义;
方法:
从数据流图的输出端着手分析可行性研究阶段产生的是高层数据流图
从数据流图的输出端着手分析,这是因为系统的基本功能是产生这些输出的关键原因
输出数据决定了系统必须具有的最基本的组成元素(包括功能和数据结构组成)
13.理解分析及建模的意义,需求分析中应该建立哪三种模型?
有哪些工具来帮助建立这些模型?
三种模型:
数据模型、功能模型、行为模型
14.掌握实体关系(E-R)图的概念,内容和实现方法,能结合具体实例建立实体关系图;
15.掌握状态图的概念,内容,实现方法和作用;
16.掌握层次方框图、warnier图、IPO图的概念,内容和作用;
17.有穷状态机的概念和内容;P77
有穷状态机:
状态集、输入集、转换函数、初始态、终态集
18.总体设计是做什么?
总体设计的过程是怎样的?
总体结构设计的目的是什么?
总体设计的目标是将需求分析阶段定义的系统模型转换成相应的软件结构,以规定软件的形态及各成分间的层次关系、界面及接口要求。
总体设计通常由两个过程组成:
系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构。
目的:
19.掌握几个设计原理,理解他们的内容和意义;
1)模块化 就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求.
2)抽象 3)逐步求精 4)信息隐藏和局部化
5)模块独立 它有两个定性标准度量:
内聚和耦合.
20.掌握耦合和内聚的概念和内容,理解这些原理对设计有哪些指导意义;
耦合:
耦合是对一个软件结构内不同模块之间互连程度的度量。
内聚:
内聚标志着一个模块内各个元素彼此结合的紧密程序,它是信息隐藏和局部化概念的自然扩展。
耦合是影响软件复杂程度的一个重要因素。
设计时力争做到高内聚,并且能够辨认出低内聚的模块,有能力通过修改设计提高模块的内聚程度并且降低模块间的耦合程度,从而获得较高的模块独立性。
21.耦合包含了哪些类型?
每个类型的具体内容是什么?
要求能通过程序代码识别出耦合类型。
(1)非直接耦合:
就是没有耦合。
(2)数据耦合:
就是参数传递耦合,它属于低级别耦合。
(3)标记耦合:
标记耦合指两个模块之间传递的是数据结构。
(4)控制耦合:
它属于中级别耦合,比如调度程序与进程之间的耦合,就是控制耦合。
(5)外部耦合:
属于高级别耦合
(6)公共耦合:
指通过一个公共数据环境相互作用的那些模块间的耦合。
(7)内容耦合:
属于最高级别耦合,例如,一个模块利用分支或跳转技术,转入到另一
个模块中去执行,就是内容耦合。
22.启发性规则的内容及部分概念。
1.改进软件结构提高模块独立性
2.模块规模应该适中
3.深度、宽度、扇出和扇入都应适当
4.模块的作用域应该在控制域之内
5.力争降低模块接口的复杂程度
6.设计单入口单出口的模块
7.模块功能应该可以预测
23.层次图、HIPO图和结构图的内容;
24.掌握面向数据流的设计方法,了解其中涉及到的概念(变换流,事务流),结合例子理解变换分析的具体过程。
面向数据流的设计方法把信息映射成软件结构,信息流的类型决定了映射的方法。
信息流有两种:
(1)变换流
(2)事务流(P105)
变换流:
信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加处理以后再沿输出通路变换成外部形式离开软件系统。
事务流:
以事务为中心,数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。
25.详细设计是做什么?
详细设计的根本目标:
确定应该怎样具体地实现所要求的系统。
26.什么是结构程序设计?
如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。
27.人机界面设计问题包含哪些?
(1)系统响应时间
(2)用户帮助设施(3)出错信息处理(4)命令交互
28.掌握设计过程中用到的工具:
程序流程图的概念,内容和方法;盒图的概念、内容和方法;会结合实例使用这些工具;掌握PAD图的概念和内容;掌握判定表的概念和内容。
要结合实例来掌握它们。
过程设计的工具:
图形(程序流程图、盒图,PAD图)、表格(判定表、判定树)和语言(过程设计语言(PDL))三类。
程序流程图:
程序流程又称为程序框图,它是历史最悠久、使用最广泛的描述过程设计的方法,然而它也是用得最混乱的一种方法。
盒图:
出于要有一种不允许违背结构程序设计精神的图形工具的考虑,Nassi和Shneiderman提出了盒图,又称为N-S图。
PAD图:
PAD是问题分析图的英文缩写,它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。
判定表:
一张判定表由4个部分组成,左上部列出所有条件,左下部是所有可能做的动作,右上部是表示各种条件组合的一个矩阵,右下部是和每种条件组合相对应的动作。
判定表右半部的每一列实质上是一条规则,规定了与特定的条件组合相对应的动作。
29.了解结合Jackson图来掌握面向数据结构的设计方法;会用Jackson程序设计方法对具体的实例进行设计。
数据元素彼此之间的逻辑关系:
顺序、选择、重复元
①顺序结构
一个顺序元素由一个或多个从左到右的元素组成
每个组成的元素只出现一次
②选择结构
选择是“IfThenElse”或“Case”的结构,而且必须有两个或多个元素
使用选择元素时根据指定的条件从这些子元素中选择一个子元素
③重复结构
重复元素仅由一个子元素构成,表示重复元素由子元素重复0次或多次组成
30.掌握几种测试:
单元测试、集成测试、确认测试、白盒测试技术和黑盒测试技术;掌握它们的概念,内容和方法;
单元测试:
单元测试集中监测软件设计的最小单元—模块。
从这些方面对模块进行测试:
(1)模块接口
(2)局部数据结构(3)重要的执行通路
(4)出错处理通路(5)边界条件
集成测试:
是测试和组装软件的系统化技术。
测试方法:
(1)非渐增式测试
(2)渐增式测试
当使用渐增方式把模块结合到程序中去时,有自顶向下和自底向上的两种集成策略
白盒测试:
根据程序内部逻辑结构进行测试,来检验程序内部动作是否按照规格说明书的规定正常进行。
黑盒测试:
根据程序外部特征来进行测试,着重测试软件功能,它并不能取代白盒测试,它是与白盒测试互补的测试方法。
31.对每一种测试方法,理解其具体细节:
比如理解什么是渐增式测试和非渐增式测试,什么是Alpha测试和Beta测试.....;
Alpha测试:
由用户在开发者的场所进行,并且在开发者对用户的"指导"下进行测试。
开发者负责记录发现的错误和使用中遇到的问题.
Beta测试:
由软件的最终用户在一个或多个客户场所进行.与Alpha测试不同,开发者通常不在Beta测试的现场,因此,Bate测试时软件在开发者不能控制的环境中的"真实"应用。
32.结合G.J.Myers的观点理解软件测试的目的;(教材p150)
33.掌握白盒测试的技术细节(比如:
掌握逻辑覆盖中的8个覆盖点;掌握基本路径测试,会根据过程设计结果画出相应的流图;会计算流图的环形复杂度;会计算出线性独立路径的基本集合);掌握黑盒测试的技术细节;
白盒测试:
软件的白盒测试是对软件的过程性细节做细致的检查。
这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。
因此白盒测试又称为结构测试或逻辑驱动测试。
8个覆盖点:
语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、点覆盖、边覆盖、路径覆盖
黑盒测试:
黑盒测试着重测试软件功能。
这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。
因此黑盒测试又叫功能测试或数据驱动测试。
34.理解软件维护的定义、特点和维护过程;
定义:
就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改的过程。
过程:
1、维护组织2、维护报告3、维护的事件流4、保存维护记录5、评价维护活动。
35.掌握面向对象方法学的要点,理解面向对象方法学的优点;
面向对象方法学的四要点是:
对象、类、继承、消息。
优点:
1.与人类习惯的思维方法一致。
2.稳定性好3.可重用性好
4.较易开发大型软件产品5.可维护性好
36.掌握面向对象的概念;
面向对象的基本概念:
对象是由描述该对象属相的数据以及可以对这些数据施加的所有操作封装在一起的统一体。
37.面向对象建模是建立哪三个模型?
它们的具体内容是什么?
三个模型:
对象模型(类图):
描述系统的数据结构;
动态模型(状态转换图):
描述系统的控制结构;
功能模型(用例图,数据流图):
描述系统功能。
38.建立对象模型的内容是什么?
在面向对象的分析和设计阶段,致力于建立模拟问题领域的对象模型。
建立对象模型即包括自底向上的抽象过程,也包括自顶向下的分解过程
39.掌握用UML提供的类图来建立对象模型的方法。
理解类图的定义、基本符号和具体内容;
40.能结合实例掌握类图中类与类之间的关系:
关联、泛化(继承)、依赖和细化。
能根据实例情况正确判断出类与类之间的具体关系类型。
关联(Association)
表现为变量。
类与类之间的联接,它使一个类知道另一个类的属性和方法。
例如如果A依赖于B,则B体现为A的全局变量。
如person类和company类
关联关系有双向关联和单向关联。
双向关联:
两个类都知道另一个类的公共属性和操作。
单向关联:
只有一个类知道另外一个类的公共属性和操作。
大多数关联应该是单向的,单向关系更容易建立和维护,有助于寻找可服用的类。
UML图中实现使用一条实线连接相同或不同类
泛化(Generalization)
表现为继承或实现关系。
具体形式为类与类之间的继承关系,接口与接口之间的继承关系,类对接口的实现关系
UML图中实现使用一条带有空心三角箭头的实线指向基类。
如下
依赖 (Dependency)
表现为函数中的参数。
是类与类之间的连接,表示一个类依赖于另一个类的定义,其中一个类的变化将影响另外一个类。
例如如果A依赖于B,则B体现为局部变量,方法的参数、或静态方法的调用。
如电视(TV)依赖于频道(channel)常见的依赖关系如下:
(1)类B以参数的形式传入类A的方法。
(2)类B以局部变量的形式存在于类A的方法中。
(3)类A调用类B的静态方法。
UML图中实现使用一条带有箭头的虚线指向被依赖的类。
如下
实现(Realization):
指的是一个类实现接口(可以是多个)的功能;实现是类与接口之间最常见的关系;C 中没有直接的接口而是通过在类中定义纯虚函数来实现的。
UML图中实现使用一条带有空心三角箭头的虚线指向接口。
如下
聚合(Aggregation)
是关联关系的一种,是强的关联关系。
聚合关系是整体和个体的关系。
普通关联关系的两个类处于同一层次上,而聚合关系的两个类处于不同的层次,一个是整体,一个是部分。
同时,是一种弱的“拥有”关系。
UML图中实现使用一条带有虚心菱形的线来表示
组合(Composition)
是关联关系的一种,是比聚合关系强的关联关系。
它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
Composition(组合关系)是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一致。
他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;
UML图中实现使用一条带有实心菱形的线来表示
几种关系所表现的强弱程度依次为:
组合>聚合>关联>依赖
41.动态模型的概念、内容;
42.功能模型的概念、内容和建立功能模型的方法;
功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了助记词对目标系统的需求。
功能模型由一组数据流图组成。
43.掌握用例图的概念、内容和方法;
一幅用例图包含的模型元素有:
系统、行为者、用例及用例之间的关系。
44.掌握面向对象分析的基本过程:
三个子模型与5个层次;
三个子模型:
对象模型、动态模型、功能模型。
五个层次:
主层次、类-&-对象层、结构层、属性层、服务层。
45.结合实例来掌握面向对象分析过程中建立对象模型的方法包含哪些步骤;
46.结合实例来掌握面向对象分析过程中建立动态模型的方法包含哪些步骤;
47.结合实例来掌握面向对象分析过程中建立功能模型的方法包含哪些步骤;
48.能结合实例画事件跟踪图
49.能结合实例画类的
50.能结合实例画出0层数据流图与功能级数据流图。
自测练习题:
一、选择题
1.瀑布模型的存在问题是( B )
A.用户容易参与开发
B.缺乏灵活性
C.用户与开发者易沟通
D.适用可变需求
2.可行性分析是在系统开发的早期所做的一项重要的论证工作,它是决定该系统是否开发的决策依据,因必须给出( B )的回答。
A.确定 B.行或不行 C.正确 D.无二义
3.系统流程图是用来 ( D )
A 描绘程序结构的B 描绘系统的逻辑模型
C 表示信息层次结构的图形工具D 描绘物理系统的
4.下列属于维护阶段的文档是( C )
A.软件规格说明 B.用户操作手册
C.软件问题报告 D.软件测试分析报告
5.软件按照设计的要求,在规定时间和条件下达到不出故障,持续运行的要求的质量特性称为( B )
A.可用性 B.可靠性
C.正确性 D.完整性
6、快速原型模型的主要特点之一是( D )
A.开发完毕才见到产品B.及早提供全部完整的软件产品
C.开发完毕后才见到工作软件D.及早提供工作软件
7、软件需求分析的主要任务是准确地定义出要开发的软件系统是(C )
A.如何做B.怎么做
C.做什么D.对谁做
8.若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0,1.0],现从输入的角度考虑一组测试用例:
-1.001,-1.0,1.0,1.001。
设计这组测试用例的方法是( C )
A.条件覆盖法 B.等价分类法
C.边界值分析法 D.错误推测法
9.研究开发所需要的成本和资源是属于可行性研究中的研究的一方面。
(B)
A.技术可行性 B.经济可行性
C.社会可行性 D.法律可行性
10.模块的内聚性最高的是(D)
A.逻辑内聚 B.时间内聚
C.偶然内聚 D.功能内聚
12.(C)是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是隐蔽的,外界只能通过有限的接口与对象发生联系。
A多态性B继承
C封装D消息
二、填空题
1.将数据流图映射为程序结构时,所用映射方法涉及信息流的类型。
其信息流分为变换流和事务流两种类型。
2.为了便于对照检查,测试用例应由输入数据和预期的__输出结果__两部分组成。
3.软件由程序、数据、文档组成。
4.在学校中,一个学生可以选修多门课程,一门课程可以由多个学生选修,那么学生和课程之间是 关联 关系。
5.软件工程釆用层次化的方法,每个层次都包括过程、方法、工具三要素
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 复习 几个 知识点 例题
![提示](https://static.bdocx.com/images/bang_tan.gif)