什么是软件工程?

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


什么是软件工程?

从上世纪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万+

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

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

胖大xian 2125

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

文章目录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

【理解机器学习算法】之Clustering算法(Agglomerative Clustering)

是一种层次聚类算法,通过逐步合并或“聚集”它们来构建嵌套聚类。这种方法采用自底向上的方式构建聚类层次:它从将每个数据点作为单个聚类开始,然后迭代合并最接近的聚类对,直到所有数据点合并为一个聚类,或直到达到指定的聚类数量。优点:- 聚合聚类在距离和连接准则的选择上具有多样性,使其适用于各种数据集。- 它产生了一个层次结构,这对于不同规模的聚类数据结构是有信息量的。-缺点:- 对于大数据集来说,它可能计算成本高,因为它需要在每次迭代中计算和更新所有聚类对之间的距离。

Hyman Qiu 2689

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

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

x20020402的博客 3187

多个MOS管并联应用场景的四大要点

动态运行时,阈值电压Vgsth最低的MOS管首先打开,最后关闭。这种MOS管一般会占据更多的开关损耗,并且在开关转换过程中,承担了更高的电应力。

VBsemi的博客 3755

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

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

xzx_Name的博客 3980

5个IO口驱动188数码管:查理复用算法在TM52F1363上的极致应用

本文深入解析了如何利用查理复用算法,在TM52F1363单片机上仅用5个IO口驱动188数码管。通过精密的硬件连接与软件时序控制,结合高阻态和动态扫描策略,实现了在极致资源限制下的稳定显示,为成本敏感型嵌入式产品提供了高效的IO复用解决方案。

numpy6sculptor的博客 481

摄像头visio_最全面弱电智能VISIO图标集(百个),高大上方案就靠这个了

原标题:最全面弱电智能VISIO图标集(百个),高大上方案就靠这个了不会用Visio,Visio画拓扑画的很丑,怎么办?本期sin66小编免费分享一份最全面的弱电智能VISIO图标集(百个)给大家,以后画拓扑、做方案,直接高大上起来!需要本期资料直接看文末!!接下来我们一起看一下这些Visio图标大全:我们从下图可以看出前端设备主要是由枪机,筒机,无线摄像头,半球,球机,USB摄像头等构成,对于绘...

weixin_39644915的博客 1万+

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

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

Ausgelebt的博客 1365

华为C语言笔试题(附答案)

华为C语言笔试题(附答案)     1、局部变量能否和全局变量重名?   答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: "   局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。  

峰云四起 3038

软件工程笔记一

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

m0_74027860的博客 1902

TC3XX - MCAL知识点(三十五):Tasking编译器下,Tc3xx的MCAL代码如何使用多核,多核中断、多核任务、多核外设之间的MCAL配置与代码例程

文章用于记录在裸机情况下使用多核Tc387芯片,如何高效运行以及正确的代码、工程属性、链接文件配置等问题,相互结合、相互影响的地方,以示后续使用记录。

梦想技术家 964

【系统分析师】2009年真题:综合知识-答案及详解

在某银行业务的用例模型中,“取款”用例需要等到“存款”用例执行之后才能执行,两个用例之间的关系属于(1);“取款”和“存款”两个用例中都需 要执行查询余额的功能,将查询余额提取成独立的用例,那么“取款”和“存款” 用例与“查询余额”用例之间的关系属于(2)。(1)A. 关联关系 B. 扩展关系 C. 使用关系 D. 依赖关系 (2)A. 扩展关系 B. 使用关系 C. 依赖关系 D. 继承关系【参考答案】D、A雇员类含有计算报酬的行为,利用面向对象的(3),可以使得其派生类专职 雇员类和兼职雇员类计算报酬的

数据知道的博客 1万+

软件工程教程:第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

【QGIS】软件下载安装及GIS4WRF插件使用

【QGIS】软件下载安装及GIS4WRF插件使用

WW、forever的博客 1801

什么是软件工程

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

kku101xyz的博客 4850

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

文章目录第一章 软件工程概论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

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

软件工程:到底应该怎么理解软件工程

由来 当软件的规模越来越大,复杂度不断增加,软件项目开发维护过程中的问题就逐步暴露出来:软件产品质量低劣、软件维护工作量大、成本不断上升、进度不可控、程序人员无限度地增加。所以在 60 年代,“软件危机”的概念被提出来。 为解决软件危机,由此出现了一门新兴的工程学科:软件工程。软件工程就是要用工程化的方法去规范软件开发,让项目可以按时完成,成本可控,指令有保证 演化史 开发软件本质上也是像盖房子一样,是从无到有创造的过程。工程化的方式,就是你分步骤(过程),采用科学的方法,借助工具来做产品。 于是参考建筑工

OceanStar的博客 2741

老版QQ原生表情gif动态

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

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值