软件工程(Software Engineering)

一、软件工程概述

1.软件生存周期

软件: 包含程序、数据及相关文档
软件工程: 涉及到软件开发、维护、管理等多方面的原理、工具与环境。最终的目的是开发高质量的软件。
目的: 提高软件生产率、提高软件质量、降低软件成本。
image.png
文档的作用:

  • 提高软件开发过程能见度
  • 提高开发效率,便于发现错误和不一致性
  • 作为开发人员在一定阶段的工作成果和结束标志
  • 记录开发过程中的有关信息,便于协调以后的软件、开发、使用和维护
  • 提供对软件的运行、维护和培训的有关信息,便于相关人员和用户之间的协作、交流和了解
  • 便于潜在用户了解软件的功能、性能等各项指标,为它们选购符合自己需要的软件提供依据

2.软件生存周期模型

image.png
瀑布模型:
image.png
螺旋模型:
image.png
喷泉模型:
image.png

3.软件开发方法

软件开发方法:结构化方法、Jackson方法、原型化方法、面向对象开发方法
image.png

二、软件需求分析

1.可行性分析

image.png

2.软件需求分析

系统必须完成的事,以及必须具备的品质
包括:

  • 功能需求:所开发的产品必须具备什么样的功能
  • 非功能需求:是指产品必须具备的属性或品质,如可靠性、性能、响应时间、容错性、扩展性等
  • 设计约束:也称为限制条件、补充规约,这通常是对解决方案的一些约束说明,例如必须采用国有自主知识版 权的数据库系统、必须运行在UNIX操作系统之下等

三、软件设计

1.软件设计原则

软件设计原则: 抽象、模块化、信息屏蔽、模块独立
软件设计任务与活动
image.png

2.内聚和耦合

内聚:
image.png
耦合:
image.png

四、软件测试

1.V模型

image.png

2.软件测试过程

image.png

3.黑盒测试与白盒测试

image.png

  1. 语句覆盖: 被测试程序的每个语句至少执行一次。是一种很弱的覆盖标准
  2. 判定覆盖: 分支覆盖,判定表达式至少获得一次真、假值。判定覆盖比语句覆盖强。
  3. 条件覆盖: 每个判定语句中的每个逻辑条件的各种可能值至少满足一次。
  4. 路径覆盖: 覆盖所有可能的路径。
  5. 判定/条件覆盖: 每个条件所有可能的值(真/假)至少出现一次,且每个判定本身的判定结果(真/假)也至少出现一次。
  6. 条件组合覆盖: 每个判定中条件的各种可能值的组合都至少出现一次。

4.测试原则与注意事项

image.png

五、软件运行与维护

1.软件维护

image.png
image.png

六、程序员职业素养

1.软件工程基本原理

  1. 用分阶段的生命周期计划严格管理,将复杂问题简化处理
  2. 坚持进行阶段评审
  3. 记录软件每个版本的状态,实行严格的版本控制
  4. 采用现代程序设计技术,但不是最新的技术
  5. 结果能清除的审查
  6. 开发小组人员少而精
  7. 不断累积和改进软件过程实践经验和技术

2.软件工程的最终目标

image.png

3.程序员的职业素养

image.png

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TinyEMU之Linux Kernel编译

TinyEMU之Linux Kernel编译 1 准备工作2 安装RISC-V交叉编译器3 编译Linux Kernel4 镜像格式转换 本文属于《 TinyEMU模拟器基础系列教程》之一,欢迎查看其它文章。 1 准备工作 我们需要,下载以下内容。 编译好的RISC-V交叉编译器:riscv64-…

判断语句-Python

师从黑马程序员 if判断语句 if 要判断的条件: 条件成立时,要做的事(四个空格) age 15 if age>18:print("已经成年了")print("即将步入大学生活") print("时间过得真快") 成年人判断 ageint(input(&quo…

2024年高处安装、维护、拆除证模拟考试题库及高处安装、维护、拆除理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年高处安装、维护、拆除证模拟考试题库及高处安装、维护、拆除理论考试试题是由安全生产模拟考试一点通提供,高处安装、维护、拆除证模拟考试题库是根据高处安装、维护、拆除最新版教材,高…

【MASM汇编语言快速入门】8086MASM汇编深入理解指令对标志位的影响

8086MASM汇编深入理解指令对标志位的影响 文章目录 8086MASM汇编深入理解指令对标志位的影响0. 指令对标志位影响1. 指令对标志位影响速查表2. flags标志寄存器: 标志位含义解读flags1. 状态标志cf, pf, af, zf, sf, of2. 控制标志df, if, tf 详解:1. 传送指令2. 算…

EOS 与ESD 区别

ESD: 英文:Electrical Static Discharge; 定义:不同静电电位的两个物体之间的电荷转移;中文释为静电放电。静电是一种客观的自然现象; EOS: 英文:Electrical Over Stress 定义&#xf…

Avalonia学习1:下载通用皮肤SukiUI,并在windows上启动成功

目录 1、引言 2、碰到的问题 1、下载下拉VS2022老版本的用不了。 2、升级后,发现没有装wsl,导致启动不了,但wsl又由于国内的关系安装不了,怎么办呢, 1、引言 最近在想有没有什么可以开发在Linux下运行…

【C++】了解一下编码

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. 前言2. ASCII编码3. unicode4. GBK5. 类型转换 1. 前言 看到string里面还有Template instantiations&#xff1a; string其实是basic_string<char>&#xff0c;它还是一个模板。 再看看wstring&#xff1…

大型污水处理站运维公司怎么选择

大型污水处理站运维公司的选择是关乎环境保护和城市发展的重要决策。在如今污水治理领域日益重要的背景下&#xff0c;选择一家专业的运维公司对于确保污水处理站的高效运行、提高处理效果和保护环境具有关键意义。那么&#xff0c;我们应该如何选择适合自己的大型污水处理站运…

1.Spring入门

1.1 Spring简介 Spring是一个轻量级Java 企业级应用程序开发框架&#xff0c;目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架&#xff0c;为开发Java应用程序提供全面的基础架构支持。 Spring Fra…

代码随想录算法训练营第40天 | 343. 整数拆分 ,96.不同的二叉搜索树

动态规划章节理论基础&#xff1a; https://programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 343. 整数拆分 题目链接&#xff1a;https://leetcode.cn/problems/integer-break/ 思路&#xff1a; 动规五部曲&#xf…

tomcat 实现会话绑定

Tomcat 后端服务器实现 Session ID会话保持 基础架构&#xff1a; 7-6 代理服务器nginx配置 7-3 tomcat 服务器 7-5 同理 测试&#xff1a; 此时刷新&#xff0c;会话ID一直在变&#xff0c;这样不好 如何解决呢&#xff1f; 不好的是确定ip之后&#xff0c;会一直在一台机上…

AI对话/绘画完整系统(附完整源码,已开源)

文章目录 功能UI界面使用地址环境完整源码 功能 支持邮件激活账号&#xff0c;微信登录&#xff0c;短信登录支持上下文对话支持GPT4,claude3文件/图片分析分析&#xff0c;几乎所有模型均支持支持模糊匹配自定义回复消息支持按此按张按余额多种扣费方式支持套餐卡密生成及自定…

【C语言步行梯】各类操作符、类型转换与原码、反码、补码详谈

&#x1f3af;每日努力一点点&#xff0c;技术进步看得见 &#x1f3e0;专栏介绍&#xff1a;【C语言步行梯】专栏用于介绍C语言相关内容&#xff0c;每篇文章将通过图片代码片段网络相关题目的方式编写&#xff0c;欢迎订阅~~ 文章目录 算术运算符原码、反码、补码介绍移位运算…

C++11:自动类型推导 auto 和 decltype(下)

前面两篇文章分别介绍了 auto 和 decltype&#xff0c;今天聊聊它们两者之间的区别。 语法格式的区别 auto varname value; // auto的语法格式 decltype(exp) varname [ value]; // decltype的语法格式其中&#xff0c;varname 表示变量名&#xff0c;value 表示赋给变量的值…

如何有效地组织和管理自己的代码?

如何有效地组织和管理自己的代码&#xff1f; &#x1f9e9; &#x1f6e0;️ 如何有效地组织和管理自己的代码&#xff1f; &#x1f9e9;摘要引言正文1. 使用合适的目录结构2. 模块化设计3. 命名规范4. 版本控制 总结参考资料 博主 默语带您 Go to New World. ✍ 个人主页——…

L3-020 至多删三个字符(Python)

给定一个全部由小写英文字母组成的字符串&#xff0c;允许你至多删掉其中 3 个字符&#xff0c;结果可能有多少种不同的字符串&#xff1f; 输入格式&#xff1a; 输入在一行中给出全部由小写英文字母组成的、长度在区间 [4, 106] 内的字符串。 输出格式&#xff1a; 在一行…

Redis基础部分学习笔记

一、Redis的安装与配置 Redis是基于内存的&#xff0c;是单线程的。Redis可以用作数据库、缓存、消息中间件。 Redis一些常见的应用场景如下&#xff1a; &#xff08;1&#xff09;缓存 利用Redis快速的读写速度&#xff0c;可以将热点数据放入Redis中&#xff0c;应用从R…

零知识玩转AVH(7)—— 门槛任务(2)所遇错误及解决(1)

接前一篇文章&#xff1a;零知识玩转AVH&#xff08;6&#xff09;—— 门槛任务&#xff08;1&#xff09;源码下载、编译及运行 上一回说到完成门槛任务 https://github.com/ArmDeveloperEcosystem/Paddle-examples-for-AVH &#xff08;推荐&#xff0c;内含 ML 视觉用例&am…

前后端分离项目环境搭建

1. 使用到的技术和工具 springboot vue项目的搭建 工具 idea&#xff0c;mavennodejs 2. 后端框架搭建 利用maven创建springboot项目 3. 前端项目搭建 1. 安装相关工具 nodejs&#xff1a; 一个开源、跨平台的 JavaScript 运行时环境&#xff0c;可以理解成java当中需要…

企业微信 API 接口调用教程:深入解析企业微信 API 的用法

本文通过 access_token 凭证的方式来讲解怎么调用 企业微信 API&#xff0c;并一步步介绍如何获取企业微信 API 的 corpsecret、corpid、access_token 凭证以及怎么向企业微信的应用发送消息。 企业微信 API 在线地址为&#xff1a;qiyeweixin.apifox.cn/ &#xff0c;这个在线…