【读书笔记】《软件工程导论》

news2024/11/24 12:41:30

目录

一、软件工程概述

二、启动阶段

三、计划阶段

四、实施阶段

五、收尾阶段


一、软件工程概述

软件危机:在计算机软件的开发和维护过程中遇到的一系列严重问题。

软件危机的产生与自身的特点有关,还与软件开发、管理的方法不正确有关。

软件危机的典型表现:

  • 对软件开发的进度和成本无法控制;
  • 用户对已开发完成的软件的满意度低;
  • 软件质量无法保证;
  • 软件开发后的维护工作很难进行;
  • 软件通常没有合适的文档资料;
  • 软件成本在系统成本中所占比例越来越高;
  • 软件开发生产力提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

软件工程:计算机科学、工程和管理三个学科的综合。(技术和管理)

软件工程的基本目标:努力发挥开发人员的创造性潜能。

软件工程方法学的目的(实质):使软件生产规范化和标准化,控制开发工作的复杂度。

软件工程方法学得以实施的主要保证是:软件开发工具和软件开发的环境。

软件根据功能划分为:系统软件、支撑软件、应用软件。

软件工程的七大基本原理:

  • 用分阶段的生命周期计划严格管理;
  • 坚持进行阶段评审;
  • 实行严格的产品控制;
  • 采用现代的程序设计技术;
  • 结果应能清楚的审查;
  • 开发小组的成员应该少而精;
  • 承认不断改进软件工程实践的必要性。

传统软件工程的生命周期:

  1. 问题定义与可行性研究;
  2. 需求分析;
  3. 软件设计(概要设计与详细设计);
  4. 编码;
  5. 测试;
  6. 运行与维护。

瀑布模型:

瀑布模型的特征:

  1. 从上一项活动中接受该活动的工作成果,作为输入;
  2. 利用这一输入实施该活动应完成的内容;
  3. 给出该活动的工作成功,作为输出传给下一项;
  4. 对该项活动实施的工作进行评审。若其工作得到确认,则继续下一项活动。

瀑布模型的优点:

  • 强调开发的阶段性;
  • 强调早期计划及需求调查;
  • 强调产品测试。

瀑布模型的缺点:

  • 瀑布模型过于依赖早期进行的唯一一次需求调查,不能适应需求的变化;
  • 单一流程,开发中的经验教训不能反馈应用于本产品的过程。

原型化方法是用户和设计交换最频繁的方法。

软件开发过程中可能出现的问题:

  • 问题定义与可行性研究:未进行问题定义和可行性研究,导致技术问题难以解决;
  • 需求分析:需求分析应与客户充分沟通,并由开发人员完成,而不是由用户给出。需求分析不完整,会导致用户不断增加或修改要求而增大开发难度;
  • 系统设计:模块间未做到高内聚低耦合,导致维护困难;
  • 详细设计:未编写详细文档,导致维护困难;
  • 编码:编码风格不好(注释少、命名不规范),导致维护困难;
  • 测试:由开发人员自己进行测试,而没有交给第三方测试,造成系统的不稳定;
  • 维护:没有进行评审或保存详细的文档资料,导致维护困难。

二、启动阶段

可行性研究:

  • 技术可行性;
  • 经济可行性;
  • 操作可行性;
  • 时间可行性;
  • 组织与管理可行性;
  • 社会与政策可行性。

需求分析:

  • 系统要求:功能要求、性能要求、运行要求、其他要求。
  • 数据要求:结构化程序设计以数据流为核心,结构化分析方法采用数据流图、DFD与数据字典DD描述。

数据流图的基本四种成分:

  • 数据输入的源点和数据输出的汇点;
  • 加工;
  • 数据流;
  • 数据存储文件。

三、计划阶段

系统概要设计的意义:

  • 设计是软件开发中形成质量的地方;
  • 设计为最终对软件评估进行质量评估提供度量依据;
  • 设计是将用户的需求准确的转化为完整的软件产品的唯一方法;
  • 设计是软件开发和维护的基础。

软件设计阶段分为原型设计用例设计

概要设计针对需求,详细设计针对实现。

为高质量的开发软件,在软件结构设计时,必须遵循模块独立性原则。

项目开发计划除去规定项目开发所占的资源,还可以包括用户培训计划。

详细设计内容:

  • 算法过程设计;
  • 数据结构设计;
  • 数据库物理设计;
  • 信息编码设计;
  • 测试用例设计;
  • 其他要求设计。

软件详细设计工具可分三类:图示工具、设计语言、表格工具。

结构化程序设计的基本控制结构:

系统流程图是描绘物理系统的传统工具,它的基本思想是利用图形符号以黑盒子形式描绘系统里的每个部件。

结构化系统设计是面向数据流的系统设计方法,其要解决的任务是在需求分析的基础上,将DFD(结构图)“映射”为软件系统的结构。

N_S图(盒图)

PAD图

PDL是伪码式语言。

四、实施阶段

软件测试原则:

  • 所有测试的标准都是建立在用户的需求之上;
  • 基于“质量第一”思想,时间服从质量;
  • 实现定义好标准,根据标准进行测试;
  • 软件测试随着项目的启动就开始,而不是项目结束才测试;
  • 由第三方进行更客观的测试;
  • 测试用例通过设计,采用少量的高效测试用例尽可能多的发现软件问题;
  • 重视稳定,保存一切测试过程文档。

白盒测试在测试过程的前期进行,黑盒测试在测试过程的的后期。 

使用白盒测试方法时,确定测试数据应根据程序的内部逻辑和指定的覆盖标准。

等价分类法:

1. 划分等价类

输入有效等价类无效等价类
数据A条件①;条件②;......条件③;条件④;......

2. 有效等价类测试用例

输入数据测试范围期望结果
数据A等价类①、②输入正确

3. 无效等价类测试用例

输入数据测试范围期望结果
数据B1等价类③条件③输入错误
数据B2等价类④条件④输入错误

条件①;条件②;......单元测试、集成测试、确认测试、系统测试。

五、收尾阶段

为保证软件质量所采取措施:审查、复查、管理、复审、测试。

软件的维护阶段耗费成本最高,软甲工程目的是提高软件的可维护性,减少软件维护的工作量,降低软件系统的成本。

软件维护的目的:满足用户对已开发产品的性能与软件环境不断提高的需求,进而达到延长软件的寿命。

软件维护的分类(数字为所占成本百分比):

  • 完善性维护(50%);
  • 适应性维护(25%);
  • 纠错性维护(21%);
  • 其他维护(4%);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/685251.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ELK 多用户登录

先搭建ELK集群环境 请移步至:FilebeatELK 搭建日志收集平台 ES开启TLS加密通信与身份认证 进入ES集群任意一台安装目录,生成ca证书 这里最好使用ES启动账号操作,证书生成过程中一直回车到完成,不要去输入密码。 # 生成CA证书 bi…

UNIX网络编程卷一 学习笔记 第二十一章 多播

单播地址标识单个IP接口,广播地址标识某个子网的所有IP接口,而多播地址标识一组IP接口。单播和广播是寻址方案的两个极端(要么单个要么全部),多播则意在两者之间提供一种折衷方案。多播数据报只应由对它感兴趣的接口接…

【软考网络管理员】2023年软考网管初级常见知识考点(8)-广域网技术

涉及知识点 广域网交换方式,广域网流量控制,广域网链路层协议,广域网传输标准,软考网络管理员常考知识点,软考网络管理员网络安全,网络管理员考点汇总。 原创于:CSDN博主-《拄杖盲学轻声码》&a…

MATLAB——Matlab R2018b软件安装教程

Matlab R2018b软件安装教程 1.选中【Matlab R2018b】压缩包,鼠标右击选择【解压到Matlab R2018b】。 2.双击打开【Matlab R2018b】文件夹。 3.双击打开【R2018b_win64】文件夹。 4.选中【setup】可执行文件,鼠标右击选择【以管理员身份运行】。 5.选择【…

AQS源码分析——以ReentrantLock为例

AQS自身属性: private transient volatile Node head; private transient volatile Node tail; private volatile int state; Node属性: // 共享 static final Node SHARED new Node(); // 独占 static final Node EXCLUSIVE null; // 线程被…

360手机黑科技“位置穿越”功能修复 360手机位置穿越不能用了 360手机刷机

360手机黑科技“位置穿越”功能修复 360手机位置穿越不能用了 360手机刷机 参考:360手机-360刷机360刷机包twrp、root 360刷机包360手机刷机:360rom.github.io 【前言】 360手机,内置的黑科技“位置穿越”,引用高德地图&#xff…

基于NSGA-II算法的多目标多旅行商问题建模求解

基于NSGA-II算法的多目标多旅行商问题建模求解 1引言2多目标多旅行商问题3多目标遗传算法NSGA-II3.1 编码3.2选择(锦标赛选择)3.3 交叉(顺序交叉)3.4 变异3.5快速非支配排序3.5.1符号说明3.5.2快速非支配排序[^7][^6]3.5.3快速非支…

C语言王国探险记之变量的前世今生

王国探险记系列 文章目录(2) 前言 一、变量是什么? 二、变量如何定义? 注意:当你赋值小数的时候,编译器会自然认为你是一个double类型的,所以你在使用float类型的时候要在小数后面加个f&…

Go语言基础:基本数据类型

一、整型 1. 整型分类 整型分为以下两个大类: (1)按长度分为:int8、int16、int32、int64 (2)对应的无符号整型:uint8、uint16、uint32、uint64 其中,uint8就是我们熟知的byte型&…

关于spring mvc 的ViewResolver的问题

今天在一个项目使用springboot的spring mvc的时候遇到了一个问题:在controller中使用返回字符串redirect:/xxxx/xxx进行重定向失败,出现了无法解析redirect:/xxxx/xxx。 找了半天才发现视图解析器ViewResolver中没有添加InternalResourceViewResolver 项…

微服务(总): eureka与nacos的区别及心跳配置修改

目录 简介: 1. nacos与eureka的区别 1.0 功能方面 1.1 连接方式不同 1.2 服务异常后多久剔除 1.2.1 eureka介绍: 1.2.2 nacos介绍: 1.3 操作的方式 1.3.1 nacos 专门的可视化界面(如图) 1.3.2 eureka 比较简约(如图) 1.4 保护机制介绍 1.4.1 CAP原则简介:(取自百…

Redis入门(5)-set

Redis中set的元素具有无序性与不可重复性 1.sadd key member[member] 添加元素,若元素存在返回0若不存在则添加 sadd DB mysql oracle sadd DB mysql sadd DB db22.smembers key 查看set中所有元素 smembers DB3.sismember key member 判断元素在set中是否存…

好书精读】网络是怎样连接的 —— 信号在网线和集线器中传输

( 该图由我使用 AI 绘制 ) 目录 每个包都是独立传输的 防止网线中的信号衰减很重要 “双绞”是为了抑制噪声 集线器将信号发往所有线路 每个包都是独立传输的 从计算机发送出来的网络包会通过集线器 、 路由器等设备被转发 , 最 终到达…

智安网络|弹性网络与网络安全:保卫数字世界的关键联结

随着数字化时代的来临,弹性网络和网络安全成为了信息交流和数据传输的关键基础。弹性网络为用户提供了高度可靠、灵活可扩展和强大的网络基础设施,而网络安全则旨在保护这个网络生态系统不受威胁。 弹性网络的定义与重要性 弹性网络的重要性&#xff1a…

【Leetcode60天带刷】day36——56. 合并区间,738.单调递增的数字

​ 题目: 56. 合并区间 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1:…

python基础学习9【MinMaxScale()、StandScale()、DecimalScale、transformer】

标准化数据【离差标准化数据、标准差标准化数据、小数定标标准化数据】 离差标准化数据: 数据的整体分布情况并不会随离差标准化而发生改变,原先取值较大的数据,在做完离差标准化后的值依旧较大; 对原始数据的一种线性变换&…

模拟电路系列分享-运放的关键参数

目录 概要 整体架构流程 技术名词解释 1.输入失调电压 2.输入失调电压对电路的影响 3.数据手册中关于失调电压的描述 技术细节 小结: 概要 提示:这里可以添加技术概要 实际运放与理想运放具有很多差别。理想运放就像一个十全十美的人&#xff0…

C语言王国探险记之数据类型

王国探险记系列 文章目录(1) 目录 1,写程序和数据类型有啥关系? 2.C语言里面都有啥数据类型? 1,数据类型的介绍 2,为什么浮点数描述的是小数 3,区分程序中的数字那些是整型&am…

02_深入浅出vite(二)--vue3全家桶+ts构建后管系统

安装基础包 npm create vitelatest # 这里选择的是VueTypescript的组合 cd vue-admin npm install# 先安装基础包 npm install vue-router4 npm i pinia npm i axios npm install sass --save-dev npm install element-plus --save npm install element-plus/icons-vue npm in…

SQL Server数据库 -- 表的基础查询

文章目录 一、单表查询基本结构二、单表查询结构语法 select聚合函数where模糊查询order bygroup byhaving三、多表查询基本结构四、多表查询结构语法 内连接自连接外连接五、总结 前言 学习了数据库,在以后公司等地方,你可能不会用到创建数据库或者表格…