软件工程知识汇总

文章目录

        • 软件生命周期模型
        • 软件危机
        • 需求分析
        • 数据流图
        • 实体联系图(E-R图)
        • 数据字典
        • 流程图
        • 盒图
        • 判定树
        • 判定表
        • 白盒测试
        • 黑盒测试
        • 类图
        • 用例图
        • 时序图
        • 状态图
        • 软件维护
        • 项目管理
        • 参考资料

软件生命周期模型

软件生命周期模型是描述软件开发过程中各种活动如何执行的模型。主要有:瀑布模型、原型模型、增量模型、螺旋模型。

1.瀑布模型

  • 优点:规范,文档驱动 。为项目提供了按阶段划分的检查点。它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。当前一阶段完成后,只需要去关注后续阶段。
  • 缺点:系统可能不满足客 户真正的需求。由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。不适应用户需求的变化。各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
  • 适用范围:适合于结构化方法,也就是面向过程的软件开发方法。在开发时间内需求没有或很少变化。

2.快速原型

  • 优点:克服了瀑布型的缺 点 。减少由于软件需求不明确带来的开发风险。减少了开发时间,大大提高了系统开发效率。通过一系列对原型的修改和完善,大大增加了用户对设计的满意程度,进而提高了信息系统的质量。
  • 缺点:通过原型法所开发的系统不具备灵活性,以适应用户需求的变化。
  • 适用范围:适用于开发需求不确定的大型软件系统。

3.增量模型

  • 优点:开发早期回报明确, 易于维护。能在较短的时间内向用户提交可完成部分工作的产品
  • 缺点:要求开放的软件体系结构
  • 适用范围:进行已有产品升级或新版本开发;对完成期限严格要求的产品;对所开发的领域比较熟悉而且已有原型系统。

4.螺旋模型

  • 优点: 风险驱动,适用于大型项目开发。设计上的灵活性,可以在项目的各个阶段进行变更。
  • 缺点:风险分析人员需要 有经验且经过充分训练。过多的迭代次数会增加开发成本,延迟提交时间。
  • 适用范围:螺旋模型只适合于大规模的软件项目。

软件危机

软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。

  • 原因
  1. 软件开发无计划性
  2. 软件需求不充分
  3. 软件开发过程无规范
  4. 软件产品无评测手段
  • 表现
  1. 超出预算时间和成本
  2. 客户对生产出的软件不满意
  3. 软件有残存的错误
  4. 软件产品不可维护
  5. 文档资料不完整
  6. 软件生产率的提高跟不上硬件的发展速度
  • 解决方法:软件工程

    用现代工程的概念,原理,技术和方法进行计算机软件的开发,管理和维护,由此诞生了软件工程。

    软件工程是用工程,科学和数学的原则与方法来研制,维护计算机软件的有关技术及管理方法。

    软件工程包括3要素:方法,工具和工程。

需求分析

  • 必要性

介于系统分析和软件设计阶段之间的桥梁。一方面,需求分析以系统规格说明和项目规划作为分析活动的基本出发点,并从软件角度对它们进行检查与调整;另一方面,需求规格说明又是软件设计、实现、测试直至维护的主要基础。良好的分析活动有助于避免或尽早剔除早期错误,从而提高软件生产率,降低开发成本,改进软件质量。

  • 主要任务

对目标系统提出完整、准确、清晰、具体的要求

1、确定对系统的综合要求:功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、将来可能提出的需求

2、分析系统的数据需求

3、导出系统的逻辑模型

4、修正系统开发计划

数据流图

描绘系统逻辑模型,图中没有具体的物理元素,只描绘信息在系统中流动处理情况。是非常好的通信工具和软件设计出发点。

  • 数据流图符号

正方形(立方体):表数据的原点或终点

圆角矩形(或圆形):代表数据的处理

开口矩形(或两条平行线):代表数据存储

箭头:表数据流,即特定数据的流动方向(有流动的数据项或数据集合)

img

  • 解法

①从问题描述提取数据流图四种成分, 原点、终点、处理、数据流、数据存储

②着手画数据流图的基本系统模型, 即一个原点一个处理一个终点,确定边界

③把基本系统模型细化,描绘系统主要功能

④主要功能进一步细化

⑤结束,或进一步分解到涉及如何具体实现功能时,不再分解。

  • 数据流图的平衡原则

父图与子图的平衡

子图内的平衡

  • 数据流图的用途

①作为交流信息工具

②作为分析和设计工具:自动化边界划分

实体联系图(E-R图)

描述数据对象之间的关系

图中数据对象属性用“数据对象描述”表达

1、组成:数据对象:软件必须理解的符合信息表达,复合信息是具有一系列不同性质或属性的事务

2、数据对象间关系:一对一、一对多、多对多

3、属性:定义数据对象的性质

4、实体关系图

img

数据字典

没有数据字典准确地描述数据流图中使用的数据, 数据流图就不严格。反之,没有数据流图,数据字典也难于发挥作用。只有把数据流图和对数据流图中每个数据的精确定义放在一起,才能共同构成软件的规格说明。

  • 作用

数据字典最重要的用途是作为分析阶段的工具。
在结构化分析中, 数据词典的作用是给数据流图上每个成分给以定义和说明。
如果要求所有开发人员都根据公共的数据字典描述数据和设计模块,则能避免很多麻烦的接口问题。
数据字典中包含的每个数据元素的控制信息是有价值的, 因为列出了使用一个给定的数据元素的所有程序(或模块) , 所以很容易估计改变一个数据将产生的影响, 并且能对所有受影响的程序或模块做出相应的改变。
数据字典是开发数据库的第一步, 而且是非常有价值的一步

流程图

软件工程知识汇总_第1张图片

盒图

img

判定树

判定树又称决策树,是一种描述加工的图形工具,适合描述问题处理中具有多个判断,而且每个决策与若干条件有关。使用判定树进行描述时,应该从问题的文字描述中分清哪些是判定条件,哪些是判定的决策,根据描述材料中的联结词找出判定条件的从属关系、并列关系、选择关系,根据它们构造判定树。

​ 【例4.5】某工厂对工人的超产奖励政策为:该厂生产两种产品A和B。凡工人每月的实际生产量超过计划指标者均有奖励。奖励政策为:

​ 对于产品A的生产者,超产数N小于或等于100件时,每超产1件奖励2元;N大于100件小于等于150件时,大于100件的部分每件奖励2.5元,其余的每件奖励金额不变;N大于150件时,超过150件的部分每件奖励3元,其余按超产150件以内的方案处理。

​ 对于产品B的生产者,超产数N小于或等于50件时,每超产1件奖励3元;N大于50件小于等于100件时,大于50件的部分每件奖励4元,其余的每件奖励金额不变;N大于100件时,超过100件的部分每件奖励5元,其余按超产100件以内的方案处理。

​ 上述处理功能用判定树描述,如下图所示: 软件工程知识汇总_第2张图片

​ 这一判定树比起文字叙述,使人一目了然,清晰地表达了在什么情况下采取什么策略,不易产生逻辑上的混乱。因而判定树是描述基本处理逻辑功能的有效工具。

判定表

判定表由四部分组成。

​ 第一部分即①表示的部分,判定标的左上部称为基本条件项,列出各种可能的条件。第二部分即②表示的部分,判定标的右上部称为条件项,它列出了各种可能的条件组合。第三部分即③表示的部分,判定标的左下部称为基本动作项,它列出了所有的操作。第四部分即④表示的部分,判定标的右下部称为动作项,它列出在对条件组合下所选的操作。

​ 【例4.6】 以学生的奖学金评定为例,说明判定表的应用。奖励的目的在于鼓励学生的品学兼优,此处理功能是要合理确定奖学金评定等级。决定受奖的条件为:成绩优秀占70%或50%以上,成绩为中或中以下占15%或20%以下,团结纪律为优良或一般者。奖励方案为一等奖、二等奖、三等奖、鼓励奖四种。因为受奖条件有些是相容的,相互组合的项较多。描述此学生奖励政策的判定表如下图所示:

软件工程知识汇总_第3张图片

由上图可见,判定表将比较复杂的决策问题简洁、明确、一目了然地描述出来,它是描述条件比较多的决策问题的有效工具。判定表或判定树都是以图形形式描述数据流的加工逻辑,它结构简单,易懂易读。尤其遇到组合条件的判定,利用判定表或判定树可以使问题的描述清晰,而且便于直接映射到程序代码。在表达一个加工逻辑时,判定数、判定表都是好的描述工具,根据需要可以交叉使用。

白盒测试

把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

  • 语句覆盖:就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。
  • 判断覆盖:使设计的测试用例保证程序中每个判断的每个取值分支至少经历一次。
  • 条件覆盖:是指选择足够的测试用例,使得运行这些测试用例时,判定中每个条件的所有可能结果至少出现一次,但未必能覆盖全部分支。
  • 条件判定覆盖:就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果至少执行,即要求各个判断的所有可能的条件取值组合至少执行一次。
  • 条件组合覆盖:在白盒测试法中,选择足够的测试用例,使所有判定中各条件判断结果的所有组合至少出现一次,满足这种覆盖标准成为条件组合覆盖。

在这里插入图片描述

黑盒测试

黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的,又称为数据驱动测试。

黑盒测试是在程序外部接口进行的测试。

  • 等价类划分法

等价类 :是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。测试某等价类的代表值就等价于对这一类其他值的测试。

基本思想 :把所有可能的输入数据(包括有效或无效的),划 分成若干数据类(等价类),然后从每个数据类中 选取少数有代表性的数据做为测试用例。

这种方法完全不考虑程序的内部结构,只依据程序 的规格说明来设计测试用例。

1、划分等价类(有时需细化)

2、建立等价类表,等价类进行编号

3、通过等价类导出测试用例

软件工程知识汇总_第4张图片

  • 边界值分析法

对输入或输出的边界值进行测试的一种黑盒测试方法。

是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。

类图

显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。

类图包含:类,接口,协作,关系

  • :一般包含3个组成部分。第一个是类名;第二个是属性(attributes);第三个是该类提供的方法( 类的性质可以放在第四部分;如果类中含有内部类,则会出现第五个组成部分)。类名部分是不能省略的,其他组成部分可以省略。

    软件工程知识汇总_第5张图片

  • 接口:是一系列操作的集合,它指定了一个类所提供的服务。它直接对应于Java中的一个接口类型。

    软件工程知识汇总_第6张图片

  • 协作:指一些类、接口和其他的元素一起工作提供一些合作的行为

  • 关系

  1. 泛化

    泛化表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系

(1)继承
表示方法: 继承使用空心三角形+实线表示。

软件工程知识汇总_第7张图片

(2)实现
表示方法:使用空心三角形+虚线表示 或 使用实线表示

软件工程知识汇总_第8张图片

软件工程知识汇总_第9张图片

  1. 依赖
    表示方法: 依赖关系用虚线箭头表示。

软件工程知识汇总_第10张图片

  1. 关联
    存在固定的对应关系时,这两个对象之间为关联关系。

    表示方法: 关联关系用实线箭头表示。

软件工程知识汇总_第11张图片

  1. 聚合

表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。 两个对象具有各自的生命周期
表示方法: 聚合关系用空心的菱形+实线箭头表示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-METbSu5n-1593683697068)(https:upload-images.jianshu.io/upload_images/5336514-e63191f4e23f2ad9.png?imageMogr2/auto-orient/strip|imageView2/2/w/297/format/webp)]

  1. 组合

是一种强的‘拥有’关系,体现了严格的部分和整体关系,部分和整体的生命周期一样
表示方法:用实心的菱形+实线箭头表示,还可以使用连线两端的数字表示某一端有几个实例。

软件工程知识汇总_第12张图片

用例图

用例图中涉及的关系有:关联泛化包含扩展

软件工程知识汇总_第13张图片

(1)系统整体用例图

软件工程知识汇总_第14张图片

​ (商品用例图) 软件工程知识汇总_第15张图片

时序图

描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。

img

  • 选项(Opt)

包含一个可能发生或不发生的序列。Opt相当于if…语句。

img

  • 循环(Loop)

片段重复一定次数,可以在临界中指示片段重复的条件。Loop相当于for语句。

img

  • 并行(Par)

并行处理,片段中的事件可以并行交错。Par相当于多线程。

img

状态图

描述一个对象的所有状态和状态之间的转换。

  • 元素

状态:对象静态值
转换:状态间的关联
事件:促成状态转换的动作如事件

  • 实例

图书借阅中图书的状态变化

软件工程知识汇总_第16张图片

软件维护

  • 可维护性的五个子特性:
    (1)易分析性。软件产品诊断软件中的缺陷或失效原因或识别待修改部分的能力。
    (2)易改变性。软件产品使指定的修改可以被实现的能力,实现包括编码、设计和文档的更改。如果软件由最终用户修改,那么易改变性可能会影响易操作性。
    (3)稳定性。软件产品避免由于软件修改而造成意外结果的能力。
    (4)易测试性。软件产品使已修改软件能被确认的能力。
    (5)维护性的依从性。软件产品遵循与维护性相关的标准或约定的能力。

  • 软件维护的分类
    在系统运行过程中,软件需要维护的原因是多样的,根据维护的原因不同,可以将软件维护分为以下四种:
    (1)改正性维护。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程就称为改正性维护。
    (2)适应性维护。在使用过程中,外部环境(新的硬、软件配置)、数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。为使软件适应这种变化,而去修改软件的过程就称为适应性维护。
    (3)完善性维护。在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动称为完善性维护。
    (4)预防性维护。这是指预先提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础。通常,预防性维护可定义为“把今天的方法学用于昨天的系统以满足明天的需要”。也就是说,采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编码和测试。

  • 软件工程知识汇总_第17张图片

项目管理

所谓管理就是通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程

​ 软件工程包括技术和管理两方面的内容,是技术与管理紧密结合的产物。有效的管理是大型软件工程项目成功的关键。

1.软件项目管理始于项目计划。为了估算项目工作量和完成期限,首先需要预测软件规模。

2.管理者必须制定出一个足够详细的进度表,以便监督项目进度并控制整个项目。

3.软件质量保证是在软件过程中的每一步都进行的活动。

4.软件配置管理是应用于整个软件过程中的保护性活动,是在软件整个生命期内管理变化的一组活动。

能力成熟度模型(CMM)是改进软件过程的有效策略

参考资料

博客链接:

https://blog.csdn.net/qq_43575653/article/details/103934484

https://www.cnblogs.com/seerlin/archive/2008/11/24/1339658.html

https://blog.csdn.net/sm_wang/article/details/86210539?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-1

https://blog.csdn.net/qq_32293345/article/details/97265782

https://blog.csdn.net/weixin_42562514/article/details/90572761

https://blog.csdn.net/weixin_42119415/article/details/82884022

https://blog.csdn.net/qq_35867537article/details/77503068

https://blog.csdn.net/whc888666/article/details/82897018

https://www.jianshu.com/p/57620b762160

https://www.cnblogs.com/lcword/p/10472040.htmlhttps://www.cnblogs.com/lcword/p/10472040.html

https://blog.csdn.net/fly_zxy/article/details/80911942

https://www.jianshu.com/p/2d88c7f71fa7

https://blog.csdn.net/sunmoon1210/article/details/79154868

你可能感兴趣的:(学习笔记)