软件与软件工程
软件
软件的概念以及特点:
软件是计算机系统中不可或缺的一部分,与硬件共同构成特定的系统功能。
人们通常把各种不同功能的程序,包括系统程序、应用程序、用户自己编写的程序等称为软件
软件的概念:
软件不仅包括程序,还包括程序的处理对象——数据,以及与程序开发、维护和使用有关的图文资料,即文档 .
软件=程序+数据+文档
程序是为实现软件的功能和性能要求而编写的指令序列。
数据是指使程序能够正常操纵信息的数据结构。
文档是与程序开发、维护和使用有关的图文资料。
软件的特点
软件是一种逻辑实体,具有抽象性
软件的生产与硬件的制造不同,是人类智力劳动的产物
软件在运行使用过程中,不会磨损
软件的开发至今尚未完全摆脱手工艺的开发方式
软件的开发和运行必须依附于特定的计算机系统环境

软件的分类

软件危机
软件危机的表现与原因
软件危机是指人们在开发软件和维护软件过程中所遇到的一系列的问题
主要表现为:
开发出来的软件产品不能满足用户的需求
相比越来越廉价的硬件,软件代价过高
软件质量难以得到保证,且难以发挥硬件潜能
难以准确估计软件开发、维护的费用以及开发周期
难于控制开发风险,开发速度赶不上市场变化
软件产品修改维护困难,集成遗留系统更困难
软件文档不完备,并且存在着文档内容与软件产品不符的情况
软件危机出现的原因
忽视软件开发前期的需求分析
开发过程缺乏统一的、规范化的方法论的指导
文档资料不齐全或不准确
忽视与用户之间、开发组成员之间的交流
忽视测试的重要性
不重视维护或由于上述原因造成维护工作的困难
从事软件开发的专业人员对这个产业认识不充分,缺乏经验
没有完善的质量保证体系
软件危机的启示
软件产品是复杂的人造系统,具有复杂性、不可见性和易变性,难以处理
个人或小组在开发小型软件时使用到的非常有效的编程技术和过程,在开发大型、复杂系统时难以发挥同样的作用
软件开发的创造性成分很大、发挥的余地也很大,很接近于艺术
计算机和软件技术的快速发展,提高了用户对软件的期望,促进了软件产品的演化,为软件产品提出了新的、更多的需求,难以在可接受的开发进度内保证软件的质量
几乎所有的软件项目都是新的,而且是不断变化的
“人月神化”现象——生产力与人数并不成正比
软件工程
软件工程的概念
IEEE对软件工程的定义为:
(1)将系统化、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件
(2)对(1)中所述方法的研究
具体说来,软件工程是以借鉴传统工程的原则、方法,以提高质量,降低成本为目的指导计算机软件开发和维护的工程学科。它是一种层次化的技术

软件工程的根基在于对质量的关注;
软件工程的基础是过程层,它定义了一组关键过程区域的框架,使得软件能够被合理和及时地开发;
软件工程的方法提供了建造软件在技术上需要“做什么”,它覆盖了一系列的任务,包括需求分析、设计、编程、测试和支持等;
软件工程的工具对过程和方法提供了自动的或半自动的支持。
1.3.2 软件工程的发展
1968和1969年:真正意义上的“软件工程”诞生
70年代:瀑布模型,结构化编程
80年代:COCOMO模型,CMM模型,关系数据库,测试工具和配置管理工具,计算机辅助软件工程(CASE),其他一些潜在的提高软件生产率的方法
90年代:面向对象方法,敏捷方法
21世纪:快速应用开发,“大规模计算”,“自治和生化计算机”,“模型驱动体系结构”,“构件化软件开发”
1.3.3 软件工程研究的内容
方法与技术:主要讨论软件开发各种方法及其工作模型
工具与环境:软件工具为软件工程方法提供支持,研究计算机辅助软件工程,建立软件工程环境
管理技术:对软件工程全过程的控制和管理
标准与规范:使得各项工作有章可循,以保证软件生产效率和软件质量的提高
1.3.4 软件工程目标和原则
软件工程要达到的基本目标包括:
达到要求的软件功能
取得较好的软件性能
开发出高质量的软件
付出较低的开发成本
需要较低的维护费用
能按时完成开发工作,及时交付使用
软件工程的七条基本原则
用分阶段的生命周期计划进行严格的管理
坚持进行阶段评审
实行严格的产品控制
采用现代程序设计技术
软件工程结果应能清楚地审查
开发小组的人员应该少而精
承认不断改进软件工程实践的必要性
1.3.5 软件工程知识体系
软件需求
软件设计
软件构建
软件测试
软件维护
软件配置管理
软件工程管理
软件工程过程
软件工程工具和方法
软件质量
软件开发方法
使用定义好的技术集及符号表示组织软件生产的过程
目标是在规定的时间和成本内,开发出符合用户需求的高质量的软件
常见的软件开发方法
结构化方法
面向数据结构方法
面向对象方法
形式化方法
问题分析法
可视化开发方法
软件工程工具
软件工程工具通常有三种分类标准
按照功能划分:可视化建模工具、程序开发工具、自动化测试工具、文档编辑工具、配置管理工具、项目管理工具
按照支持的过程划分:设计工具、编程工具、维护工具
按照支持的范围划分:窄支持(工具)、较宽支持(工作台)和一般支持工具(环境)
经常会使用到的软件工程工具
分析设计工具
面向通用软件设计:Microsoft Visio
面向对象软件设计:Rational Rose,
数据库设计:PowerDesigner
**程序开发工具:**集成开发环境(IDE)通过提供代码高亮、补全,内置调试工具等功能,大大提高了效率。
IDE 主流的实例如表所示。
测试工具:
在测试阶段,通常会使用自动化测试工具进行测试。除单元测试工具外,较为流行的自动化测试工具包括 C/S 功能测试工具 WinRunner,性能测试工具 LoadRunner、Jmeter,测试管理工具 TestDirector、Jira,Web服务测试工具 QTester(简称QT)、SoapUI 等。单元测试工具通常与语言及开发框架关联密切,部分实例如表所示。
配置管理工具:Microsoft Visual Sourcesafe,ClearCase
项目管理工具:Microsoft Project,CA-SuperProject,Time Line
参考:
《实用软件工程》(第二版)郑人杰 殷人昆 陶永累 清华大学出版社
相关文章:
软件与软件工程
软件 软件的概念以及特点: 软件是计算机系统中不可或缺的一部分,与硬件共同构成特定的系统功能。 人们通常把各种不同功能的程序,包括系统程序、应用程序、用户自己编写的程序等称为软件 软件的概念: 软件不仅包括程序,还包括程序…...
记录一下:基于nginx配置的封禁真实IP
nginx Situation(背景)Task(任务)Action(行动)1:方法1:使用nginx 自带的deny 和 allow 来实现2:方法2:添加配置 Result(结果) Situati…...
【狂神】Spring5笔记(1-9)
目录 首页: 1.Spring 1.1 简介 1.2 优点 2.IOC理论推导 3.IOC本质 4.HelloSpring ERROR 5.IOC创建对象方式 5.1、无参构造 这个是默认的 5.2、有参构造 6.Spring配置说明 6.1、别名 6.2、Bean的配置 6.3、import 7.DL依赖注入环境 7.1 构造器注入 …...
Redis——急速安装并设置自启(CentOS)
现状 对于开发人员来说,部署服务器环境并不是一个高频操作。所以就导致绝大部分开发人员不会花太多时间去学习记忆,而是直接百度(有一些同学可能连链接都懒得收藏)。所以到了部署环境的时候就头疼,甚至是抗拒。除了每次…...
C++中使用while循环
C中使用while循环 C关键字 while 可帮助您完成程序中 goto 语句完成的工作,但更优雅。 while 循环的语法如下: while(expression) {// Expression evaluates to trueStatementBlock; }只要 expression 为 true, 就将反复执行该语句块。因此…...
视频融合平台EasyCVR视频汇聚平台关于小区高空坠物安全实施应用方案设计
近年来,随着我国城市化建设的推进,高楼大厦越来越多,高空坠物导致的伤害也屡见不鲜,严重的影响到人们的生命安全。像在日常生活中一些不起眼的小东西如烟头、鸡蛋、果核、易拉罐,看似伤害不大,但只要降落的…...
IBM安全发布《2023年数据泄露成本报告》,数据泄露成本创新高
近日,IBM安全发布了《2023年数据泄露成本报告》,该报告针对全球553个组织所经历的数据泄露事件进行深入分析研究,探讨数据泄露的根本原因,以及能够减少数据泄露的技术手段。 根据报告显示,2023年数据泄露的全球平均成…...
python爬虫—requests
一、安装 pip install requests 二、基本使用 1、基本使用 类型 : models.Response r.text : 获取网站源码 r.encoding :访问或定制编码方式 r.url :获取请求的 url r.content :响应的字节类型 r.status_code :响应…...
应用案例 | 3D视觉引导解决方案汽车零部件上下料
Part.1 行业背景 三维视觉引导技术在国内外汽车零部件领域得到了广泛应用。随着汽车制造业的不断发展和创新,对于零部件的加工和装配要求越来越高,而三维视觉引导技术能够帮助企业实现更精确、更高效的零部件上下料过程。 纵览国外,部分汽车…...
const {}解构赋值
定义:ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 解构赋值的基本规则:只要等号右边不是对象或数组,就先将其转换为对象。由于undefi…...
一篇文章带你了解-selenium工作原理详解
前言 Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,…...
H5 + C3基础(八)(3d转换 位移 旋转)
3d转换 位移 & 旋转 定义位移透视 perspective透视和Z轴使用场景 旋转子元素开启3d视图示例 小结 定义 3d转换在2d转换中增加了一个z轴,垂直于屏幕,向外为正,向内为负。 位移 在2d位移的基础上增加了 translateZ(z); 在Z轴上的位移 t…...
PyQt6 GUI界面设计和Nuitka包生成exe程序(全笔记)
PyQt6 GUI界面设计和Nuitka包,生成exe程序全笔记 目录一、PyQt6包安装1.1 进行环境配置和安装1.2 检查包是否安装成功。1.3 运行desinger.exe二、GUI界面设计,写程序,并能运行成功。三、Nuitka打包生成exe程序3.1 做Nuitka安装准备工作(1)安装C编译器,设置环境变量3.2 配…...
学习网络编程No.5【TCP套接字通信】
引言: 北京时间:2023/8/25/15:52,昨天刚把耗时3天左右的文章更新,充分说明我们这几天并不是在摆烂中度过,而是在为了更文不懈奋斗,历时这么多天主要是因为该部分知识比较陌生,所以需要我们花费…...
常用的时间段的时间戳
获取 昨天这个时间的时间戳 Calendar calendar Calendar.getInstance(); //当前时间calendar.add(Calendar.DAY_OF_YEAR,-1); Long dd calendar.getTime().getTime()/1000;System.out.println(dd);计算今天0点的时间戳 Long time System.currentTimeMillis(); //当前…...
博客系统后台控制层接口编写
BlogColumnCon CrossOrigin RequestMapping("/back/blogColumn") RestController public class BlogColumnCon {Autowiredprivate BlogColumnService blogColumnService;/*** 新增** param blogColumn* return*/PostMapping("/add")public BaseResult add…...
生成 MySQL 删除索引、创建索引、分析表的 SQL 语句
目录 1. 生成删除索引 SQL 语句 2. 生成创建索引的 SQL 语句 3. 生成分析表的 SQL 语句 1. 生成删除索引 SQL 语句 mysql -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock -e " select concat(alter table \,table_schema,\.\,table_name,\ ,drop_index,;)from ( …...
mongodb建用户
玛德折腾了2个小时,、mongodb 建用户。艹 [rootk8-master mongodb]# cat docker-compose.yaml version: 2 services: mongodb: container_name: mongodb_2.0 image: mongo:4.4 restart: always environment: TZ: Asia/Shanghai MONGO_INITDB_ROOT_USERNAME: admin M…...
无门槛访问ChatGPT升级版-数据指北AI
大家好,我是脚丫先生 (o^^o) 给小伙伴们介绍ChatGPT升级版不需要任何门槛,不需要单独搞账号,只要邮箱登录的方式,即可访问平台,以用户体验为首要,让所有人都能无门槛的使用目前市面上最强大的AI智能聊天&a…...
前端需要学习哪些技术?
前端工程师岗位缺口一直很大,符合岗位要求的人越来越少,所以学习前端的同学要注意,一定要把技能学到扎实,做有含金量的项目,这样在找工作的时候展现更大的优势。 缺人才,又薪资高,那么怎样才能…...
MultiHighlight智能高亮插件架构解析与性能优化实践
MultiHighlight智能高亮插件架构解析与性能优化实践 【免费下载链接】MultiHighlight Jetbrains IDE plugin: highlight identifiers with custom colors 🎨💡 项目地址: https://gitcode.com/gh_mirrors/mu/MultiHighlight 在复杂的代码阅读场景…...
DeepStream9.0 service-maker
service-maker在前几个版本就推出了,DeepStream9.0做了增强: Added Pyservice maker support for Smart-Recording(就是实时录制码流) 如果你用过 NVIDIA DeepStream,应该很熟悉它的典型开发方式:围绕 G…...
飞机在甲板上着陆--动基线RTK深度解析:定义、应用场景和基本原理(二)
飞机在甲板上着陆–动基线RTK深度解析:定义、应用场景和基本原理(二)接上文3.3 时序图:静态模式 vs 动基线模式的对比图2:动基线RTK时间对齐与外推机制详解#mermaid-svg-ImdeLLU9IW88fmy6{font-family:"trebuchet…...
免费网盘直链解析工具:九个主流网盘的高速下载完整解决方案
免费网盘直链解析工具:九个主流网盘的高速下载完整解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 /…...
Go语言表单处理与文件上传实战
Go语言表单处理与文件上传实战 引言 表单处理和文件上传是Web开发中的常见需求。本文将深入探讨Go语言中表单处理的最佳实践,包括表单验证、文件上传、安全处理等方面。 一、表单处理基础 1.1 获取表单数据 func HandleForm(w http.ResponseWriter, r *http.Request…...
使用curl命令直接调试taotoken大模型api接口的详细方法
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用curl命令直接调试Taotoken大模型API接口的详细方法 对于需要在无SDK环境下进行底层调试、自动化脚本编写或快速验证接口的开发…...
STM32F103C6T6模拟SPI驱动ADS1220:从硬件连接到代码调试的完整避坑指南
STM32F103C6T6模拟SPI驱动ADS1220:从硬件连接到代码调试的完整避坑指南 在嵌入式开发领域,高精度数据采集一直是工程师们面临的挑战之一。TI公司的ADS1220作为一款24位Δ-Σ模数转换器,以其出色的噪声性能和灵活的配置选项,成为许…...
终极自动化指南:如何用AALC解放你的Limbus Company游戏时间
终极自动化指南:如何用AALC解放你的Limbus Company游戏时间 【免费下载链接】AhabAssistantLimbusCompany AALC,PC端Limbus Company小助手。AALC,Limbus Company Assistant on PC 项目地址: https://gitcode.com/gh_mirrors/ah/AhabAssista…...
单物体最优抓取轨迹生成
基于 3D 位姿规划直线平滑抓取轨迹,包含趋近 - 抓取 - 复位三段最优运动路径,适配机械臂点位运动核心规划逻辑基准位:机械臂初始安全待机点趋近段:直线匀速靠近物体上方预备抓取点抓取段:垂直下落至物体抓取中心位姿抬…...
AI大神Karpathy的学习心法,普通人也能直接抄作业
美国时间2026年5月19日,AI 圈被一条重磅消息刷屏:大牛 Andrej Karpathy 在社交媒体上正式宣布加入 Anthropic。对于整个科技圈而言,他的动向影响力堪比当年乔丹宣布重返 NBA 大联盟 。这一次,他加入了 Anthropic 的预训练团队&…...
