美国综合性大学-美国综合性大学
2010
年宁波大学科技学院
软件工程
期末考试
复习资料
考到很多题目,
60%
以上
第一章
什么是软件工程?
(
1
)
指导计算机软件开发和维护的工程学科
(
2
)
采用
< p>工程
的概念、原理、技术和方法来开发和维护软件,把进过时间考验而证明
正
确的
管理技术
和当前能够得到的
p>
最好得技术方法
(计算机技术和网络通讯技术)结
< br>合起来,
经济
的开发出
高质量<
/p>
的软件并
有效
的维护它。
什么事软件危机?
是指计算机软件在开发和维护过程中所遇到的一系列严重的问题。
软件危机的
7
种表现形式:
(
1
)
对成本的估计不足
(
2
)
对“已完成”软件的不满意
(
3
)
质量靠不住
(
4
)
不可维护
(
5
)
没有相应的文档资料
(
6
)
开发成本逐渐上升
(
7
)
软件开发生产率 的提高速度,跟不上硬件的发展速度和计算机应用的迅速
普及深入的趋势。
软件工程的方法:
(
1
)
传统的开发方法
(
2
)
面向对象的方法
软件工程方法三要素:
(
1
)过程
(
2
)方法
(
3
)工具
第二章
软件过程(
软件说明周期)由软件定义、软件开发和运行维护三个时期组成。
软件定义
(
业务流程图
)
(
1
)
(问题定义)确定目标
(
2
)需求分析
1
.明显
2.
潜在
(
3
)可行性分析
1
.经济
2
.技术
3
.环境
软件开发
(
1
)
系统分析(建模)三个模型
模型
工具
1
.数据对象模型
实体—关系图(
E
—
R
图)
?
(导出)数据 字典(描
述数据信息的集合,是对系统中使用的所有数据元素的定义的集合。
2
.功能模型
?
(
依据于
)
业务流程图
数据流图
?
(导出)软件体系结构
3
.行为模型(时间序列)
状态转换图
(
2
)
系统设计
1
.
产生软件体系结构
<
——数据流图
<1>
模块化的
5
条标准:
【
1
】
模块可分解性
【
2
】
模块可组装性
【
3
】
模块可理解性
【
4
】
模块连续性
【
5
】
模块保护性
<2>
模块独立性:弱耦合 ,应尽量使用数据耦合代替控制耦合
最高程度的耦合是内容耦合。
尽量使用数据耦合,少用
控制耦合和特征耦合,限制公共环境耦合的
范围,完全不用内容耦合。
强内聚:追求功能内聚
功能内聚是最高程度的内聚,偶然内聚最低。
<3>
启发原则:
【
1
】提高模块独立性
【
2
】模块规模适中
【
3
】深度、宽度、扇入和扇出适当
【
4
】作用域应在控制域之内
【
6
】
降低模块接口复杂度
【
7
】
单一出口
【
8
】
可预测
2
.
优化软件体系结构
3
.
接口设计
4
.
数据库设计
5
.
过程设计
工具:程序流程图
盒图(
N
—
S
图)
PAD
图
判定表
判定树
过程设计语言(
PDL
)
(
3
)
系统实现
1
.
编码
2
.
测试
传统方法:
瀑布模型:典型的软件工程模型
优点:很有顺序,保证系统的推进,系统的实现,质量有保证,降低软件危机
< /p>
可以强迫开发人员采用规范的方法;严格的规定了每个阶段必须提交
的文档,要求每个阶段交出的所有产品都必须经过质量保证小组的仔
细验证。
缺点:只要危机存在,就会一级一级传递放大。
传统方法无法彻底消除软件危机。
面向对象的方法:喷泉模型
喷泉这个词体现了面向对象软件开发过程迭代和无缝的特性。
优点:
适用于大型的软件开发, p>
彻底消除了软件危机,
与人类习惯的思维方式一致,
稳定性好,可重用性好,较易开发大型软件产品,可维护性好。
缺点:方法复杂,技术高,中小型软件不适用。
第三章
所谓模型,就是为了理解事物对事物作
出的一种抽象,是对事物的一种无歧义的书面描述。
第四章
传统的软件开发方法,
从计算机的观点出发,
以算法为核心,
开发过程基于功能分析和功能
分解
1
.
正确的模块使用了错误的数据
2
.
正确的数据被错误的模块调用
3
.
对事物的发展很难适应
面向对象的观点,以人类的思维方式出发,以对象为中心
使用数据结构(对象模型)
,执行操作(动态模型)
,并且完成数据值 的变化(功能模型)
众多实体
?
( p>
抽象、共性
)
类
4
.
构造特色(属性)
(数据)
5
.
功能抽象(服务)
+
方法
【
1
】
封装性
【
2
】
继承性
【
3
】
多态性
【
4
】
重载性
面向对象方法的生命周期
1
.需求分析
(
1
)确定目标
(
2
)需求分析:明显
潜在
(
3
)可行性分析
2
.系统分析(建模
OOA
)
三个模型:
(
1
)对象模型(静 态结构)
(对象
+
关联)
【抽象成类,类与类关系 】
(
2
< p>)功能模型(数据变换)(系统功能)
?
(依据于)业务流程 图
(
3
< p>)行为模型(交互次序的)(动态)
5
个层面:
(
1
)————主题层
(
2
)————类和对象层
(
3
)————结构层
(
4
)————属性层
(
5
)————服务层