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

目录

一、软件工程概述

二、启动阶段

三、计划阶段

四、实施阶段

五、收尾阶段


一、软件工程概述

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

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

软件危机的典型表现:

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

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

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

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

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

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

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

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

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

  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.hqwc.cn/news/1886.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go语言并发微服务分布式高可用

Go语言并发微服务分布式高可用 Go语言基础 环境安装 命令行输入go,当前操作系统Os环境中依赖于PATH指定的日录们去找命令(可执行文件)windows会优先搜索当前日录,当前日录没有才依赖PATH中指定的日录 环境变量: 操作系统运行环境中提前定义好的变量P…

6-js基础-3

JavaScript 基础 - 3 知道什么是数组及其应用的场景,掌握数组声明及访问的语法,具备利用数组渲染柱形图表的能力 今日重点: 循环嵌套数组综合案例 今日单词: 循环嵌套 利用循环的知识来对比一个简单的天文知识,我们…

Scrapy框架之MongoDB通过配置文件管理参数--Linux安装MongoDB--图形管理工具

目录 MongoDB通过配置文件 问题 解决方案 步骤 提示 Linux安装MongoDB 环境 下载依赖与安装包 解压安装 MongoDB GUI管理工具 独立软件GUI软件 Robo 3T使用 VSCode集成GUI插件 MongoDB通过配置文件 问题 启动MongoDB时,编写参数太麻烦 解决方案 通过配…

android h5 宿舍报修管理系统myeclipse开发mysql数据库编程服务端java计算机程序设计

一、源码特点 android h5 宿舍报修管理系统是一套完善的WEBandroid设计系统,对理解JSP java,安卓app编程开发语言有帮助(系统采用web服务端APP端 综合模式进行设计开发),系统具有完整的 源代码和数据库,系…

docker网络

一、docker网络概述 1、docker网络实现的原理 Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP, 同时Docker网桥是 每个容器的…

SNMP 计算机网络管理 实验3(二)SNMP协议工作原理验证与分析

⬜⬜⬜ 🐰🟧🟨🟩🟦🟪(*^▽^*)欢迎光临 🟧🟨🟩🟦🟪🐰⬜⬜⬜ ✏️write in front✏️ 📝个人主页:陈丹宇jmu &am…

javaweb学习2

p标签使用 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <!--p标签定义段落 p元素自动在其前后创建一段空白--> hello&#xff0c;world &l…

通过easyui的filebox上传文件

本篇文章重点分享一下怎么通过easyui的filebox实现文件上传的功能&#xff0c;从前端代码到后端接口都会展示给大家。 1、form表单同步上传 传统的文件上传会把<input type"file" />放到一个<form></form>里&#xff0c;设置form表单的提交方式为…

MySQL8.0版本在CentOS系统的配置教程

1.MySQL安装 MySQL安装完成后&#xff0c;会自动配置为名称叫做&#xff1a;mysqld的服务&#xff0c;可以被systemctl所管理&#xff0c;我们在进行系统的配置时&#xff0c;主要修改root密码和允许root远程登录。 # 通过grep命令&#xff0c;在/var/log/mysqld.log文件中&a…

【人工智能】— 深度神经网络、卷积神经网络(CNN)、多卷积核、全连接、池化

【人工智能】— 深度神经网络、卷积神经网络&#xff08;CNN&#xff09;、多卷积核、全连接、池化 深度神经网络训练训练深度神经网络参数共享 卷积神经网络&#xff08;CNN&#xff09;卷积多卷积核卷积全连接最大池化卷积池化拉平向量激活函数优化小结 深度神经网络训练 Pr…

浅谈智能安全用电系统在轨道交通中的应用

安科瑞 华楠 摘要&#xff1a; 随着轨道交通电气设备的增加和用电负荷的变大&#xff0c;用电安全问题愈发突出&#xff0c;而对电力状况在线监测和故障预警是实现安全用电的关键。本文研究了轨道交通安全用电智能监测系统。该系统通过电力载波技术可利用原电缆进行数据传输&am…

面向开发人员的 ChatGPT 提示词教程中文版 - ChatGPT 版

面向开发人员的 ChatGPT 提示词教程中文版 - ChatGPT 版 1. 指南1-1. 提示的指南1-2. 配置1-3. 提示语原则原则 1: 写出清晰而具体的指示技巧 1: 使用分隔符来清楚地表明输入的不同部分技巧 2: 要求提供结构化的输出技巧 3: 要求模型检查条件是否得到满足技巧 4: "少许样本…