软件工程总复习Word格式.docx
- 文档编号:19719288
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:18
- 大小:28.25KB
软件工程总复习Word格式.docx
《软件工程总复习Word格式.docx》由会员分享,可在线阅读,更多相关《软件工程总复习Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
7承认不断改进软件工程实践的必要性。
9.瀑布模型的特点
1里程碑或基线驱动,或者说文档驱动;
2过程逆转性很差,或者说不可逆转。
10.软件生命周期
一个软件从定义、开发、使用和维护,直到最终被废弃,所经历的生存过程称为软件生存期或叫生命期。
生命期的划分:
制定计划需求分析和定义软件设计程序编写软件测试运行/维护
定义阶段开发阶段维护阶段
11.软件生存期的主要模型
瀑布模型原型模型螺旋模型增量模型构件组装模型统一过程模型第四代技术
12.瀑布模型开发的基本过程
定义计划
阶段需求分析
开发设计
阶段编码
测试
维护运行、维护
阶段
13.增量模型的特点
任务或功能模块驱动,可以分阶段提交产品;
有多个任务单,这些多个任务单的集合,构成项目的一个总任务书(总用户需求报告)。
14.几种主要的软件开发方法
1面向过程的方法
2面向数据的方法
3面向对象的方法
15.软件工程中的“五个面向”
◆面向流程分析、
◆面向数据设计、
◆面向对象实现、
◆面向功能测试、
◆面向过程管理。
第二章软件策划
16.可行性分析的目的
用最小的代价在尽可能短的时间内确定问题是否能够解决。
确定问题是否能够解决和值得解决。
分析可能的利弊关系
17.可行性分析最为敏感的方面
⑴经济可行性:
经济效益能否超过开发成本?
⑵技术可行性:
现有技术能否实现?
技术风险的各种因素?
⑶操作可行性:
用户的接受程度如何?
⑷法律可行性:
是否合法,是否侵犯他人的利益。
18.可行性研究的步骤
1复查系统规模和目标(系统调研)
2研究目前正在使用的系统(系统分析)
3导出新系统的高层逻辑模型(系统分析)
4重新定义问题(模型评审)
5导出和评价可供选择的解决方案
6推荐一个方案并说明理由
7推荐行动方针
8书写文档提交审查
19.软件计划的步骤
1估计软件的规模及所需的资源;
2制定时间表;
3鉴别和评估风险;
4约定与限制条件。
20.软件计划书的内容
1软件范围
2环境资源
3进度安排
4成本/效益分析
5其它要考虑的因素
21.甘特图有哪些优点和缺点
甘特图:
是一种对各项活动进行计划调度与控制的图表。
横向表示时间,纵向列出任务。
优点:
它具有简单、醒目和便于编制等特点。
能够动态反映软件项目开发进展的情况。
缺点:
难以反映多个任务之间存在的复杂的逻辑关系。
22.什么是网络计划法的关键事件与关键路径
关键事件:
最早完成时间与最迟完成时间相等的事件。
关键路径:
关键事件联结的各个活动所组成的路线。
23.常用的成本估算方法
(1)基于代码行的成本估算方法
(2)任务分解成本估算
(3)经验统计估算模型
①参数方程
②动态多变量参数模型
③COCOMO模型(constructiveCostModel)
⑷自动估算工具
24.软件成本估算包括哪些内容
货币的时间价值
投资回收期
纯收入
投资回收率
25.项目活动和项目约定计划指的是什么
活动指开发活动和管理活动;
约定指各种规范、标准、规则
规范是对过程和行为的约束;
标准是对产品的约束;
规则或规程是对操作的约束。
第三章需求分析
26.需求获取为什么难?
1用户需求具有动态性(不稳定性)。
2用户需求具有模糊性(不准确性)。
3对需求达成一致的艰难性。
4管理体制、机构设置处在变革中。
5软件书籍没有将需求分析讲清楚。
27.需求分析的重点
业务模型、功能模型、性能模型、接口模型。
28.需求分析的9项任务
1画出目标系统的组织机构模型。
2画出目标系统业务操作流程图。
3画出目标系统的数据流图。
4列出目标系统的功能点列表,即功能模型。
5列出系统的性能点列表,即性能模型。
6列出目标系统的接口列表,即接口模型。
7确定目标系统的运行环境,即环境模型。
8目标系统的界面约定,即界面模型。
9分析与评估开发工期、费用、进度、风险等。
29.需求分析的过程
问题识别
分析与综合
编制需求分析阶段文档
需求分析评审
30.获取需求的常用方法
1访谈:
正式的和非正式的访谈
2问卷调查:
问卷调查即把需要调查的内容制成表格交给用户填写。
该方法对需要调查大量人员的意见时,十分有效。
3情景分析:
情景分析就是对目标系统解决某个具体问题的方法和结果,给出可能的情景描述,以获知用户的具体需求。
4实地考察
5构造原型
31.需求分析的原则
1解决逻辑问题:
需求分析是对问题的识别和说明,要回答“做什么”,而不是“怎么做”。
2以运行环境为基础:
需求分析工作应以具体的运行环境为基础,实事求是。
3用户参与的原则:
需求分析工作是系统分析人员同用户不断交互的过程。
4构造高质量的需求规格说明:
需求规格说明是需求分析工作重要的完成标志。
32.需求分析的基本要求
理解问题的数据域和功能域
⑵自顶向下、逐层分解
⑶给出系统的逻辑视图和物理视图
33.需求分析方法
1面向数据流的分析方法
2面向功能的分析方法
3面向数据的Jackson方法
4面向对象的分析方法
第四章软件设计
34.软件设计的具体任务
(1)制定规范
(2)结构设计
(3)处理方式结构设计
(4)数据结构及数据库设计
(5)可靠性设计(质量设计)
(6)编写软件设计文档
(7)设计审查和复审
(8)详细设计
35.数据的保护性设计
防卫性设计:
在软件设计中就插入自动检错,报错和纠错的功能
一致性设计:
在并发处理过程中使用封锁和解除封锁机制保持数据不被破坏
冗余性设计:
36.软件设计的目标
软件设计的最终目标是要取得最佳方案。
即:
节省开发费用、降低资源消耗、缩短开发时间、能够赢得较高的生产效率、较高的可靠性和可维护性的方案。
并且使开发软件满足以下特点:
功能、性能都符合指定的要求;
软件是可维护的,可方便地进行修改;
除了代码,还有一套配置齐全的文档。
37.模块的基本属性
“模块”,又称“组件”。
一般有四个基本属性
功能:
描述该模块做什么?
逻辑:
描述模块内部怎么做?
状态:
模块使用时的环境和条件。
接口:
指模块的输入与输出。
38.什么是耦合?
什么是内聚?
如何增强模块的独立性?
耦合:
各模块之间的互相连接的紧密程度。
模块之间的连接越紧密,联系越多,耦合性就越高,而其独立性就越弱。
内聚:
模块内各功能元素彼此结合的紧密程度。
一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高,相对地,它与其它模块之间的耦合性就会减低,而模块独立性就越强。
增强模块独立性的方法是:
高内聚、低耦合
39.模块化的特征
抽象:
用层次的方式构造和分析复杂系统。
逐步求精:
帮助开发人员把精力集中在与当前开发阶段最相关的那些问题上。
信息隐蔽:
如果一个模块内包含的信息(过程和数据)不允许外部的模块访问的话,其它模块不能对其访问。
局部化:
把一些关系密切的软件元素物理地放得彼此靠近。
40.影响耦合度的因素
1连接方式的类型。
2接口的复杂性。
3传送的信息流的类型。
4耦合的时间。
41.降低耦合度的方法:
1对于需要了解的内容,若是隐含的,应改为明显的,以便更容易理解;
2连接的方式尽量标准化,不要直接引用;
3减少公共区,将公共区划分为若干个逻辑子区;
4输入输出应局限在少量模块,不要分散在全系统;
5延迟耦合时间。
42.软件结构设计优化的准则
1.划分模块时,尽量做到高内聚、低耦合,保持模块相对独立性。
模块划分的准则:
“将相关的各部分放在一起,无关的东西不要放在一起。
”
2.模块的大小要适中。
3.模块的接口要简单、清晰、含义明确,便于理解,易于实现、易于测试和维护。
4.一个模块的作用范围应在其控制范围之内,且判定所在的模块,应与受其影响的模块在层次上尽量靠近。
5.软件结构的深度、宽度、扇入、扇出应适当。
6.力求设计单入口和单出口的模块,避免“病态连接”,以防止内容耦合。
7.设计功能可预测模块的划分,应防止功能过分局限。
43.结构化设计的优点
1减少设计复杂性。
将大化小,使复杂问题简单化。
2结构独立。
将程序划分成多个相对独立的模块。
3模块功能单一化,可使软件设计获得最大的益处。
4易于进行软件修改。
5易于开发和维护。
6加强了代码的可重用性。
44.Jackson图的优点
1便于表示层次结构,是对结构进行自顶向下分解的有力工具;
2形象直观,可读性好;
3Jackson图不仅能表示数据结构,也能表示程序结构。
45.正交软件体系结构的优点
1层次结构清晰,便于理解。
2可移植性强,重用粒度大。
3易修改,可维护性强。
46.三层C/S结构的组成
表示层:
用户接口部分,它担负着用户与应用间的对话功能。
功能层:
相当于应用的本体,它是将具体的业务处理逻辑编入程序中。
数据层:
数据库管理系统,负责管理对数据库数据的读写。
47.三层C/S结构的优点
1允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性。
2允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层;
并且这些平台和各个组成部分可以具有良好的可升级性和开放性。
3三层C/S结构中,应用的各层可以并行开发,各层也可以选择各自最适合的开发语言。
4允许充分利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层。
48.B/S体系结构的不足之处
1缺乏对动态页面的支持能力,数据库处理功能差。
2系统扩展能力差,安全性难以控制。
3响应速度远低于C/S体系结构。
4数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用。
49.C/S、B/S混合结构的特点
B/S与C/S混合结构是一种典型的异构系统。
C/S与B/S混合结构的优点:
是外部用户不直接访问数据库服务器,能保证企业数据库的相对安全。
企业内部用户的交互性较强,数据查询和修改的响应速度较快。
C/S与B/S混合结构的缺点:
是企业外部用户修改和维护数据时,速度较慢,较烦琐,数据的动态交互性不强。
50.主要的菜单类型
1固定菜单
2活动菜单
3“弹出式”菜单
4“下拉式”菜单
51.活动菜单的优点
不占用显示工作空间;
可以根据用户当前所处的操作状态和要求动态出现。
需要注意:
不能滥用弹出菜单。
52.DBMS的基本功能:
管理用户的数据库;
提供在数据库上的各种操作;
提供数据库对外的各种接口;
53.数据库(DB)与DBMS的不同
在人们的交流中,习惯上常常将数据库和DBMS混为一谈,不加区别。
所以要根据不同场合、不同习惯、以及上下文来分析,所讲的“数据库”三个字,到底是指数据库,还是指DBMS。
54.DBMS提供的三种语言
DBMS自带许多语句(命令),可分为三大类:
⑴数据定义语言DDL:
如:
CREATE,ALTER,DROP;
⑵数据操作语言DML:
SELECT,UPDATE,INSERT,DELETE;
⑶数据控制语言DCL:
分支语句、循环语句。
55.数据库的组成(四个表指的是什么)
基本表:
存放原始数据的表。
代码表:
存放信息代码数据的表。
中间表:
存放统计数据的表。
临时表:
存放临时数据的表。
注:
原始数据和信息代码数据,统称为基础数据;
基本表和代码表,统称为基表。
56.基本表的特性
1原子性。
基本表中的字段是不可再分解的。
2原始性。
基本表中的记录是原始数据(基础数据)的记录。
3演绎性。
由基本表与代码表中的数据,可以派生出所有的输出数据。
4稳定性。
基本表的结构是相对稳定的,表中的记录是需要长期保存的。
57.正确认识数据冗余
主键与外键在多表中的重复出现,不属于数据冗余,这个概念必须清楚,事实上有许多人还不清楚。
非键字段的重复出现,才是数据冗余,而且是一种低级冗余,即重复性的冗余。
高级冗余不是字段的重复出现,而是字段的派生出现。
第五章代码设计
58.代码设计的主要原则
使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑。
选用的控制结构只准许有一个入口和一个出口。
程序语句组成容易识别的块,每块只有一个入口和一个出口。
复杂结构应该用基本控制结构进行组合嵌套来实现。
59.编程规范的内容
✓命名规范、
✓界面规范、
✓提示及帮助信息规范、
✓热键定义等。
60.良好的代码设计风格的内容
规范化的程序内部文档、
数据结构的详细说明、
清晰的语句结构、
遵守编程规范.
61.代码语句设计应该遵从的原则
在一行内只写一条语句。
程序编写清晰性第一。
程序要能直截了当地说明程序员的用意。
清晰第一,效率第二。
先保证程序正确,再要求提高速度。
避免使用临时变量而使可读性下降。
让编译程序做简单的优化。
尽可能使用库函数和构件。
避免不必要的转移:
尽量不用GOTO语句。
尽量采用三种基本的控制结构编写程序。
避免使用空的ELSE语句和IF…THENIF…的语句。
避免采用过于复杂的条件测试。
尽量减少使用“否定”条件的条件语句。
尽量用通俗易懂的伪码来描述程序的流程。
数据结构要有利于程序的简化。
要模块化。
利用信息隐蔽。
从数据出发构造程序。
修补不好的程序,要重新编写。
大的程序要分块编写和测试。
对递归定义的数据结构尽量使用递归过程。
62.I/O代码设计的原则
1输入数据要检验;
2检查输入项的各种重要组合的合理性;
3输入的步骤和操作尽可能简单;
4应允许使用自由格式输入数据;
5应允许缺省值;
批数据输入时,使用输入结束标志;
6交互式输入时,屏幕上使用提示符明确提示输入的请求;
7保持输入格式与输入语句要求的一致性;
8输出加注解。
63.软件效率应该以什么为准?
程序的效率是指程序的执行速度及程序所需占用的内存的存储空间。
软件效率以需求为准。
64.程序的效率与哪些因素有关?
程序的效率与程序的简单性相关。
源程序的效率与详细设计阶段确定的算法的效率直接有关。
65.详细设计向代码设计转换过程中的指导原则
1尽可能简化有关的算术表达式和逻辑表达式;
2检查算法中的嵌套的循环,尽可能将某些语句或表达式移到循环外面;
3尽量避免使用多维数组;
4尽量避免使用指针和复杂的表;
5采用“快速”的算术运算;
6不要混淆数据类型,避免在表达式中出现类型混杂;
7尽量采用整数算术表达式和布尔表达式;
8选用等效的高效率算法;
66.影响存储器效率的因素
存储效率与OS的分页功能直接有关。
采用结构化程序设计。
提高存储器效率的关键是程序的简单性。
67.提高I/O设备效率的指导原则
I/O的请求应当最小化;
对于所有的I/O操作,安排适当的缓冲区,以减少频繁的信息交换。
对辅助存储(例如磁盘),选择尽可能简单的,可接受的存取方法;
对辅助存储的I/O,应当成块传送;
对终端或打印机的I/O,应考虑设备特性,尽可能改善I/O的质量和速度;
任何不易理解的,对改善输入/输出效果关系不大的措施都是不可取的;
任何不易理解的所谓“超高效”的I/O毫无价值;
68.提示信息分哪几类?
1引导性提示信息:
该类提示信息一般在需要用户干预时出现,要求用户决定下一步的操作。
如在退出时提示“修改的数据尚未存盘,存盘否?
”。
2错误性提示信息:
该类提示信息一般在软件运行出错时出现,告诉用户软件遇到了问题。
如“系统运行出现故障,请与系统管理员联系!
3状态性提示信息:
该类提示信息一般在软件处于“忙”状态下提示,告诉用户软件正在进行什么操作,让用户耐心等待。
如“正在进行数据传输,请稍待…”。
4位置性提示信息:
该类提示信息一般根据鼠标的位置进行提示,告诉用户鼠标正指向什么功能。
如“报表打印”。
69.软件实现文档的组成
1《源程序清单》
2《用户使用手册》
3《用户安装手册》
4《系统管理员手册》
70.软件实现管理文档
1《用户指南评审报告》
2《模块源程序行统计表(行/模块名)》
3《源程序工作量统计表(行/人天)》
第六章软件测试
71.软件测试的原则
1软件测试应当尽早和不断地进行。
2程序员应避免检查自己的程序。
3设计测试即应包括合理的、还应包括不合理的输入条件。
4经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目成正比。
5妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。
72.软件测试的最初定义
最初定义:
软件测试是为了发现错误而执行程序的过程。
73.软件测试的经典定义
经典定义:
测试是程序的执行过程,目的在于发现错误;
一个好的测试在于能发现至今未发现的错误;
一个成功的测试是发现了至今未发现的错误的测试。
74.测试的目的
•以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。
•能够证明软件的功能和性能与需求说明相符合。
•测试结果数据为可靠性分析提供了依据。
•测试不能表明软件中不存在错误,它只能说明软件中存在错误。
75.黑盒测试的优点
1对于较大的代码单元来说,黑盒测试比白盒测试效率要高;
2测试人员不需要了解实现的细节,包括特定的编程语言;
3从用户的角度进行测试,容易被理解和接受;
4有助于暴露任何规格不一致或有歧义的问题;
76.黑盒测试的缺点
1要测试每个可能的输入流几乎是不可能的;
2会有很多程序路径没有被测试到;
3不能直接针对特定程序段测试,因此可能隐藏更多的问题。
77.白盒测试的优点
1迫使测试人员去仔细思考软件的实现;
2可以检测代码中的每条分支和路径;
3揭示隐藏在代码中的错误;
4对代码的测试比较彻底。
78.白盒测试的缺点
1成本高;
2忽略了从用户角度考虑的测试问题;
79.测试报告的主要内容
●测试任务描述
●测试环境说明
●功能测试描述
●性能测试描述
●确认性测试描述
●测试总结
第七章软件培训
80.为什么培训的政策是“严格的培训考勤签到制度,适当的口试或笔试制度”?
81.为什么说“规范是对过程的约束,标准是对产品的约束,制度是对行为的约束”?
82.培训与企业文化有什么关系?
83.培训文档与培训管理文档有什么差别?
84.请用MicrosoftPowerPoint工具制作一份“图书馆信息系统”幻灯片培训教材。
85.怎么理解“软件维护是面向用户提供的服务”?
所谓软件维护,就是在软件产品安装、运行并交付给用户使用后,在新版本产品升级之前这段时间里软件厂商向客户提供的服务。
86.传统软件维护要讨论的问题有哪些?
第八章软件维护
87.怎么理解“软件产品客户化”和“软件项目产品化”?
88.什么叫结构化维护和非结构化维护?
结构化维护的前提是:
软件产品或软件项目必须有完善的文档,并且文档与程序代码互相匹配。
反之为非结构化维护。
人们常说维护费用很高,是因为非结构化维护的比重太大。
89.可维护性的软件应具备什么性质?
90.软件维护的副作用表现在哪4个方面?
1修改编码:
使编码更加混乱,程序结构更不清晰,可读性更差,而且有连锁反应。
2修改数据结构:
数据结构是系统的骨架,修改数据结构是对系统伤筋动骨的大手术,在数据冗余与数据不一致方面,可能顾此失彼。
3修改用户数据:
需要与用户协商,一旦有疏忽,可使系统发生意外。
4修改文档:
对非结构化维护不适应,对结构化维护要严防程序与文档的不匹配。
91.面向缺陷维护的内容是什么?
(面向缺陷维护是较小的维护)
面向缺陷维护(程序级维护):
软件产品能够正常运转,可以满足用户的功能、性能、接口需求,只是个别地方存在缺陷,使用户感到不便。
缺陷发生在程序实现的级别上。
克服缺陷的方法是修改程序,而不是修改分析与设计,也就是通常说的只修改编码,不修改数据结构。
92.面向功能维护的内容是什么?
(面向功能维护是较大的维护)
面向功能维护(设计级维护):
软件产品在功能、性能、接口上存在某些不足。
不维护就不能正常运转。
维护即要修改分析与设计,又要修改程序,也就是既修改数据结构,又修改编码。
93.两层结构和三层结构的软件维护方法有什么不同?
94.怎么理解软件产品的版本号?
软件维护与软件产品版本升级有一定关系:
若小维护前的版本号为V1.00,则小维护后的版本号为V1.01。
若大维护前的版本号为V1.01,则大维护后的版本号为V1.11。
一般而言,版本号中小圆点的左一位,表示该软件产品的第几个版本。
中小圆点的右一位,表示该版本的大修改次数。
小圆点的右二位,表示该版本的小修改次数。
只有该软件产品的运行环境发生大改变时,或者该软件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 复习