`
touchinsert
  • 浏览: 1329320 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
阅读更多

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="ProgId" content="Word.Document"> <meta name="Generator" content="Microsoft Word 11"> <meta name="Originator" content="Microsoft Word 11"> <link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CKERRYZ%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"> <!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 pt</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><style> <!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:ˎ̥_GB2312; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-alt:"Times New Roman"; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:auto; mso-font-signature:0 0 0 0 0 0;} @font-face {font-family:"\@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:ˎ̥; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-alt:"Times New Roman"; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:auto; mso-font-signature:0 0 0 0 0 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0pt; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-fareast-language:EN-US;} p.MsoFooter, li.MsoFooter, div.MsoFooter {margin:0pt; margin-bottom:.0001pt; mso-pagination:widow-orphan; tab-stops:center 207.65pt right 415.3pt; layout-grid-mode:char; font-size:9.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-fareast-language:EN-US;} a:link, span.MsoHyperlink {color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:purple; text-decoration:underline; text-underline:single;} p {mso-margin-top-alt:auto; margin-right:0pt; mso-margin-bottom-alt:auto; margin-left:0pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:宋体; mso-bidi-font-family:宋体;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 89.85pt 72.0pt 87.6pt; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:16.3pt;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:219480109; mso-list-type:hybrid; mso-list-template-ids:-85587804 -655987136 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} @list l0:level1 {mso-level-text:"\(%1\)"; mso-level-tab-stop:42.85pt; mso-level-number-position:left; margin-left:42.85pt; text-indent:-21.0pt;} ol {margin-bottom:0pt;} ul {margin-bottom:0pt;} --> </style> <!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0pt 5.4pt 0pt 5.4pt; mso-para-margin:0pt; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->

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

什么是软件工程?


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

1.软件工程的定义

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

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

2.软件工程的内涵

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

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

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

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

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


4.软件工程学科范围

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

原创先进、成熟的软件工程思想有哪些?

翻译代码评审的最佳实践


分享到:
评论

相关推荐

    软件工程答案(未知版)

    4、 什么是软件工程?目标和内容? 答:用科学的原理和理论定义,开发、维护软件的学科。目标:及时交付、满足用的功能要求、 成本比较低、移植性好、可靠性高。内容:软件开发技术、软件开发管理。 5、 软件工程...

    [详细完整版]21软件工程.doc

    什么是软件工程?什么是软件工程化?软件和软件生产有哪些固有的特征? 2.分别说明软件开发方法与软件工具,软件技术与软件管理的项目关系。 3.软件工程设计软件生产的那些方面?为什么说软件工程是一门综合学科? 4...

    软件工程导论-期末复习

    什么是软件工程?它与软件工程方法学有何关系? 软件过程是为了开发高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 软件过程定义了运用技术方法的顺序,应该交付的文档资料,为保证...

    软件工程课后参考答案 齐治昌主审,钱乐秋等编著

    1.4 什么是软件工程? 软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本为目的。 1.5 软件工程基本原则 软件工程的基本原则包括: * ...

    软件工程(双语)课件

    A.2 什么是软件工程?软件工程是一门工程学分支,关注软件生产的各个方面。软件工程师应采用系统化和有组织的方法来工作,根据所面临问题、开发限制和可用资源选择合适的工具和技术。 A.3 软件工程涉及什么?软件...

    软件工程习题附答案.doc

    什么是软件工程? 软件工程是开发、运行、维护和修复软件的系统方法。软件工程的目的是生产无故障的软件,并满足用户要求。 软件生命周期 软件生命周期可以分为三个时期:定义时期、开发时期和运行时期。GB 8567 ...

    软件工程英文版第八版

    2. **什么是软件工程?** 软件工程是一门学科,它系统地应用工程原则、方法和工具来设计、构建、测试和维护软件,以确保软件的质量、可维护性和经济性。 3. **软件工程与计算机科学的区别是什么?** 计算机科学侧重...

    软件工程期末考试试卷与题纲

    什么是软件工程? 软件工程是一门工程学科,涉及软件生产的各个方面,它既是一个创造的过程,又是一个逐步进行的过程,从最初的系统描述到使用后的系统维护。 软件工程定义: 鲍威尔(Fritz Bauer):“建立并使用...

    软件工程理论和实践 英文版

    为什么是软件工程? - **软件的重要性**:介绍软件在现代社会的重要地位以及对经济、社会的影响。 - **软件开发的难度**:探讨导致软件开发困难的各种因素,例如规模、复杂性、变更频率等。 - **软件开发流程概览*...

    软件工程 上课用的课件

    在第1章“什么是软件工程?”中,作者首先定义了软件工程的概念,指出它不仅仅是编写代码,而是一个解决复杂问题的过程。软件产品往往规模庞大、结构复杂,因此在开发过程中需要进行分析和综合两步。分析是将大问题...

    软件工程十天入门5(end)

    ### 一、什么是软件工程? **软件工程**是一门研究如何系统化、规范化、量化地进行软件开发、运行与维护的学科。其核心目标是提高软件质量、降低成本并确保软件项目能够按时完成。软件工程不仅涵盖了软件开发的技术...

    软件工程中的重要知识点笔记

    1、什么是软件工程?它的各种定义方式 2、软件生存周期的几个阶段及任务(ISO/IEC) 3、各类软件过程模型的特点及使用场景 4、CASE软件的概念和分类 5、什么是CMMI,英文含义,分几个过程 第二章 系统工程 1、可行性...

    [详细完整版]软件工程简答.txt

    什么是软件工程?? 软件工程是应用计算机科学、数学及管理科学等原理开发软件的过程。它借鉴传统工程的原则、方法,以提高质量、降低成本为目的。? 2.?功能内聚和顺序内聚各有什么特点?哪一个的内聚程度更高?? ...

    软件工程概述

    软件概述● 为什么需要软件工程? ● 什么是软件工程?

    软件工程课StarUML Setup 5.0.0.exe安装包

    1. **什么是软件工程?** 软件工程是一门综合性的学科,涉及软件开发的全过程,包括需求分析、设计、编码、测试和维护。它强调使用系统化、规范化的工程方法来确保软件的质量、可维护性和效率。 2. **建模与UML** ...

    华工软件工程期末突击复习资料

    3. **什么是软件工程?** - 软件工程是指应用工程的原则、技术和方法来开发和维护软件的过程。它将经过实践验证的管理方法和当前可用的最佳技术相结合,以经济高效的方式开发出高质量的软件,并进行有效的维护。 #...

    软件工程应用题.txt

    1.什么是软件工程? 答:软件工程是以质量为核心,为了经济地开发满足客户需求的软件而研究、建立和应用的系统化的、有规则 的、可度量的和可控制的工程原则、方法,涉及软件过程、项目管理、开发工具,甚至企业文化...

    软件工程专业简介

    为什么要学习程序设计语言? 人与计算机交流的工具 为什么要编写程序?...为什么要学习软件工程? 为什么要选择软件工程专业?为什么要学习程序设计语言?为什么要编写程序?为什么要学习软件工程?

    软件工程课后答案.doc

    **1.4 什么是软件工程?** 软件工程是一门结合了计算机科学、数学和管理学等多个学科原理的方法论,旨在提高软件产品的质量和生产效率。它不仅关注软件的开发过程,还包括了软件的维护和支持等方面。 #### 四、...

Global site tag (gtag.js) - Google Analytics