软件与软件工程
软件
软件的概念以及特点:
软件是计算机系统中不可或缺的一部分,与硬件共同构成特定的系统功能。
人们通常把各种不同功能的程序,包括系统程序、应用程序、用户自己编写的程序等称为软件
软件的概念:
软件不仅包括程序,还包括程序的处理对象——数据,以及与程序开发、维护和使用有关的图文资料,即文档 .
软件=程序+数据+文档
程序是为实现软件的功能和性能要求而编写的指令序列。
数据是指使程序能够正常操纵信息的数据结构。
文档是与程序开发、维护和使用有关的图文资料。
软件的特点
软件是一种逻辑实体,具有抽象性
软件的生产与硬件的制造不同,是人类智力劳动的产物
软件在运行使用过程中,不会磨损
软件的开发至今尚未完全摆脱手工艺的开发方式
软件的开发和运行必须依附于特定的计算机系统环境
软件的分类
软件危机
软件危机的表现与原因
软件危机是指人们在开发软件和维护软件过程中所遇到的一系列的问题
主要表现为:
开发出来的软件产品不能满足用户的需求
相比越来越廉价的硬件,软件代价过高
软件质量难以得到保证,且难以发挥硬件潜能
难以准确估计软件开发、维护的费用以及开发周期
难于控制开发风险,开发速度赶不上市场变化
软件产品修改维护困难,集成遗留系统更困难
软件文档不完备,并且存在着文档内容与软件产品不符的情况
软件危机出现的原因
忽视软件开发前期的需求分析
开发过程缺乏统一的、规范化的方法论的指导
文档资料不齐全或不准确
忽视与用户之间、开发组成员之间的交流
忽视测试的重要性
不重视维护或由于上述原因造成维护工作的困难
从事软件开发的专业人员对这个产业认识不充分,缺乏经验
没有完善的质量保证体系
软件危机的启示
软件产品是复杂的人造系统,具有复杂性、不可见性和易变性,难以处理
个人或小组在开发小型软件时使用到的非常有效的编程技术和过程,在开发大型、复杂系统时难以发挥同样的作用
软件开发的创造性成分很大、发挥的余地也很大,很接近于艺术
计算机和软件技术的快速发展,提高了用户对软件的期望,促进了软件产品的演化,为软件产品提出了新的、更多的需求,难以在可接受的开发进度内保证软件的质量
几乎所有的软件项目都是新的,而且是不断变化的
“人月神化”现象——生产力与人数并不成正比
软件工程
软件工程的概念
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…...

前端需要学习哪些技术?
前端工程师岗位缺口一直很大,符合岗位要求的人越来越少,所以学习前端的同学要注意,一定要把技能学到扎实,做有含金量的项目,这样在找工作的时候展现更大的优势。 缺人才,又薪资高,那么怎样才能…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...