软件工程复习
1. 软件工程概述
软件:软件是程序,支持程序运行的数据以及程序有关的文档的完整的集合。(软件 = 程序 + 文档 + 数据)
a. 软件危机:指在软件的开发和维护过程中所存在的一系列严重问题,主要包括两个方面的内容:一是如何开发软件以满足对软件日益增长的需求;二是如何维护数量不断增长的已有软件
? 原因:
? 客观上:软件不同于硬件,它的生产过程和产品都“不可见”,所以在开发完成之前,对于软件开发的过程的进展情况较难判断,软件的质量也较难保证;
? 主观上:计算机系统发展早期,软件开发”个体化”的特点,忽视软件需求分析的重要性,忽视软件的可理解性,文档不完备,不重视软件的可维护性,过分强调编程技巧等。
b. 软件工程
? 定义:指导软件开发和维护的工程性学科,采用工程化的概念,原理,技术和方法进行软件的开发和维护,把经过时间考验且证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,以较少的代价获得高质量的软件并维护它。
? 目标:运用先进的软件开发技术和管理方法来提高软件的质量和生产率,也就是要以较短的周期,较低的成本生产出高质量的软件产品,并最终实现软件的工业化生产。
? 三要素:
? 方法:为软件开发提供“如何做”的技术
? 工具:如Rational Rose,为软件工程方法提供了自动的或半自动的软件支撑环境
? 过程:回答如何做,将软件工程的方法和工具综合起来以达到合理,及时的进行计算机软件开发的目的
? 生存周期:
? 定义:从设计软件开始到软件不能使用为止
? 三个阶段:软件计划,软件开发,软件运行和维护
软件计划 包括问题定义,可行性研究(解决是否能做,产生文档:可行性论证 告,项目计划),需求分析(解决做什么问题,包括功能需求,性能需求,环境约束,和用户界面,主要文档:需求规格说明书)3个阶段;
软件开发 包括概要设计(确定软件的体系结构),详细设计(设计每个模块的实现细节,主要文档:概要设计说明书和详细设计说明书),软件实现(编写源程序),综合测试(4种:单元测试,集成测试,确认测试,系统测试;主要文档:测试计划,测试 告);
软件维护 主要文档:维护申请单和软件修改 告
1. 功能建模—>数据流图
题目1:招生系统
3. 行为建模—>状态图
加工规格说明:
? 决策表:
5. 面向对象分析
2. 用例图
参与者和用例通过关系进行通信;
、 >是包含和使用的意思;
关系是指一个用例的执行可能要由其他用例的功能来扩展;
4.顺序图
6. 软件体系结构
1. 模块独立性(耦合度、内聚性)
? 高内聚: 功能内聚(模块中各部分都是完成某一功能必不可少的组成部分) > 顺序内聚 > 通信内聚 > 过程内聚(一个模块内的处理要按照特定次序执行) >时间内聚(常见的如初始化模块和终止模块) > 逻辑内聚(单入口多功能,将几种相关功能组合起来,每次调用时,由传递过来的参数决定调用哪个功能) > 偶然内聚(模块内各部分之间没有关系,如在陈旭中要执行多次的代码被抽取出来为一个新的模块)
? **低耦合:**非直接耦合(两个模块之间没有直接关系,他们之间的联系是通过主模块的控制和调用来实现)
功能结构图(扇入扇出)
2. 结构图
第二步: 确定系统具有事务特性还是变换特性
第三步:确认输入流和输出流边界
第五步:完成二级分解
第七步:精化
3.用户界面应具有的特性
可使用性:使用简单,界面一致,拥有help帮助功能,快速响应和容错能力
灵活性:满足不同用户的要求
可靠性:系统的无故障的使用时间
4.结构化程序设计的主要原则
使用顺序,选择,循环3种结构;
控制结构应该单入单出;
限制使用GOTO语句;
采用自顶向下逐步细化的原则
7. C/S、B/S模式
1. 两层C/S服务体系结构
CS服务体系结构是基于资源不对等,且为实现共享而提出来的,由服务器、客户机和 络三部分组成,客户机需要知道服务器的名字和可以提供的服务,服务器不需要知道客户机的身份。
瘦客户机模型:数据管理和应用逻辑都在服务器上执行,客户机只负责表示部分。缺点是:将繁重的处理负荷都放在服务器和 络上,服务器负责所有计算,增加了客户机和服务器之间的 络流量;还有就是个人计算机所具有的处理能力没有用上。
胖客户机模型: 服务器只负责管理数据,客户机上的软件实现应用逻辑和与用户的交互;好处是:可以利用客户机的处理能力;缺点是:(随着企业规模扩大,软件的复杂程度提高)开发成本高;软件移植困难;软件维护和升级困难。
2.三层C/S服务体系结构
在原来二层基础上增加了应用服务器。可以将整个应用逻辑驻留在应用服务器上,只有表示层存在客户机上。
处理流程如下图所示:
优点:
? 系统安装、维护、升级都在服务器端解决;
? 提供了异种机、异种 、异种应用服务器的联机、联 和统一服务的最现实的开放性基础;
缺点:
? 缺乏对动态页面的支持,没有集成有效的数据库处理功能
? 在数据查询速度上要远低于CS模式
? 数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务的应用。
4.设计模式(抽象工厂、单例模式、责任链、适配器)
8. 面向对象设计
实体类、接口设计
9. 编码实现
1. 程序设计语言的选择
应用领域:目标系统的应用领域不同,需要采取的系统开发泛型也不同,所以要考虑支持相应泛型的编程语言;
系统用户要求;
编程语言自身的功能;
编码和维护成本以及开发环境;
编程人员的技能;
软件可移植性。
2.注释
10. 测试
1.白盒(静态和动态)
常见静态测试方法:
? 桌面检查(通过对源程序代码进行分析、检验,来发现程序中的错误,关注变量的值和程序的逻辑,不如下面两种方式)
? 走查
常见动态测试方法 :
a. 逻辑覆盖
? 语句覆盖:使程序中的每个语句至少执行一次,最弱
? 判定覆盖:使程序中的每个判定取真分支和取假分支都执行一次
? 条件覆盖:使判定中的每个条件至少执行一次,判定的升级
? 判断/条件覆盖:满足上面两个
? 条件组合覆盖:满足上面三个
? 路径覆盖:覆盖被测试对象中的所有可能路径
b. 基本路径
第二步:画出控制流图
第四步:导出测试用例
针对一个页面时
题目1
设计用例
2.2 边界值
概念:对输入或输出的边界值进行测试的一种黑盒测试方法,通常边界值分析法是作为等价类划分法的一种补充,这种情况下,测试用例来自于等价类的边界。
原则:若条件为[1, 50]且要正整数,则边界取值为:1,50,0,51
? 若条件为(1, 50)且要正整数,则边界取值为:2,49,1,50
11.维护
4种类型
完善性维护:最重要的维护;满足用户在使用过程中提出增加新的功能或修改已有功能,以满足用户日益增长的需要而进行的工作;
适应性维护:为了让软件适应新的软硬件环境而进行的维护工作;
纠错性维护:纠正开发期间未发现的遗留错误,即在程序使用期间发现的程序错误进行诊断和改正的过程;
预防性维护:为了改善未来的可维护性或可靠性而修改软件的工作。
12.成本计算
基于代码行
功能点
13. 计划进度管理
1. 络图
关键路线为:A -> E -> I
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!