资源描述
软件工程概念
第一章: 软件定义
1.软件( Software): 计算机系统中与硬件相互依存另一部分, 它是包含程序(Program) , 数据(Data)及其相关文档( Document)完整集合。
2.软件特征: 逻辑复杂, 开发复杂, 成本高, 风险大, 维护困难。
3.按软件功效分类: 系统软件, 支撑软件, 应用软件。
系统软件: 操作系统, 数据库管理系统, 设备驱动程序, 通信处理程序等。
支撑软件: 文本编辑程序, 文件格式化程序, 程序库系统等
应用软件: 商业数据处理软件, 工程与科学计算软件, 计算机辅助设计/制造软件, 系统仿真软件, 智能嵌入软件, 医疗、 制药软件, 事务管理、 办公自动化软件。
按软件规模分类: 微型, 小型, 中型, 大型, 甚大型, 极大型。
按软件工作方法分: 实时处理软件, 分时软件, 交互式软件, 批处理软件
4.软件危机: 是指在计算机软件开发和维护过程中所碰到一系列严重问题
5.软件危机关键是两个问题: 1.怎样开发软件, 以满足对软件日益增加需求?2.怎样维护数量不停膨胀已经有软件?
5.软件危机表现: 1.成本高, 开发成本估量不正确2.软件质量不高、 可靠性差3.进度难以控制4.维护非常困难5.用户不满意6. 因为软件质量问题造成失败软件项目非常多。
6.产生软件危机原因: 1.与软件本身特点相关 2.与软件开发与维护方法不正确相关.
软件工程学目: 以较低成本研制含有较高质量软件
软件工程技术两个显著特点: 1.强调规范化2. 强调文档化
软件工程基础原理(7条): 1.用分阶段生命周期计划严格管理2.坚持进行阶段评审3.实严格产品控制4.采取现代程序设计技术5.结果应能清楚地审查6.开发小组人员应该少而精7.认可不停改善软件工程实践必需性
8.软件工程方法学包含3个要素: 方法、 工具和过程
9.软件生命周期: 软件定义(问题定义, 可行性研究, 需求分析), 软件开发( 总体设计, 具体设计, 编码和单元测试, 集成测试), 运行维护 ( 持久满足用户需求)
10.软件过程模型: 瀑布模型, 快速原型模型, 增量模型 , 螺旋模型, 喷泉模型。
11.软件过程模型RUP: 初始阶段, 细化阶段, 结构阶段, 移交阶段
第二章: 可行性研究任务
1.可行性研究五个方案: 技术可行性, 经济可行性, 操作可行性, 法律可行性, 社会效益
2.可行性研究过程: 1.复查系统规模与目标、 2.研究现在系统、 3. 导出新系统高层逻辑模型、 4. 深入定义问题、 5. 导出和评价供选择解法、 6. 推荐行动方针、 7. 草拟开发计划、 8.书写文档提交审查
3.系统步骤图: 用来描述物理系统工具。
4.系统步骤图表示: 是数据在系统各部件之间流动情况, 而不是对数据进行加工处理控制过程。即: 系统步骤图≠程序步骤图。
5.系统步骤图基础思想: 用图形符号以黑盒子形式描绘组成系统每个部件
6.系统步骤图元素: 处理, 输入输出, 连接, 换页连接, 数据流。
7.数据流图: 用来描述逻辑系统工具。
数据流图(DFD)是一个图形化技术, 它描绘信息流和数据从输入移动到输出过程中所经受变换, 即数据流图描绘数据在软件中流动和被处理逻辑过程。
8.数据流图四种基础符号: 数据加工/处理/变换, 数据源点或终点 (外部实体), 数据存放, 数据流。
9.数据字典组成: 数据流, 数据流分量(数据元素), 数据存放, 处理。
10.数据元素: 次序, 选择, 反复, 可选。
第三章: 需求分析
1.需求分析: 软件定义时期最终一个阶段,
2.需求分析基础任务: 不是确定系统怎样完成它工作, 而是确定系统必需完成哪些工作, 也就是对目标系统提出完整、 正确、 清楚、 具体要求。
3.软件需求组成: 业务需求, 用户需求, 系统需求。
4.需求分析方法: 面向数据流结构化分析方法 (SA), 面向对象分析方法 (OOA) 等
5.逻辑模型: 数据流图(DFD), 数据字典(DD), 实体-关系图(ERD), 状态转换图(STD)
6.物理模型: 系统步骤图,
7.需求分析基础思想:“自顶向下, 逐步求精”, 抽象和分解
8.需求分析;功效模型—数据流图, 数据模型—实体-关系图, 行为模型—状态转换图
9.实体-关系图(ERD): 描述数据对象及数据对象之间关系
10.数据流图(DFD): 描述数据在系统中怎样被传送或变换, 以及描述怎样对数据流进行变换功效(子功效)
11.状态转换图(STD): 描述系统对外部事件怎样响应, 怎样动作
模型关键是数据字典
12.实体-联络图(ER)组成: :数据对象(实体)、 数据对象属性及数据对象相互间相互连接关系。
联络: 一对一联络, 一对多联络, 多对多联络。
通常见矩形框代表实体; 用连接相关实体菱形框表示关系; 用椭圆形或圆角矩形表示实体(或关系)属性; 并用直线把实体(或关系)与其属性连接起来。
13.数据规范化目是: 1.消除数据冗余, 即消除表格中数据反复; 2.消除多义性, 使关系中属性含义清楚、 单一; 3.使关系“概念”单一化, 让每个数据项只是一个简单数或字符串, 而不是一个组项或反复组; 4.方便操作。使数据插入、 删除与修改操作可行并方便; 5.使关系模式更灵活, 易于实现靠近自然语言查询方法。
14.状态转换图(简称为状态图): 经过描绘系统状态及引发系统状态转换事件, 来表示系统行为。另外, 状态图还指明了作为特定事件结果, 系统将做哪些动作(比如, 处理数据)。
15.状态: 初态: 一个, 终态: 0或多个, 中间状态
16. 验证软件需求: 一致性, 完整性, 现实性, 有效性。
第五章: 总体设计
1.总体设计(概要设计): 将软件需求转化为数据结构和软件系统结构
2.数据库设计包含三个步骤: 模式设计, 子模式设计, 存放模式设计。
3.软件设计原理: 模块化, 抽象, 逐步求精, 信息隐藏与信息局部化, 模块独立
4.模块: 是由边界元素限定相邻程序元素(比如, 数听说明, 可实施语句)序列, 而且有一个总体标识符代表它。C、 C++和Java语言中 {...} 对过程、 函数、 子程序和宏等面向对象方法学中对象是模块, 对象内方法也是模块
模块化是好软件设计一个基础准则
5.模块独立含义: 模块完成独立功效, 符合信息隐藏和信息局部化标准, 模块间关连和依靠程度尽可能小。
6.独立性度量: 耦合、 内聚。
7.耦合是对一个软件结构内不一样模块之间互连程度度量。
8.耦合强弱取决于模块间接口复杂程度, 进入或访问一个模块点以及经过接口数据
9.模块间耦合程度强烈影响系统可了解性、 可测试性、 可靠性和可维护性。
耦合性越高, 模块独立性越弱
10.耦合强度依靠原因:
一模块对另一模块引用
一模块向另一模块传输数据量
一模块施加到另一模块控制数量
模块间接口复杂程度
11.耦合性由强到弱排列为: 内容耦合, 公共耦合, 特征耦合, 控制耦合, 数据耦合。
12.标准: 尽可能使用数据耦合, 少用控制耦合, 限制公共耦合范围, 完全不用内容耦合。
13.内聚 (Cohesion): 标志一个模块内各元素相互结合紧密程度。
14.内聚有七种, 由弱到强分别为: 偶然内聚->逻辑内聚->时间内聚->过程内聚->通信内聚->次序内聚->功效内聚。
15.深度 = 分层层数。过大表示分工过细。
16.宽度 = 同一层上模块数最大值。过大表示系统复杂度大。
17.扇出 = 一个模块直接调用/控制模块数。
18.扇入 = 直接调用该模块模块数。
19控制域: 这个模块本身以及全部直接或间接隶属于它模块集合。
20.作用域: 受该模块中一个判定所影响全部模块集合。
面向数据流设计方法: 变换流, 事务流。
第六章: 具体设计
1.具体设计: 描述系统每个程序, 包含每个模块和子程序名称、 标识符、 层次结构系
2.对程序功效、 性能、 输入、 输出、 算法、 步骤、 接口等进行描述
3.程序控制结构: 次序、 选择, 循环, (多分支, DO While ,DO Until)五种基础控制结构。
4.程序步骤图又称为程序框图: 是对一个模块内部实施过程用图形来描述。
5.盒图:只能从上边进入, 从下边走出, 没有其她入口和出口,
6.盒图基础符号:次序,选择型(If-then-else),多分支选择型(CASE型),DO-WHILE循环(先测试循环), DO-UNTIL循环(后测试循环). 调用子程序.
7.PAD图:PAD图中竖线总条数就是程序中层次数
8.PAD图基础符号:次序,选择,循环,Case分支,语句标号,定义.
9.判定表:左上部列出全部条件,左下部是全部可能操作,右上部是多种条件组合矩阵,右下部是每种条件组合对应动作
第七章: 软件实现
1.实现: 编码和测试
2编码: 把软件设计结果翻译成用某种程序设计语言书写程序
3.程序设计语言: 机器语言, 汇编语言, 高级语言
4.程序内部文档包含: 合适标识符, 合适注释, 程序视觉组织 。
5.符号名即标识符;包含模块名、 变量名、 常量名、 标号名、 子程序名、 数据区名以及缓冲区名等。
6.程序注释:程序员与以后程序读者之间通信关键手段
7.注释分为序言性注释和功效性注释.
8.软件测试是确保软件质量关键步骤, 是对软件规格说明、 设计和编码最终复审, 其工件量约占总工作量40%以上(对于人命关天情况, 测试相当于其它部分总成本3-5倍)。
8.软件测试方法:静态测试方法,,动态测试方法
9.静态测试方法:人工测试方法,计算机辅助静态分析方法
10.动态测试方法:白盒测试方法,黑盒测试方法.
11.黑盒测试法又称功效测试:把程序看作一个黑盒子, 完全不考虑程序内部结构和处理过程
12.白盒测试法又称为结构测试: 把程序看成装在一个透明白盒子, 测试者完全知道程序结构和处理算法
13.软件测试步骤: 1.模块测试又称(单元测试), 2.子系统测试, 3.系统测试称为集成测试, 4.验收测试也称为确定测试, 5.平行运行
14.单元测试关键使用白盒测试技术。
15.单元测试关键: 模块接口, 局部数据结构 , 关键实施通路, 犯错处理通路, 边界条件。
16.集成测试方法: 非渐增式测试方法, 渐增式测试方法
17.渐增式测试策略: 可使用深度优先策略, 或宽度优先策略
18.回归测试: 是指重新实施已经做过测试某个子集, 以确保修改改变没有带来非预期副作用。
19.白盒测试技术: 逻辑覆盖
20.逻辑覆盖是以程序内部逻辑结构为基础设计测试用例技术。
21.逻辑覆盖: 语句覆盖, 判定覆盖 , 条件覆盖, 判定-条件覆盖, 条件组合覆盖, 21.路径覆盖, 点覆盖= 语句覆盖, 边覆盖=判定覆盖, 路径覆盖 与条件组合覆盖。
22.语句覆盖: 每条语句最少实施一次
23.判定覆盖 : 每一判定每个分支最少实施一次
24.条件覆盖: 每一判定中每个条件, 分别按“真”、 “假”最少各实施一次
25.判定-条件覆盖: 同时满足判定覆盖和条件覆盖要求
26.条件组合覆盖: 求出判定中全部条件多种可能组合值, 每一可能条件组合最少实施一次。
27.路径覆盖: 每条可能路径都最少实施一次, 若图中有环, 则每个环最少经过一次
28.黑盒测试着重测试软件功效。
29.黑盒测试技术: 等价类划分, 边界值分析法, 错误推测法
30.等价类: 有效等价类和无效等价类
31.边界值分析法, 应该选择刚好等于、 稍小于和稍大于等价类边界值数据作为测试数据
32.调试路径—调试策略: 蛮干法, 回溯法, 原因排除法--
33.原因排除法-包含: 对分查找法、 归纳法、 演绎法
34.软件可靠性: 可靠性, 可用性, 正确性
35.可靠性和可用性区分是: 可靠性是在0到t时间间隔内, 系统没有失效概率。而可用性是在t时刻, 系统正常运行概率。
第九章: 软件维护
1.软件维护定义: 在软件已经交付使用以后, 为了更正错误或满足新需要而修改软件过程。
2.软件维护原因: 在运行中发觉软件错误和设计缺点, 这些错误和缺点在测试阶段未能发觉。
3.软件维护类型: 更正性维护, 适应性维护, 完善性维护, 预防性维护
4.软件维护内容: 程序维护, 数据维护, 硬件维护
5.软件维护特点: 结构化维护与非结构化, 维护代价分(有形代价和无形代价), 维护问题。
6.软件维护过程: 建立维护组织, 维护汇报, 维护事件流, 保留维护统计, 评价维护活动,
7.软件可维护性: 1.决定软件可维护性原因(可了解性, 可测试性, 可修改性, 可移植性, 可重用性)2.文档 —— 影响可维护性决定原因, 比代码更关键。3.复审
2、 某银行计算机储蓄系统工作步骤大致以下: 储户填写存款单或取款单由业务员键入系统, 假如是存款则系统统计存款人姓名、 住址(或电话号码)、 身份证号码、 存款类型、 存款日期、 到期日期、 利率及密码(可选)等信息, 并印出存款单给储户; 假如是取款而且存款时留有密码, 则系统首先查对储户密码, 若密码正确或存款时未留密码, 则系统计算利息并印出利息清单给储户。请用数据流图描绘本系统功效。并画出系统E-R图。
DFD图:
ER图:
3、 试用N-S图和PAD表示下面程序步骤图, 并计算它们McCabe复杂性度量.(基础路径测试法 环复杂度)。(10%)
解答:
展开阅读全文