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

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

 一.软件

1.软件独立于硬件

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

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

2.软件是一种工具

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

3.软件的核心是程序

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

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

4.开发比编程远远复杂

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

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

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

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

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

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

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

 

二.软件工程

1.定义

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

2.一种工程活动

工程学科共性:

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

工程师有共同要求:

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

3.动机

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

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

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

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

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

5.追求足够好

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

6.产品基于虚拟计算机

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

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

7.最终目的

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

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

三.软件工程概览

1.工程知识域

5个技术知识域:

6个管理知识域:

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

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

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

2.开发活动

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

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

②探索并定义问题;

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


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

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

软件设计:

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

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

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

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


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


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

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

软件构造:

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

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

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

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

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

软件测试:

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

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

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


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

软件交付:

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

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

①安装与部署软件系统;

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

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

软件维护: 

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

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

3.常见的角色分工

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

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

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

相关文章

c++-vector

文章目录 前言一、vector介绍二、vector使用1、构造函数2、vector 元素访问3、vector iterator 的使用4、vector 空间增长问题5、vector 增删查改6、理解vector<vector< int >>7、电话号码的字母组合练习题 三、模拟实现vector1、查看STL库源码中怎样实现的vector2…

Leetcode.965 单值二叉树

本专栏内容为&#xff1a;leetcode刷题专栏&#xff0c;记录了leetcode热门题目以及重难点题目的详细记录 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;八大排序汇总 &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &…

Page Cache难以回收产生之直接内存回收引起 load 飙高或者业务时延抖动

相信你在平时的工作中&#xff0c;应该会或多或少遇到过这些情形&#xff1a;系统很卡顿&#xff0c;敲命令响应非常慢&#xff1b;应用程序的 RT 变得很高&#xff0c;或者抖动得很厉害。在发生这些问题时&#xff0c;很有可能也伴随着系统 load 飙得很高。 据我观察&#xf…

Android逆向学习(五)app进行动态调试

Android逆向学习&#xff08;五&#xff09;app进行动态调试 一、写在前面 非常抱歉鸽了那么久&#xff0c;前一段时间一直在忙&#xff0c;现在终于结束了&#xff0c;可以继续更新android逆向系列的&#xff0c;这个系列我会尽力做下去&#xff0c;然后如果可以的话我看看能…

vued中图片路径与主机路径相关联,例如img:‘http://127.0.0.1:8000/media/data/els.jpg‘

1.在Django项目的settings.py文件中&#xff0c;确保已指定正确的MEDIA_URL和MEDIA_ROOT。MEDIA_URL定义了图片的URL前缀&#xff0c;MEDIA_ROOT定义了本地文件系统中存储图片的路径。 2.在 Django 项目的主 urls.py 文件中&#xff0c;确保包含了适当的 URL 配置&#xff0c;以…

国庆中秋特辑(六)大学生常见30道宝藏编程面试题

以下是 30 道大学生 Java 面试常见编程面试题和答案&#xff0c;包含完整代码&#xff1a; 什么是 Java 中的 main 方法&#xff1f; 答&#xff1a;main 方法是 Java 程序的入口点。它是一个特殊的方法&#xff0c;不需要被声明。当 Java 运行时系统执行一个 Java 程序时&…

uboot启动流程-涉及lowlevel_init汇编函数

一. uboot启动流程涉及函数 之前文章简单分析了 uboot启动流程的开始&#xff0c;从链接脚本文件 u-boot.lds 中&#xff0c;我们已经知道了入口点是 arch/arm/lib/vectors.S 文件中的 _start函数。 _start函数&#xff1a;调用了 reset 函数&#xff0c;reset 函数内部&…

大屏自适应容器组件-Vue3+TS

1.引言 在做数字大屏时&#xff0c;图表能跟着浏览器的尺寸自动变化&#xff0c;本文采用Vue3前端框架&#xff0c;采用TypeScript语言&#xff0c;封装了一个大屏自适应组件&#xff0c;将需要显示的图表放入组件的插槽中&#xff0c;就能实现自适应屏幕大小的效果。 2.实际…

Flutter笔记 - 用于描述Align的Alignment、AlignmentDirectional、AlignmentTween类

Flutter笔记 用于描述Align的Alignment、AlignmentDirectional、AlignmentTween类 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_…

结构型设计模式——外观模式

摘要 本文主要分析设计模式 - 结构型 - 外观(Facade)&#xff0c;它提供了一个统一的接口&#xff0c;用来访问子系统中的一群接口&#xff0c;从而让子系统更容易使用。 一、外观模式的意图 提供了一个统一的接口&#xff0c;用来访问子系统中的一群接口&#xff0c;从而让…

23.2 Bootstrap 卡片

1.卡片 1.1卡片样式 在Bootstrap 5中, .card, card-header, .card-body, .card-footer类是用于创建卡片样式.下面是这些类的简单介绍: * 1. .card: 用于创建一个基本的卡片容器它作为一个包裹元素,通常与其他卡片类一起使用.* 2. .card-header: 用于创建卡片的头部部分.通常在…

【Vue3】Mitt

在 Vue3 中&#xff0c;$on&#xff0c;$off 和 $once 实例方法被移除&#xff0c;EventBus 无法使用了。那么此时&#xff0c;我们可以使用 Mitt 库&#xff08;发布订阅模式的设计&#xff09;。 // 安装 mitt npm install mitt -S// main.ts import { createApp } from vue…

力扣-383.赎金信

Idea 使用一个hashmap 或者一个int数组存储第二次字符串中每一个字符及其出现的次数 遍历第一个字符串&#xff0c;讲出现的重复字符减1&#xff0c;若该字符次数已经为0&#xff0c;则返回false AC Code class Solution { public:bool canConstruct(string ransomNote, strin…

基于matlab创作简易表白代码

一、程序 以下是一个基于MATLAB的简单表白代码&#xff1a; % 表白代码 clc; % 清除命令行窗口 clear; % 清除所有变量 close all; % 关闭所有图形窗口 % 输入被表白者的名字 name input(请输入被表白者的名字&#xff1a;, s); % 显示表白信息 fprintf(\n); fprintf(亲爱的…

Scrapy框架Splash渲染

Scrapy框架是一款强大而灵活的Python网络爬虫框架&#xff0c;用于快速、高效地爬取和提取网页数据。然而&#xff0c;对于一些使用动态渲染技术的网站&#xff0c;Scrapy在处理JavaScript生成的内容上可能会有些困难。为了应对这种情况&#xff0c;Scrapy提供了Splash渲染服务…

vcomp120.dll丢失的详细解决方法,全面分享5个解决方法分享

vcomp120.dll 是 Visual C Redistributable 的一个组件&#xff0c;是许多 Windows 应用程序所必需的动态链接库 (DLL) 之一。如果计算机上缺少 vcomp120.dll 文件&#xff0c;或者该文件已损坏或不正确&#xff0c;可能会导致许多应用程序无法正常运行&#xff0c;出现“无法继…

AJAX--Express速成

一、基本概念 1、AJAX(Asynchronous JavaScript And XML)&#xff0c;即为异步的JavaScript 和 XML。 2、异步的JavaScript 它可以异步地向服务器发送请求&#xff0c;在等待响应的过程中&#xff0c;不会阻塞当前页面。浏览器可以做自己的事情。直到成功获取响应后&#xf…

Pikachu靶场——目录遍历漏洞和敏感信息泄露

文章目录 1. 目录遍历漏洞1.1 源码分析1.2 漏洞防御 2. 敏感信息泄露2.1 漏洞防御 1. 目录遍历漏洞 漏洞描述 目录遍历漏洞发生在应用程序未能正确限制用户输入的情况下。攻击者可以利用这个漏洞&#xff0c;通过在请求中使用特殊的文件路径字符&#xff08;如 …/ 或 %2e%2e…

键盘上F1至F12键的作用

多年来&#xff0c;我们习惯了最上排的12个按键&#xff0c;从F1到F12&#xff0c;它们被称为“快速功能键”&#xff0c;可以让你更轻松地操作电脑&#xff1b;但是&#xff0c;很多人可能从未使用过它们&#xff0c;也从来不知道它们的用途。那么今天&#xff0c;就向大家科普…

2024级199管理类联考之数学基础(上篇)

管理类考试介绍 管理综合200分,时间3小时 数学&#xff1a;75分/25题,是拉开差距的核心模块 问题求解题&#xff1a;15个,5选一条件充分性判断&#xff1a;10个,结合两个条件选择答案 条件一充分,条件二不充分&#xff1a;A条件一不充分,条件二充分&#xff1a;B条件一充分,条…