计算机二级公共基础知识(三)——软件工程基础

软件工程基础

【1】软件定义和软件特点

  • 软件是指计算机系统中与硬件相互依赖存在的一部分,包括:程序、数据和文档

(1)程序:软件开发人员依据用户需求,用程序设计语言描述的适合计算机执行的指令序列
(2)数据:使程序能正常操作信息的数据结构
(3)文档:与程序开发、维护和使用有关的图文资料

  • 软件的特点

(1)软件是一种逻辑实体,具有抽象性
(2)没有明显的制作过程
(3)软件在运行使用期间,不存在磨损老化
(4)软件对计算机具有依赖性,可能存在依值问题
(5)复杂性高
(6)社会因素

  • 软件分类

应用软件
系统软件:操作系统…
支撑软件:软件开发工具…

【2】软件的生命周期

  • 生命周期:提出—实现—使用维护—停止退役
  • 三个阶段:定义阶段—开发阶段—维护阶段
    在这里插入图片描述
  • 周期中能够准确确定软件系统必须做什么和必须具备什么功能的阶段:

需求分析

【3】软件危机和软件工程

  • 软件危机:开发和维护中遇到的一系列问题,集中表现于成本、质量和生产效率
  • 软件工程:采用工程的概念、原理、技术、方法指导软件开发与维护(利用工程的概念)
  • 软件工程的三要素:

(1)方法:完成软件工程的技术手段
(2)工具:工具支持软件的开发、管理、文档生成
(3)过程:过程支持软件开发的各个环节的控制和管理

【4】软件工程的过程

  • P(plan):软件规格说明
  • D(do):软件开发
  • C(check):软件确认
  • A(action):软件演进

【5】软件开发技术和软件过程管理

  • 软件工程:软件开发技术和软件工程管理
  • 软件开发技术:软件开发方法学(核心),开发过程,开发工具,软件工程环境

【6】软件工程原则

  • 抽象性
  • 信息隐蔽
  • 模块化
  • 局部化
  • 确定性
  • 一致性
  • 完备性
  • 可验证性

【7】需求分析

  • 需求分析:

(1)需求获取
(2)需求分析
(3)编写需求规格说明书
(4)需求评审

  • 需求分析方法:

(1)面向数据结构的Jackson(ISD)
(2)面向数据流的结构化方法(SA)
(3)面向数据结构的结构化数据的系统开发方法(DSSD)

  • 面向对象的分析方法(OOA):

(1)静态分析
(2)动态分析

【8】结构化方法和结构化分析方法

  • 结构化方法包括:

(1)结构化分析方法
(2)结构化设计方法
(3)结构化编程方法

  • 软件功能分解属于总体设计阶段
  • 结构化分析方法概念:

(1)面向数据流自顶向下逐步求精进行需求分析的方法
(2)结构化分析方法是在软件需求分析阶段的应用

  • 结构化分析的常用工具
数据流图 DFD 描述系统流动和处理的过程
(1)箭头 表示数据流,数据的传播途径
(2)园/椭圆 数据处理
(3)双横 表示数存储,数据存储又称为文件
(4)方框 数据源点/终点
数据字典DD 结构化分析方法的核心,描述系统中所用的全部数据和文档
数据流
数据流分量
数据存储
处理
判定树
判定表

【9】软件规格说明书

  • == 需求分析阶段得到额最重要的文档==——软件规格说明书
  • 特点:确定性,无歧义性,完整性,可验证性,一致性,可理解性,可修改性,可追踪性

【10】软件设计的基本概念

  • 软件设计是确定系统的物理模型
  • 软件设计:

(1)结构设计:软件系统各部件之间的关系
(2)数据设计:分析时创建的模型转化为数据结构的定义
(3)接口设计:通信
(4)过程设计:系统结构部件转化为软件

【11】软件设计的基本原理

  • 模块化:划分为独立的模块,每个模块完成不同的子功能
  • 抽象化:抽出事情的本质特征,暂时不考虑它们的细节
  • 信息隐蔽及局部化:信息隐蔽指别的模块不能访问其他模块的信息,依赖于对象的封装
  • 模块的独立性:每个模块只完成自己的子功能,并且与其他模块的联系最少且接口简单

模块的独立性是评价设计好坏的重要标准

【12】耦合性和内聚性

  • 耦合性:(模块之间)度量模块之间的互联程度,取决于接口复杂度
  • 内聚性:(模块内元素之间)是一个模块内部各个元素之间彼此结合的紧密程度

模块划分的原则:低耦合,高内聚

【13】结构化设计方法

  • 结构化设计方法:面向数据流的自顶向下,逐步求精的进行需求分析的方法
  • 结构化设计方法:将软件设计成相对独立、单一功能模块组成的结构
  • 概要设计的任务:

(1)划分出组成系统的物理元素
(2)设计软件的结构

  • 概要设计工具:

(1)结构图(程序结构图):矩形—模块;箭头—模块之间调用关系
实心园箭头:控制信息
空心圆箭头:数据
(2)结构图的基本形式:基本形式,顺序形式,选择形式,重复形式
(3)结构图的四种模块类型:传入模块,传出模块,变换模块,协调模块
(4)结构图的四种专业术语:
(深度:控制的层数)
(上级模块,下级模块:上级调用下级)
宽度:整体控制跨度,最大模块的层
(扇入:调用该模块的模块个数)
(扇出:一个模块直接调用其他模块的个数)
(原子模块:树中位于叶子节点的模块)

  • 面向数据流的设计方法:任何软件都可以利用数据流图表示

(1)变换型:输入+输出+中心变换
(2)事务型

  • 设计的准则:

(1)提高模块独立性
(2)模块规模适中
(3)深度,扇入,扇出,宽度合适
(4)使模块的作用域在该模块的控制域内
(5)减少模块的接口和界面的复杂度
(6)设计成单入口,单出口的模块
(7)设计功能可预测的模块

  • **详细设计常用的工具:**图形设计工具、表格工具、语言工具
  1. 图形设计工具
程序流程图 N-S图,PAD图(问题分析图)
箭头 控制流(注意和数据流的区别)
方框 加工步骤
菱形 逻辑条件
  1. 表格工具:判定表
  2. 语言工具:PDL过程设计语言

【14】软件测试的目的和准则

  • 软件测试的目标:发现程序中的错误
  • 软件测试的准则:

(1)所有测试都应该追溯到需求
(2)严格执行测试计划,排除测试随意性
(3)充分注意测试中的群集表现
(4)程序员应避免检查自己的程序
(5)穷举测试不可能
(6)妥善保存测试计划和最终分析报告

  • 群集表现:程序中存在的错误概率与该程序中已发现错误数成正比

【15】软件测试方法

  • 按是否需要执行程序:静态测试(不用运行)和动态测试(运行)
  • 按功能测试:白盒测试和黑盒测试
静态测试 动态测试
不实际运行,靠人工分析 通过运行软件检查软件中的动态行为和运行结果的正确性。
代码检查,静态结构分析,代码质量度量 动态测试关键:使用高效合理的测试用例

(测试用例:为测试设计的数据,由测试输入数据和预期结果组成)

白盒测试 黑盒测试
结构测试/逻辑测试 功能测试/数据驱动测试
把程序看作一个透明的白盒子,测试者完全了解程序的结构和处理过程 程序看作一个黑盒子,测试者完全不知道程序的结构和处理过程
测试方法:逻辑覆盖、基本路径检测 测试方法:等价划分、边界值分析、错误推测
保证每一个模块的独立路径都要执行至少一次,所有判断的每一个分支至少执行一次,验证所有数据结构的有效性,所有循环都在边界条件和一般条件下至少各执行一次 检查程序是否满足规格说明书

【16】软件测试的实施

  • 软件测试的四个步骤:单元测试、集成测试、验收测试、系统测试
  • 单元测试:

(1)单元测试对象:模块
(2)单元测试是根据源程序和详细设计说明书进行
(3)采用静态测试和动态测试

  • 集成测试:

(1)对象:接口
(2)集成测试的依据:概要设计说明书
(3)集成测试方法:非增量方法组装和增量方法组装
增量方法:自顶向下的增量方法,自底向上的增量方法,混合增量方法

  • 验收测试:(确认测试)

(1)任务:验证软件的功能与性能
(2)实施:首先采用黑盒方法测试方法——有效性测试(是否满足规格说明书)
检查软件是否符合需求定义的过程是:验收测试

  • 系统测试:

(1)机制:将软件作为整个计算机的一部分,将其与硬件、外设、支撑软件、数据和人员混合一起,在实际运行状态下对计算机进行一系列测试
(2)具体实施:功能测试,性能测试,操作测试,配置测试,外部接口测试,安全性测试

【17】程序调试Debug

  • 程序测试与软件测试的区别:

软件测试:尽可能多的发现软件中的错误
Debug:找错并找到具体位置

软件测试:贯穿整个软件生命周期
Debug:主要在开发阶段

  • 程序调试的基本步骤:错误定位—修改设计和代码—回归测试
  • 软件调试分为:

(1)静态调试:通过人的思维来分析源程序代码和排错
(2)动态调试:辅助静态调试

  • 主要的调试方法:

(1)强行排错法
(2)回溯方法
(3)原因排错法:演绎法、归纳法、二分法

""" 全国计算机二级python复习资料:
    关注公众号【小杨的健解之路】回复'二级python'  """
发布了234 篇原创文章 · 获赞 107 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_44478378/article/details/104770397