软件工程技术发展思索

合集下载

软件工程技术发展思索

软件工程技术发展思索

软件工程技术发展思索作者:刘萍来源:《科技传播》2013年第12期摘要软件工程是采用工程的概念、原理、技术和方法来指导计算机软件开发和维护的工程学科,该学科将正确的管理策略和最好的技术与开发方法结合起来。

本文主要探讨软件工程技术发展的思考。

关键词软件工程;技术;原理中图分类号TP 31 文献标识码A 文章编号 1674-6708(2013)93-0224-02软件开发个性化的时代已永远成为过去,在网络、硬件、软件等支持环境的迅猛发展下,软件规模不断扩大,复杂程度显著提高。

如何更经济、高效地开发出高质量、可维护、可重用的软件,已成为软件业广泛关注的问题。

1软件工程概述为了尽可能消除软件危机的影响,高效地开发出高质量的软件系统,软件工程作为一门学科应运而生,它的最终目的是实现软件的工业化生产。

为了克服软件缺乏“可见性”的特点,从软件过程管理、开发方式、产品构成等方面着手,借鉴工业化生产的成功经验,对软件产品的生产过程加以严格的管理和控制。

也就用下式来表示:软件工程=管理+技术。

传统软件工程将软件开发生命周期划分为问题定义、可行性分析、需求分析、概要设计、详细设计、编码、测试、运行维护8个阶段,每一阶段都有具体的任务和交付成果。

软件过程模型指如何具体地组织衔接软件开发生命周期的各个阶段。

常用的有瀑布模型、原型模型、螺旋模型、增量模型和喷泉模型等。

2软件工程的目标软件工程的目标是:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并且满足用户需求的软件产品。

追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。

软件工程活动是“生产一个最终满足需求且达到工程目标的软件产品所需要的步骤”,主要包括需求、设计、实现、确认以及支持等活动。

需求活动包括问题分析和需求分析,问题分析获取需求定义,又称软件需求规约;需求分析生成功能规约。

《2024年软件工程技术发展思索》范文

《2024年软件工程技术发展思索》范文

《软件工程技术发展思索》篇一一、引言随着信息化和数字化的时代来临,软件工程技术已渗透至社会各领域,无论是我们的日常生活,还是复杂的企业业务,亦或智能科技的背后,都有软件的身影。

从大型的企业级软件到智能的物联网设备,软件工程技术的发展直接关系到社会的进步和科技的革新。

本文旨在探讨软件工程技术的发展历程、现状及未来趋势,以及在发展中所面临的挑战与思考。

二、软件工程技术的发展历程自上世纪五十年代开始,软件工程技术经历了从无到有,从简单到复杂的发展过程。

早期,软件工程主要关注于代码的编写和程序的运行,随着计算机技术的飞速发展,软件工程逐渐形成了一套完整的理论体系和技术体系。

在发展初期,软件工程主要依赖于个人的编程技能和经验。

然而,随着软件系统的复杂性和规模的不断增加,单纯的个人能力已无法满足需求。

因此,出现了模块化、面向对象、分治等软件设计和开发的方法。

进入互联网时代后,特别是移动互联网的崛起和普及,使得软件工程必须更加关注用户的交互体验、安全性和高效性等问题。

三、当前软件工程技术的现状在现阶段,云计算、人工智能、大数据等技术的出现和应用给软件工程技术带来了巨大的变化。

软件开发越来越重视对业务需求的理解和优化、系统架构的设计、模块化的开发和可维护性等问题。

与此同时,由于移动设备的大规模普及和深度学习技术的发展,跨平台、高度自适应和个性化的软件成为了发展的趋势。

此外,随着开源文化的兴起和开源社区的壮大,开源技术已成为软件工程的重要部分。

开源技术不仅提高了软件的开放性和可维护性,还为软件开发提供了丰富的资源和工具。

四、软件工程技术面临的挑战与思考尽管软件工程技术取得了显著的进步,但仍然面临着许多挑战。

首先,如何应对不断变化的业务需求和市场需求是软件工程师必须面对的问题。

这需要我们有前瞻性的思考和快速的适应能力。

其次,如何提高软件的可维护性和安全性也是当前面临的重要问题。

为此,我们需要持续地学习和改进技术手段和管理模式。

软件工程的发展趋势

软件工程的发展趋势

软件工程的发展趋势随着科技的迅猛发展,软件工程作为一门技术学科,也在经历着飞速的发展。

本文将探讨软件工程的发展趋势,并分析其对未来的影响。

1. 云计算与移动应用的兴起随着云计算技术的兴起,软件工程也逐渐向云端发展。

云计算提供了更高效、更灵活的软件部署和管理方式,使得软件工程师能够更加专注于核心开发工作。

同时,移动应用的广泛普及也推动了软件工程的发展,开发人员需要针对不同的移动设备进行应用程序的开发,以提供更好的用户体验。

2. 大数据与人工智能的应用大数据技术的兴起为软件工程带来了无限的可能性。

通过对海量的数据进行挖掘和分析,软件工程师可以根据数据的模式和趋势进行定制化的软件开发,为用户提供更加个性化的服务。

而人工智能的应用也为软件工程带来了新的挑战和机遇,例如智能语音助手、自动驾驶等领域。

软件工程师需要不断学习和更新知识,以适应这些新技术的应用。

3. 开源技术的普及开源技术的普及使得软件工程师可以更加便利地获取和共享代码资源。

开源技术提供了丰富的工具和框架,大大提高了软件的开发效率和质量。

同时,开源技术也推动了软件工程师之间的协作与交流,促进了行业的发展。

4. 软件工程的专业化和多样化随着软件工程的发展,越来越多的专业领域涌现出来,例如嵌入式软件工程、游戏开发、网络安全等。

这些专业领域对软件工程师的技能和知识要求更加专业和深入。

软件工程师需要根据自己的兴趣和特长选择适合的领域,不断学习和提升自己的技术水平。

5. 敏捷开发方法的兴起敏捷开发方法在软件工程领域得到了广泛的应用。

敏捷开发方法强调团队合作、交付价值和持续改进,使得软件开发过程更加高效和灵活。

软件工程师需要熟悉敏捷开发方法,并灵活运用于实际的项目开发中。

总结起来,软件工程的发展趋势主要包括云计算与移动应用的兴起、大数据与人工智能的应用、开源技术的普及、软件工程的专业化和多样化以及敏捷开发方法的兴起。

这些趋势为软件工程师提供了更多的机遇和挑战,同时也对其技能和知识水平提出了更高的要求。

《2024年软件工程技术发展思索》范文

《2024年软件工程技术发展思索》范文

《软件工程技术发展思索》篇一一、引言随着信息技术的飞速发展,软件工程技术已成为当今社会不可或缺的一部分。

从最初的简单程序编写到如今复杂的大型软件开发,软件工程技术经历了漫长而快速的进步。

本文将探讨软件工程技术的发展历程、现状以及未来趋势,分析技术发展中遇到的问题和挑战,并就如何应对这些问题提出思考和建议。

二、软件工程技术的发展历程软件工程技术的发展可以追溯到计算机诞生之初。

在过去的几十年里,随着计算机技术的不断进步,软件工程技术也经历了从无到有、从简单到复杂的发展过程。

1. 初级阶段:这个阶段的软件工程技术主要是以程序编写为主,关注点在于如何实现特定的功能。

由于技术手段有限,软件开发过程往往缺乏规范和标准,导致软件质量参差不齐。

2. 成熟阶段:随着计算机技术的进步,软件工程技术逐渐成熟。

在这个阶段,软件开发过程开始注重规范化、标准化和模块化,提高了软件的可维护性和可扩展性。

同时,各种软件开发工具和方法的出现,也极大地提高了软件开发的效率和质量。

三、软件工程技术的现状目前,软件工程技术已经广泛应用于各个领域,成为推动社会发展的重要力量。

在技术层面,现代软件工程技术注重以下几个方面:1. 软件开发方法:包括敏捷开发、DevOps等,这些方法强调快速迭代、持续交付和高度协作,有助于提高软件开发效率和质量。

2. 软件架构设计:随着云计算、大数据等技术的发展,软件架构设计变得越来越复杂。

现代软件工程更加注重微服务、容器化等技术的应用,以提高软件的可靠性和可扩展性。

3. 软件质量保障:包括代码审查、测试驱动开发、持续集成等方面,这些措施有助于提高软件的质量和可靠性。

四、软件工程技术面临的挑战与问题尽管软件工程技术取得了长足的进步,但仍面临一些挑战和问题:1. 技术更新换代迅速:随着新技术的不断涌现,软件工程师需要不断学习新知识,以适应快速变化的技术环境。

2. 软件安全问题:随着软件系统的复杂性增加,软件安全问题日益突出。

软件工程发展趋势

软件工程发展趋势

软件工程发展趋势随着科技的不断进步和社会的不断发展,软件工程也在不断发展变革中。

以下是当前软件工程发展的几个趋势:1. 云计算和大数据:云计算的出现为软件工程带来了极大的变革,使得软件开发过程更加灵活和高效。

同时,随着大数据的兴起,软件工程师需要不断学习相关技术,以处理海量数据并提供高效的解决方案。

2. 移动应用开发:随着智能手机和移动设备的普及,移动应用开发成为了软件工程的一个重要领域。

软件工程师需要关注不同平台的开发需求,并提供更优质的用户体验。

3. 物联网:物联网的发展促使软件工程师更加关注物理世界和数字世界的结合。

软件工程师需要开发具有物联网功能的软件,使得各种设备能够互相通信和协作。

4. 开源软件:开源软件已经成为了软件工程的重要组成部分,开源软件的发展使得软件工程师能够更好地共享和重用已有的资源,加快了软件开发的速度和质量。

5. 敏捷开发和DevOps:敏捷开发和DevOps是近年来软件工程领域的两个重要趋势。

敏捷开发通过迭代和增量的方式提供更快的软件交付,而DevOps则强调软件开发和运维的紧密合作,以提高软件部署和运行的效率。

6. 人工智能和机器学习:人工智能和机器学习的快速发展为软件工程带来了新的挑战和机遇。

软件工程师需要了解相关技术,以开发具有智能和学习能力的软件,提供更智能的解决方案。

7. 自动化测试和质量保证:随着软件规模的扩大和复杂性的增加,软件测试和质量保证变得愈发重要。

软件工程师需要利用自动化测试工具和技术,提高软件测试的效率和质量,确保软件的正确性和稳定性。

总结来说,当前软件工程的发展趋势主要包括云计算和大数据、移动应用开发、物联网、开源软件、敏捷开发和DevOps、人工智能和机器学习、自动化测试和质量保证等方面。

软件工程师需要不断学习和适应这些新技术和趋势,以保持竞争力和适应市场需求。

软件工程的发展思索

软件工程的发展思索

2 软 件工 程 的发展 历 程
关 于软件 工程 的发展历 程一 般有 四个过程 :二 十世 纪六十 年代末 ,逐渐关 注程 序 的结 构 ,随后产 生结构 化
程 序设计 的想 法 ,并 正式提 出软件 工程 和软件 工程 的想
1 软 件 工程 概 述
从某些方面看来 ,软件 工程开发 的本质就是从高层概 法 这 一名词 ;二 十世 纪七 十年代 人们慢慢 关注 软件 工程 念发展 到底层概念 ,在一定程度上进行 高级处理 的软件编 开 发 ,逐 渐探索 设计方 式 和结 构化 研究 ,设计 软件程 序
算机 的软件 工程技 术正 朝着信 息化 、高科技 与现代 化方 产社会化 与软件生产 自动化 。
向发展 。但是 必须 注意 ,在计算 机广 泛应用 于各个 领域
的今 天 ,开 发软件 的费用 在加 大 ,可靠性却 没有 上升 ,
维护工作 变得越来 越复杂 ,也就致使 软件危机 的出现 。
作者简介 :车仁 秋 ( 1 9 6 7 一 ),女,满族 ,辽宁宽甸人 ,本科 ,工程师 。研究方 向:项 目管理 。
2 0 p u t e r & C o m m u n i c a t i o n
信息与电 脑
软件 开 发 与 应 用
关键 词 :软件 工程 ; 计算机 ;信 息技 术
中 图分类 号 :T P 3 1 1 . 5 文献标 识码 :A 文章 编号 :1 0 0 3 — 9 7 6 7( 2 0 1 5 )1 3 - 0 7 6 — 0 2
计算机技术 已经历 了长期 的发展与变革 ,在各个时期 软件 开发工 程 ,因为软件 开发项 目理论 性过 强 ,实 施方 开发重点与进度都存在明显的差异 。刚开始 ,研发软件 的 式还存 在局 限性 ,造 成诸 多软件 危机 。新 时代 涌现 不少 A S E新型 软件 开 技术过程仅仅是程序的简单编写 ,到后来人们 开发出软件 新方 法与 新 思想 ,例如 :人 工智能 、C 工程的各种新功能 ,如 :测试 、需求分析与生存期等 。 发模 型与软 件再用 等 ,使 新时代 的软件 工程 不断发 展与 在不 断研究 的过程 中 ,软件工 程逐渐形 成 现在 的深 进步 ,给软件 的工程 学奠 定坚实 的基础 ,软件 工程 从根 刻 、全 面 与系统化 的新 局面 。就整 体发展看 来 ,当前计 本上发 生质 的改变 ,也就是 软件 生产标 准化 、软件 的生

软件工程技术发展的新趋势

软件工程技术发展的新趋势

软件工程技术发展的新趋势软件工程技术一直在不断发展和演变,随着科技的进步和市场的需求,新的趋势不断涌现,影响着软件工程领域的发展方向。

本文将对软件工程技术发展的新趋势进行全面的探讨,分析其潜在影响和未来发展方向,为软件工程师和相关从业人员提供参考和启发。

1. 云计算和边缘计算云计算和边缘计算是当前软件工程技术发展的热点和趋势之一。

云计算将计算和存储资源从本地数据中心转移到云端,为用户提供更加灵活和可扩展的服务。

随着云计算平台的不断成熟和完善,越来越多的企业和个人开始将业务和数据迁移到云端,享受云计算带来的高效和便利。

而边缘计算则是一种将计算和存储功能直接推送到接近数据源的边缘设备上的新型架构,可以大大提高数据处理的速度和效率。

在未来的软件工程领域,云计算和边缘计算将成为重要的技术支撑,为软件开发和运行提供更加强大和稳定的基础设施。

2. 人工智能和机器学习人工智能和机器学习技术已经开始在软件工程领域崭露头角,成为新的发展趋势。

随着算法和计算能力的不断提升,人工智能和机器学习在语音识别、图像处理、自然语言处理等方面取得了突破性进展,为软件工程带来了更多的可能性。

人工智能和机器学习技术可以帮助软件开发人员提高开发效率和质量,自动化测试和优化,减少人力成本和时间成本。

未来,软件工程技术将更加依赖人工智能和机器学习技术,实现智能化和自动化的软件开发和运维。

3. 容器化和微服务架构容器化和微服务架构是当前软件工程技术发展的新趋势之一,成为了软件开发和部署的首选方式。

容器化技术可以将应用程序和其依赖项打包在一个独立的容器中,实现了应用程序在不同环境中的一致性和可移植性。

微服务架构则是一种将应用程序拆分成多个小型的、自治的服务单元,每个单元负责一项特定的业务功能,可以独立部署和扩展。

容器化和微服务架构使软件开发和部署变得更加灵活和高效,可以快速响应市场需求和业务变化。

在未来的软件工程领域,容器化和微服务架构将成为主流,为软件开发和运维带来全新的方法和理念。

《2024年软件工程技术发展思索》范文

《2024年软件工程技术发展思索》范文

《软件工程技术发展思索》篇一一、引言随着科技的飞速发展,软件工程技术已成为现代社会不可或缺的一部分。

从简单的计算器程序到复杂的云计算系统,软件工程技术的进步不仅改变了人们的生活方式,也推动了社会的发展和进步。

本文将围绕软件工程技术的发展历程、当前挑战、发展趋势及未来前景等方面进行思考与探讨。

二、软件工程技术的发展历程软件工程技术的发展经历了漫长而复杂的过程。

从早期的手工编程到如今的自动化开发,软件工程技术的演进历程可大致分为以下几个阶段:1. 手工编程阶段:在这个阶段,软件开发主要依赖于程序员的个人技能和经验。

软件开发过程繁琐且耗时,代码质量难以保证。

2. 结构化编程阶段:随着计算机科学的发展,人们开始认识到将程序分解为模块化、结构化的重要性。

这一阶段为软件工程的发展奠定了基础。

3. 面向对象编程阶段:面向对象编程的出现使得软件开发更加灵活和高效。

通过封装、继承和多态等机制,软件系统更加易于理解和维护。

4. 互联网与分布式计算阶段:随着互联网的普及和分布式计算技术的发展,软件系统逐渐从封闭走向开放,形成了以Web技术为主的软件体系结构。

5. 云计算与大数据阶段:云计算和大数据技术的崛起为软件工程带来了新的挑战和机遇,推动了软件工程技术的进一步发展。

三、当前面临的挑战尽管软件工程技术取得了显著进步,但仍然面临诸多挑战。

其中,最主要的问题包括:1. 技术更新迅速:随着新技术的不断涌现,软件工程师需要不断学习新知识以适应行业变化。

2. 软件质量与安全问题:随着软件系统的复杂性增加,如何保证软件质量和安全性成为亟待解决的问题。

3. 软件开发成本与效率:在激烈的市场竞争中,如何降低软件开发成本、提高开发效率成为企业关注的焦点。

四、发展趋势针对当前面临的挑战,软件工程技术的发展呈现出以下几个趋势:1. 自动化与智能化:随着人工智能、机器学习等技术的发展,软件开发过程将更加自动化和智能化,提高开发效率和软件质量。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

V ol.16, No.1 ©2005 Journal of Software 软 件 学 报 1000-9825/2005/16(01)0001 软件工程技术发展思索∗杨芙清+(北京大学 计算机科学技术系,北京 100871) Thinking on the Development of Software Engineering TechnologyYANG Fu-Qing +(Department of Computer Science and Technology, Peking University, Beijing 100871, China)+ Corresponding author: E-mail: yang@, Received 2004-07-07; Accepted 2004-09-06Yang FQ. Thinking on the development of software engineering technology. Journal of Software , 2005,16(1): 1−7. /1000-9825/16/1.htmAbstract : The paper gives some thinking according to the following four aspects: 1) from the law of things development, revealing the development history of software engineering technology; 2) from the point of software natural characteristic, analyzing the construction of every abstraction layer of virtual machine; 3) from the point of software development, proposing the research content of software engineering discipline, and research the pattern of industrialized software production; 4) based on the appearance of Internet technology, exploring the development trend of software technology.Key words : software engineering; software characteristic; industrialized software production; software reuse;internetware摘 要: 在4个方面对软件工程技术的发展进行一些思索:(1) 从事物发展规律的角度,揭示软件工程技术发展历程;(2) 从软件本质特征的角度,浅析虚拟机各抽象层次的构造;(3) 从软件开发的本质,提出了软件工程学科研究的内容,并研究了软件工业化生产模式;(4) 以Internet 的出现为背景,探索了软件技术的发展趋势. 关键词: 软件工程;软件特征;软件工业化生产;软件复用;网构软件中图法分类号: TP311 文献标识码: A软件工程作为独立的一门学科,其发展已逾30年.20世纪60年代,由于高级语言的流行,使得计算机的应用范围得到较大扩展,对软件系统的需求急剧上升,从而产生了所谓的“软件危机”,即软件开发从质量、效率等方面均不能满足应用需求.为了解决软件危机这一问题,1968年,在NATO 会议上首次提出了“软件工程”这一概念,使软件开发开始了从“艺术”、“技巧”和“个体行为”向“工程”和“群体协同工作”转化的历程[1].本文针对该历程中的若干问题进行了一些探索,即从事物发展规律的角度,揭示软件工程技术发展历程;从软件本质特征的角度,浅析虚拟机各抽象层次的构造;从软件开发的本质,提出了软件工程学科研究的内容,并研究了软件工业化∗ Supported by the National Natural Science Foundation of China under Grant No.60033020 (国家自然科学基金); the National High-Tech Research and Development Plan of China under Grant No.2001AA114170 (国家高技术研究发展计划(863))作者简介: 杨芙清(1932-),女,江苏无锡人,教授,博士生导师,中国科学院院士,主要研究领域为系统软件,软件工程,软件工业化生产技术.2 Journal of Software软件学报2005,16(1) 生产模式;以Internet的出现为背景,探索了软件技术的发展趋势.1 软件工程技术发展历程30多年来,软件工程的研究和实践取得了长足的进步,其中一些具有里程碑意义的进展包括:• 20世纪60年代末~70年代中期,在一系列高级语言应用的基础上,出现了结构化程序设计技术,并开发了一些支持软件开发的工具.• 20世纪70年代中期~80年代,计算机辅助软件工程(CASE)成为研究热点,并开发了一些对软件技术发展具有深远影响的软件工程环境.• 20世纪80年代中期~90年代,出现了面向对象语言和方法,并成为主流的软件开发技术;开展软件过程及软件过程改善的研究;注重软件复用和软件构件技术的研究与实践.软件是客观事物的一种反映,客观世界的不断变化促使软件技术的不断发展,这种事物发展规律促使软件工程的产生和发展.我们仅从解决软硬件的异构性和各种软件之间的异构性角度,就可窥见软件技术发展的一种途径.如,为屏蔽计算机硬件之间的异构性发展了操作系统,为屏蔽操作系统之间和编程语言之间的异构性出现了支撑软件和中间件,为屏蔽不同中间件之间的异构性发展了Web Services技术等等;随着解决问题的不断深入,易用性和适应性要求的不断提升,以及软件技术的不断发展,还会出现更新、更复杂的异构问题,它的解决会促进软件技术的不断发展.从学科角度来看,要不断提炼所要解决问题的概念,建立相应的模型,并寻找处理方法,从而解决这些问题的概念模型和处理问题逻辑间的映射问题,如图1所示.UNIXWindowsOSLINIXSupport softwareÆ middlewareFortran Java C/C++Architecture framework design patternApplications.NET/COMWeb servicesJ2EE/EJBTo cover the difference ofcomputer hardwaresTo cover the difference ofoperation systems andprogram languagesTo cover the gap betweenapplication software and developmentplatformTo cover the differenceof middlewaresFig.1 An approach of development software engineering technology图1 软件工程技术发展的一种途径2 软件与软件特征软件是对客观世界中问题空间与解空间的具体描述,是客观事物的一种反映,是知识的提炼和“固化”.客观世界是不断变化的,因此,构造性和演化性是软件的本质特征.如何使软件模型具有更强的表达能力、更符合人类的思维模式,即如何提升计算环境的抽象层次,在一定意义上来讲,这紧紧围绕了软件的本质特征——构造性和演化性.在高级语言出现以前,汇编语言(机器语言)是编程的工具,表达软件模型的基本概念(或语言构造)是指令,表达模型处理逻辑的主要概念(机制)是顺序和转移.显然,这一抽象层次是比较低的.高级语言的出现,例如杨芙清:软件工程技术发展思索 3 FORTRAN 语言、PASCAL 语言、C 语言等,使用了变量、标识符、表达式等概念作为语言的基本构造,并使用3种基本控制结构来表达软件模型的计算逻辑,因此软件开发人员可以在一个更高的抽象层次上进行程序设计.随后出现了一系列开发范型和结构化程序设计技术,实现了模块化的数据抽象和过程抽象,提高了人们表达客观世界的抽象层次,并使开发的软件具有一定的构造性和演化性.近20年来,面向对象程序设计语言的诞生并逐步流行,为人们提供了一种以对象为基本计算单元,以消息传递为基本交互手段来表达的软件模型.面向对象方法的实质是以拟人化的观点来看待客观世界,即客观世界是由一系列对象构成,这些对象之间的交互形成了客观世界中各式各样的系统[1].面向对象方法中的概念和处理逻辑更接近人们解决计算问题的思维模式,使开发的软件具有更好的构造性和演化性.目前,人们更加关注软件复用问题,构建比对象粒度更大、更易于复用的基本单元——构件,并研究以构件复用为基础的软件构造方法,更好地凸现软件的构造性和演化特性.易于复用的软件,一定是具有很好构造性和演化性的软件.3 软件工程的主要研究内容从某种角度来说,软件开发的本质就是要实现“高层概念”到“低层概念”的映射,实现“高层处理逻辑”到“低层处理逻辑”的映射.对于大型软件系统的开发,这一映射是相当复杂的,涉及到有关人员、使用的技术、采取的途径以及成本和进度的约束,因此,我们可以把软件工程定义为:软件工程(software engineering)是应用计算机科学理论和技术以及工程管理原则和方法,按照预算和进度,实现满足用户要求的软件产品的定义、开发、发布和维护的工程或以之为研究对象的学科[2].软件工程与其他工程一样要有自己的目标、活动和原则,软件工程框架可以概括为图2所示的内容[3].Adopt right development paradigm Use good design method Provide high quality engineering supportFulfil effective engineering management ActivityR e q u i r e m e n t D e s i g n I m p l e m e n t a t i o n V e r i f i c a t i o n M a i n t e n a n c eUsability Correctness EconomicalEngineering object E n g i n e e r i n g p r i n c i p l e Fig.2 Software engineering framework图2 软件工程框架软件工程的基本目标是生产具有正确性、可用性及开销合宜(合算性)的产品.正确性意指软件产品达到预期功能的程度;可用性意指软件基本结构、实现及文档达到用户可用的程度;开销合宜意指软件开发、运行的整个开销满足用户的需求.以上目标的实现不论在理论上还是在实践中均存在很多问题有待解决,制约了对过程、过程模型及工程方法的选取.软件工程活动是“生产一个最终满足用户需求且达到工程目标的软件产品所需要的步骤”,主要包括需求、设计、实现、确认以及支持等活动.需求活动是在一个抽象层上建立系统模型的活动,该活动的主要产品是需求规约,是软件开发人员和客户之间契约的基础,是设计的基本输入.设计活动定义实现需求规约所需的结构,该活动的主要产品包括软件体系结构、详细的处理算法等.实现活动是设计规约到代码转换的活动.验证/确认是一项评估活动,贯穿于整个开发过程,包括动态分析和静态分析.主要技术有模型评审、代码“走查”以及程序测试等.维护活动是软件发布之后所进行的修改,包括对发现错误的修正、对环境变化所进行的必要调整等.围绕工程设计、工程支持以及工程管理,提出以下软件工程基本原则:4 Journal of Software 软件学报 2005,16(1)第1条原则是选取适宜的开发风范.以保证软件开发的可持续性,并使最终的软件产品满足客户的要求.第2条原则是采用合适的设计方法.支持模块化、信息隐蔽、局部化、一致性、适应性、构造性、集成组装性等问题的解决和实现,以达到软件工程的目标.第3条原则是提供高质量的工程支持.提供必要的工程支持,例如配置管理、质量保证等工具和环境,以保证按期交付高质量的软件产品.第4条原则是有效的软件工程管理.仅当对软件过程实施有效管理时,才能实现有效的软件工程.由以上软件工程的概念和框架可以看出,软件设计的主要目标就是要实现好的结构,使开发的软件具有良好的构造性和演化性.软件工程学科所研究的内容主要包括:软件开发范型、软件设计方法、工程支持技术和工程管理技术.其中,软件开发范型涉及软件工程的“方向”问题,研究正确的求解软件的计算逻辑;软件设计方法涉及软件工程的“途径”问题,研究“高层概念模型和处理逻辑”到“低层概念模型和处理逻辑”的映射;工程支持技术和过程管理技术涉及工程过程质量和产品质量问题,研究管理学理论在软件工程中的应用.如上所述,软件开发就是实施了一个从“高层概念模型”到“低层概念模型”的映射,从“高层处理逻辑”到“低层处理逻辑”的映射,而且在这一映射中还涉及到人员、技术、成本、进度等要素,那么就必须研究映射模式即软件生产模式 问题.分析传统产业的发展,其基本模式均是符合标准的零部件(构件)生产以及基于标准构件的产品生产(组装),其中,构件是核心和基础,“复用”是必须的手段.实践表明,这种模式是软件开发工程化、软件生产工业化的必由之路[4].因此,软件产业的发展并形成规模经济,标准构件的生产和构件的复用是关键因素.实现软件复用的关键因素(技术和非技术因素),如图3所示,主要包括:软件构件技术(software component technology)、领域工程(domain engineering)、软件构架(software architecture)、软件再工程(software reengineering)、开放系统(open system)、软件过程(software process)、CASE 技术等,以及各种非技术因素,且各种因素是相互联系、相互影响的[5]. Classify, store, andquery Description Acquire ComposeComponents and architectureSoftware components technologyDomainengineering Software re-engineering Software architecture Open system technologySoftware process CASE technology Non-Technology factorFig.3 Key factors for achieve software reuse图3 实现软件复用的关键因素近年来人们认识到,要提高软件开发效率,提高软件产品质量,必须改变手工作坊式的开发方法,采取工程化的开发方法和工业化的生产技术.青鸟工程“七五”期间,已提出了软件生产线的概念和思想[6],其中将软件的生产过程分成3类不同的生产车间,即应用构架生产车间、构件生产车间和基于构件、构架复用的应用集成组装车间.软件生产线的概念模式如图4所示.杨芙清:软件工程技术发展思索 5workshop Standard and criterion AND Quality AssessmentFig.4 Software production line concept graph图4 软件生产线概念模式图由上述软件生产线概念模式图中可以看出,在软件生产线中,软件开发人员被划分为3类:构件生产者、构件库管理者和构件复用者.这3种角色所需完成的任务是不同的,构件复用者负责进行基于构件的软件开发,包括构件查询、构件理解、适应性修改、构件组装以及系统演化等.图5给出了与上述概念图相对应的软件生产线——生产过程模型[7].Fig.5 Software production line: Production process model图5 软件生产线:生产过程模型6 Journal of Software软件学报2005,16(1)从图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) 演化性:是指网构软件结构可以根据应用需求和网络环境变化而发生动态演化,主要表现在其实体元素数目的可变性、结构关系的可调节性和结构形态的动态可配置性上;演化性使网构软件系统具备了适应杨芙清:软件工程技术发展思索7Internet开放、动态和多变环境的应变能力;(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 (inChinese 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 softwareindustry. 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.。

相关文档
最新文档