一、软件工程复习内容:
第一章 绪论
一.什么是软件?
答:
软件是能够完成预定功能和性能的可执行的计算机程序和使程序正常执行所需要的数据,加上描述程序的操作和使用文档。
二.软件和程序有很大的区别,它们可以表示为:
程序=数据结构+算法;
软件=程序+文档;
程序只是软件的一小部分。
三.什么是软件危机?
答:
软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。
四.软件危机的典型表现。
答:
①对软件开发成本和进度的估计常常很不准确;
②用户对”已完成“软件系统不满意的现象经常发生;
③软件产品的质量往往靠不住;
④软件通常没有适当的文档资料。
⑤ 软件成本在计算机系统总成本中所占的比例逐年上升。
⑥软件技术进步落后于需求增长。
第二章 软件生存周期和软件过程
一.软件的生存周期
1.定义:一个软件从问题提出立项开始,直到软件产品最终退役(废弃不用)为止。
2.软件生存周期分为三个时期:计划、开发和维护。
3.软件生存周期的主要活动:
需求分析->软件分析->软件设计->编码(测试)->交付测试->使用维护
二.软件过程
传统的开发模型
1.瀑布模型——基于软件生存周期的线性开发模型
1)强调软件文档:
a.每一个阶段必须完成规定的文档
b.每一个阶段都要复审完成的文档
2)特点:
a顺序性:必须前一阶段完成在开始后一阶段。
依赖性:前一阶段的输出是后一阶段的输入。
3)推迟实现的观点:全部分析好设计好之后在编码(提前编码容易造成错误,导致开发时间变长)
4)质量保证观点:
a.每个阶段必须完成规定的文档,没有交出合格的文档就没有完成该阶段的任务。
b.每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,纠正错误。
5)优点:
a.可强迫开发人员采用规范方法。
b.严格规定各个阶段必须提交的文档
c.要求每个阶段提交的所有产品都必须经过质量小组的保证
6)缺点:
a.在软件正式开放之前,用户不知道软件是什么样
b.要求用户不经过实践就提出完整的需求,是不实际的
c.需求变更带来的代价过大,不能适应需求的动态变更。
d.唯一的线性模型,不适合大型软件的开发
7)适用范围:开发过程中,需求不发生或很少发生变化,即需求明确的中、小型软件开发。
2.快速原型模型——基于原型的迭代化开发模型
1)中心思想:
先建立一个能够反映用户主要需求的模型,给用户看,在反复更改
2)原型开发方法:
a.对细节和性能不做过多的考虑
b.开发原型系统时尽量使用缩短开发周期的语言和工具(如:Unix中的Shell语言)
3)特点:
a.”逼真”的原型可以让用户迅速进行反馈
b.循环回溯和迭代:非线性模型
c.使用快速开发工具
4)种类:
a.渐进型:对原型补充和修改获得最终系统
b.抛弃型:原型丢弃
5)应防止的偏向:舍不得抛弃,从而影响软件质量
6)优点:
a.原型模型支持软件需求开发,帮助用户和开发人员理解需求
b.如果开发原型是可运行的,它的一部分高质量的程序片段和开发工具可用于最终的
7)缺点:
a.人力物力用的特别多
b.要客户和开发者共同完成
8)应用范围:
a.用户对自己需求不明确
b.项目只能是中小型
c.开发方和用户关系一定要密切
演化开发模型
3.增量模型——一种渐进式、迭代化的软件开发模型
1)优点:
a. 能够在较短的时间内向用户提交一些有用的工作产品,即在第一个构建交付之日起,用户就能做一些有用的工作。
b. 逐步增加产品的功能可以使用户有较充裕的时间学习和适应新产品,从而减少新软件可能给用户带来的冲击
c. 项目失败的风险较低,虽然在某些增量构建中可能遇到一些问题,但其他增量构建能够成功交付给客户。
d. 优先级最高的服务首先交付,然后将其他增量构建逐次集成进来,使得最重要的系统服务将接受最多的测试。意味着系统最重要的部分一般不会失败。
2)适应范围:容易分块的大型软件开发。
4.螺旋模型——典型迭代模型,重视分析分析
1)优点:
a. 符合人们认识现实世界和软件开发的客覌规律;
b. 保持瀑布模型所固有的顺序性和“边开发,边审核”的特点;
c. 利用原型评估降低开发风险;
d. 开发者和用户共同参予软件开发,尽早发现软件中的错误;
2)缺点:
a. 很难正确评估软件开发风险。
b. 过多的迭代周期,增加开发成本和时间。
3)适应范围:具有不确定性的大型软件开发。
三.习题
1.在软件开发的过程模型中,提出最早、应用最广泛的模型是( )
A、瀑布模型
B、增量模型
C、螺旋模型
D、快速原型模型
正确答案: A
2.瀑布模型是软件过程中最经典的模型,下面选项不属于瀑布模型活动的是( )
A、软件构造
B、软件设计
C、需求分析
D、测试与维护
正确答案: A
3.构件是软件技术中的重要内容,基于构件的开发 ( )
A、可以提高软件性能
B、可以缩短开发周期
C、可以减少开发费用
D、可以实现复用
正确答案: BCD
4.关于模型选择说法正确的是
A、全新系统的开发应该在总体设计完成后再开始增量或并行
B、同一个软件组织应该采用一种软件过程模型,以便于管理
C、需求不稳定的情况下,尽量采用增量式开发
D、敏捷模型能够快速响应变化,即使编码人员经验较少,仍应该采用敏捷开发方式
正确答案: AC
5.螺旋模型降低了软件开发的风险。
正确答案:√
6.瀑布模型的阶段划分体现了软件的生命周期。
正确答案:√
7.原型模型可以用于获取用户的需求。
正确答案:√
8.增量模型是分批增加的,能够比较好地控制软件的质量。
正确答案:√
9.敏捷模型中特别强调了团队成员、用户之间的沟通与合作。
正确答案:√
第三章 结构化分析与设计
一.结构化分析与设计由来
SA(结构化分析)和SD(结构化设计)的流程:
①SA(工具:DFD、PSPEC)->分析模型(分层DFD图)+SRS
②SD(工具:SC图)-映射->初始SC图-优化->最终SC图
二.SA模型的组成与描述
1.SA模型的组成
①实体联系图(E-R图):用于描述数据对象间的关系,代表软件的数据模型。
②数据流图(DFD图):指明系统中的数据是如何流动和变化的,以及描述使数据流进行变换的功能。DFD图中的每个功能均可在PSPEC中进行描述,构成软件的功能模型。
③状态图(STC图):指明系统在外部事件的作用下将如何动作,表满系统的各种状态以及状态间的变化,构成行为模型。
2.数据流图(DFD)
表达系统功能模型的工具。DFD图是从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。
3.数据字典(DD)
①数据流
②数据文件
③数据项
4.加工规格说明(PSPEC)
三.模块设计
1.模块独立性
(1)内聚
①偶然性内聚(巧合性内聚)
块内各组成成分在功能上是互不相关的。块内成分的组合纯属偶然,成为偶然性内聚
②逻辑性内聚:
有若干个逻辑功能相似的成分组成
缺点:需要从模块外引入用作判断的开关量,增强耦合程度(控制耦合);不易修改,效率低。
③时间性内聚(经典内聚)
模块完成的功能必须在同一时间内执行,这些功能只因时间因素关联在一起。
④通信性内聚
模块内各部分使用同一种输入数据,或产生同一个输出结果
⑤信息性内聚
各组成部分顺序执行,通常上一个处理框的输出就是下一个处理框的输入
⑥功能性内聚
如果一个模块内所有处理元素完成一个,而且仅完成一个功能,则称为功能内聚
(2)耦合
①数据耦合
一个模块调用另一个模块时,被调用模块的输入、输出都是简单的数据(若干参数)
②特征耦合
两个模块通过传递数据结构(不是简单数据,而是记录、数组等)加以联系,或都与一个数据结构有关系
③控制耦合
一个模块向下属模块传递信息控制力被调用模块的内部逻辑
四.习题
1.控制耦合是指 ( )
A、一个模块通过向另一个模块传递一个控制信息,接收模块根据信号值进行动作
B、两个或两个以上的模块共同引用一个全局数据项
C、模块之间通过参数来传递数据
D、当一个模块直接修改或操作另一个模块的数据
正确答案: A
2.为了提高模块的独立性,模块内部最好是
A、逻辑内聚
B、时间内聚
C、功能内聚
D、通信内聚
正确答案: C
3.在结构化设计中,
应该使模块的扇入尽可能____,
而扇出尽可能__。
正确答案:
第一空: 高
第二空: 低
4.软件模块之间的耦合性越弱越好。
正确答案:√
5.系统设计时应该将模块划分得很细,模块数越多越好。
正确答案:×
6.根据下图的伪代码程序,完成相应要求。
(1)画出程序流程图
(2)用NS图来描述
start
input a,b,c
if a>1 and b==0
then c=c/a
end if
if a==2 or c>1
then c=c+1
end if
output c
stop
答:
二、复习计算机组成原理
第一章计算机系统概论,重点内容不多,在习题中都有,所有这里只记录课后习题。
今日复习了计算机组成原理的第一章计算机系统概论,重点内容不多,在习题中都有,所有这里只记录课后习题。
1.1什么是计算机系统、计算机硬件和计算机软件?硬件和软件哪个更重要?
答:
①计算机系统:由计算机硬件系统和计算机软件系统组成的综合体。
②计算机硬件:计算机的实体(如主机、外设等)。
标准答案:指计算机中的电子线路和物流装置。
③计算机软件:由具有各类特殊功能的信息(程序)组成。
标准答案:计算机运行所需的程序及相关资料。
④硬件和软件在计算机系统中相互依次,缺一不可,因此同样重要。
1.5冯·诺依曼计算机的特点是什么?
答:
①以运算器为中心。
②计算机由五大部件组成(输入设备、输出设备、控制器、运算器、存储器)。
③指令和数据以同等地位存于存储器(可按地址寻址)。
④指令和数据用二进制表示。
⑤指令由操作数和地址码组成。
⑥存储程序。
1.6画出计算机硬件组成框图,说明各部件的作用及计算机硬件的主要技术指标。
答:
①计算机组成硬件框图:
②各部件的作用:
输入设备:将人们熟悉的信息形式转换成计算机可以接受并识别的信息形式的设备。
输出设备:将计算机处理结果(二进制信息)转换成人类或其他设备可以接收和识别的信息形式的设备。
控制器:指挥程序运行。
运算器:算术运算、逻辑运算。
存储器:存放数据和程序。
③计算机硬件的主要技术指标:
机器字长:CPU一次能处理数据的位数(与CPU中寄存器位数有关)。
主频:CPU内核工作的时钟频率。
MIPS:每秒执行百万条指令。
CPI:执行一条指令所需时钟周期数。
FLOPS:每秒浮点运算次数。
1.7解释概念:主机、CPU、主存、存储单元、存储元件、存储基元、存储元、存储字、存储字长、存储容量、机器字长、指令字长。
答:
①主机:计算机硬件的主体部分,有CPU和主存合成为主机。
②CPU:*处理器,是计算机硬件的核心部分,有运算器和控制器组成。
③主存:计算机中存放正在运行的程序和数据的存储器,为计算机的主要工作存储器,可随机存取,由存储体、各种逻辑部件及控制电路组成。
④存储单元:可存放一个机器字并具有特定存储地址的存储单元。
⑤存储元件:存储一位二进制信息的物理元件,是存储器中最小的存储单位。
⑥存储字:一个存储单元所存二进制代码的逻辑单位。
⑦存储字长:一个存储单元所存二进制代码的位数。
⑧存储容量:存储器中可存二进制代码的总量。
⑨机器字长:指CPU一次能处理的二进制数据的位数,通常与CPU的寄存器位数有关。
⑩指令字长:一条指令的二进制代码位数。
1.8解释下列英文缩写的中文含义:
CPU,PC,IR,CU,ALU,ACC,MQ,X,MAR,MDR,I/Q,MIPS,CPI,FLOPS
答:
①CPU:*处理器,是计算机硬件的核心部分,由运算器和控制器组成。
②PC:程序计数器,功能是存放当前欲执行指令的地址,并可自动计数形成下一条指令地址。
③IR:指令寄存器,功能是存放当前正在执行的指令。
④CU:控制单元(部件),为控制器的核心部件,功能是产生微操作命令序列。
⑤ALU:算数逻辑单元,为运算器的核心部件,功能是进行算数、逻辑运算。
⑥ACC:累加器,是运算器中既能存放运算前的操作数,又能存放运算结果的寄存器。
⑦MQ:乘商寄存器,乘法运算是存放乘数,除法运算是存放商的寄存器。
⑧X:可以用作任一部件名。
⑨MAR:存储器地址寄存器,在主存中用来存放欲访问的存储单元的地址。
⑩MDR:存储器数据缓冲寄存器,在主存中用来存放从某单元读出、或要写入某存储单元的数据。
⑪I/Q:输入/输出设备。
⑫MIPS:每秒执行百万条指令数,为计算机运算速度指标的一种计量单位。
1.9画出主机框图,分别以存数指令“STA M"和加法指令”ADD M“(M均为主存地址)为例,在图中按序标出完成该指令(包括取指阶段)的信息流程。假设主存容量为256Mx32位,在指令字长、存储字长、机器字长相等的条件下,指出图中各寄存器的位数。
答:
①主机框图:
②STA M指令:
PC->MAR, MAR->MM, MM->MDR, MDR->IR,
OP(IR)->CU, Ad(IR)->MAR, ACC->MDR,
MAR->MM, WR
③ADD M指令:
PC->MAR, MAR->MM, MM->MDR, MDR->IR,
OP(IR)->CU, Ad(IR)->MAR, RD, MM->MDR,
MDR->X, ADD, ALU->ACC, ACC->MDR, WR
④假设主存容量256*32位,在指令字长、存储字长、机器字长相等的条件下,ACC、X、IR、MDR寄存器均为32位,PC和MAR寄存器均为28位。
⑪I/Q:输入/输出设备。
⑫MIPS:每秒执行百万条指令数,为计算机运算速度指标的一种计量单位。
1.9画出主机框图,分别以存数指令“STA M"和加法指令”ADD M“(M均为主存地址)为例,在图中按序标出完成该指令(包括取指阶段)的信息流程。假设主存容量为256Mx32位,在指令字长、存储字长、机器字长相等的条件下,指出图中各寄存器的位数。
答:
①主机框图:
②STA M指令:
PC->MAR, MAR->MM, MM->MDR, MDR->IR,
OP(IR)->CU, Ad(IR)->MAR, ACC->MDR,
MAR->MM, WR
③ADD M指令:
PC->MAR, MAR->MM, MM->MDR, MDR->IR,
OP(IR)->CU, Ad(IR)->MAR, RD, MM->MDR,
MDR->X, ADD, ALU->ACC, ACC->MDR, WR
④假设主存容量256*32位,在指令字长、存储字长、机器字长相等的条件下,ACC、X、IR、MDR寄存器均为32位,PC和MAR寄存器均为28位。