当前位置: 首页 > news >正文

软件工程与计算总结(一)软件工程基础

国庆快乐,今天开始更新《软件工程与计算(卷二)》的重要知识点内容~

 一.软件

1.软件独立于硬件

早期的软件是为了计算机硬件在研究型项目中而开发制造的,人们使用专门针对于硬件的指令码和汇编语言编写,这也是最早软件的雏形~此时软件是为了最大化计算机硬件的能力而编写的,没有独立存在的需求,本质上被认为是硬件的零件之一

导论20世纪5/60年代中期,计算机硬件开始进入商用,同时带动了软件的发展——直至如今,绝大多数的软件是独立于计算机硬件的

2.软件是一种工具

软件能够完成复杂的科学计算,是一种有用的计算工具~随着商用计算机的普及,软件被广泛利用与商业计算和数据处理之中

3.软件的核心是程序

软件以程序代码为核心,由3个部分组成:

  • 程序:机器指令的集合
  • 文档:描述程序操作和使用的文档
  • 数据:程序运行时需要使用的信息

4.开发比编程远远复杂

软件的发展和变化有两个重要趋势:

  • 软件的规模和复杂度日益增加
  • 用于解决实际业务问题的应用软件越来越多

为了控制因为程序增长带来的复杂度,开发人员需要首先进行需求开发明确问题域目标,然后进行设计将单个的复杂程序分解为多个简单部分以方便编程~

随着规模的增加,编程的工作比例会下降,其他的比例会上升:

5.应用软件基于现实又高于现实

总的来说,应用软件和现实的关系是:始于现实、基于现实并改进现实,实现现实的螺旋上升~

  • 首先,软件始于现实,有需要解决的问题时人们才会要求开发软件
  • 其次,基于现实才能解决问题——即以现实为基础,然后才能构建解决问题的软件方案~
  • 最后,软件并不是单纯的模拟显示,它还要解决显示世界的问题,把现实世界变得更好

 

二.软件工程

1.定义

  • 简单理解:生产软件的工程学
  • 标准定义:应用系统的、规范的、可量化的方法来开发、运行和维护软件,即将工程应用到软件

2.一种工程活动

工程学科共性:

  • 具有解决实际问题的动机
  • 应用科学知识指导工程活动
  • 成本效益比为基本条件
  • 构建及其或事物
  • 以服务人类为最终目的

工程师有共同要求:

  • 仔细评估项目的可选活动
  • 需要对某些对象进行度量
  • 强调项目设计过程中的纪律性
  • 可胜任:研发、开发、设计、生产、测试、管理、销售等多种角色
  • 选择和使用合适的工具是工程的关键要素
  • 通过专业写会发展和确认原理、标准和最佳实践方法,并提高个人能力

3.动机

软件工程需要解决的问题领域范围广泛,没有行业和领域限制,需要客户和用户的紧密合作~

与传统的工科相比,一个软件工程师要能够在不同的行业领域里表现出同等的工作能力,而同时,软件工程师不可能了解所有的领域,所以他们要与实际问题的来源——客户和用户进行深入的交流和合作,因为客户和用户最了解领域知识和问题。但在软件工程领域,用户必须积极参与构建过程才能得到心仪的软件产品,实践也一再表明,客户和用户的有效参与是软件成功的必要因素~

软件工程师在构建软件之前要花很大力气去明确项目的目标——这一点非常重要!

4.科学性、实践性、工艺性并重

软件工程的指导知识还是“工艺、实践方法/原则和科学知识并立”,软件工程行为既有科学性,又有实践性,还有工艺性~

5.追求足够好

软件工程不追求最好的方案,只要求足够好的方案——即成本效益比有效的方案~

6.产品基于虚拟计算机

软件工程的核心是创建软件方案,描述所需软件系统的特征和行为,然后把软件方案通通过编程移植到通用的计算机上面,计算机就会神奇的表现出软件方案所描述的特征和行为~

(本质上就是各种个人PC)

7.最终目的

承担社会责任,促进整个社会的进步——软件工程追求生产方式的成功,而不是特定产品的成功~

  • 软件工程要以科学知识为基础,建立成熟的方法与技术,通过可普及和可重复的生产方式开发软件
  • 软件工程的社会责任最基本要求是开发者对软件产品的质量负责,此外还要求软件工程从业者要遵守职业道德(保证质量,不危害他人) 

三.软件工程概览

1.工程知识域

5个技术知识域:

6个管理知识域:

11个知识域并非等同重要~

职业软件工程师的软件知识重要性评价:

软件工程师要两个的掌握各个知识域,尤其是软件技术知识域,还要具备良好的交流沟通能力~ 

2.开发活动

需求开发:
软件工程要解决的实际问题是范围广泛并且模糊不清的,所以在开发软件之初就需要进行需求开发,它从空白开始,主要目的是建立软件解决方案,具体任务包括:

①探索并明确描述现实世界信息;

②探索并定义问题;

③建立软件系统的解决方案,使得将软件系统应用到现实世界之后能够解决问题。


软件解决方案又称为软件产品设计方案,需求开发产生的主要制品是软件需求规格说明文档和需求分析模型:

  • 软件需求规格说明文档详细描述了软件解决方案的内容
  • 需求分析模型重点描述了软件解决方案中的复杂技术方案

软件设计:

软件设计在需求开发之后进行,它以软件需求规格说明为基础,主要目的是建立软件系统的构建方案,具体任务括:

①软件体系结构设计,确定系统的高层结构;

②详细设计,将高层结构的部件设计为更详细的模块与类,定义模块与类的功能以及它们的接口;

③人机交互设计,设计软件系统与外界的有效交互方案,包括设计用户界面。


软件构建方案又称为软件工程设计方案,是由抽象软件实体组成的复杂概念结构。工程设计方案是从生产者的角度和产品内部结构的方式描述产品


软件设计产生的主要制品是软件设计描述文档和软件设计模型:

  • 软件设计描述文档:软件构建方案的内容
  • 软件设计模型:软件构建方案中的细节

软件构造:

软件构造在软件设计之后进行,它以软件构建方案为基础,主要目的是使用编程语言实现软件构建方案,具体任务包括:

①程序设计,以“数据结构+算法”的方式继续细化和深化软件构建方案基本单位(模块或者类)的设计

②编程,将程序设计方案映射为代码;

③调试,修改程序代码,解决程序中发现的问题。

软件构造产生的主要制品是程序源代码和编译后的可执行程序

软件测试:

软件测试的主要目的是验证和确认软件产品的质量,它包含两重含义:

①从技术上保证产品的质量是合格的,主要判定产品生产中的技术运用过程是否正确;

②保证产品质量是符合需求规格的,主要判定产品生产中的技术运用出发点是否正确。


软件测试产生的主要制品是测试报告,它描述了测试中发现的错误和故障。

软件交付:

软件交付在软件产品通过所有测试之后进行,主要目的是将软件产品交付给用户使用

软件交付的主要任务包括:

①安装与部署软件系统;

②培训用户使用软件并提供文档支持。

软件交付产生的主要制品是用户使用手册,它描述了软件使用方法和常见故障的解决。

软件维护: 

软件维护又称为软件演化,在软件产品交付给用户之后进行,直到软件产品消亡才结束,主要目的是保持交付给用户的软件产品能够正常运行。

软件维护的主要任务是修改软件使之移除缺陷、适应环境变化、提高软件质量或满足新的需求。

3.常见的角色分工

  • 需求工程师:需求开发
  • 软件体系结构师:体系结构设计
  • 软件设计师:详细设计
  • 程序员:软件构造
  • 人机交互设计师:人机交互设计
  • 软件测试人员:软件测试
  • 项目管理人员:计划、组织、领导、协调
  • 软件配置管理人员:管理各种产品
  • 质量保障人员:监督、保障质量
  • 培训和支持人员:负责软件交付与维护
  • 文档编写人员:专门写作文档

相关文章:

软件工程与计算总结(一)软件工程基础

国庆快乐,今天开始更新《软件工程与计算(卷二)》的重要知识点内容~ 一.软件 1.软件独立于硬件 早期的软件是为了计算机硬件在研究型项目中而开发制造的,人们使用专门针对于硬件的指令码和汇编语言编写,这也是最早软件…...

SpringBoot-黑马程序员-学习笔记(一)

8.pom文件中的parent 我们使用普通maven项目导入依赖时,通常需要在导入依赖的时候指定版本号,而springboot项目不需要指定版本号,会根据当前springboot的版本来下载对应的最稳定的依赖版本。 点开pom文件会看到这个: 继承了一个…...

Apache Tomcat安装、运行

介绍 Apache Tomcat是下面多个规范的一个开源实现:Jakarta Servlet、Jakarta Server Pages、Jakarta Expression Language、Jakarta WebSocket、Jakarta Annotations 和 Jakarta Authentication。这些规范是 Jakarta EE 平台的一部分。 Jakarta EE 平台是Java EE平…...

聊聊分布式架构05——[NIO基础]BIO到NIO的演进

目录 I/O I/O模型 BIO示例 BIO与NIO比较 NIO的三大核心 NIO核心之缓冲区 Buffer常用子类: Buffer常用API Buffer中的重要概念 NIO核心之通道 FileChannel 类 FileChannel常用方法 NIO核心之选择器 概述 应用 NIO非阻塞原理分析 服务端流程 客户端…...

聊天、会议、多媒体一体化:多平台支持的即时通讯系统 | 开源日报 No.44

harness/gitness Stars: 28.2k License: Apache-2.0 Gitness 是一个建立在 Drone 之上的新型开源开发者平台,具备代码托管和流水线功能。它提供了以下核心优势: 轻量级、超快速的代码托管和持续集成服务支持 Docker 容器化部署可以在本地环境中构建和…...

收录一些常见的算法题型

常用算法 字符串 s.trim():去掉字符串首尾的空格s.split("\\s"):按照空格对字符串分割 树 前中后序遍历 /*** 统一一下* param root* return*///前序public static List<Integer> preOrder(TreeNode root){List<Integer> list new ArrayList();Stac…...

Node-RED系列教程-25node-red获取天气

安装节点:node-red-contrib-weather 节点图标如下: 使用说明:node-red-contrib-weather (node) - Node-RED 流程图中填写经度和纬度即可。 演示: json内容: {...

Rust中的枚举和模式匹配

专栏简介&#xff1a;本专栏作为Rust语言的入门级的文章&#xff0c;目的是为了分享关于Rust语言的编程技巧和知识。对于Rust语言&#xff0c;虽然历史没有C、和python历史悠远&#xff0c;但是它的优点可以说是非常的多&#xff0c;既继承了C运行速度&#xff0c;还拥有了Java…...

好物周刊#19:开源指北

https://github.com/cunyu1943/JavaPark https://yuque.com/cunyu1943 村雨遥的好物周刊&#xff0c;记录每周看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;每周五发布。 一、项目 1. Vditor 一款浏览器端的 Markdown 编辑器&#xff0c;支持所见即所得、…...

分布式数据库(林子雨慕课课程)

文章目录 4. 分布式数据库HBase4.1 HBase简介4.2 HBase数据模型4.3 HBase的实现原理4.4 HBase运行机制4.5 HBase的应用方案4.6 HBase安装和编程实战 4. 分布式数据库HBase 4.1 HBase简介 HBase是BigTable的开源实现 对于网页搜索主要分为两个阶段 1.建立整个网页索引&#xf…...

使用UiPath和AA构建的解决方案 3. CRM 自动化

您是否曾经从一个应用程序中查找数据并更新另一个系统? 在许多情况下,人们在系统之间复制和移动数据。有时,可能会发生“转椅活动”,从而导致人为失误。RPA可以帮助我们自动化这些活动,使其更快,同时还可以消除任何人为错误。 在这个项目中,我们将在客户服务中自动化一…...

【C++设计模式之状态模式:行为型】分析及示例

简介 状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许对象在内部状态改变时改变其行为&#xff0c;看起来就像是改变了其类。状态模式将对象的状态封装成不同的类&#xff0c;并使得对象在不同状态下有不同的行为。 描述 状态模式通过…...

微信小程序使用路由传参和传对象的方法

近期在做微信小程序开发&#xff0c;在页面跳转时&#xff0c;需要携带参数到下一个页面&#xff0c;尤其是将对象传入页面。为了方便重温&#xff0c;特此记录。 路由传字符串参数 原始页面 传递字符串参数比较简单。路由跳转有两种方式&#xff0c;一种是通过navigator组件…...

中国创可贴市场研究与未来预测报告(2023版)

内容简介&#xff1a; 创可贴由胶布&#xff08;带&#xff09;、吸水垫、防粘层等组成&#xff0c;胶布以弹性布、棉布、无纺布或PE、PVC、PU打孔膜、TPU等材料为常见基材&#xff0c;涂以氧化锌和橡胶为主要原料的胶浆或医用压敏胶黏剂或丙烯酸酯胶粘剂制成。 目前中国主要…...

水库安全监测方案(实时数据采集、高速数据传输)

​ 一、引言 水库的安全监测对于防止水灾和保障人民生命财产安全至关重要。为了提高水库安全监测的效率和准确性&#xff0c;本文将介绍一种使用星创易联DTU200和SG800 5g工业路由器部署的水库安全监测方案。 二、方案概述 本方案主要通过使用星创易联DTU200和SG800 5g工业路…...

vue项目 ueditor使用示例

简介 UEditor是由百度Web前端研发部开发的所见即所得富文本web编辑器&#xff0c;具有轻量&#xff0c;功能丰富&#xff0c;易扩展等特点。UEditor支持常见的文本编辑功能&#xff0c;如字体、颜色、大小、加粗、斜体、下划线、删除线等&#xff0c;同时还支持超链接、图片上…...

深度学习笔记之优化算法(四)Nesterov动量方法的简单认识

机器学习笔记之优化算法——Nesterov动量方法的简单认识 引言回顾&#xff1a;梯度下降法与动量法Nesterov动量法Nesterov动量法的算法过程描述总结 引言 上一节对动量法进行了简单认识&#xff0c;本节将介绍 Nesterov \text{Nesterov} Nesterov动量方法。 回顾&#xff1a;…...

比 N 小的最大质数

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…...

JavaScript 生成随机颜色

代码 function color(color) {return (color "0123456789abcdef"[Math.floor(Math.random() * 6)]) && (color.length 6 ? color : arguments.callee(color)); }使用 // 用法1&#xff1a;全部随机生成 "#" color(""); // #201050…...

Savepoints

语法 SAVEPOINT 名称 RELEASE SAVEPOINT 名称 ROLLBACK TRANSACTION TO SAVEPOINT 名称 Savepoints 与BEGIN和COMMIT类似的创建事务的方法&#xff0c;名称不要求唯一且可以嵌套使用。 可以用在BEGIN…COMMIT定义的事务内部或外部。当在外部时&#xff0c;最外层的savepoin…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...