软件 工程

第十章、软件工程

1、瀑布模型(SDLC)

瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品

瀑布模型适用于需求相对稳定软件规模较大项目管理较为规范的软件开发项目,例如传统的企业级软件开发和信息系统开发等。
请添加图片描述

2、快速原型模型

在这里插入图片描述
主要用于挖掘需求,或是进行某种技术或开发方法的可行性研究,是开发人员为了快速而准确获得用户需求而经常采用的方法。

适用场合

  1. 预先不能确切定义需求的软件系统,或需求多变的系统
  2. 开发人员对设计方案没信心或对将要采用的技术手段不熟悉或把握不大
  3. 快速原型模型可作为单独的过程模型使用,也常被作为一种方法或实现技术应用于其他的过程模型

3、增量模型

把软件产品作为一系列增量构件来设计、编码、集成和测试,在项目软件开发过程中,以一系列的增量方式来逐步开发系统。
增量开发:按一定的时间间隔开发部分软件
增量提交:先提交部分软件给用户试用,听取用户意见,在提交另一部分软件让用户试用,反复多次,直到全部提交

适用场合

  1. 软件产品可以分批次地进行交付。
  2. 待开发的软件系统能够被模块化。
  3. 软件开发人员对应用领域不熟悉﹑难以一次性地进行系统开发时。
  4. 项目管理人员把握全局的水平较高。
  5. 对软件需求把握不准确、设计方案有一定风险的软件项目。

4、螺旋模型

在这里插入图片描述

在这里插入图片描述

5、Ⅴ模型

请添加图片描述
V模型(V-Model)是一种软件开发过程模型,它强调了测试和验证在软件开发过程中的重要性。与瀑布模型类似,V模型是一种线性顺序模型,但它强调了软件测试在整个开发周期中的重要性

V模型适用于要求高质量、低故障率的软件开发项目,特别是与安全和风险相关的项目,例如航空、军事等领域。

6、喷泉模型

请添加图片描述
喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。

在这里插入图片描述

7、构建组装模型(CBSD)

对象技术为软件工程的基于构件的过程模型提供了技术框架。面向对象范型强调了类的创建,类封装了数据和用于操纵该数据的算法。如果经过合适的设计和实现,面向对象的类可以在不同的应用及基于计算机的系统结构中复用

构件组装模型导致软件复用,而可复用性给软件工程师提供了大量的可见的益处
在这里插入图片描述

8、统一过程(RUP)

什么是 Rational 统一过程( Rational Unified Process)?
Rational Unified Process 是软件工程的过程。它提供了在开发组织中分派任务和责任的纪律化方法。它的目标是在可预见的日程和预算前提下,确保满足最终用户需求的高质量产品。

统一过程模型是一种“用例驱动,以体系结构为核,迭代及增量”的软件过程框架,由UML方法和工具支持

在这里插入图片描述

9、敏捷开发方法

敏捷开发以用户的需求进化为核心采用迭代循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态
在这里插入图片描述
(1)极限编程XP是一种轻量级的开发方法,它提出了四大价值观:沟通、简单、反馈、勇气。五大原则:快速反馈、简单性假设、逐步修改、提倡更改、优质工作。十二个最佳实践:计划游戏、隐喻、小型发布、简单设计、测试先行、重构、结对编程、集体代码所有制、持续集成、每周工作40小时、现场客户和编码标准。
(2)水晶法强调经常交付,认为每一种不同的项目都需要一套不同的策略、约定和方法论
(3)并列争球法核心是迭代、增量交付,按照30天进行迭代开发交付可实际运行的软件
(4)自适应软件开发(ASD方法)的核心是三个非线性的重迭的开发阶段:猜测、合作、学习。

10、信息系统开发方法

结构化方法

  1. 用户至上
  2. 严格区分工作阶段,每阶段有任务与成果
  3. 强调系统开发过程的整体性和全局性
  4. 系统开发过程工程化,文档资料标准化
  5. 自顶向下,逐步分解(求精)

原型法

  1. 适用于需求不明确的开发
  2. 包括抛弃式原型和演化式原型

面向对象方法

  1. 更好的复用性
  2. 关键在于建立一个全面、合理、统一的模型
  3. 分析、设计、实现三个阶段,界限不明确

面向服务方法

  1. SO方法有三个主要的抽象级别:操作、服务、业务流程
  2. SOAD分为三个层次:基础设计层(底层服务构件)、应用结构层(服务之间的接口和服务级协定)和业务组织层(业务流程建模和服务流程编排)
  3. 服务建模:分为服务发现、服务规约和服务实现三个阶段

11、需求开发

在这里插入图片描述

12、结构化设计

基本原则:

  1. 自顶向下、逐步求精
  2. 信息隐蔽
  3. 模块独立(高内聚、低耦合、复杂度)
  • 保持模块的大小适中
  • 尽可能减少调用的深度
  • 多扇入,少扇出
  • 单入口,单出口
  • 模块的作用域应该在模块之内
  • 功能应该是可预测的
    请添加图片描述

内聚
在这里插入图片描述

耦合
在这里插入图片描述

13、软件测试

  • 尽早、不断的进行测试
  • 程序员避免测试自己设计的程序
  • 既要选择有效、合理的数据,也要选择无效、不合理的数据
  • 修改后应进行回归测试
  • 尚未发现的错误数量与该程序已发现错误数成正比

动态测试

  1. 黑盒测试法
  2. 白盒测试法
  3. 灰盒测试法

静态测试

  1. 桌前检查
  2. 代码走查
  3. 代码审查

在这里插入图片描述

13.1、黑盒测试

黑盒测试,也称为功能测试,是基于软件系统的外部功能需求规格说明书,对系统进行测试的一种方法,测试人员不了解系统的内部实现细节,仅仅是按照系统的功能和接口规格说明书来进行测试,以验证系统的功能是否满足需求

  1. 等价类划分
    将输入数据划分成若干个等价类,确保每个等价类内的数据具有相同的功能和处理方式,以便用最少的测试用例覆盖所有的等价类。
  2. 边界值分析
    测试边界条件下的行为,比如输入最大值、最小值、空值、超过允许的长度等情况,检查程序是否能够正确地处理这些边界条件
  3. 错误推测
    在开发软件测试用例时,通过观察程序的代码和逻辑,预测程序可能存在的错误,然后设计测试用例来验证这些错误是否存在
  4. 因果图
    因果图也称为因果关系图,它是用来分析系统中因果关系的图形工具。测试人员可以通过绘制因果图来理解系统的逻辑关系,从而发现潜在的错误和问题,提高测试的效率和质量

13.2、白盒测试

白盒测试,也称为结构测试或透明盒测试,是基于软件系统的内部实现细节,对系统进行测试的一种方法,测试人员了解系统的内部结构和实现方式,通过检查程序代码、路径、分支、循环等细节,以验证系统是否按照设计要求正常工作

  1. 基本路径测试
  2. 循环覆盖测试
  3. 逻辑覆盖测试
    语句覆盖
    判定覆盖
    条件覆盖
    条件判定覆盖
    修正的条件判断覆盖
    条件组合覆盖
    点覆盖
    边覆盖
    路径覆盖

13.3、McCabe复杂度

McCabe复杂度是通过计算程序的控制流图中节点数目和边的数目来确定的
请添加图片描述

计算有向图G的环路复杂度公式为:V(G)=m-n+2。说明:
其中V(G)是有向图G中的环路个数,m是G中的有向弧数n是G中的节点数

14、系统运行与维护

软件维护是生命周期的一个完整部分。可以将软件维护定义为需要提供软件支持的全部活动,这些活动包括在交付前完成的活动,以及交付后完成的活动。交付前完成的活动包括交付后运行的计划和维护计划等;交付后的活动包括软件修改、培训、帮助资料

可维护性

  1. 易分析性
  2. 易给变性
  3. 稳定性
  4. 易测试性

维护类型

  1. 改正性维护(25%)
    改正在系统开发阶段已经发生的而系统测试阶段尚未发生的错误
  2. 适应性维护(20%)
    适应软件环境发生的变化而进行的维护
  3. 完善性维护(50%)
    扩充软件的功能和用户提出的新需求而进行的维护
  4. 预防性维护(5%)
    为改进软件效率、可靠性、可维护性而进行的维护

15、能力成熟度模型-CMM

CMM(Capability Maturity Model)是一种软件过程改进框架,旨在帮助组织提高其软件开发和维护过程的质量和效率

在这里插入图片描述
在这里插入图片描述
第一级:初始级(Initial);无序,随意
初始级的软件过程是无序的,项目的执行是随意甚至是混乱的。工作方式处于救火状态,不断的应对突如其来的危机;
第二级:可重复级(Repeatable)基本的项目管理管理
建立了基本的项目管理过程来跟踪费用,进度和功能特性,制定了必要的过程纪律,能重复早先类似的应用项目取得的成功。
第三级:已定义级(Defined)标准化,文档化
已经将软件管理核工程两方面的过程文档化,标准化,并综合成组织的标准软件过程,所有项目均使用该标准开发维护软件。
第四级:已管理级(Managed)可预测
收集对软件过程和产品质量的详细度量,对软禁啊过程和产品都有定量的理解和控制。
第五级:优化级(Optimizing)优化
过程的量化反馈和先进的新思想,新技术促使过程不断改进

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元。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
序   前言   第1篇面向过程的软件工程   第1章软件危机、 软件工程   11软件工程的发展史   111程序设计时代   112程序系统时代   113软件工程时代   12软件危机主要表现形式   13产生软件危机的原因及解决途径   131产生软件危机的原因   132解决软件危机的途径   14软件软件工程   141软件   142软件工程   15软件质量   16软件的生存周期及开发模型   161软件生存周期   162软件开发模型   17习题   第2章可行性研究   21可行性研究的目的与任务   22可行性研究的步骤   23系统流程图   231系统流程图的符号   232系统流程图示例   24成本-效益分析   241货币的时间价值   242投资回收期   243纯收入   25可行性研究报告的主要内容   26习题   第3章软件需求分析   31需求分析的任务和步骤   311需求分析的任务   312需求分析的步骤   32需求获取的常用方法   321常规的需求获取方法   322快速建立软件原型来获取需求   33需求分析的方法   331功能分解方法   332结构化分析方法   333信息建模方法   334面向对象的分析   34结构化分析方法   341自顶向下逐层分解的分析策略   342结构化分析描述工具   343数据流图   344数据字典   345加工逻辑的描述   35需求分析图形工具   351层次方框图   352Warnier图   353IPO图   36SA 方法的应用   37习题   第4章软件总体设计   41软件总体设计的目标和任务   42软件设计的概念和原理   421模块和模块化   422抽象   423信息隐蔽和局部化   424模块独立性及其度量   43软件结构设计准则   44软件结构设计的图形工具   441软件结构图   442层次图   443HIPO图   45结构化设计方法   451数据流图的类型   452结构化设计方法的步骤   453变换型分析设计   454事务型分析设计   46习题   第5章软件详细设计   51详细设计的目的与任务   52结构化程序设计   53详细设计工具   531程序流程图   532NS图   533PAD图   534过程设计语言   54习题   第6章软件编码   61程序设计语言的分类   611基础语言   612结构化语言   613面向对象的语言   62程序设计语言的选择   63程序设计风格   631程序内部文档   632数据说明   633语句构造   634输入/输出   635效率   64习题   第7章软件测试   71软件测试的目标   72软件测试的原则   73软件测试方法   731静态测试与动态测试   732黑盒测试法与白盒测试法   74软件测试用例的设计   741白盒技术   742黑盒技术   75软件测试过程   751单元测试   752集成测试   753确认测试   754系统测试   76调试   761调试的目的   762调试技术   77习题   第8章软件维护   81软件维护的分类   82软件维护的特点   821结构化维护与非结构化维护   822维护的代价   823软件维护中存在的问题   83软件可维护性   831软件可维护性的定义   832软件可维护性的度量   833提高软件可维护性的方法   84维护的副作用   85软件工程   851软件工程与逆向工程的概念   852实施软件工程的原因   853软件工程技术   86习题   第2篇UML与面向对象的软件工程   第9章UML简介   91UML概述   911UML的组成   912UML的特点和用途   913UML的模型视图简介   92UML软件开发工具简介   921Rational Rose   922Visio简介   93习题   第10章面向对象的概念   101面向对象的方法学   1011面向对象建模   1012面向对象的方法与传统软件方法的比较   102对象与类及其UML表示   1021对象   1022类与实例   1023对象属性与操作   1024对象类的关联   103聚集、 组合、 继承和多态   1031聚集与组合   1032抽象与继承   1033多态   104习题   第11章对象设计模式   111对象设计模式概念   1111历史背景   1112对象设计模式   1113设计模式的分类   112几种典型的对象设计模式及应用   1121行为型模式中的职责键模式及应用   1122结构型模式中的外观模式及应用   1123创建型模式中的抽象工厂模式及应用   113对象类的高级概念   1131抽象类、 参数对象类、型与实现对象类   1132接口   1133版型   114组件、 包和结点   1141组件   1142包和包图   1143结点   115习题   第12章面向对象的软件开发过程   121RUP概述   1211RUP的历史   1212RUP的特色   122RUP软件开发生命周期和建模   1221RUP软件开发的生命周期   1222RUP的动态结构   1223RUP的静态结构   1224RUP的建模   123面向对象软件开发过程的案例分析   1231系统需求   1232系统的静态结构模型   1233顺序图和协作图   1234状态图和活动图   1235组件图和部署图   124习题   第13章软件开发工具Rose   131Rose的用例图与类图   1311用例图   1312类图   132Rose的交互图与状态机图   1321交互图   1322状态机图   133包、 组件图与部署图   1331包   1332组件图   1333部署图   134Rose的代码生成和逆向工程   1341代码生成   1342逆向工程   135Rose应用举例   136习题   第14章Rose及其应用   141Rose的主要功能   142Rose的使用   1421Rose主菜单窗口   1422模型与工作方式的组织   143教学管理系统的分析与设计   1431系统需求分析   1432系统问题领域分析   1433静态结构模型的建立   1434动态行为模型的建立   1435物理模型的建立   144UML类图与VB代码的转换   1441VB代码生成属性   1442Rose模型—VB代码的生成   1443VB代码的逆向工程   145UML类图与Java代码的转换   1451UML类图—Java代码的生成   1452Java代码的逆向工程   146习题   第15章面向对象的软件体系结构   151软件体系结构概述   152流程处理与客户机/服务器体系结构   1521流程处理   1522客户机/服务器体系结构   153三层和多层体系结构   1531三层体系结构   1532浏览器/服务器体系结构风格   1533多层体系结构   1534团聚与串行   154公共对象请求代理体系结构   155基于层次消息总线的体系结构风格   156异构结构风格   157习题   第16章软件工程新技术   161软件复用技术   1611软件复用概念及分类   1612软件复用的关键技术和复用粒度   162中间件技术   1621中间件概念及特点   1622中间件的分类   163组件技术   1631组件与组件化   1632组件模型及描述语言   1633组件的检索与组装   164计算机辅助软件工程技术   1641CASE的基本概念   1642CASE工具与集成CASE环境   165软件产品线技术   1651软件产品线基本概念   1652软件产品线方法   1653北大青鸟工程   166软件过程与标准化   1661软件过程及其改进   1662ISO 9000标准   1663软件能力成熟度模型   167习题   第3篇软件工程实验   第17章软件工程实验大纲   171面向过程的软件工程实验   1711实验1图书馆图书管理系统的可行性分析   1712实验2图书馆图书管理系统的项目开发计划   1713实验3图书馆图书管理系统的需求分析   1714实验4图书馆图书管理系统的总体设计   1715实验5图书馆图书管理系统的详细设计及编码实现   1716实验6图书馆图书管理系统的系统测试   1717实验7图书馆图书管理系统用户手册的撰写   1718实验8图书馆图书管理系统项目开发总结报告的撰写   172面向对象的软件工程实验   1721实验1浏览器系统的可行性分析   1722实验2浏览器系统的项目开发计划   1723实验3浏览器系统的需求分析   1724实验4浏览器系统的体系结构设计   1725实验5采用面向对象方法进行浏览器系统的详细设计   1726实验6利用Rational Rose正向工程功能完成编码的实验   1727实验7利用Rational Rose逆向工程完成修改设计的实验   1728实验8浏览器系统的测试   1729实验9浏览器系统用户手册的撰写   17210实验10浏览器系统项目开发总结报告的撰写   附录   附录AUML图总结   附录BUML中定义的常用版型、 约束和标记   附录CGOF给出的软件设计模式

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微笑伴你而行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值