什么是软件工程?

今天将“软件测试和质量专栏”改为“软件工程专栏”,意味着自己的博客将扩展到一个更广的范围,虽然核心还围绕测试和质量,但包括软件需求工程、系统设计和项目管理等。所以特写一篇文章,作为开头和备忘。


什么是软件工程?

从上世纪90年代初起,计算学科(Computing)的发展远远超越了计算机科学的边界,形成了计算机科学、计算机工程、软件工程、信息系统与信息技术等若干独立学科。计算机工程从电子工程学科中分离出来,旨在研究计算机硬件的相关工程问题,而软件工程从计算机科学中的一个学科方向发展成为与之并重的一门独立学科,重点研究如何以系统的、可控的、高效的方式开发和维护高质量软件的问题。

1.软件工程的定义

软件工程学科诞生后,人们为软件工程给出了不同的定义,例如最早的定义是由F.L. Bauer给出的,即“软件工程是为了经济地获得能够在实际机器上高效运行的、可靠的软件而建立和应用一系列坚实的软件工程原则”。而美国梅隆卡耐基大学软件工程研究所(SEI)给出的定义则是软件工程是以工程的形式应用计算机科学和数学原理,从而经济有效地解决软件问题。但目前普遍使用的软件工程定义是由IEEE给出的,即软件工程是将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护。

软件工程概念实际存在两层含义,从狭义概念看,软件工程着重体现在软件过程中所采用的工程方法和管理体系,例如,引入成本核算、质量管理和项目管理等,即将软件产品开发看作是一项工程项目所需要的系统工程学和管理学。从广义概念看,软件工程涵盖了软件生命周期中所有的工程方法、技术和工具,包括需求工程、设计、编程、测试和维护的全部内容,即完成一个软件产品所必备的思想、理论、方法、技术和工具。

2.软件工程的内涵

软件工程学科包含为完成软件需求、设计、构建、测试和维护所需的知识、方法和工具。软件工程不局限在理论之上,更重要在实践上,能够帮助软件组织协调团队、运用有限的资源,遵守已定义的软件工程规范,通过一系列可复用的、有效的方法,在规定的时间内达到预先设定的目标。针对软件工程的实施,无论是采用什么样的方法和工具,先进的软件工程思想始终是最重要的。只有在正确的工程思想指导下,才能制定正确的技术路线,才能正确地运用方法和工具达到软件工程或项目管理的既定目标。

3.软件工程是一门交叉性学科

软件工程是一门交叉性的工程学科,它是将计算机科学、数学、工程学和管理学等基本原理应用于软件的开发与维护中,其重点在于大型软件的分析与评价、规格说明、设计和演化,同时涉及管理、质量、创新、标准、个人技能、团队协作和专业实践等。从这个意义上看,软件工程可以看作由下列3部分组成。

  • 计算机科学和数学用于构造软件的模型与算法;
  • 工程科学用于制定规范、设计范型、评估成本以及确定权衡等;
  • 管理科学用于计划、资源、质量、成本等管理。

例如,计算机辅助软件工程(Computer Aided Software Engineering,CASE)是一组工具和方法的集合,可以辅助软件生命周期各阶段进行的软件开发活动。CASE吸收了CAD(计算机辅助设计)、软件工程、操作系统、数据库、网络和许多其他计算机领域的原理和技术。这个例子也体现了这一点——软件工程是学科交叉的、集成和综合的领域。


4.软件工程学科范围

如果从知识领域看,软件工程学科是以软件方法和技术为核心,涉及计算机的硬件体系、系统基础平台等相关领域,同时还要涉及一些应用领域和通用的管理学科、组织行为学科。例如,通过应用领域的知识帮助我们理解用户的需求,从而可以根据需求来设计软件的功能。 在软件工程中必然要涉及组织中应用系统的部署和配置所面临的实际问题,同时又必须不断促进知识的更新和理论的创新。为了真正解决实际问题,需要在理论和应用上获得最佳平衡。


原文(什么是软件工程?)





软件工程知识体系 本博客记录的是我在大学期间学习软件工程这门课程的大概知识体系,肯定还有其他内容没有涉及到,纯当是对学习过的内容进行一番梳理。 阅读详情

相关推荐

【软件工程】软件工程知识点汇总(超详细)

软件工程 第一章 软件工程学概述 1.软件危机 1.概念 计算机软件的开发和维护过程中所遇到的一系列严重的问题。 采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效的维护它。 *2.软件危机的表现 1)对软件开发成本和进度的估计常常很不准确; 2)用户对完成的软件系统不满意的现象经常发生; 3)软件产品的质量往往靠不住; 4)软件常常是不可维护的; 5)软件通常没有适当的文档资料; 6)软件成本在计算

才下眉头n.的博客 6479

软件工程知识点总结

软件工程知识点总结 有以下知识点(考试内容,当然不止这些) 软件工程的定义 软件生存周期 软件过程模型 需求分析的定义、获取 常见的软件体系结构(B/S 、C/S 、软件总线中间件) SOA 的定义、特点、和工作模型(松耦合、明确定义的接口) 云计算的定义、优势和应用模型 软件测试的概念、原则、方法和测试策略 软件维护的类型 10.软件项目管理的管理过程和领域 11.成本估算模型、进度计划的方法 风险管理、质量管理的概念 13.CMM(软件能力成熟度模型) 第一章

沐雨风栉 6991

对软件工程的认识

  首先作为软件工程专业的一名大三学生,两年半以来学了C#,js等语言。说实话,我认为我自己学的并不好。作为一名文科生相对于理科生来说逻辑思路要少差一些,当然,不管什么原因,都不能阻止后天勤奋使人变优秀。接下来简单说一下我通过两年多的学习和网上查阅的资料对软件工程的理解。      软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确...

qq_43513245的博客 1万+

软件工程:概述

软件是抽象的、不可触摸的,它不受物质材料的限制,也不受物理定律或加工过程的制约:一方面使软件工程得以简化,因为软件的潜能不受物理因素的限制。一方面,由于缺乏自然约束,软件系统也就很容易变得极其复杂,理解它会很困难,改变它的价格。软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件工程解决的问题:如何开发软件以满足对软件日益增长的需求和如何维护数量不断膨胀的已有软件。

燕双嘤 3848

软件工程知识总结

软件工程是指在系统化、结构化和量化的方法下,对软件的开发、运行、维护和管理进行全面研究的学科和技术。它涵盖了软件开发的整个生命周期,从需求分析到设计、编码、测试、部署和维护,旨在提高软件质量、提高开发效率,并管理软件开发过程中的风险。:确保软件能够满足用户需求和预期功能。:制定软件系统的结构和组件,确保系统的灵活性、可维护性和性能。:根据设计开发软件,并进行系统的功能测试和性能测试,确保软件的质量和稳定性。:将软件发布到生产环境中,并持续监测、更新和修复软件,以确保其正常运行。

jh15005767557的博客 2367

《软件工程》— 实用软件工程——习题答案

实用软件工程——课后习题答案 软件工程(英语:Software Engineering[1])1968年秋季,NATO(北约)的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。在那次会议上第一次提出了软件工程(software engineering)这个概念,研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经...

69小石头的博客 1万+

【软件工程】一篇入门软件工程

软件工程包括什么项目管理层面的内容技术研发层面的内容软件工程学范畴内的知识点了解软件工程(用工程方法、工程思想完成软件开发)的实际操作流程了解工程问题如何解决采用高质量的环境及工具,使软件能够按照某种能够反映软件开发规律的规范/模式来开发。研究规范/模式。这个规范/模式能够体现软件开发过程的自然规律,并通过遵循开发过程的自然规律达到提升软件质量/开发效率的效果。从词汇本意出发软件工程= 软件+工程定义一:用系统化、工程化方法解决软件开发问题从问题论角度出发。

十二月的猫 1万+

【软件工程】软件工程课程复习笔记

Software is complex=事情由很多部分组成,能够互相关联在一起。(而complicated 模糊的,即便分析也分析不出来,不能解释。防止产生温水煮青蛙的问题:1.小问题尽量考虑清楚,从而不至于导致大的缺陷2.负面反馈是一种积累,刚开始看上去问题不大,到后面就会太严重以至于不能解决。

qq_43984062的博客 2438

软件工程导论—软件与软件工程

文章目录1. 软件与软件危机1.1. 软件的概念和特点1.2. 软件规模的分类与发展阶段1.3. 软件危机1.3.1. 软件危机的表现1.3.2. 软件危机产生的原因1.3.3. 软件危机如何解决2. 软件工程学2.1. 软件工程学的概念2.2. 软件工程项目的基本目标2.3. 软件工程的八项原则2.4. 软件工程的本质特征2.5. 软件工程的七条基本原理3. 软件工程方法学3.1. 软件工程方法...

白水的博客 7558

软件工程专业

软件工程专业16340111 本人学院目录 简介 二级学科 课程 就业 简介 软件工程是将工程应用于软件的设计、开发、实施、测试和维护的一种系统化方法。 软件工程的典型形式定义是: 1.研究、设计、开发和测试操作系统级软件、编译器和网络分发软件,用于医疗、工业、军事、通信、航空航天、商业、科学和通用计算应用。 2.科学和技术知识、方法和经验的系统应用,设计、实施、测试和文档软

Lyrix的博客 2733

软件工程1:软件工程概念

一、软件工程的定义 IEEE: ​ 软件工程是:将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件《计算机科学技术百科全书》:软件工程是应用计算机科学、数学、逻辑学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本和改进算法。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成...

胖大xian 2125

[软件工程] 软件工程概念

软件工程概念一、软件工程的介绍(一)软件工程的两个定义(二)软件工程的发展已经历了四个重要阶段:1、第一代软件工程 — 传统的软件工程2、第二代软件工程 — 对象工程3、第三代软件工程 — 过程工程4、第四代软件工程 — 构件工程二、软件工程的本质特征:三、软件工程的7条基本原理:四、软件工程方法学(一)软件工程方法学1.传统方法学2.面向对象方法学(1)面向对象方法学4个要点:(2)面向对象方法...

xzx_Name的博客 3980

SpyGlass CDC实战:如何用sgdc约束文件解决跨时钟域报错(附常见错误排查)

本文详细介绍了如何使用SpyGlass CDC工具链中的sgdc约束文件解决跨时钟域(CDC)报错问题。从基础约束文件架构到复杂场景调试,涵盖了时钟域定义、复位信号约束、Waiver策略等关键技巧,并附有常见错误排查方法,帮助工程师高效处理CDC验证挑战。

loss4bartender的博客 1149

软件工程导论——(为什么要学习软件工程?软件工程能学到什么?如何学习软件工程?)

一、软件的定义软件是程序和所有使程序正确运行所需要的相关文档和配置信息。二、软件的特征1、软件是无形的2、软件副本制作简单3、软件无磨损三、软件的发展四、软件的分类基于软件功能的划分系统软件、支撑软件、应用软件。基于软件工作方式的划分实时处理软件、分时软件、交互式软件、批处理软件。基于软件规模的划分微型软件、小型软件、中型软件、大型软件、巨大型软件、极大型软件。基于软件失效的影响进行划分基于软件服务对象的范围进行划分定制软件 、产品软件。五、软件危机。

x20020402的博客 3187

Hermes Agent Windows安装教程:本地智能体离线部署实战

本地智能体(Local Agent)是一种运行在用户设备端、无需云端依赖即可响应自然语言指令并自动化执行任务的轻量级AI运行时框架。其核心原理基于配置驱动的任务监听与脚本调用机制,通过服务化驻留实现持续响应能力,技术价值在于保障数据隐私、规避API调用限制、适配内网及老旧系统环境。典型应用场景包括财务报表自动整理、科研仪器数据归档、IT资产变更通知等Windows桌面自动化需求。本文聚焦Hermes Agent这一主流开源实现,围绕Windows平台特有的服务注册、权限模型、杀软拦截、中文路径与YAML编码

weixin_34411563的博客 433

Labview调用C++ dll之字符串数组传递

做项目的时候碰到了一个需求,有一个复杂的运算,用labview实现非常的麻烦,但是如果用C++实现,就会灵活很多。尝试着采用Labview调用C++编写的动态链接库方式解决,兼顾Labview的便利和C++的灵活性。 运算好说,主要难点是Labview与C++之间的数据对应关系,因为我最后的结果是既有字符串又有数字,对于单纯的数字来说,直接通过调用数组的方式就能解决,这里主要记录一下字符串数组...

bgbgx的博客 6811

软件工程笔记一

概括地说,软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。IEEE: 软件工程是开发、运行、维护和修复软件的系统方法。

m0_74027860的博客 1902

程序员应用AI大模型创业实现财务自由的100种赚钱方案原理与实战指南

成功的 AI 创业者都遵循着 “技术 + 需求 + 变现” 的铁三角法则。记住:不是要做 “全能大模型”,而是成为某个垂直领域的 “AI 解决方案专家”。现在就开始行动:用周末 2 小时完成第一个 MVP,下周启动种子用户测试,三个月内找到可复制的盈利模式。当你实现第一个 10 万用户时,会发现财务自由的密码藏在持续迭代的每个 0.1 版本更新中。延伸思考:你的技术背景适合切入哪个细分领域?

AI天才研究院 1383

【软件工程】第一章软件工程引论

平台和应用是软件发展的外在驱动力工程是对技术(或社会)实体的分析、设计、建造、验证和管理。工程是一种组织良好、管理严密、各类人员协同配合、共同完成工作的学科。它具有以下特征:以价值为目标高度的组织管理性多种学科的综合高度的实践性1968年,NATO会议上首次提出了“软件工程”的概念,标志着软件开发开始转向工程化。软将工程就是为了经济地获得可靠的且能在实际机器上高效运行的软件而建立和使用的工程原理。

Ausgelebt的博客 1365

功能安全实战系列07-英飞凌TC3xx电源监控开发详解

本文对电源监控(PBIST及MONBIST)开发介绍,步骤详细配合开发中的测试情况,图文并茂,方便理解。

initiallizer的博客 1111

卷积层 (Convolutional Layer) 原理与代码实例讲解

卷积层 (Convolutional Layer) 原理与代码实例讲解 关键词:卷积层,卷积操作,滤波器,特征提取,神经网络 1. 背景介绍 卷积神经网络 (Convolutional N

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 770

软件工程教程:第1章软件工程概述 课后习题

《软件工程教程》(第2版)主编:吴迪马宏茹丁万宁电子科技大学出版社 一、选择题 (1)在下列选项中,(D)不是软件的特征 A.系统性与复制性 B.可靠性与一致性 C.抽象性与智能型 D.有形性与可控性 (2)与计算机科学的理论研究不同,软件工程是一门(B)学科。 A.理论性 B.工程性 C.原理性 D.心理性 (3)下列选项中,(C)不是软件生存周期模型 A.螺旋模型 B.增量模型 C.功能模型 D.瀑布模型 (4)软件生存周期中时间最长的阶段是(D) A.需求分析...

WHT869706733的博客 7833

HyperLynx仿真(一)LineSim简单介绍

可以选择设置信号线与信号线之间默认的距离和信号线与同平面的平面之间的距离,这些设置根据工程师项目上经常使用的情况而设置,也可以选择不设置,在每次仿真时根据需要再对每一个仿真单独设置。仿真属性的设置对话框包含一般设置、 显示颜色设置、LineSim 设置、BoardSim 设置、 层叠默认设置、焊盘类型设置、仿真示波器默认设置、电路仿真器默认设置、电源完整性设置及高级设置。第一次使用HyperLynx软件时需要设置仿真相关环境,包括仿真软件的基本设置、模型库路径设置、仿真控制器控制、单位等。...

小幽余生不加糖 8955

什么是软件工程

目录 软件的定义 软件工程的定义 软件开发 软件开发的本质 软件工程框架 目标 正确性 可用性 开销合宜 活动 (1)需求 (2)设计 (3)实现 (4)确认 (5)支持活动 原则 软件的定义 定义:计算机系统中的程序机器文档 程序是计算任务的处理对象和处理规则的描述 文档是为了便于了解程序所需的阐明性资料 另一种表述:Computor programs and associated documentation. Software products may be

kku101xyz的博客 4850

Xilinx FPGA平台DDR3设计保姆式教程(1)DDR3基础简介

xilinx平台DDR3设计(1)DDR3简介 如果我们只是拿来用ddr搬砖,那么它就简单,知道IP怎么使用就好,但是要想知其所以然,理论知识是必备的,这也是我们初学者所欠缺的东西,慢慢修炼吧! 目录 一、DDR3简介 二、地址的概念及容量计算 三、重要给概念理解 3.2 列地址脉冲选通潜伏期 3.4 掩码 四、参考资料 一、DDR3简介 DDR3全称double-data-rate 3 synchronous dynamic RAM,即第三代双倍速率同步动态随机存储器。...

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

软件工程总结笔记——软件工程概论(一)

文章目录第一章 软件工程概论1.1 软件综述1.1.1 软件的发展1.1.2 软件的定义1.1.3 软件的特性1.1.4 软件的分类(1)按软件功能进行分类(2)按软件所处的层次进行分类(3)按软件规模分类(4)按软件工作方式分类(5)按软件市场和标准化程度分类(6)按运行在计算机网络中的位置1.2 软件危机1.2.1 软件危机产生的原因1.2.2 软件危机的主要表现形式1.2.3 解决软件危机的...

weixin_42486795的博客 2991

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: 什么是软件工程?
下一篇: 什么是软件工程?
AndyChen9988
博客等级 码龄11年 276粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值