软件工程与计算总结(一)软件工程基础
国庆快乐,今天开始更新《软件工程与计算(卷二)》的重要知识点内容~
一.软件
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中的枚举和模式匹配
专栏简介:本专栏作为Rust语言的入门级的文章,目的是为了分享关于Rust语言的编程技巧和知识。对于Rust语言,虽然历史没有C、和python历史悠远,但是它的优点可以说是非常的多,既继承了C运行速度,还拥有了Java…...
好物周刊#19:开源指北
https://github.com/cunyu1943/JavaPark https://yuque.com/cunyu1943 村雨遥的好物周刊,记录每周看到的有价值的信息,主要针对计算机领域,每周五发布。 一、项目 1. Vditor 一款浏览器端的 Markdown 编辑器,支持所见即所得、…...
分布式数据库(林子雨慕课课程)
文章目录 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.建立整个网页索引…...
使用UiPath和AA构建的解决方案 3. CRM 自动化
您是否曾经从一个应用程序中查找数据并更新另一个系统? 在许多情况下,人们在系统之间复制和移动数据。有时,可能会发生“转椅活动”,从而导致人为失误。RPA可以帮助我们自动化这些活动,使其更快,同时还可以消除任何人为错误。 在这个项目中,我们将在客户服务中自动化一…...
【C++设计模式之状态模式:行为型】分析及示例
简介 状态模式(State Pattern)是一种行为型设计模式,它允许对象在内部状态改变时改变其行为,看起来就像是改变了其类。状态模式将对象的状态封装成不同的类,并使得对象在不同状态下有不同的行为。 描述 状态模式通过…...
微信小程序使用路由传参和传对象的方法
近期在做微信小程序开发,在页面跳转时,需要携带参数到下一个页面,尤其是将对象传入页面。为了方便重温,特此记录。 路由传字符串参数 原始页面 传递字符串参数比较简单。路由跳转有两种方式,一种是通过navigator组件…...
中国创可贴市场研究与未来预测报告(2023版)
内容简介: 创可贴由胶布(带)、吸水垫、防粘层等组成,胶布以弹性布、棉布、无纺布或PE、PVC、PU打孔膜、TPU等材料为常见基材,涂以氧化锌和橡胶为主要原料的胶浆或医用压敏胶黏剂或丙烯酸酯胶粘剂制成。 目前中国主要…...
水库安全监测方案(实时数据采集、高速数据传输)
一、引言 水库的安全监测对于防止水灾和保障人民生命财产安全至关重要。为了提高水库安全监测的效率和准确性,本文将介绍一种使用星创易联DTU200和SG800 5g工业路由器部署的水库安全监测方案。 二、方案概述 本方案主要通过使用星创易联DTU200和SG800 5g工业路…...
vue项目 ueditor使用示例
简介 UEditor是由百度Web前端研发部开发的所见即所得富文本web编辑器,具有轻量,功能丰富,易扩展等特点。UEditor支持常见的文本编辑功能,如字体、颜色、大小、加粗、斜体、下划线、删除线等,同时还支持超链接、图片上…...
深度学习笔记之优化算法(四)Nesterov动量方法的简单认识
机器学习笔记之优化算法——Nesterov动量方法的简单认识 引言回顾:梯度下降法与动量法Nesterov动量法Nesterov动量法的算法过程描述总结 引言 上一节对动量法进行了简单认识,本节将介绍 Nesterov \text{Nesterov} Nesterov动量方法。 回顾:…...
比 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:全部随机生成 "#" color(""); // #201050…...
Savepoints
语法 SAVEPOINT 名称 RELEASE SAVEPOINT 名称 ROLLBACK TRANSACTION TO SAVEPOINT 名称 Savepoints 与BEGIN和COMMIT类似的创建事务的方法,名称不要求唯一且可以嵌套使用。 可以用在BEGIN…COMMIT定义的事务内部或外部。当在外部时,最外层的savepoin…...
【MySQL】基本查询(二)
文章目录 一. 结果排序二. 筛选分页结果三. Update四. Delete五. 截断表六. 插入查询结果结束语 操作如下表 //创建表结构 mysql> create table exam_result(-> id int unsigned primary key auto_increment,-> name varchar(20) not null comment 同学姓名,-> chi…...
Qt:多语言支持,构建全面应用程序“
Qt:强大API、简化框架、多语言支持,构建全面应用程序" 强大的API:Qt提供了丰富的API,包括250多个C类,基于模板的集合、序列化、文件操作、IO设备、目录管理、日期/时间等功能。还包括正则表达式处理和支持2D/3D…...
性能监控-链路级监控工具
常见的链路监控工具,我们都称之为 APM 开源工具 几个开源的好用的工具,它们分别是 Pinpoint、SkyWalking、Zipkin、CAT 网络上也有人对这几个工具做过测试 比对,得到的结论是每个产品对性能的影响都在 10% 以下,其中 SkyWalking …...
clickonce 程序发布到ftp在使用cnd 加速https 支持下载,会不会报错
ClickOnce 是一种用于发布和部署.NET应用程序的技术,通常用于本地部署或通过网络分发应用程序。将 ClickOnce 程序发布到 FTP 服务器并使用 CDN(内容分发网络)进行加速是可能的,但要确保配置正确以避免出现错误。 在使用 CDN 加速…...
Nginx详细学习记录
1. Nginx概述 Nginx是一个轻量级的高性能HTTP反向代理服务器,同时它也是一个通用类型的代理服务器,支持绝大部分协议,如TCP、UDP、SMTP、HTTPS等。 1.1 Nginx基础架构 Nginx默认采用多进程工作方式,Nginx启动后,会运行…...
golang gin——中间件编程以及jwt认证和跨域配置中间件案例
中间件编程jwt认证 在不改变原有方法的基础上,添加自己的业务逻辑。相当于grpc中的拦截器一样,在不改变grpc请求的同时,插入自己的业务。 简单例子 func Sum(a, b int) int {return a b }func LoggerMiddleware(in func(a, b int) int) f…...
如何快速制作令人惊叹的长图海报
在当今的数字时代,制作一张吸引人的长图海报已成为许多人的需求。无论是为了宣传活动,还是展示产品,一张设计精美的长图海报都能引起人们的注意。下面,我们将介绍一种简单的方法,使用在线海报制作工具来创建长图海报。…...
D (1092) : DS循环链表—约瑟夫环(Ver. I - A)
Description N个人坐成一个圆环(编号为1 - N),从第S个人开始报数,数到K的人出列,后面的人重新从1开始报数。依次输出出列人的编号。 例如:N 3,K 2,S 1。 2号先出列,然…...
Python爬虫(二十二)_selenium案例:模拟登陆豆瓣
本篇博客主要用于介绍如何使用seleniumphantomJS模拟登陆豆瓣,没有考虑验证码的问题,更多内容,请参考:Python学习指南 #-*- coding:utf-8 -*-from selenium import webdriver from selenium.webdriver.common.keys import Keysimp…...
1. Flink程序打Jar包
文章目录 步骤注意事项 步骤 用 maven 打 jar 包,需要在 pom.xml 文件中添加打包插件依赖 <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><ver…...
泊头网站建设/宁波seo网站排名优化公司
为什么80%的码农都做不了架构师?>>> ./config --prefix/usr/local/OpenSSL -fPIC shared 转载于:https://my.oschina.net/eduosi/blog/782783...
网站开发公司名单/最新消息今天的新闻
Windows》Customize Perspective》Command Groups Availability选项卡,左边的Available command groups 下的Android 开头的那几个都打上勾,然后ok就好了...
wordpress主题简约博客/培训课程网站
描述: 实现 LFUCache 类: LFUCache(int capacity) - 用数据结构的容量 capacity 初始化对象 int get(int key) - 如果键存在于缓存中,则获取键的值,否则返回 -1。 void put(int key, int value) - 如果键已存在,则变更…...
做58网站怎么赚钱/网址怎么创建
关于编写出现1064的问题 原因如下 sql 语句中的字段和MySQL数据库关键字冲突,如update 、create、select、database等; sql语句标点错误,如单双引号误写,分号中文; 编码格式错误; 写sql语句的时候&…...
网科创想网站管理/关键词搜索查找工具
上一篇我们学习了什么是顺序队列和基本实现方法,但是顺序队列自身存在一个很大的bug,就是当我们把一个元素入队时,队尾的指针会向前移动,当元素出队时,队头指针也会向前移动,这样就造成了元素都持续向一个方…...
珠海网站建设公司有哪些/海南网站设计
参考链接:https://blog.csdn.net/csdn2314/article/details/90021367 authenticating with the app store 一直卡住最近更新App,要上传到 App Store 的时候,一直卡在 Authenticating with the App Store ,有人说 打开终端执行以下命令即可&am…...