软件工程技术发展思索

文章来源:毕业论文通 分类:软件工程论文 发布时间:2019-09-20 10:53:32
毕业论文通第2019-09-20期,本期论文编辑为大家分享一篇软件工程论文《软件工程技术发展思索》,供广大毕业生在写软件工程文章时进行参考。

  摘 要: 在4个方面对软件工程技术的发展进行一些思索:(1) 从事物发展规律的角度,揭示软件工程技术发展 历程;(2) 从软件本质特征的角度,浅析虚拟机各抽象层次的构造;(3) 从软件开发的本质,提出了软件工程学科 研究的内容,并研究了软件工业化生产模式;(4) 以 Internet 的出现为背景,探索了软件技术的发展趋势. 

  关键词: 软件工程;软件特征;软件工业化生产;软件复用;网构软件

  软件工程作为独立的一门学科,其发展已逾 30 年.20 世纪 60 年代,由于高级语言的流行,使得计算机的应用 范围得到较大扩展,对软件系统的需求急剧上升,从而产生了所谓的“软件危机”,即软件开发从质量 效率等方 面均不能满足应用需求.为了解决软件危机这一问题,1968年,在 NATO会议上首次提出了“软件工程”这一概念, 使软件开发开始了从“艺术” “技巧”和“个体行为”向“工程”和“群体协同工作”转化的历程[1] .本文针对该历程 中的若干问题进行了一些探索,即从事物发展规律的角度,揭示软件工程技术发展历程;从软件本质特征的角 度,浅析虚拟机各抽象层次的构造;从软件开发的本质,提出了软件工程学科研究的内容,并研究了软件工业化生产模式;以 Internet 的出现为背景,探索了软件技术的发展趋势. 

  1 软件工程技术发展历程 

  30 多年来,软件工程的研究和实践取得了长足的进步,其中一些具有里程碑意义的进展包括: · 20 世纪 60 年代末~70 年代中期,在一系列高级语言应用的基础上,出现了结构化程序设计技术,并开发了 一些支持软件开发的工具. · 20 世纪 70 年代中期~80 年代,计算机辅助软件工程(CASE)成为研究热点,并开发了一些对软件技术发展 具有深远影响的软件工程环境. · 20 世纪 80 年代中期~90 年代,出现了面向对象语言和方法,并成为主流的软件开发技术;开展软件过程及 软件过程改善的研究;注重软件复用和软件构件技术的研究与实践. 软件是客观事物的一种反映,客观世界的不断变化促使软件技术的不断发展,这种事物发展规律促使软件 工程的产生和发展.我们仅从解决软硬件的异构性和各种软件之间的异构性角度,就可窥见软件技术发展的一 种途径.如,为屏蔽计算机硬件之间的异构性发展了操作系统,为屏蔽操作系统之间和编程语言之间的异构性出 现了支撑软件和中间件,为屏蔽不同中间件之间的异构性发展了 Web Services 技术等等;随着解决问题的不断 深入,易用性和适应性要求的不断提升,以及软件技术的不断发展,还会出现更新 更复杂的异构问题,它的解决 会促进软件技术的不断发展.从学科角度来看,要不断提炼所要解决问题的概念,建立相应的模型,并寻找处理 方法,从而解决这些问题的概念模型和处理问题逻辑间的映射问题,如图 1 所示.

处理问题逻辑间的映射

  2 软件与软件特征 

  软件是对客观世界中问题空间与解空间的具体描述,是客观事物的一种反映,是知识的提炼和“固化”.客观 世界是不断变化的,因此,构造性和演化性是软件的本质特征.如何使软件模型具有更强的表达能力 更符合人 类的思维模式,即如何提升计算环境的抽象层次,在一定意义上来讲,这紧紧围绕了软件的本质特征 构造性 和演化性. 在高级语言出现以前,汇编语言(机器语言)是编程的工具,表达软件模型的基本概念(或语言构造)是指令, 表达模型处理逻辑的主要概念(机制)是顺序和转移.显然,这一抽象层次是比较低的.高级语言的出现,例如FORTRAN 语言 PASCAL 语言 C 语言等,使用了变量 标识符 表达式等概念作为语言的基本构造,并使用 3 种基本控制结构来表达软件模型的计算逻辑,因此软件开发人员可以在一个更高的抽象层次上进行程序设 计.随后出现了一系列开发范型和结构化程序设计技术,实现了模块化的数据抽象和过程抽象,提高了人们表达 客观世界的抽象层次,并使开发的软件具有一定的构造性和演化性.近 20 年来,面向对象程序设计语言的诞生 并逐步流行,为人们提供了一种以对象为基本计算单元,以消息传递为基本交互手段来表达的软件模型.面向对 象方法的实质是以拟人化的观点来看待客观世界,即客观世界是由一系列对象构成,这些对象之间的交互形成 了客观世界中各式各样的系统[1] .面向对象方法中的概念和处理逻辑更接近人们解决计算问题的思维模式,使 开发的软件具有更好的构造性和演化性.目前,人们更加关注软件复用问题,构建比对象粒度更大 更易于复用 的基本单元 构件,并研究以构件复用为基础的软件构造方法,更好地凸现软件的构造性和演化特性.易于复 用的软件,一定是具有很好构造性和演化性的软件.

  3 软件工程的主要研究内容

    从某种角度来说,软件开发的本质就是要实现“高层概念”到“低层概念”的映射,实现“高层处理逻辑”到“低 层处理逻辑”的映射.对于大型软件系统的开发,这一映射是相当复杂的,涉及到有关人员 使用的技术 采取的 途径以及成本和进度的约束,因此,我们可以把软件工程定义为: 软件工程(software engineering)是应用计算机科学理论和技术以及工程管理原则和方法,按照预算和进度, 实现满足用户要求的软件产品的定义 开发 发布和维护的工程或以之为研究对象的学科[2] . 软件工程与其他工程一样要有自己的目标 活动和原则,软件工程框架可以概括为图 2 所示的内容[3]

软件工程框架

  软件工程的基本目标是生产具有正确性 可用性及开销合宜(合算性)的产品.正确性意指软件产品达到预 期功能的程度;可用性意指软件基本结构 实现及文档达到用户可用的程度;开销合宜意指软件开发 运行的 整个开销满足用户的需求.以上目标的实现不论在理论上还是在实践中均存在很多问题有待解决,制约了对过 程 过程模型及工程方法的选取. 软件工程活动是“生产一个最终满足用户需求且达到工程目标的软件产品所需要的步骤”,主要包括需求 设计 实现 确认以及支持等活动.需求活动是在一个抽象层上建立系统模型的活动,该活动的主要产品是需 求规约,是软件开发人员和客户之间契约的基础,是设计的基本输入.设计活动定义实现需求规约所需的结构, 该活动的主要产品包括软件体系结构 详细的处理算法等.实现活动是设计规约到代码转换的活动.验证/确认 是一项评估活动,贯穿于整个开发过程,包括动态分析和静态分析.主要技术有模型评审 代码“走查”以及程序 测试等.维护活动是软件发布之后所进行的修改,包括对发现错误的修正 对环境变化所进行的必要调整等. 围绕工程设计 工程支持以及工程管理,提出以下软件工程基本原则:

  第 1 条原则是选取适宜的开发风范.以保证软件开发的可持续性,并使最终的软件产品满足客户的要求. 第 2 条原则是采用合适的设计方法.支持模块化 信息隐蔽 局部化 一致性 适应性 构造性 集成组 装性等问题的解决和实现,以达到软件工程的目标. 第 3 条原则是提供高质量的工程支持.提供必要的工程支持,例如配置管理 质量保证等工具和环境,以保 证按期交付高质量的软件产品. 第 4 条原则是有效的软件工程管理.仅当对软件过程实施有效管理时,才能实现有效的软件工程. 由以上软件工程的概念和框架可以看出,软件设计的主要目标就是要实现好的结构,使开发的软件具有良 好的构造性和演化性.软件工程学科所研究的内容主要包括:软件开发范型 软件设计方法 工程支持技术和 工程管理技术.其中,软件开发范型涉及软件工程的“方向”问题,研究正确的求解软件的计算逻辑;软件设计方法 涉及软件工程的“途径”问题,研究“高层概念模型和处理逻辑”到“低层概念模型和处理逻辑”的映射;工程支持 技术和过程管理技术涉及工程过程质量和产品质量问题,研究管理学理论在软件工程中的应用.如上所述,软件 开发就是实施了一个从“高层概念模型”到“低层概念模型”的映射,从“高层处理逻辑”到“低层处理逻辑”的映 射,而且在这一映射中还涉及到人员 技术 成本 进度等要素,那么就必须研究映射模式即软件生产模式 问题. 分析传统产业的发展,其基本模式均是符合标准的零部件(构件)生产以及基于标准构件的产品生产(组装), 其中,构件是核心和基础,“复用”是必须的手段.实践表明,这种模式是软件开发工程化 软件生产工业化的必由 之路[4] .因此,软件产业的发展并形成规模经济,标准构件的生产和构件的复用是关键因素. 实现软件复用的关键因素(技术和非技术因素),如图 3 所示,主要包括:软件构件技术(software component technology) 领域工程 (domain engineering) 软件构架 (software architecture) 软件再工程 (software  reengineering) 开放系统(open system) 软件过程(software process) CASE 技术等,以及各种非技术因素,且各 种因素是相互联系 相互影响的[5] .

实现软件复用

  近年来人们认识到,要提高软件开发效率,提高软件产品质量,必须改变手工作坊式的开发方法,采取工程 化的开发方法和工业化的生产技术. 青鸟工程“七五”期间,已提出了软件生产线的概念和思想[6] ,其中将软件的生产过程分成 3类不同的生产车 间,即应用构架生产车间 构件生产车间和基于构件 构架复用的应用集成组装车间.软件生产线的概念模式 如图 4 所示.

image.png

  由上述软件生产线概念模式图中可以看出,在软件生产线中,软件开发人员被划分为 3 类:构件生产者 构 件库管理者和构件复用者.这 3 种角色所需完成的任务是不同的,构件复用者负责进行基于构件的软件开发,包 括构件查询 构件理解 适应性修改 构件组装以及系统演化等. 图 5 给出了与上述概念图相对应的软件生产线 生产过程模型[7] .

image.png

  从图 4 和图 5 中可以看出,软件生产线以软件构件/构架技术为核心,其中的主要活动体现在传统的领域工 程和应用工程中,但赋予了它们新的内容,并且通过构件管理 再工程等环节将它们有机地衔接起来.另外,软件 生产线中的每个活动皆有相应的方法和工具与之对应,并结合项目管理 组织管理等管理问题,形成完整的软 件生产流程.

  4 软件技术的发展趋势

   Internet 无疑是 20 世纪末伟大的技术进展之一,为我们提供了一种全球范围的信息基础设施.这个不断延 伸的网络基础设施,形成了一个资源丰富的计算平台,构成了人类社会的信息化 数字化基础,成为我们学习 生活和工作的必备环境.如何在未来 Internet 平台上进一步进行资源整合,形成巨型的 高效的 可信的和统一 的虚拟环境,使所有资源能够高效 可信地为所有用户服务,成为软件技术的研究热点. Internet 平台具有如下基本特征:无统一控制的“真”分布性;节点的高度自治性;节点链接的开放性和动态 性;人 设备和软件的多重异构性;实体行为的不可预测性;运行环境的潜在不安全性;使用方式的个性化和灵活 性;网络连接环境的多样性等.因此,Internet 平台和环境的出现,对软件形态 技术发展 理论研究提出新的问题, 也提供了新的契机. 传统软件的开发基于封闭的静态平台,是自顶向下 逐步分解的过程,因此传统软件的开发,基本都是首先 确定系统的范围(即 Scoping),然后实施分而治之的策略,整个开发过程处于有序控制之下.而未来软件系统的开 发所基于的平台是一个有丰富基础软件资源但同时又是开放 动态和多变的框架,开发活动呈现为通过基础软 件资源组合为基本系统,然后经历由“无序”到“有序”的往复循环过程,是动态目标渐趋稳态.未来软件基本模型 由于所处平台的特性和开放应用的需求而变得比任何传统的计算模型都更为复杂,软件生命周期由于“无序” 到“有序”的循环而呈现出不同于传统生命周期概念的“大生命周期概念”,程序正确性由于目标的多样化而表 现为传统正确性描述的一个偏序集,软件体系结构侧重点从基于实体的结构分解转变为基于协同的实体聚合, 软件生产过程和环境的变化导致基于 Internet 的面向用户的虚拟工厂的形成. 由于软件系统所基于的计算机硬件平台正经历从集中封闭的计算平台向开放的 Internet 平台的转变,软件 系统作为计算机系统的核心,随着其运行环境的演变也经历了一系列的变革.目前,面向网络的计算环境正由 Client/Server 发展为 Client/Cluster,并正朝着 Client/Network 和 Client/Virtual Environment 的方向发展.那么,未 来的基于 Internet 平台的软件系统又将会呈现出一个什么形态呢? 从技术的角度来看,以软件构件等技术支持的软件实体将以开放 自主的方式存在于 Internet 的各个节点 之上,任何一个软件实体可在开放的环境下通过某种方式加以发布,并以各种协同方式与其他软件实体进行跨 网络的互连 互通 协作和联盟,从而形成一种与当前的信息 Web 类似的 Software Web.Software Web 不再仅 仅是信息的提供者,它还是各种服务(功能)的提供者.由于网络环境的开放与动态性,以及用户使用方式的个性 化要求,从而决定了这样一种 Software Web,它应能感知外部网络环境的动态变化,并随着这种变化按照功能指 标 性能指标和可信性指标等进行静态的调整和动态的演化,以使系统具有尽可能高的用户信赖度.我们将具 有这种新形态的软件称为网构软件(internetware). 网构软件是在 Internet 开放 动态和多变环境下软件系统基本形态的一种抽象,它既是传统软件结构的自 然延伸,又具有区别于在集中封闭环境下发展起来的传统软件形态的独有的基本特征[1]: (1) 自主性:是指网构软件系统中的软件实体具有相对独立性 主动性和自适应性.自主性使其区别于传统 软件系统中软件实体的依赖性和被动性; 

(2) 协同性:是指网构软件系统中软件实体之间可按多种静态连接和动态合作方式在开放的网络环境下加 以互连 互通 协作和联盟.协同性使其区别于传统软件系统在封闭集中环境下单一静态的连接模式; 

(3) 反应性:是指网构软件具有感知外部运行和使用环境并对系统演化提供有用信息的能力.反应性使网 构软件系统具备了适应 Internet 开放 动态和多变环境的感知能力; 

(4) 演化性:是指网构软件结构可以根据应用需求和网络环境变化而发生动态演化,主要表现在其实体元 素数目的可变性 结构关系的可调节性和结构形态的动态可配置性上;演化性使网构软件系统具备了适应

Internet 开放 动态和多变环境的应变能力; 

(5) 多态性:是指网构软件系统的效果体现出相容的多目标性.它可以根据某些基本协同原则,在动态变化 的网络环境下,满足多种相容的目标形态.多态性使网构软件系统在网络环境下具备了一定的柔性和满足个性 化需求的能力. 

  综上所述,Internet 及其上应用的快速发展与普及,使计算机软件所面临的环境开始从静态封闭逐步走向开 放 动态和多变.软件系统为了适应这样一种发展趋势,将会逐步呈现出柔性 多目标 连续反应式的网构软 件系统的形态.面对这种新型的软件形态,传统的软件理论 方法 技术和平台面临了一系列挑战.从宏观上看, 这种挑战为我们研究软件理论 方法和技术提供了难得的机遇,使我们有可能建立一套适合于 Internet 开放 动态和多变环境的新型软件理论 方法和技术体系.从微观的角度来看,Internet 的发展将使系统软件和支撑平 台的研究重点开始从操作系统等转向新型中间件平台,而网构软件的理论 方法和技术的突破必将导致在建立 新型中间件平台创新技术方面的突破. 

  归结起来,网构软件理论 方法 技术和平台的主要突破点在于实现如下转变,即,从传统软件结构到网构 软件结构的转变,从系统目标的确定性到多重不确定性的转变,从实体单元的被动性到主动自主性的转变,从协 同方式的单一性到灵活多变性的转变,从系统演化的静态性到系统演化的动态性的转变,从基于实体的结构分 解到基于协同的实体聚合的转变,从经验驱动的软件手工开发模式到知识驱动的软件自动生成模式的转变.建 立这样一种新型的理论 方法 技术和平台体系具有两个方面的重要性,一方面,从计算机软件技术发展的角 度,这种新型的理论 方法和技术将成为面向 Internet 计算环境的一套先进的软件工程方法学体系,为 21 世纪 计算机软件的发展构造理论基础;另一方面,这种基于 Internet 计算环境上软件的核心理论 方法和技术,必将为 我国在未来5~10年建立面向Internet 的软件产业打下坚实的基础,为我国软件产业的跨越式发展提供核心技术 的支持. 当前的软件技术发展遵循软硬结合 应用与系统结合的发展规律.“软”是指软件,“硬”是指微电子,要发展 面向应用,实现一体化;面向个人,体现个性化的系统和产品.软件技术的总体发展趋势可归结为:软件平台网络 化 方法对象化 系统构件化 产品家族化 开发工程化 过程规范化 生产规模化 竞争国际化. 

References:

 [1] Yang FQ, Mei H, Lü J, Jin Z. Some discussion on the development of software technology. Acta Electronica Sinica, 2002,30 (12A):1901-1906 (in Chinese with English abstract).

 [2] Zhang XX. Encyclopedia of Computer Science and Technology. Beijing: Tsinghua University Press, 1998 (in Chinese). 

[3] Wang LF, Zhang SK, Zhu B. Software Engineering Technology, Method and Environment. Beijing: Peking University Press,  1997 (in Chinese). 

[4] Yang FQ, Mei H, Li KQ. Software reuse and software component technology. Acta Electronica Sinica, 1999,27(2):68-75 (in  Chinese with English abstract). 

[5] Yang FQ. Software reuse and relevant technology. Computer Science, 1999,26(5):1-4 (in Chinese with English abstract).

 [6] Yang FQ. The present and development of JadeBird engineering discussion on development approach of national software  industry. In: Yang Fq, He XG, eds. Proc. of the 6th National Software Engineering Academic Conf. Beijing: Tsinghua University  Press, 1996 (in Chinese with English abstract).

 [7] Yang FQ, Mei H, Li KQ, Yuan WH, Wu Q. The summary of JB III supporting components reuse. Computer Science, 1999,26(5):  50-55 (in Chinese with English abstract). 

附中文参考文献:

 [1] 杨芙清,梅宏,吕建,金芝.浅论软件技术发展.电子学报,2002,30(12A):1901-1906. 

[2] 张效祥,主编.计算机科学技术百科全书.北京:清华大学出版社,1998. 

[3] 王立福,张世琨,朱冰.软件工程 技术 方法和环境.北京:北京大学出版社,1997. 

[4] 杨芙清,梅宏,李克勤.软件复用与软件构件技术.电子学报,1999,27(2):68-75. 

[5] 杨芙清.软件复用及相关技术.计算机科学,1999,26(5):1-4.

 [6] 杨芙清.青鸟工程现状与发展 — — 兼论我国软件产业发展途径.见:杨芙清,何新贵,主编.第 6 次全国软件工程学术会议论文集,软 件工程进展——技术 方法和实践.北京:清华大学出版社,1996.

 [7] 杨芙清,梅宏,李克勤,袁望洪,吴穹.支持构件复用的青鸟 III 型系统概述.计算机科学,1999,26(5):50-55.


以上是由毕业论文通为您分享的关于《软件工程技术发展思索》的相关内容,如需查看更多软件工程论文、毕业论文范文、硕士论文模板、博士论文模板,了解毕业论文写作方法,欢迎访问毕业论文通。