软件工程期末复习
1. 概述
什么是软件?
软件是与计算机系统操作有关的程序、规程、规则及与之有关的文档及数据。
简化表示: 软件=程序+数据+文档
- 程序:按事先设计的功能和性能要求执行的指令序列
- 数据:为使程序能够适当地处理的信息及信息结构;
- 文档:与程序开发、维护和使用有关的图文材料
为什么学习软件工程?
:就是用工程化方法去规范软件开发,让项目可以按时完成、成本可控、质量有保证。
软件危机:产生、表现
1.什么是软件危机?软件危机包含哪几方面的问题?
指,计算机在开发和维护方面遇到的一系列严峻问题。
- 对软件开发成本和进度的估计常常很不准确
- 用户对已完成的软件系统不满意
- 软件产品质量靠不住
- 软件常常不可维护的
- 软件通常没有合适的文档资料
- 软件成本在计算机系统总成本中比例不断上升
- 软件开发速度跟不上计算机应用速度
软件工程三要素
过程、方法、工具
什么是软件工程
指导计算机软件开发和维护的一门工程学科
软件工程基本原理(7
- 用分阶段的生命周期计划严格管理
- 坚持进行阶段评审
- 实行严格的产品控制——基准(基线)配置管理(Baseline configuration management)
- 开发小组的成员应该少而精
- 采用现代程序设计技术
- 结果应能清楚地审查
- 承认不断改进软件工程实践的必要性
软件工程方法学(传统、面向对象
软件生命周期
软件维护阶段花费最多
过程模型
规定了为软件生存周期的各项活动规定的顺序
瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。
快速原型模型 特点:及早提供工作软件,根据用户意见改进
螺旋模型:每个阶段有风险分析
软件开发主要任务
需求分析阶段:在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,也是在整个软件开发过程中不断变化和深入的阶段,能够为整个软件开发项目的成功打下良好的基础。
软件设计阶段(概要设计和详细设计):主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件编码阶段:是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。
软件测试阶段:在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。
软件运行和维护阶段:是软件生命周期中持续时间最长的阶段,包括纠错性维护和改进性维护两个方面。
2. 可行性研究
2.1 可行性研究任务。
最小的代价在尽可能短时间确定问题是否能解决是否值得解决
(1) 技术可行性:使用现有的技术能实现这个系统吗?
主要考虑:开发风险;资源;相关技术的发展
(2)经济可行性:这个系统的经济效益能超过它的开发成本吗?
系统经济效益=新系统增加的收入+新系统节省的费用
考虑:成本——效益分析、长期的公司经营策略、对其他单位或产品的影响、开发所需的成本和资源、潜在的市场前景
(3)操作可行性:系统的操作方式在用户组织内行得通吗?
(4)法律可行性
2.2 系统逻辑模型
2.3 数据流图
怎么画数据流图
- 箭头,表示数据流;
- 〇:圆或椭圆,圆角矩形,表示加工;
- = :双杠,表示数据存储;单线、双线、带缺口矩形框都可以表示数据存储
- □:方框,表示数据的源点或终点。
画数据流图的步骤
(1)首先画系统的输入输出,即先画顶层数据流图。顶层流图只包含一个加工,用以表示被开发的系统,然后考虑该系统有哪些输入数据、输出数据流。
(2)画系统内部,即画下层数据流图。采用自顶向下,由外向内的原则。
2.4 数据字典DD(对数据流图进行说明)
成本效益分析
( B )修改一个已有的库存清单系统,使它能在每天送给采购员一份定货报表。修改已有的库存清单并且编写产生报表的程序,估计共需3000元;系统修改后,能及时定货将消除零件短缺影响生产的问题,估计因此每年可以节省2500元, 假设年利率为12%,软件的生存周期是2年,开发该软件的纯收入是多少?
A. 2232.14 B. 1225.12 C. 3000 D.2000
3. 需求分析
最后得到需求规格说明书
3.1 需求分析过程应该建立3种模型:
功能模型: 数据流图(DFD)+数据字典(DD)+IPO
数据模型: 实体联系图(ER图)
行为模型:状态转换图(STD) 状态图
- 数据流图(DFD),描绘当数据在软件系统中移动时被变换的逻辑过程,指明系统具有的变换数据的功能。
- 实体-联系图(E-R),描绘数据对象及数据对象之间的关系,是用于建立数据模型的图形。
- 状态转换图(简称为状态图.STD),描绘了系统的各种行为模式(称为“状态”)和在不同状态间转换的方式。
3.2 ER图(实体联系)
3.3 状态图
3.4 IPO图(input/ process/ output )
三个模型:
- 功能模型:数据流图DFD+数据字典DD(对数据流说明)+IPO
- 数据模型:实体联系图-e-r图
- 行为模型:状态装换图STD
4. 总体设计(概要设计
4.1 模块独立性(耦合、内聚
独立性由弱到强(耦合由高到低)排列为
(耦合是两个模块之间的关系)
- 内容耦合(Content Coupling): 一个模块可以修改另一个
- 公共耦合 (Common coupling):数据可以从公共区域存取
- 控制耦合(Control coupling):一个模块通过传递参数控制另一个模块的活动
- 数据耦合(Data coupling): 仅传递数据,一个模块的输出数据是另一个模块的输入数据(The most desirable)
内聚:散乱到有序的过程
(模块内部各元素紧密程度)
低内聚:偶然内聚 逻辑内聚 时间内聚
中内聚: 过程内聚 通信内聚
高内聚:顺序内聚 功能内聚
4.2软件结构图 H+IPO图
所谓HIPO,即对每个模块附一张IPO图。每个IPO图中应明确标出对应模块的编号。
将数据流映射成软件结构
- 变换型数据流 映射成
- 事务型数据流
4.3 系统结构图(Structured Diagram) SC图 ![image-20200608192358835](https://gitee.com/knight_3000/picture-warehouse/raw/master/20210108093656.png)
4.4 DFD转化成System Hierarchy(层次图)SC图
举例:
第二步:映射
4.5 事务分析
5. 详细设计
程序结构设计
5.1 盒图⭐
5.2 pad图(Problem Analysis Diagram)⭐
5.3 PDL (伪代码)、判定树、判定表
5.4 流图
从程序流程图演变来,没有判定分支条件
6. 实现
测试用例:输入+期望结果
目的:发现程序中的错误而执行程序的过程
步骤:
- 单元测试
- 集成测试
- 确认测试(验收测试)
- 系统测试
黑盒测试 :
确信对每个输入,观察到输出与期望的输入出是否匹配. —— 对功能测试
-
等价划分:
-
边界值分析:两边之和等于第三边
-
错误推测
白盒测试:
利用程序的结构进行测试. —— 结构测试
(1) 单元测试 —— 程序设计和代码错误( bugs)
(2)子系统测试—— 模块之间的连接 (集成测试
(3)系统测试 —— 需求和系统设计 (集成测试
(4)验收测试 —— 顾客(用户)参与 ,确认与需求规格说明书要求功能是否相等
(5)平行运行 —— 新系统、老系统同时运行并比较
逻辑覆盖、路径覆盖
7. 维护
四种维护
(1)更正性维护bai
众所周知,系统测试不可能发现系统中的所有错误,还有许多潜在的错误,只有在系dao统运行过程中具备一定的激发条件才可能出现,人们把诊断和改正这类错误的维护工作称为更正性维护。
(2)适应性维护
适应性维护是指信息系统的外部环境发生变化时需要进行的系统维护。计算机技术(包括硬件和软件)的发展速度非常快,而一般的系统使用寿命都超过最初开发这个系统时的系统环境的寿命。计算机硬件系统的不断更新,新的操作系统或操作系统新版本的出现,都要求对系统做出相应的改动。此外,数据环境的变化(如数据库管理系统的版本升级、数据存储介质的变动等)也要求系统进行适应性维护。适应性维护也要制定维护计划,有步骤、分阶段地组织实施。
(3)完善性维护
当信息系统投入使用并成功运行以后,由于企业业务需求变化和扩展,用户可能会提出修改某些功能、增加新的功能等要求,这种系统维护被称为完善性维护。其目的是为了改善和加强信息系统的功能,满足用户对系统日益增长的需求。
此外,还有一些其他的完善性维护工作,例如,系统经过一段时间的运行,发现系统某些地方运行效率太低而需要提高,或者某些功能界面的可操作性有待提高,或者需要增加一些新的安全措施等,这类维护也属于完善性维护。
(4)预防性维护
预防性维护是一种主动性的预防措施,对一些使用时间较长,目前尚能正常运行,但可能要发生变化的部分模块进行维护,以适应将来的修改或调整。与前三种维护类型相比,预防性维护工作相对较少。
8. 面向对象方法学
oom oom 四要素
- 对象(object)
- 类(class):data + methods
- 继承(inheritance)
- 方法与消息
面向对象开发方法一般使用哪3种模型?分别描述系统的那些方面?
- 功能模型
表示了变化的系统的功能性质,指明了系统一概做什么,因此更直接地反映了用户对目标系统的需求 - 对象模型
描述了现实世界中的类与对象以及他们之间的关系,表示了目标系统的静态数据结构。 - 动态模型
动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列