题型分布:选择判断填空 简答4个题 分析2个题 应用3个题
第1章 软件工程学概述
一、软件危机
软件危机是指计算机软件的开发和维护过程中所遇到的一系列问题
1. 软件是程序、数据及相关文档的完整集合
- 消除软件危机的途径
- 充分认识到软件开发不是某种个体劳动的神秘技巧,而是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目
- 充分吸收和借鉴行之有效的原理、概念、技术和方法。
- 软件工程正式从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科
二、软件工程
- 软件工程方法学
软件工程方法学包含三个要素:方法、工具和过程
- 传统方法学(面向数据流方法/结构化方法)
- 面向对象方法学
三、软件生命周期
1. 软件生命周期由软件定义、软件开发和运行维护三个时期组成
2. 软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析
3. 开发时期具体设计和实现在前一时期定义的软件,4个阶段:总体设计,详细设计,编码和单元测试,综合测试
- 维护时期的主要任务是使软件持久地满足用户的需要
- 软件生命周期的阶段
问题定义,可行新研究,需求分析(确定的系统逻辑模型是以后设计和实现目标系统的基础;得到软件需求说明书SRS),总体设计( 1)数据设计(底层);2)体系结构),详细设计(又称模块设计:1)程序设计;2)接口设计),编码和单元测试,综合测试
四、软件过程
1. 瀑布模型(Waterfall Model 适用于需求明确或冻结)
- 文档驱动<每个阶段都必须完成规定的文档>
- 具有顺序性和依耐性
- 可强迫开发人员采用规范的方法
2. 快速原型模型(Rapid Prototype Model 适用于需求模糊 不明确)
- 第一步是快速建立一个能反映用户主要需求的原型
- 软件产品的开发基本上是线性顺序进行的
- 用户驱动
3. 增量模型(Increamental Model)
- 构件驱动
- 分批地逐步向用户提交产品,整个软件产品被分解成许多个增量构件,开发人员一个构件接一个构件地向用户提交产品
4. 螺旋模型(Spiral Model)
- 也看作每个阶段之前都增加了风险分析过程的快速原型模型。<结合瀑布模型+各阶段模型+风险分析>
- 风险驱动
5. 喷泉模型
- 面向对象软件开发过程迭代和无缝的特性
- 对象驱动
6. Rational统一过程
- 最佳实践 ①迭代开发;②管理需求;③使用基于构件的体系结构;④可视化建模;⑤验证软件质量;⑥控制软件变更
- 开发周期
阶段: ①初始;②需求;③构建;④移交
工作流:①业务建模;②需求;③分析与设计;④实现;⑤测试;⑥部署;⑦配置与变更管理;⑧项目管理;⑨环境
7. 敏捷过程与极限编程 ( 简单、交流、反馈、勇气、尊重)
①极限编程XP
8. 微软过程(版本驱动)
第2章 可行性研究
一、可行性研究的任务(Feasibility Study)
1. 四个方面研究可行性
①技术可行性;②经济可行性;③操作可行性;④社会因素可行性
-
SWOT分析法
SWOT分析法 - 可行性研究过程
①复查系统规模和目标
②研究目前正在使用的系统
③导出新系统的高层逻辑模型
④进一步定义问题
⑤导出和评价供选择的解法
⑥推荐行动方针
⑦草拟开发计划
⑧书写文档提交审查 - 系统流程图
是概括地描绘物理系统的传统工具 - 数据流图
描绘数据在软件中流动和被处理的逻辑过程
数据流图
①分解数据流图手段:a.回溯法; b.引入数据存储。
②出现的错误现象:a.黑洞(数据只进不出);b. 奇迹(数据无进就出);c.灰洞(输入流无法产生输出流)
③基于数据流动,进行功能分解
二、数据字典
数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合
- 数据字典的内容
①数据流;②数据流分量(即数据元素)<不可再分割>;③数据存储;④处理<加工规约> - 定义数据的方法
①顺序;②选择;③重复;④可选
面向数据结构的程序设计方法
①顺序;②选择;③重复;
- 用途
作为分析阶段的工具
三、成本/效益分析
- 成本估计
① 代码行技术(单位:LOC,KLOC)<工作量:pm(人月);对象点:OP;用例点:UP;功能点:FP>衡量工作单位
②任务分解技术 - 成本/效益分析方法
①货币的时间价值;②投资回收期;③存收入;④投资回收率
第3章 需求分析
需求工程包含需求开发和需求需求管理。需求开发则包含获取需求、需求分析和需求定义;需求管理则包含需求确认、需求跟踪和需求变更控制,当我们进行需求变更控制时需要避免蔓延和镀金。
一、需求分析阶段的任务
1、分析系统的综合要求
①功能需求;②性能需求;③可靠性和可用性需求(质量需求);④出错处理需求;⑤接口需求(包含用户接口、硬件接口、软件接口、通信接口需求);⑥约束;⑦逆向需求;⑧将来可能提出的需求;⑨运行环境需求(硬件设备;软件);⑩用户或人的因素;11、文档需求;12、资源需求
2、分析系统的数据需求
①通常选择建立数据模型的方法
3、导出系统的逻辑模型
4、修正系统的开发计划
二、与用户沟通获取需求的方法
1、访谈
分为正式访谈和非正式访谈。(准备:行业知识;进行中:问答列表、记录、工作流程;末:总结确认)
基于方式:①问卷调查;②角色扮演;③讨论会;④创建原型;⑤行业规范守则;⑥同类型软件;⑦行业专家;⑧原始资料
2、面向数据流自顶向下求精
结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的办法
3、简易的应用规格说明技术(面向团队的需求收集法)
4、快速建立软件原型
三、分析建模与规格说明说明
1、分析建模
状态转换图2、软件需求规格说明
四、其他图形工具
1、层次方框图
2、Warnier图(面向数据结构)
3、IPO图(Input Process Output)输入、处理、输出图
五、验证软件需求
1、从四个方面进行验证
①一致性
②完整性
③现实性
④有效性
第5章 总体设计
总体设计过程通常由两个主要阶段组成:系统设计阶段,确定系统的具体实施方案;结构设计阶段,确定软件结构(系统架构)
总体设计
1、设计原理
①模块化
②抽象
③逐步求精
④信息隐藏和局部化
⑤模块独立(衡量独立性原则:高内聚、低耦合)
模块独立的概念是模块化、抽象、信息隐藏和局部化概念的结果(便于开发,便于维护)
a、耦合(低耦合)
- 数据耦合:通过参数变换的信息仅仅是数据
- 控制耦合:传递的信息中有控制信息(尽管有时这种控制信息从数据形式出现)
- 特征耦合:把整个数据结构作为参数传递
- 公共耦合:当两个或多个模块通过一个公共数据环境相互作用
- 内容耦合
尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,不用内容耦合
b、内聚(Cohension)
优劣评分:功能内聚 10分,顺序内聚 9分,通信内聚 7分,过程内聚 5分,时间内聚 3分,逻辑内聚 1分,偶然内聚 0分。
2、启发规则
①改变软件结构,提高独立性
②模块规模应适中
③深度、宽度、扇出和扇入都应适应
a、深度表示软件结构中控制的层数
b、宽度是软件结构内同一层次上的模块总数的最大值
c、扇出是一个模块直接控制(调用)的模块数目,平均扇出通常是3或4(扇出上限通常是5~9)
d、扇入表明有多少个上级模块直接调用它
顶层扇出比较高,中层扇出较少,底层扇入到公共的实用模块中去(有高扇入)
版权归张怡雯所有2019.12.28*
网友评论