软件工程重点知识复习资料集锦.docx
《软件工程重点知识复习资料集锦.docx》由会员分享,可在线阅读,更多相关《软件工程重点知识复习资料集锦.docx(28页珍藏版)》请在冰豆网上搜索。
软件工程重点知识复习资料集锦
第一章软件工程概述
1﹑软件产品的特性是什么?
产品特性:
⑴是一种逻辑产品,与物质产品有很大的区别。
⑵软件产品的生产主要是研制,生产成本主要在开发和研制,开发研制完成后,通过复制就产生了大量软件产品。
⑶软件产品不会用坏,不存在磨损,消耗。
⑷生产主要是脑力劳动,还末完全摆脱手工开发方式,大部分产品是"定做"的
⑸开发软件的费用不断增加,致使生产成本相当昂贵。
2﹑软件生产有几个阶段?
各有何特征?
⑴程序设计时代:
这个阶段生产方式是个体劳动,使用的生产工具是机器语言,汇编语言。
⑵程序系统时代:
这个阶段生产方式是小集团合作生产,使用的生产工具是高级语言,开发方法仍依靠个人技巧,但开始提出结构化方法。
⑶软件工程时代:
这个阶段生产方式是工程化的生产,使用数据库﹑开发工具﹑开发环境﹑网络﹑分布式﹑面向对象技术来开发软件。
3﹑什么是软件危机?
主要表现在哪些方面?
软件开发技术的进步未能满足发展的要求。
在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。
表现方面:
(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
4﹑什么是软件工程?
它目标和内容是什么?
软件工程:
就是用科学的知识工程和技术原理来定义,开发,维护软件的一门学科。
软件工程的目标:
付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。
软件工程的内容:
研究内容包括开发技术和开发管理两个方面。
开发技术主要研究:
软件开发方法,开发过程,开发工具和环境。
开发管理主要研究:
软件管理学,软件经济学,软件心理学。
5﹑软件工程面临的问题是什么?
软件工程需要解决的问题:
软件的费用,可靠性,可维护性,软件生产率和软件的重用。
6﹑什么是软件生存周期?
它有哪几个活动?
软件生存周期:
一个软件从提出开发要求开始直到该软件报废为止的整个时期。
包括:
可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。
7﹑什么是软件生存周期模型?
有哪些主要模型?
生存周期模型:
描述软件开发过程中各种活动如何执行的模型。
对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型化技术的基础,也是建立软件开发环境的核心。
主要有:
瀑布模型,增量模型,螺旋模型,喷泉模型,基于知识的模型,变换模型。
8﹑什么是软件开发方法?
有哪些主要方法?
使用早已定义好的技术集及符号表示习惯来组织软件生产的过程。
通过使用成功的软件开发方法,在规定的投资和时间内,开发出符合用户需求的高质量的软件。
软件开发方法是克服软件危机的重要方面之一,对软件工程及软件包产业的发展起了不可估量的作用。
主要有:
结构化方法,JACKSON方法,维也纳开发方法﹙VDM﹚,面向对象开发方法。
9、软件工程方法学包含3个要素分别是什么?
分别是:
方法、工具和过程。
Ø方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题;
Ø工具是为运用方法而提供的自动的或半自动的软件工程支撑环境;
Ø过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
10、什么是软件过程?
为了获得高质量软件所需要完成的一系列任务的框架,规定了完成各项任务的工作步骤。
在完成开发任务时必须进行一些开发活动,并且使用适当的资源,在过程结束时将把输入转化为输出。
11、瀑布模型的特点及优点?
特点:
Ø
(1)各个阶段的顺序性和依赖性;
Ø
(2)划分逻辑设计与物理设计,尽可能推迟程序的物理实现;
Ø(3)每个阶段必须完成规定的文档,对其中问题通过复审及早发现,及早解决。
优点:
Ø可强迫开发人员采用规范的方法(例如,结构化技术);
Ø严格地规定了每个阶段必须提交的文档;
Ø要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
12、螺旋模型的优点?
Ø对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;
Ø减少了过多测试(浪费资金)或测试不足(产品故障多)所带来的风险;
Ø在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。
螺旋模型主要适用于内部开发的大规模软件项目。
项目越大,风险也越大,因此,进行风险分析的必要性也越大。
此外,只有内部开发的项目,才能在风险过大时方便地中止项目。
13、快速原型的分类、特点及使用策略?
分类:
探索型、实验型、进化型
特点:
尽快向用户提供一个可在计算机上运行的目标系统的模型,以便使用户和开发者在目标系统应该“做什么”这个问题上尽可能快地达成共识。
Ø快速原型应该具备的第一个特点是“快速”;
Ø快速原型应该具备的第二个特点是“容易修改”。
原型的“修改—试用—反馈”过程可能重复多遍。
使用策略:
废弃策略和追加策略。
14、软件工程的目标?
付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。
15、软件开发技术主要研究内容?
软件开发方法,开发过程,开发工具和环境。
16、软件开发管理主要研究内容?
软件管理学,软件经济学,软件心理学。
17、快速原型开发的步骤?
快速开发、需求、构造原形、原形、运行原形、评价原形、修改意见。
18、某计算机系统投入使用后、5年内每年可节省人民币2O0O元,假设系统的投资额为5000元,年利率为12%。
试计算投资回收期和纯收入。
第二章可行性研究
1、可行性研究的任务是什么?
可行研究的任务:
首先需要进行概要的分析研究,初步确定项目的规模,目标,约束和限制。
分析员再进行简要的需求分析,抽象出项目的逻辑结构,建立逻辑模型。
从逻辑模型出发,经过压缩的设计,探索出若干种可供选择的解决方法,对每种解决方法都要研究它的可行性。
主要从四个方面考虑:
⑴.技术可行性:
一般要考虑的情况包括开发的风险即设计出的系统能否达到要求的功能和性能;资源的有效性;相关技术的发展是否支持;
⑵.经济可行性:
进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资。
⑶.法律可行性:
要开发的项目是否存在任何侵权问题。
(4).管理可行性:
运行方式在用户组织内是否可行,现有管理制度﹑人员素质﹑操作方式是否可行。
2、可行性研究有哪些步骤?
⑴.确定项目规模和目标;
⑵.研究正在运行的系统;收集﹑研究﹑分析现有系统的文档资料,实地考察系统访问有关人员,然后描绘现有系统的高层系统流程图。
⑶.建立新系统的高层逻辑模型;使用数据流图和数据字典描述数据在系统中的流动和处理情况。
⑷.导出和评价各种方案;导出若干较高层次的物理解决方法,根据技术可行性﹑经济可行性﹑社会可行性进行评估,得到可行的解决方法。
⑸.推荐可行方案;进行成本~效益分析,决定该项目是否值得开发,若值得开发那么解决方案是什么,并且说明该方案可行的原因和理由。
⑹.编写可行性研究报告;将上述可行性过程的结果写成相应文档,即可行性研究报告。
3、可行性研究过程包括哪些?
1.复查系统规模和目标
2.研究目前正在使用的系统
3.导出新系统的高层逻辑模型
4.进一步定义问题
5.导出和评价供选择的解法
6.推荐行动方针
7.草拟开发计划
8.书写文档提交审查
4、什么是数据流图?
其作用是什么?
数据流图(DFD):
以图形的方式描述数据在系统中流动和处理的逻辑过程。
只反映系统必须完成的逻辑功能,是一种功能模型。
5、什么是数据字典?
其作用是什么?
共有哪些条目?
数据字典(DD)用来定义数据库流图中的各个成分的具体含义。
有以下四类条目:
数据流,数据项,数据存储,基本加工。
6、成本--效益分析可用哪些指标进行度量?
⑴.投资回收率:
通常把建立系统若干年后能取得的收益折算成现在的价值和开发系统所需的费用进行比较得出投资回收率。
⑵.投资回收期:
就是使累计的经济效益等于最初的投资费用所需的时间。
⑶.纯收入:
整个生存周期之内的累计经济效益(折成现在值)与投资之差。
7、某图书管理系统有以下功能:
⑴借书:
输入读者借书证。
系统首先检查借书证是否有效,若有效,对于第一次借书的读者,在借书证上建立档案。
否则,查阅借书文件,检查该读者所借图书是否超过10本,若已达10,拒借,末达10本,办理借书(检查库存,修改库存目录并将读者借书情况录入借书文件。
)
⑵还书:
从借书文件中读出与读者有关的记录,查阅所借日期,如超期(3个月)作罚款处理。
否则,修改库存目录与借书文件。
⑶查询:
通过借书文件,库存目录文件查询读者情况﹑图书借阅及库存情况,打印统计表。
解:
8、某银行的计算机储蓄系统功能是:
将储户的存户填写的存款单或存款单输入系统,如果是存款,系统记录存款人姓名﹑住址﹑存款类型﹑存款日期﹑利率等信息,并打印出存款单给储户;如果是取款,系统计算清单给储户。
请用DFD,IDEF0描绘该功能的需求,并建立相应数据字典。
9、一个考务处理系统的要求如下,试画出该系统的数据流图。
(1)对考生送来的报名表进行检查;
(2)对合格的报名表编好准考证号码后将准考证送给考生,并将汇总后的考生名单送给阅卷站;
(3)对阅卷站送来的成绩表进行检查,并根据考试中心指定的合格标准审定合格者;
(4)填写考生通知单(内容包含考试成绩及合格∕不合格标志),送给考生;
(5)按地区、年龄、文化程度、职业、考试级别等进行成绩分类统计及试题难度分析,产生统计分析表。
(1)顶层数据流图
(2)第1层数据流图
(3)第2层数据流图
加工1子图:
加工2子图:
10、系统流程图
是概括地描绘物理系统的传统工具,表达的是数据在系统各部件之间流动的情况,
11、原型化方法主要用于解决什么问题?
试说明这种方法的主要优缺点。
原型化方法主要用于解决在产品开发的早期阶段需求不确定的问题,用户、经理和其他非技术项目风险承担者发现在确定和开发产品时,原型可以使他们的想象更具体化。
这种方法的主要优点如下:
(1) 明确并完善需求原型作为一种需求工具,它初步实现所理解的系统的一部分,用户对原型的评价可以指出需求中的许多问题。
(2) 探索设计选择方案原型作为一种设计工具,可以探索不同的用户界面技术,使系统达到最佳的可用性,并且可以评价可能的技术方案。
(3) 发展为最终的产品原型作为一种构造工具,是产品最初子集的完整功能实现,通过一系列小规模的开发循环,你可以完成整个产品的开发。
(4) 这种方法的主要缺点包括:
(1) 用户看到一个正在运行的原型便以为产品即将完成,他们会要求不再进行产品重建,而只是对原型进行一些修改就交付。
由于原型没有考虑软件的总体
质量和可维护性,交付原型往往造成"欲速则不达"的情况。
(2)开发人员为了快速构造原型,可能会采用不合适的操作系统或程序设计语言,也可能使用一些效率低的算法。
在一段时间的开发之后,他们往往已经习惯了这些选择,于是便在系统中参杂了这些不理想的选择。
第三章需求分析
1、什么是需求分析?
需求分析阶段的基本任务是什么?
需求分析:
开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。
基本任务:
⑴问题识别:
双方确定对问题的综合需求,这些需求包括功能需求,性能需求,环境需求,用户界面需求。
⑵分析与综合,导出软件的逻辑模型。
⑶编写文档:
包括编写"需求规格说明书","初步用户使用手册","确认测试计划","修改完善软件开发计划"。
2、什么是结构分析方法?
该方法使用什么描述工具?
结构化分析:
简称SA,面向数据流进行数据分析的方法。
采用自顶向下逐层分解的分析策略。
顶层抽象地描述整个系统,底层具体地画出系统工程的每个细节。
中间层则是从抽象到具体的过渡。
使用数据流图,数据字典,作为描述工具,使用结构化语言,判定表,判定树描述加工逻辑。
3、结构化分析方法通过哪些步骤来实现?
⑴了解当前系统的工作流程,获得当前系统的物理模型。
⑵抽象出当前系统的逻辑模型。
⑶建立目标系统的逻辑模型。
⑷作进一步补充和优化。
4、E-R图中包含哪几种种基本成分?
实体(即数据对象)、关系和属性
5、联系可分为哪几种类型?
一对一联系(1∶1),一对多联系(1∶N),多对多联系(M∶N)
6、为何要进行数据结构规范化?
为减少数据冗余,避免出现插入异常或删除异常,简化修改数据的过程。
7、第一范式
每个属性值都必须是原子值,即仅仅是一个简单值而不含内部结构。
8、第二范式
满足第一范式条件,而且每个非关键字属性都由整个关键字决定(而不是由关键字的一部分来决定),消除了非关键字属性对关键字属性的部分依赖。
9、第三范式
符合第二范式的条件,每个非关键字属性都仅由关键字决定,而且一个非关键字属性不能仅仅是对另一个非关键字属性的进一步描述(即一个非关键字属性值不依赖于另一个非关键字属性值),消除了非关键字属性对关键字属性的传递依赖。
10、S-L-C(SNO,SDEPT,SLOC,CNO,G),这里SNO表示学号,SDEPT表示系名,SLOC表示楼号,CNO表示课程号,G表示成绩。
函数依赖有:
(SNO,CNO)→G;SDEPT→SLOC;SNO→SDEPT,对关系进行规范化,达到三范式要求。
(1)SC(SNO,CNO,G)和
(2)S-D(SNO,SDEPT,)(3)S-L(SDEPT,SLOC)
11、状态转换图
状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。
提供了行为建模机制。
12、层次方框图
层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。
树形结构的顶层是一个单独的矩形框,它代表完整的数据结构,下面的各层矩形框代表这个数据的子集,最底层的各个框代表组成这个数据的实际数据元素(不能再分割的元素)。
13、IPO图
IPO图是输入、处理、输出图的简称,能够方便地描绘输入数据、对数据的处理和输出数据之间的关系。
14、从哪些方面验证软件需求的正确性
(1)一致性所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。
(2)完整性需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。
(3)现实性指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。
对硬件技术的进步可以做些预测,对软件技术的进步则很难做出预测,只能从现有技术水平出发判断需求的现实性。
(4)有效性必须证明需求是正确有效的,确实能解决用户面对的问题。
第四章总体设计
1、什么是总体设计?
总体设计的任务是什么?
总体设计又称为概要设计或初步设计。
确定系统功能是实现。
基本任务是:
建立软件系统结构(划分模块、定义模块功能、模块间的调用关系、定义模块的接口、评价模块的质量)、数据结构和数据库的设计(数据结构设计、概念设计、逻辑设计、物理设计)、编写概要设计文档(概要设计说明书、用户手册、数据库设计说明书、修订测试计划)。
2、总体设计分为哪两个阶段?
系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构。
3、总体设计过程包括几个步骤?
1.设想供选择的方案
2.选取合理的方案
3.推荐最佳方案
4.功能分解
5.设计软件结构
6.设计数据库
7.制定测试计划
8.书写文档
9.审查和复审
4、模块化
是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。
5、模块化的优点
(1)模块化使软件容易测试和调试,因而有助于提高软件的可靠性。
(2)模块化也有助于软件开发工程的组织管理。
6、抽象
就是抽出事物的本质特性而暂时不考虑它们的细节。
7、抽象化包括哪些?
过程的抽象、数据抽象。
8、模块的独立程度的定性标准度量是什么?
好的模块应满足什么标准?
内聚和耦合;高内聚低耦合。
9、什么耦合?
模块间的耦合有哪些?
指衡量不同模块彼此间互相依赖(连接)的紧密程度;有非直接耦合、标记耦合、数据耦合、控制耦合、外部耦合、公共耦合和内容耦合。
10、非直接耦合
如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。
这种耦合的模块独立性最强。
11、标记耦合
如果一组模块通过参数表传递记录信息,就是标记耦合。
这个记录是某一数据结构的子结构,而不是简单变量。
12、数据耦合
如果一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。
13、控制耦合
如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。
14、外部耦合
一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
15、公共耦合
若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。
公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。
16、内容耦合
如果发生下列情形,两个模块之间就发生了内容耦合
(1)一个模块直接访问另一个模块的内部数据;
(2)一个模块不通过正常入口转到另一模块内部;
(3)两个模块有一部分程序代码重迭(只可能出现在汇编语言中);
(4)一个模块有多个入口。
17、内聚
衡量一个模块内部各个元素彼此结合的紧密程度。
功能内聚,信息内聚,通信内聚,过程内聚,时间内聚,逻辑内聚,巧合内聚。
19、功能内聚
一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。
则称该模块为功能内聚模块。
20、信息内聚
这种模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。
这个模块将根据不同的要求,确定该执行哪一个功能。
由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模块。
21、通信内聚
如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。
通常,通信内聚模块是通过数据流图来定义的。
22、过程内聚
使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。
例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。
23、时间内聚
时间内聚又称为经典内聚。
这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。
例如初始化模块和终止模块。
24、逻辑内聚
这种模块把几种
相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。
25、巧合内聚
巧合内聚又称为偶然内聚。
当模块内各部分之间没有联系,或者即使有联系,这种联系也很松散,则称这种模块为巧合内聚模块,它是内聚程度最低的模块。
26、扇出
是一个模块直接控制(调用)的模块数目。
27、扇入
一个模块的扇入表明有多少个上级模块直接调用它。
28、模块的作用域
定义为受该模块内一个判定影响的所有模块的集合。
29、模块的控制域
是这个模块本身以及所有直接或间接从属于它的模块的集合。
30、模块化的优点。
Ø模块化使软件容易测试和调试,因而有助于提高软件的可靠性,提高软件的可修改性。
Ø模块化也有助于软件开发工程的组织管理。
31、逐步求精、分层过程与抽象等概念之间的相互关系如何?
“自顶向下,逐步求精”是NiklausWirth提出的设计策略:
即将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个的体系结构。
这样的结构实际就是一个模块的分层结构,即分层的过程。
在实施时,采用抽象化的方法,自顶向下,给出不同的抽象层次。
在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解法。
而在较低的抽象层次上,则采用过程化的方法。
在描述问题的解法时,我们可以配合使用面向问题的术语和面向现实的术语。
但最后在最低的抽象层次上,应使用能够直接实现的方式来描述这个解法。
32、什么是软件结构图?
简述软件结构设计优化准则。
软件系统的模块层次结构,反映了整个系统的功能实现,即将来程序的控制体系。
准则:
高内聚低耦合、作用范围在控制范围内、软件的深度、宽度、扇入、扇出适当、模块大小适中、接口简单清晰易懂。
33、什么是模块的控制范围和作用范围?
他们的关系如何?
控制范围:
是模块本身和它的下属模块的集合。
作用范围:
模块中的一个判定影响的所有模块的集合。
作用范围应该在控制范围内。
33、什么是变换流?
什么是事物流?
变换流由输入、变换(或处理)、输出三部分组成。
事物流某个加工将它的输入流分离成许多发散的数据流,形成许多加工路径,并根据输入选择其中一个路径来执行。
34、试述"变换分析"﹑"事物分析"设计步骤。
变换分析设计步骤:
⑴确定变换中心,逻辑输入和输出。
⑵设计软件结构的顶层和第一层--变换结构:
顶层的功能是完成所有模块的控制(名称应是系统名,以体现完成整个系统功能)
第一层至少有三种功能模块:
输入﹑输出和变换模块
⑶设计中﹑下层模块,对第一层的模块自顶向下分解。
输入模块由两部分组成:
接收数据﹑转换成调用模块所需信息。
输出模块由两部分组成:
将数据转换成下属模块所需的形式﹑发送数据
变换模块:
对每个基本加工建立一功能模块
⑷设计的优化:
输入部分求精,每个物理输入设置专门模块,以体现系统的外部接口。
其它输入模块与转换数据模块都很简单时,可将它们合并。
输出部分求精:
每个物理输出设置专门模块,其它也可适当合并。
变换部分求精:
根据设计准则,对模块适当合并。
事务分析的设计步骤:
⑴确定事务中心和加工路径
⑵设计顶层(事务机构)和第一层顶层模块有两个功能:
接收数据和根据事务类型调动相应处理模块。
⑶中下层模块的设计﹑优化工作与变换结构相同。
事务型软件结构包括两部分:
接收分支发送分支出通常包括一调度模块,当事务类型不多时,可与主模块合并。
35、请将下图的DFD转换为软件结构图。
解:
第五章详细设计
1、详细设计的基本任务是什么?
有那几种描述方法?
设计模块的数据结构、设计数据库的物理结构、设计模块的详细算法、其它(代码设计、输入/输出格式设计、人机对话设计)、编写详细设计说明书、评审。
程序流程图、PAD图、PDL。
2、请使用流程图、PAD图和PDL语言描述下列程序的算法。
(1)在数据A
(1)~A(10)中求最大数和次大数。