软件工程导论复习知识点

前言

这是我在准备软件工程基础考试时根据考点整理的一份知识点汇总。

一、软件工程概述

1.软件危机

  • 软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。

  • 软件的特点是:

    • 软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性。
    • 软件的生产与硬件不同,它没有明显的制造过程。对软件的质量控制,必须着重在软件开发方面下功夫。
    • 在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。
    • 软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。为了解除这种依赖性,在软件开发中提出了软件移植的问题。
    • 软件的开发至今尚未完全摆脱手工艺的开发方式。
    • 软件本身是复杂的。软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性。
    • 软件成本相当昂贵。软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它的成本是比较高的。
    • 相当多的软件工作涉及到 会因素。许多软件的开发和运行涉及机构、体制及管理方式等问题,甚至涉及到人的观念和人们的心理。它直接影响到项目的成败。
  • 软件危机的原因

    • 与软件本身的特点有关
    • 与软件开发和维护的方法不正确有关

2.软件工程原理及方法学

  • 软件工程基本原理
    • 用分阶段的生命周期计划严格管理
    • 坚持进行阶段评审
    • 实行严格的产品控制
    • 采用现代程序设计技术
    • 结果应能清楚的审查
    • 开发小组的人员应该少而精
    • 承认不断改进软件工程实践的必要性
  • 软件工程方法学
    • 包括三个要素:方法、工具和过程
    • 最广泛的软件工程方法学:传统方法学面向对象方法学

3.掌握软件生命周期

  • 制定计划

  • 需求分析

  • 软件设计

  • 程序编写 : 把软件设计转换成计算机可以接受的程序代码。

  • 软件测试 : 在设计测试用例的基础上检验软件的各个组成部分。

  • 运行/维护 : 已交付的软件投入正式使用,并在运行过程中进行适当的维护。

4.掌握软件过程模型

  • 瀑布模型 : 瀑布模型规定了各项软件工程活动,包括:制定开发计划,进行需求分析和说明,软件设计,程序编码。测试及运行维护,参看图1.2。并且规定了它们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落。

图1.4 喷泉模型

5.掌握软件过程的四个基本活动

  • plan——软件规格说明

  • do——软件开发,产生满足规格说明的软件。

  • check——软件确认,确认软件能够满足客户提出的要求。

  • action——软件演进。

二、可行性研究

1.研究的目的

以最小的代价在尽可能短的时间内确定问题是否能够解决

2.研究的方面

  • 经济可行性
  • 技术可行性
  • 法律可行性
  • 方案的选择

3.数据流图

4.数据字典

  • 组成元素:数据流、数据流分量(即数据元素)、数据存储、处理
  • 定义数据的方法

  • 功能模型

    功能建模的思想就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。根据DeMarco的论述,功能模型使用了数据流图来表达系统内数据的运动情况,而数据流的变换则用结构化英语、判定表与判定树来描述。

  • STD图:即状态转移图

    • 状态:被观察到的系统行为模式

    • 事件:引起状态转换的外界事件抽象,

    行为用活动表表示:活动表 = 事件名 + / + 动作表达式

    • 例子

HIPO图

即层次图 + 输入/处理/输出图 的英文缩写,由一张H图和一组IPO图组成。

H图(层次图),是给每个模块加上编 的层次图。 IPO图,要为H图中的每个模块画一张IPO图。 通常将HIPO图作为软件结构的描绘,列入设计文档。

五、详细设计

1.程序设计的基本控制结构

  • 顺序结构
  • IF_THEN_ELSE型选择(分支)结构
  • DO_WHILE型循环结构

图4.26 N-S图的五种基本控制结构

图4.28 PAD的基本控制结构

做为PAD应用的实例,图4.29给出了图4.25程序的PAD表示。PAD所描述程序的层次关系表现在纵线上。每条纵线表示了一个层次。把PAD图从左到右展开。随着程序层次的增加,PAD逐渐向右展开。

PAD的执行顺序从最左主干线的上端的结点开始,自上而下依次执行。 每遇到判断或循环,就自左而右进入下一层,从表示下一层的纵线上端开始执行,直到该纵线下端,再返回上一层的纵线的转入处。如此继续,直到执行到主干线的下端为止。

图4.31 反映程序逻辑的判定表

判定表的优点是能够简洁,无二义性地描述所有的处理规则。但判定表表示的是静态逻辑,是在某种条件取值组合情况下可能的结果,它不能表达加工的顺序,也不能表达循环结构,因此判定表不能成为一种通用的设计工具。

⑤判定树

判定表的变种

图4.19 信用卡记账系统的输出

②Warnier方法

此方法仅了解名字即可

5.环型复杂度的计算方法

环路复杂度用来定量度量程序的逻辑复杂度。以McCabe方法来表示。

在程序控制流程图中,节点是程序中代码的最小单元,边代表节点间的程序流。一个有e条边和n个节点的流程图F,可以用下述3种方法中的任何一种来计算环形复杂度。
(1)流图中的区域数等于环形复杂度。
(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。
(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。

环路复杂度越高,程序中的控制路径越复杂。

2.调试途径

  • 蛮干法

  • 回溯法

  • 原因排除法

七、软件维护

1.软件维护的概念及类型

定义:在软件交付使用之后,为了改正错误或满足新的需要而修改软件的过程

类型:

  • 改正性维护
  • 适应性维护
  • 完善性维护
  • 预防性维护

2.可维护性

软件文档

分类:用户文档,系统文档

①用户文档

描述内容:

  • 功能描述
  • 安装文档
  • 使用手册
  • 参考手册
  • 操作员指南

要求:应能使用户获得对系统的准确的初步印象,文档的结构方式应该使用户能够方便地根据需要阅读有关的内容。

②系统文档

从问题定义、需求说明到验收测试计划这样一系列和系统实现有关的文档

  • 控制结构测试
    • 基本路径测试
    • 条件测试
    • 循环测试

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年5月23日
下一篇 2021年5月23日

相关推荐