`

软件工程未来发展趋势

 
阅读更多

软件工程未来发展趋势

本文的意图是讨论软件工程的未来发展趋势,但是软件工程的发展不可能是孤立的,所以我们首先需要思考一下计算模型和软件开发本身的变化和趋势,再由此推测软件工程的发展趋势。

从计算模型而言,应该来讲,传统的冯.诺依曼仍然被沿用;但从计算能力上来将,我们注意到了三个变化:

●CPU的运算能力按摩尔定律快速提升;但提升单颗CPU的计算能力已经越来越困难;

●并行运算技术以及多核多线程技术使服务器的处理能力飞速提升;服务器的处理能力不再是瓶颈,从而造成计算能力大量向服务器端迁移,C/S结构被无情抛弃,薄客户端(B/S结构)成为大势所趋;

●互联网的快速普及使得云计算成为可能,通过互联网相连的服务器集群在服务器端提供了更强大的计算能力;

基于上述计算能力的变化,从软件开发模式而言,我们注意到以下六个相关的趋势:

●由于计算能力向服务器端的快速集中,提供高并行计算能力和可用性的中间件技术被广泛采用,甚至已经成为构建大型软件系统的必选项;

● 因为采用了中间件技术,软件开发团队可以更集中关注于业务逻辑,而可以将许多细节交给中间件来管理,从而大大减少了需要编写的代码行数,也直接导致了软件开发团队的规模变得越来越小,但角色变得越来越专业化(如了解行业的需求分析员,了解中间件技术和领域构架的架构师等);

●计算能力的增强,使软件越来越易用,从而使软件变得无处不在,需要的软件开发人员数量急剧增长(组织形态是大量的小规模开发团队);在这一因素以及降低成本的压力下,开发外包变得非常普及;

●为了使分布在互联网上系统能够互相协作,SOA成为一个热点;

●互联网的普及,将原来分散开发人员聚合在一起,只要有一个合适的基础和好的框架,他们就可以开发出产品级的工具软件(以Eclipse,JBoss,MySQL,Subversion为例),从而开源成为了一种趋势;

●B/S结构的系统非常容易升级,这使得软件交付和升级的速度大大加快了(从以年月为单位,到以周天为单位);

回到正题,那么在这些大的趋势的作用下,软件工程会如何发展呢?我觉得在未来几年我们会看到如下的趋势:

●需求工程,渐成热点:专业化的角色,日益复杂的业务创新,全球分布的团队以及互联网级的交付速度,这些都对需求获取的正确性和有效性提出了更高的要求;我预计需求工程的研究和实施会成为近期的热点,其中Use Case技术会被更广泛而正确的应用,而相关工具的研发也会成为热点(如IBM Rational Requirements Composer,,Ravenflow等。

用例的优势在于它天生是黑盒的,它用自然语言抽象了用户和目标系统的交互,避免了混入分析、设计和实现细节,以保证用例可以被不懂具体技术的业务及测试人员所真正理解。同时,需求分析员又可以方便地通过用例分析(use case analysis)(即用分析类来试图在理想方式下实现用例),将需求体系精华成分析模型。在这一过程中,需求分析员可以更进一步地完善基于用例的需求体系,而不必担心分析模型会污染需求,从而实现需求与分析的分离及有效互动。

●DSSA和MDD,老树新花(基于领域的构架(DSSA)与模型驱动的开发(MDD)):随着软件应用的日益普及,软件已经超出了将手动流程自动化的范畴,而开始成为业务创新的主要推动力。因此,引入捕获特定领域内最先进需求及其实现架构的DSSA成为行业客户的热点之一。而且,DSSA的引入将MDD门槛大大降低了,也使基于DSSA的MDD支撑工具成为可能,从而可以极大地提高开发效率并保证软件质量(例如,Telelogic的Rhapsody就是一个成功的基于实时嵌入式系统构架的MDD工具)。

●迭代/敏捷,渐成标准:随着软件交付周期的日益加快,迭代化开发已经成为大多数软件开发团队的必选项。但是迭代对整个团队的需求、架构、协同及测试能力都提出了更高的要求,现在许多开发团队都在试图导入迭代化开发的过程中,敏捷可是被看成迭代化开发的一种导入方式,这不过敏捷的范围其实比迭代化开发更大一些。

敏捷的三个要素是迭代开发、坦诚合作和自适应性。坦诚合作其实才是敏捷的精髓,如Ivar所说,敏捷其实是有关Social Engineering的。敏捷的主要贡献在于他更多地思考了如何去激发开发人员的工作热情,这是在软件工程几十年的发展过程中相对被忽略的领域。

●持续集成,蓄势待发:持续集成是保证迭代化开发质量的主要方式,通过持续集成可以利用自动化的方式来尽量自动地、尽早保证代码质量。随着迭代和敏捷的流行,持续集成相关的工具成为现在市场上的新热点(如持续集成框架IBM Rational BuildForge, 开源软件CruiseControl,代码静态分析工具Klocwork Insight,IBM Rational Software Analyzer等)。

持续集成是一个复杂的系统工程,组织需要首先将现有的配置管理/变更管理工具与Build环境紧密集成并完成自动化Build过程,在根据企业/项目/产品的现状,定义如何自动化地检测软件质量(代码静态分析、单元测试或冒烟测试),并定义需要自动化生成的管理报表。

●基于实践的过程框架,方兴未艾:开发角色的专业化的和分布的全球化都要求软件开发过程更加规范,而敏捷又要求过程必须紧密贴合项目的实际需要,因此传统的大一统的过程无法符合这一需求。新一代的过程将是以实践为核心的,项目可以通过组装所需的不同实践来获得贴近项目要求的过程。IJI(Ivar Jacobson International)的EssWork和IBM Rational的RMC都是新一代的基于实践的过程框架。

依据过程专家长时间的经验,他(她)们很小心、很仔细地将一个完整的开发过程组件化,从开发过程抽象出一个个可以被单独导入又可以被组装到一起的实践,从而使逐步求精式的过程改进成为可能。对于一个软件组织而言,如果已经建立一个比较成熟的软件开发流程,但觉得这一流程并不适合所有项目的实际需要,那么目前可以考虑的是用实践的方式去重新梳理现有流程,以使项目组能够以实践为单位来组装出切合项目实际的流程;另外,该组织也可以将适用于本组织的业界流行的实践导入到现有流程当中,IJI公司的专家从业界最佳经验中抽取了八个实践,有关信息可访问(http://www.esslab.net:4040/ngp/)。

●配置管理,昨日黄花:随着开发团队规模的日益减小,配置管理的复杂性大大降低了,我们注意到越来越多的用户转向使用开源的配置管理工具(如Subeverison,JIRA,hosted-projects等等);未来的配置管理工具更多的以一种全生命周期管理平台(Application Lifecycle Management)的方式出现,弱化了单项的配置管理能力而强调了全流程的整合(如Microsoft VisualStudio Team System和IBM Rational Team Concert等)。

即便配置管理的复杂性降低了,但它仍然是开发项目管理的最重要的支撑平台之一。目前的重点应该是加强对项目经理进行有关配置管理知识的培训,让他(她)们理解到配置管理能力(如并行开发、基线回退等等)能够如何帮助项目开发过程的,从而使配置管理工具/环境的价值能够得到充分的发挥。

作为结语,软件工程对软件开发的重要性我无须赘言了。虽然,我上面列出了一些软件工程的热点,但读者一定要仔细分析组织自身特点以确定软件工程的改进步骤,扎扎实实的逐步改进,而不应该盲目地追求热点!

分享到:
评论

相关推荐

    软件工程未来发展趋势(精).pdf

    软件工程未来发展趋势(精).pdf

    软件工程未来的发展趋势

    描述软件工程在未来的发展趋势,了解专业发展方向

    软件工程——发展前景

    对于软件工程的历史及现状及未来的发展前景的详细的描述

    软件工程的未来——五位校长的研究报告

    本资源里面列举了五篇知名人士撰写的软件工程的未来发展趋势及大学应该如何培养使用社会发展的合格软件工程师。

    全球与中国岩土工程服务市场现状及未来发展趋势2021-2027.doc

    全球与中国岩土工程服务市场现状及未来发展趋势2021-2027.doc

    软件工程实践者之路

    内容提要:本书从1982年的第1版开始,就受到软件工程界的重视,成为高等学校计算机...第五部分是软件工程的高级课题,涉及到形式化方法、净室软件工程、基于构件的软件工程、再工程以及软件工程未来的发展趋势等问题。

    对软件工程的认识.doc

    摘要:本论文主要通过本学期对软件工程的学习,写出自己对软件工程的了解,涉及定义 ,由来,以及软件工程的开发过程,再分析我国软件工程的现状以及对未来发展趋势的 展望。 关键词:软件工程,软件生命周期,软件...

    IDC:ERP问世20年后中国ERP市场现状与未来发展趋势如何

    问世于1979年的企业资源计划(ERP)应用软件今年已经迎来了自己的20岁生日。ERP发展到今天,其功能已经从初始的物料需求计划MRP、制造资源计划MRPⅡ逐步演化到覆盖了整个...那么中国ERP市场现状与未来发展趋势如何?

    网上会展的未来发展趋势

    网上会展的未来发展趋势 一、中国网上会展发展阶段 预计在未来十年内,中国网上会展将经历如下三个发展阶段: 第一阶段:以大型展览为依托网上会展兴起阶段。以中国业内最大规模的展览会为依托,充分利用 传统展览...

    软件测试工程师培训教程

    软件测试工程师培训教程,主要记录了软件测试的一些方法、技巧,以及介绍了关于软件测试行业的未来发展前景等。

    走出软件作坊\软件工程及软件方法学

    内容独特,主要以作者自身多年工作的宝贵经验,来谈软件公司的项目管理和团队建设,主要包括对中小软件公司软件开发组织结构、团队文化、软件过程管理、团队激励、绩效考核、职业发展规划、未来业界发展趋势、个人...

    关于嵌入式开发工程师职业发展前景

    由于嵌入式开发工程师未来的就业方向主要区分为嵌入式软件开发和嵌入式硬件开发两方面,所以下面的嵌入式开发工程师的职业前景发展也主要是针对嵌入式软件开发工程师和嵌入式硬件开发工程师两个方向说明。

    软件工程项目管理结课大作业

    项目管理领域的新趋势:关注项目管理领域的新技术、新方法和新趋势,比如数字化项目管理、人工智能在项目管理中的应用、可持续项目管理等,分析它们对项目管理实践的影响和未来发展方向;项目管理成熟度模型(例如...

    软件工程的开发趋势研究 (2012年)

    本文主要是探讨软件工程的内涵以及未来的发展趋向,包括对未来软件工程如何系统地影响软件的开发过程的探讨,从而对软件工程的发展的可能性进行了憧憬。

    计算机程序设计语言发展史和对程序设计语言未来的看法.docx

    三、计算机语言的发展历程和发展趋势 计算机程序设计语言发展史和对程序设计语言未来的看法全文共6页,当前为第2页。计算机语言的发展是一个不断演化的过程,其根本的推动力就是抽象机制更高 的要求,以及对程序...

    计算机辅助设计的最近发展趋势.doc

    计算机辅助设计的最近发展趋势 计算机辅助设计的最近发展趋势 计算机辅助设计的最近发展趋势 当前世界各国都把提高制造业的自动化程度作为发展制造技术的主要方向,在微电 子技术飞速发展的今天,计算机辅助设计与...

    计算机辅助设计的最近发展趋势(2).doc

    计算机辅助设计的最近发展趋势 当前世界各国都把提高制造业的自动化程度作为发展制造技术的主要方向,在微电 子技术飞速发展的今天,计算机辅助设计与制造、数控技术、工业机器人、柔性制造系 统、计算机集成制造...

    计算机辅助设计的最近发展趋势.pdf

    计算机辅助设计的最近发展趋势 当前世界各国都把提高制造业的自动化程度作为发展制造技术 的主要方向, 在微电子技术飞速发展的今天, 计算机辅助设计与制造、 数控技术、工业机器人、柔性制造系统、计算机集成制造...

    软件工程课设-前后端分离的汽车充电管理系统设计与实现源码+项目说明.zip

    作为新型交通工具,电动汽车是未来汽车行业的发展趋势。在环境保护日益受到重视的今天,电动汽车越来越多,充电需求日益增大。充电桩作为重要基础设施,其运营管理水平直接影响着波普特大学电动汽车拥有者的使用...

Global site tag (gtag.js) - Google Analytics