第一章
1.软件工程的危机:是指计算机软件在开发和维护过程中时遇到的一系列问题。
软件危机的表现:
(1)对软件开发成本和进度的估计常常很不准确
(2)用户对“已完成的”软件系统不满意的现象经常发生
(3)软件质量往往靠不住
(4)软件没有适当的文档资料
(5)软件成本在在逐年上升
(6)软件开发跟不上计算机应用的迅速普及的速度
软件是数据,程序和相关文档的集合。
2、软件的生命周期:是由软件定义、软件开发和软件维护
软件定义:问题定义(要解决的·问题是什么)、可行性研究(探索此问题是否值得做)、需求分析(目标系统必须做什么,需要记录对目标系统的需求—规格说明书)
开发时期:总体设计(怎样实现目标系统),详细设计(具体实现)、编码和单元测试(写代码),综合测试
软件维护:使软件能够持久满足用户的需要
3、
瀑布模型:是最广泛的过程模型。
使用的目标:用户需求明确
优点:阶段间具有顺序性和依赖性,推辞实现的观点,质量得以保证
缺点:费时间
快速原型模型:适合小型项目,用户需求不明确,是为了获得用户的真正的需求,一单需求确定了,原型则会被抛弃。
优点:快速
增量模型:软件作品是作为一系列的增量结构来设计和编码和集成与测试。分批次向用户提交产品。
优点:能够短时间向用户提交部分工作的产品,逐步增加产品功能,能够使得用户能够适应软件。
缺点;风险大
螺旋模型:使用原型的方式来降低风险,每个阶段都增加了风险分析。适合软件的重用。
目标:适合用在大型项目上。
喷泉模型:面向对象有着迭代1和无缝的特性
RUP把生命周期分为四个阶段:(考题:将产品给用户使用是什么阶段——移交阶段)
初始阶段:建立业务模型,定义最终产品视图,确定项目的范围
精化阶段:设计并确定体系结构,制定项目计划
构建阶段:开发出所有的构件和应用程序,把他们集成用户的产品,并且测试其所有功能。
移交阶段:把开发出来的产品交给用户使用
考题:
第二章
1.可行性研究从那三个方面;
技术可行性、经济可行性、操作可行性
2.可行性研究的过程:1.复查系统的规模和目标2.研究正在使用的系统,3.导出新系统的高层逻辑模型4.进一步定义分析(最重要,以数据流图和数据字典做为基础讨论)5.导出和评价供选择的解法
3.数据流图DFD(作图:银行,医院,飞机机票)
4.数据字典:数据流,数据流分享,数据存储,处理
=意思是等价于;+意思是和;意思是或,中间用
分开;{}表示重复;()意思是可选
数据字典
5.成本/效益分析方法:
货币的时间价值,投资回收期,存收入,投资回收率
考题(原题):
第三章
需求分析:系统必须做什么
1.访谈:调查表和情景分析技术,正式的访谈和非正式的访谈
2.实体—联系图(E—R):数据对象,属性,联系
考题:只有数据对象有属性(错误),联系也会有属性
3.状态转换图:初态用实心圆,终态用空心圆;有3种标准事件:do,exit,entry
可能考试作图:复印机的行为
4.IPO图:输入,处理,输出图,是有IBM公司发展完善的一种图形。
5.层次方框图:用树形的矩形框描述数据的参差结构
6.Warnier图:使用{}和+
考题
1.与用户沟通的方法包括()。
正式访谈
非正式访谈
发放调查表
情景分析
正确答案:A、B、C、D
2.需求分析的任务包括()
确定对系统的综合要求
分析系统的数据要求
导出系统的逻辑模型
修正系统开发计划
正确答案:A、B、C、D
3.从哪些方面验证软件需求的正确性?()
一致性
完整性
现实性
有效性
正确答案:A、B、C、D
二、判断题(共2题)
1、(2分)
访谈是最早开始使用的获取用户需求的技术,也是迄今为止仍然广泛使用的需求分析。
对
错
正确答案:A
2、(2分)
需求分析时软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么”这个问题
对
错
正确答案:A
第五章:
总体设计:系统应该怎么去实现
1.设计原理:模块化(把程序划分成独立命名的且可以访问的模块)
抽象:把事物相似的方面集中起来,忽略他们之间的差异
逐步求精:是人们解决复杂问题采用的基本方法,集中精力去解决主要问题二忽略问题的细节。
信息的隐藏和局部化
模块独立:是模块化,抽象,信息隐藏和局部化的结果。
2.耦合和内聚(考查两者的分类和如何区别耦合与内聚,有例题)
2.1耦合的分类:
耦合级别最弱的是数据耦合,数据耦合为低耦合
控制耦合:中等耦合
特征耦合:数据结构作为参数而被调用的模块只需要使用一部分数据时
公共耦合(可能是高,低,中):两个或者多个模块作用一个公共环境时。
最高程度的耦合是内容耦合(一个模块访问其他模块的内部数据;两个模块有重叠的代码;一个模块有多个入口,意味着一个模块有多个功能)。
原则:经量使用数据耦合,少用控制耦合,闲置公共环境耦合的范围,不用内容耦合
2.2内聚:低内聚(偶然内聚与逻辑内聚、时间内聚)
中内聚:(过程内聚与通信内聚)
高内聚:(顺序内聚与功能内聚)
3.考题:层次图就是层次方框图,本质没有区别(错误)
4.层次图:描绘软件的图
5.HIPO图:也就是对模块进行编号的层次图
6.结构图???
7.面向数据流的方法:交换流(有输入和输出的符号)与事物流(进行了分支,多线路)
考题:将DFD转换为软件结构图(S-C)(数据流图)
第六章
详细设计(根本目标是确定应该怎样具体实现所要求的系统)
1.过程设计工具
1.1程序流程图(菱形-选择,矩形-处理,圆角矩形-开始或者停止)
1.2盒图(必考),PAD图(三条边满足三角形),PAD与盒图之间的转换,判定树(例题,水费),PDL(伪代码)
–
1.3.jackson图(火车的构成例题)
1.4流图(圆表示结点,箭头线表示控制流)
考题:计算环形复杂度,有三种方法(例题)
1.5Halstead方法(根据运算符和操作符来度量程序的复杂程度)
N=N1+N2
N1表示运算符出现的总次数,N2表示操作数出现的总次数,N表示总长度
例题
考题.书上3题和第8题(必考)
画出流图-原题,判断逻辑
第七章:实现(编码和测试)
1.工程和科学计算:FORTRAN语言和ASK
商业领域:COBOL语言
系统和实时应用领域:C语言和Ada语言
知识和推理:PROLOG语言
组合问题领域:LISP
2.测试:是为了发现程序中的错误,而不是表明程序是正确
考题:
1.白盒测试:是为了测试程序的逻辑功能
黑盒:检查功能是否正常使用。
2.测试步骤:模块测试(单元测试,子系统测试,系统系统(集成测试),验收测试(确认测试))
1.3集成测试(与接口有关):非渐增测试方法(分别测试每个模块);渐增测试方法(结合测试)
考题:哪一个集合方法适合小型项目?非渐增
1.4确认测试是属于黑盒测试
两种方法Alpha(用户来检查,开发者在一旁知指导),Beta方法(用户自行进行操作)
1.5白盒测试技术(逻辑覆盖,控制结构技术)
逻辑覆盖:语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,条件组合覆盖(最强)
控制结构技术:基本路径测试(画出流图-计算环形复杂度-确定线性独立路径的基本组合)
1.5黑盒测试技术
等价划分(最常用黑盒技术)
因果图
1.6边界值分析
0-10选出0,1,11
调试的方法:
蛮干法,回溯法,原因排除法
考题:下列哪一个属于调试?
1.7软件可靠性
软件的可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功运行运行的概率
软件可用性定义:程序在给定的时间点,按照规格说明书的规定,成功的运行的概率。
1.8估算平均无故障时间的方法
例题:考题P
第8章:维护
软件不仅仅是改正开发程序的错误
软件活动4个活动:
改正性维护(诊断和改正错误)
适应性维护(配合环境修改软件的活动)
完善性维护(增加新功能或者修改已有的功能---占比最大
预防性活动
例题
打补丁(改正性),硬件平台发生改变(适应性),qq升级(完善),杀毒软件更新(完善)
程序模块越小,接口则会越多。
软件再生工程过程:库存目录分析,文档重构,逆向工程(从现存的代码中抽取有关数据,恢复设计结构),代码重构,数据重构,正向工程(创造或者改革,推翻原有的代码,重新设计)
考题:哪一个是更新开发新系统(逆向工程)
把与硬件及操作系统有关的代码放到某些特定的程序模块中。
对
错
正确答案:A
2、(2分)
采用防错程序设计技术,在程序中引入自检能力。
对
错
正确答案:A
3.
使用先进的软件开发技术。
对
错
正确答案:A
尽量用可重用的软件构件来组装程序。
对
错
正确答案:A
5、(2分)
用CASE环境或程序自动生成工具来自动生成一部分程序。
对
错
正确答案:A
6、(2分)
用数据库系统代替文件系统来存储需要长期保存的信息。
对
错
正确答案:A
7、(2分)
尽量减少程序模块的规模。
对
错
正确答案:B
8、(2分)
进行总体设计时加强模块间的联系。
对
错
正确答案:B
9、(2分)
尽可能使用高级语言编写程序。
对
错
2
正确答案:A
总分:2分
10、(2分)
尽可能利用硬件特点来提高程序效率。
对
错
正确答案:B
11、(2分)
选用时间效率和空间效率尽可能高的算法。
对
错
正确答案:B
12、(2分)
编码时尽量多用全局变量。
对
错
正确答案:B
13、(2分)
在开发过程中尽量保证各阶段文档的正确性。
对
错
正确答案:A
14、(2分)
测试完程序后,删去程序中的注解以缩短源程序长度。
对
错
正确答案:B
15、(2分)
在分析用户需求时同时考虑维护问题。
对
错
正确答案:A
简单题:p对一个已经有的软件进行重大修改,选择文档两份,应该选择,(程序的规格说明,源程序的清单)
第9章:面向对象的
类,封装(信息的隐藏),继承(减少程序中的多余的信息),多态性,重载性
1.类图—对象模型
杂货铺p,在p模型建立(类与继承)
考题:抽象类()
考题:
1.1小汽车和奔驰小汽车(包含)
图书馆和电子期刊(聚集)
丈夫与妻子(关联)
班级与学生(聚集)
1.2类与类的实例化
清华大学学生(类)
日本(实例)
王教授(实例)
功能模型-和数据流图
考试:下列功能模型(数据流图和用例图)
动态模型(状态图+时序图)
13.软件项目管理
估算功能点:p
DI=FI的和
TCP=o.65+0.01*DI
考题:
请计算一个软件的功能点
FP=UFP*TCP
可能考题:记住公式Boehm简单模型
E=3.2*KLOC^(1)
COCOMO2模型是BOehM简单模型
甘特图(Gantt):形象的描绘任务分解的情况
基线:IEEE把基线定义为,已接通过正式复审的规格说明和中间产品
能力成熟度模型:CMM分为5种阶段
初始级—可重复级-已定义级—已管理级—优化级