大学期末软件工程(第三版)复习

软件工程复习

1. 软件工程概述

软件:软件是程序,支持程序运行的数据以及程序有关的文档的完整的集合。(软件 = 程序 + 文档 + 数据)

a. 软件危机:指在软件的开发和维护过程中所存在的一系列严重问题,主要包括两个方面的内容:一是如何开发软件以满足对软件日益增长的需求;二是如何维护数量不断增长的已有软件

​ 原因:

​ 客观上:软件不同于硬件,它的生产过程和产品都“不可见”,所以在开发完成之前,对于软件开发的过程的进展情况较难判断,软件的质量也较难保证;

​ 主观上:计算机系统发展早期,软件开发"个体化"的特点,忽视软件需求分析的重要性,忽视软件的可理解性,文档不完备,不重视软件的可维护性,过分强调编程技巧等。

b. 软件工程

定义:指导软件开发和维护的工程性学科,采用工程化的概念,原理,技术和方法进行软件的开发和维护,把经过时间考验且证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,以较少的代价获得高质量的软件并维护它。

目标:运用先进的软件开发技术和管理方法来提高软件的质量和生产率,也就是要以较短的周期,较低的成本生产出高质量的软件产品,并最终实现软件的工业化生产。

三要素

​ 方法:为软件开发提供“如何做”的技术

​ 工具:如Rational Rose,为软件工程方法提供了自动的或半自动的软件支撑环境

​ 过程:回答如何做,将软件工程的方法和工具综合起来以达到合理,及时的进行计算机软件开发的目的

生存周期

定义:从设计软件开始到软件不能使用为止

三个阶段:软件计划,软件开发,软件运行和维护

软件计划 包括问题定义,可行性研究(解决是否能做,产生文档:可行性论证报告,项目计划),需求分析(解决做什么问题,包括功能需求,性能需求,环境约束,和用户界面,主要文档:需求规格说明书)3个阶段;

软件开发 包括概要设计(确定软件的体系结构),详细设计(设计每个模块的实现细节,主要文档:概要设计说明书和详细设计说明书),软件实现(编写源程序),综合测试(4种:单元测试,集成测试,确认测试,系统测试;主要文档:测试计划,测试报告);

软件维护 主要文档:维护申请单和软件修改报告
在这里插入图片描述

2. 软件过程模型

瀑布模型

​ 特点:前一阶段的结果是下一阶段的输入;

​ 推迟软件实现;

​ 文档驱动

​ 优点:系统性,可控性,克服了软件开发的随意性;以阶段评审和文档控制为手段,能及时发现错误

​ 缺点:缺乏灵活性,线性开发,开发人员常需等待,造成“阻塞状态”

​ 适合于需求明确的新系统,或对已有系统仅做适应性调整或增强性工作

增量模型:

​ 特点:先对系统最核心的需求进行分析,设计,实现和测试,再按照优先级对后续需求进行上述工作,并集成到系统中,逐步形成一个完整的系统。(字处理软件的开发);每个增量都提交一个可运行的产品,客户使用和评价产品,然后制定下一个增量计划;每次增量需求划分和增量实现需要不影响系统的体系结构

​ 优点:适合人手不足的情况:早期的增量可由少量人员实现,若核心产品的口碑不错,再加派人手来开发;客户的需求可以逐步提出来;可以在较短时间内提供可运行的产品,提高客户信心;

​ 缺点:增量粒度难以选择

原型开发:

​ 特点:包括主要功能和接口,不包括系统的细节;原型系统是临时系统,通常应该被丢弃;原型可作为一种技术,用于其他过程模型中

​ 优点:用户可以亲自感受到实际系统,直观;开发者使用成熟的技术可以快速的建造出一些东西

​ 缺点:原型是粗糙的,没考虑软件的总体质量和长期的可维护性

螺旋模型

​ 特点:结合原型模型的迭代特性和瀑布模型的系统性和可控性特点,可以快速开发系统的增量版本,是一种风险驱动模型

​ 优点:增加了风险分析和风险管理,把原型作为降低风险的机制,将维护也看成一种开发

​ 缺点:模型的成功依赖于风险评估技术的水平,每一轮螺旋都要重新计划并修改开销

​ 适用于:大型系统和软件

3.需求分析

作用:软件开发的基础和前提;目标软件系统验收标准;避免或剔除早期的错误

(1)软件需求:功能、性能、约束条件

(2)获取需求的方法:

​ 交流;

​ 访谈和会议:召开相关会议,走访相关人员;

​ 调查问卷:设计调查问卷,填写和回收问卷;

​ 现场观摩:了解业务的过程和步骤,掌握业务工作细节

​ 业务文档分析:收集重要的资料,阅读和分析与业务相关的文档和资料

​ 成立需求分析的联合小组

(3)需求可视化:结构化分析,面向对象分析

4.结构化分析(structured analysis)

在这里插入图片描述

1. 功能建模—>数据流图

题目1:招生系统
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

题目2:银行储蓄系统

在这里插入图片描述
步骤一:识别外部实体和输入输出数据流

在这里插入图片描述
步骤二:画出顶层数据流图(环境图)
在这里插入图片描述
步骤三:画出一层数据流图
在这里插入图片描述

步骤四:画出二层数据流图
在这里插入图片描述
在这里插入图片描述

2. 数据建模—>ER图(实体,关系,属性)

在这里插入图片描述

3. 行为建模—>状态图

在这里插入图片描述
在这里插入图片描述

加工规格说明:

决策表:
在这里插入图片描述

决策树:

在这里插入图片描述

5. 面向对象分析

在这里插入图片描述

1. UML建模

​ UML关系:依赖(一个事物发生变化会影响到另外一个事物),关联(两个或多个类的实例之间的链接关系),实现(接口和实现接口的类之间或者用例和实现他们的协作之间),泛化(一般类和特殊类之间的继承关系)
在这里插入图片描述

2. 用例图

参与者和用例通过<>关系进行通信;

<>、< >是包含和使用的意思;

<>关系是指一个用例的执行可能要由其他用例的功能来扩展;
在这里插入图片描述

3. 类图

在这里插入图片描述

4.顺序图

在这里插入图片描述

5.状态图

在这里插入图片描述

6. 软件体系结构

1. 模块独立性(耦合度、内聚性)

高内聚: 功能内聚(模块中各部分都是完成某一功能必不可少的组成部分) > 顺序内聚 > 通信内聚 > 过程内聚(一个模块内的处理要按照特定次序执行) >时间内聚(常见的如初始化模块和终止模块) > 逻辑内聚(单入口多功能,将几种相关功能组合起来,每次调用时,由传递过来的参数决定调用哪个功能) > 偶然内聚(模块内各部分之间没有关系,如在陈旭中要执行多次的代码被抽取出来为一个新的模块)

​ **低耦合:**非直接耦合(两个模块之间没有直接关系,他们之间的联系是通过主模块的控制和调用来实现) < 数据耦合(两个模块之间仅通过参数表传递简单数据) < 控制耦合 < 外部耦合(一组模块都访问同一全局简单变量) < 公共耦合(一组模块都访问同一个公共数据环境,如全局数据结构) < 内容耦合(一个模块直接访问另一个模块内部数据)

功能结构图(扇入扇出)

2. 结构图

在这里插入图片描述

题目:银行储蓄系统

第一步:精化数据流图

在这里插入图片描述

第二步: 确定系统具有事务特性还是变换特性

第三步:确认输入流和输出流边界
在这里插入图片描述

第四步:完成一级分解,得到结构图

在这里插入图片描述

第五步:完成二级分解

第六步:得到初始软件结构

在这里插入图片描述

第七步:精化

在这里插入图片描述

最终

在这里插入图片描述

3.用户界面应具有的特性

可使用性:使用简单,界面一致,拥有help帮助功能,快速响应和容错能力

灵活性:满足不同用户的要求

可靠性:系统的无故障的使用时间

4.结构化程序设计的主要原则

使用顺序,选择,循环3种结构;

控制结构应该单入单出;

限制使用GOTO语句;

采用自顶向下逐步细化的原则

7. C/S、B/S模式

1. 两层C/S服务体系结构

CS服务体系结构是基于资源不对等,且为实现共享而提出来的,由服务器、客户机和网络三部分组成,客户机需要知道服务器的名字和可以提供的服务,服务器不需要知道客户机的身份。

瘦客户机模型:数据管理和应用逻辑都在服务器上执行,客户机只负责表示部分。缺点是:将繁重的处理负荷都放在服务器和网络上,服务器负责所有计算,增加了客户机和服务器之间的网络流量;还有就是个人计算机所具有的处理能力没有用上。

胖客户机模型: 服务器只负责管理数据,客户机上的软件实现应用逻辑和与用户的交互;好处是:可以利用客户机的处理能力;缺点是:(随着企业规模扩大,软件的复杂程度提高)开发成本高;软件移植困难;软件维护和升级困难。

2.三层C/S服务体系结构

在原来二层基础上增加了应用服务器。可以将整个应用逻辑驻留在应用服务器上,只有表示层存在客户机上。

处理流程如下图所示:

在这里插入图片描述

3. B/S模式

B/S模式是C/S模式的一种实现,原理如下图:

在这里插入图片描述

优点:

​ 系统安装、维护、升级都在服务器端解决;

​ 提供了异种机、异种网、异种应用服务器的联机、联网和统一服务的最现实的开放性基础;

缺点:

​ 缺乏对动态页面的支持,没有集成有效的数据库处理功能

​ 在数据查询速度上要远低于CS模式

​ 数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务的应用。

4.设计模式(抽象工厂、单例模式、责任链、适配器)

8. 面向对象设计

实体类、接口设计

9. 编码实现

1. 程序设计语言的选择

应用领域:目标系统的应用领域不同,需要采取的系统开发泛型也不同,所以要考虑支持相应泛型的编程语言;

系统用户要求;

编程语言自身的功能;

编码和维护成本以及开发环境;

编程人员的技能;

软件可移植性。

2.注释

10. 测试

1.白盒(静态和动态)

常见静态测试方法

​ 桌面检查(通过对源程序代码进行分析、检验,来发现程序中的错误,关注变量的值和程序的逻辑,不如下面两种方式)

​ 代码审查(主持人、作者、评论员、记录员)

​ 走查

常见动态测试方法

a. 逻辑覆盖

​ 语句覆盖:使程序中的每个语句至少执行一次,最弱

​ 判定覆盖:使程序中的每个判定取真分支和取假分支都执行一次

​ 条件覆盖:使判定中的每个条件至少执行一次,判定的升级

​ 判断/条件覆盖:满足上面两个

​ 条件组合覆盖:满足上面三个

​ 路径覆盖:覆盖被测试对象中的所有可能路径

b. 基本路径

在这里插入图片描述

第一步:画出程序流程图

在这里插入图片描述

第二步:画出控制流图
在这里插入图片描述

第三步:计算环路复杂度

V(G) = E - N + 2

或者 V(G) = P + 1(用这个公式,P为判定节点的个数)

在这里插入图片描述

第四步:导出测试用例
在这里插入图片描述

2.黑盒(不考虑程序内部的逻辑结构,只检查功能是否符合要求)
2.1 等价类
  1. 如果输入条件规定了值的范围,则可以确定一个有效等价类(输入值在此范围内)和两个无效等价类(输入值小于最小值和大于最大值);

  2. 如果输入条件规定了值的个数,则可以确定一个有效等价类(值的个数等于规定的个数),两个无效等价类(值的个数小于或大于规定的个数);

  3. 如果输入条件规定了输入值的集合,那么可以确定多个有效等价类(每个集合中允许的值),一个无效等价类(不在集合中的值);

  4. 如果输入条件规定了输入值必须遵守的规则,那么可以确定一个有效(遵守该规则),多个无效(不遵守规则);

  5. 如果输入条件是一个布尔值,可以确定一个有效(true),一个无效(false);

    针对一个字段时

在这里插入图片描述

针对一个页面时

题目1
在这里插入图片描述

2.划分等价类
在这里插入图片描述
3.设计用例

设计用例
在这里插入图片描述
题目2:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 边界值

概念:对输入或输出的边界值进行测试的一种黑盒测试方法,通常边界值分析法是作为等价类划分法的一种补充,这种情况下,测试用例来自于等价类的边界。

原则:若条件为[1, 50]且要正整数,则边界取值为:1,50,0,51

​ 若条件为(1, 50)且要正整数,则边界取值为:2,49,1,50

11.维护

4种类型

完善性维护:最重要的维护;满足用户在使用过程中提出增加新的功能或修改已有功能,以满足用户日益增长的需要而进行的工作;

适应性维护:为了让软件适应新的软硬件环境而进行的维护工作;

纠错性维护:纠正开发期间未发现的遗留错误,即在程序使用期间发现的程序错误进行诊断和改正的过程;

预防性维护:为了改善未来的可维护性或可靠性而修改软件的工作。

12.成本计算

基于代码行

功能点

13. 计划进度管理

1. 网络图

在这里插入图片描述

网络图如下:

在这里插入图片描述

关键路线为:A -> E -> I

  • 15
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值