目录
- 第十章、软件工程
- 1、瀑布模型(SDLC)
- 2、快速原型模型
- 3、增量模型
- 4、螺旋模型
- 5、Ⅴ模型
- 6、喷泉模型
- 7、构建组装模型(CBSD)
- 8、统一过程(RUP)
- 9、敏捷开发方法
- 10、信息系统开发方法
- 11、需求开发
- 12、结构化设计
- 13、软件测试
- 13.1、黑盒测试
- 13.2、白盒测试
- 13.3、McCabe复杂度
- 14、系统运行与维护
- 15、软件过程改进-CMMI
- 16、项目管理
第十章、软件工程
1、瀑布模型(SDLC)
瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品
瀑布模型适用于需求相对稳定、软件规模较大、项目管理较为规范的软件开发项目,例如传统的企业级软件开发和信息系统开发等。
2、快速原型模型
主要用于挖掘需求,或是进行某种技术或开发方法的可行性研究,是开发人员为了快速而准确获得用户需求而经常采用的方法。
适用场合:
- 预先不能确切定义需求的软件系统,或需求多变的系统
- 开发人员对设计方案没信心或对将要采用的技术手段不熟悉或把握不大
- 快速原型模型可作为单独的过程模型使用,也常被作为一种方法或实现技术应用于其他的过程模型
3、增量模型
把软件产品作为一系列增量构件来设计、编码、集成和测试,在项目软件开发过程中,以一系列的增量方式来逐步开发系统。
增量开发:按一定的时间间隔开发部分软件
增量提交:先提交部分软件给用户试用,听取用户意见,在提交另一部分软件让用户试用,反复多次,直到全部提交
适用场合
- 软件产品可以分批次地进行交付。
- 待开发的软件系统能够被模块化。
- 软件开发人员对应用领域不熟悉﹑难以一次性地进行系统开发时。
- 项目管理人员把握全局的水平较高。
- 对软件需求把握不准确、设计方案有一定风险的软件项目。
4、螺旋模型
5、Ⅴ模型
V模型(V-Model)是一种软件开发过程模型,它强调了测试和验证在软件开发过程中的重要性。与瀑布模型类似,V模型是一种线性顺序模型,但它强调了软件测试在整个开发周期中的重要性
V模型适用于要求高质量、低故障率的软件开发项目,特别是与安全和风险相关的项目,例如航空、军事等领域。
6、喷泉模型
喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。
7、构建组装模型(CBSD)
对象技术为软件工程的基于构件的过程模型提供了技术框架。面向对象范型强调了类的创建,类封装了数据和用于操纵该数据的算法。如果经过合适的设计和实现,面向对象的类可以在不同的应用及基于计算机的系统结构中复用
构件组装模型导致软件复用,而可复用性给软件工程师提供了大量的可见的益处
8、统一过程(RUP)
什么是 Rational 统一过程( Rational Unified Process)?
Rational Unified Process 是软件工程的过程。它提供了在开发组织中分派任务和责任的纪律化方法。它的目标是在可预见的日程和预算前提下,确保满足最终用户需求的高质量产品。
统一过程模型是一种“用例驱动,以体系结构为核,迭代及增量”的软件过程框架,由UML方法和工具支持
9、敏捷开发方法
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态
10、信息系统开发方法
结构化方法
- 用户至上
- 严格区分工作阶段,每阶段有任务与成果
- 强调系统开发过程的整体性和全局性
- 系统开发过程工程化,文档资料标准化
- 自顶向下,逐步分解(求精)
原型法
- 适用于需求不明确的开发
- 包括抛弃式原型和演化式原型
面向对象方法
- 更好的复用性
- 关键在于建立一个全面、合理、统一的模型
- 分析、设计、实现三个阶段,界限不明确
面向服务方法
- SO方法有三个主要的抽象级别:操作、服务、业务流程
- SOAD分为三个层次:基础设计层(底层服务构件)、应用结构层(服务之间的接口和服务级协定)和业务组织层(业务流程建模和服务流程编排)
- 服务建模:分为服务发现、服务规约和服务实现三个阶段
11、需求开发
12、结构化设计
基本原则:
- 自顶向下、逐步求精
- 信息隐蔽
- 模块独立(高内聚、低耦合、复杂度)
- 保持模块的大小适中
- 尽可能减少调用的深度
- 多扇入,少扇出
- 单入口,单出口
- 模块的作用域应该在模块之内
- 功能应该是可预测的
内聚
耦合
13、软件测试
- 尽早、不断的进行测试
- 程序员避免测试自己设计的程序
- 既要选择有效、合理的数据,也要选择无效、不合理的数据
- 修改后应进行回归测试
- 尚未发现的错误数量与该程序已发现错误数成正比
动态测试
- 黑盒测试法
- 白盒测试法
- 灰盒测试法
静态测试
- 桌前检查
- 代码走查
- 代码审查
13.1、黑盒测试
黑盒测试,也称为功能测试,是基于软件系统的外部功能需求规格说明书,对系统进行测试的一种方法,测试人员不了解系统的内部实现细节,仅仅是按照系统的功能和接口规格说明书来进行测试,以验证系统的功能是否满足需求
- 等价类划分
将输入数据划分成若干个等价类,确保每个等价类内的数据具有相同的功能和处理方式,以便用最少的测试用例覆盖所有的等价类。 - 边界值分析
测试边界条件下的行为,比如输入最大值、最小值、空值、超过允许的长度等情况,检查程序是否能够正确地处理这些边界条件 - 错误推测
在开发软件测试用例时,通过观察程序的代码和逻辑,预测程序可能存在的错误,然后设计测试用例来验证这些错误是否存在 - 因果图
因果图也称为因果关系图,它是用来分析系统中因果关系的图形工具。测试人员可以通过绘制因果图来理解系统的逻辑关系,从而发现潜在的错误和问题,提高测试的效率和质量
13.2、白盒测试
白盒测试,也称为结构测试或透明盒测试,是基于软件系统的内部实现细节,对系统进行测试的一种方法,测试人员了解系统的内部结构和实现方式,通过检查程序代码、路径、分支、循环等细节,以验证系统是否按照设计要求正常工作
- 基本路径测试
- 循环覆盖测试
- 逻辑覆盖测试
语句覆盖
判定覆盖
条件覆盖
条件判定覆盖
修正的条件判断覆盖
条件组合覆盖
点覆盖
边覆盖
路径覆盖
13.3、McCabe复杂度
McCabe复杂度是通过计算程序的控制流图中节点数目和边的数目来确定的
计算有向图G的环路复杂度公式为:V(G)=m-n+2。说明:
其中V(G)是有向图G中的环路个数,m是G中的有向弧数,n是G中的节点数。
14、系统运行与维护
软件维护是生命周期的一个完整部分。可以将软件维护定义为需要提供软件支持的全部活动,这些活动包括在交付前完成的活动,以及交付后完成的活动。交付前完成的活动包括交付后运行的计划和维护计划等;交付后的活动包括软件修改、培训、帮助资料等
可维护性
- 易分析性
- 易给变性
- 稳定性
- 易测试性
维护类型
- 改正性维护(25%)
改正在系统开发阶段已经发生的而系统测试阶段尚未发生的错误 - 适应性维护(20%)
适应软件环境发生的变化而进行的维护 - 完善性维护(50%)
扩充软件的功能和用户提出的新需求而进行的维护 - 预防性维护(5%)
为改进软件效率、可靠性、可维护性而进行的维护
15、软件过程改进-CMMI
CMMI(Capability Maturity Model Integration)是一种软件过程改进框架,旨在帮助组织提高其软件开发和维护过程的质量和效率
16、项目管理
时间管理
进度安排的常用图形描述方法有Gantt图和PERT图。Gantt图不能清晰地描述____;PERT图可以给出哪些任务完成后才能开始另一些任务。下图所示的PERT图中,事件6的最晚开始时间是____
(1)A.每个任务从何时开始B.每个任务到何时结束
C.每个任务的进展情况D.各任务之间的依赖关系
(2)A.0 B.3 C.10 D.11
风险是指"损失或伤害的可能性”。
项目风险
技术风险
商业风险
关心未来
关心变化
关心选择
风险曝光度(Risk Exposure):计算方法是风险出现的概率乘以风险可能造成的损失。假设正在开发的软件项目可能存在一个未被发现的错误,而这个错误出现的概率是0.5%,给公司造成的损失将是1000000元,那么这个错误的风险曝光度就应为1000000×0.5%=5000元。