企业级软件生产线2.0:国家电网云研发平台及应用(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-12 18:55:41

点击下载

作者:王继业

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

企业级软件生产线2.0:国家电网云研发平台及应用

企业级软件生产线2.0:国家电网云研发平台及应用试读:

前言

编写背景

在政府、金融等行业信息化建设快速发展的驱动下,近年来我国中间件市场一直保持稳定的增长态势。据相关咨询机构统计,2016年我国中间件市场总体规模为55.3亿元,同比增长9.5%。随着云计算、大数据等热点信息技术与行业信息化的紧密结合,将逐步催生出新的中间件需求,促使市场增速发展。

国家电网公司信息化起步于电力生产自动化,并经历了信息化应用新建、信息化共享集中、信息化统一架构组织的发展过程。2006年以来,国家电网公司不断融合Java EE、SOA/Web服务、微服务等架构技术,以及云计算的PaaS和SaaS关键技术要素,全力打造国内领先、国际先进的商业化成熟软件产品——统一应用开发平台(SG-UAP),实现面向服务、基于构件的开发,实现开发资源的有效继承与共享,初步实现信息系统的快速开发实施。“十三五”以来,按照国家电网公司信息化建设需求和“大平台、微应用”的建设思路,SG-UAP平台适应新形势、新思路、新技术,融入“云大物移”、“DevOps一体化”等技术,形成SG-UAP 3.0云研发平台,支撑业务项目组新的开发模式,提供应用在线设计、开发、测试、发布和运维的全过程服务能力,支撑微应用、移动应用建设,实现应用“云端开发、敏捷交付、灰度发布”,保持了平台的先进性,更好地支撑技术革新和业务发展。

国家电网公司在软件开发平台建设发展过程中,积极探索和实践先进的软件工程理论和软件开发方法学,以软件工程领域成熟的软件生产线技术为基础,以物联网、移动互联网等新网络环境的应用系统为目标,以云计算等新型基础设施为平台,提出新型的软件生产方法论及相应的技术框架、平台架构等,形成SG-UAP软件生产线方法,本书称其为“企业级软件生产线2.0”方法。企业级软件生产线2.0方法的提出,为SG-UAP平台建设和发展带来了指导性的方法论,并通过融合多种软件开发新技术,推动了SG-UAP平台的跨越式发展和大规模应用。截至目前,SG-UAP共支撑144个项目的建设,其中国家电网公司统推项目84个,省(市)公司、直属单位自建项目60个。该平台重点支撑了营销、生产、基建、电力交易、人资、财务等企业核心资源及电网主营业务信息化建设,支撑项目涉及国家电网公司多个重点领域。

编写目的

本书旨在归纳总结国家电网公司在SG-UAP平台建设中取得的初步成果和经验,分析说明新技术形势下软件开发和软件生产线发展的现状和存在的挑战,为后续平台建设提供参考,这正是国家电网公司凝练形成企业级软件生产线 2.0方法论的初衷。SG-UAP平台在大规模应用中取得的良好效益,充分说明了国家电网公司新的平台建设思路和方法论的正确性。

本书旨在以国家电网公司多年软件开发平台建设中收获的成果和遇到的问题为基础,为我国软件行业的下一步发展提供一个成功的建设案例,为软件平台建设单位和个人提供一个可参考的指南。

内容概述

本书共8章,主要包括四部分:SG-UAP平台建设背景和态势分析、SG-UAP方法论和平台、SG-UAP平台的应用开发实践和应用案例、总结与展望。(1)SG-UAP平台建设背景和态势分析,包括第1、2、3章。

① 第1章,介绍国家电网公司信息化发展和软件开发平台建设的基本情况,从而提出“企业级软件生产线2.0”方法论。

② 第2章,着重梳理软件及软件开发的历史发展阶段,阐述构件软件工程和软件生产线的基本概念和发展现状。

③ 第3章,深入分析软件开发及运行的新环境、新技术和新方法,并总结分析这些因素对于软件生产线带来的新要求和新挑战。(2)SG-UAP方法论和平台,包括第4、5章。

① 第4章,详细阐述企业级软件生产线2.0方法论的核心思想、基础模型和关键技术等。

② 第5章,介绍国家电网公司的SG-UAP软件生产线平台,包括平台建设理念、发展历程、总体架构、核心功能、技术特色等。(3)SG-UAP平台的应用开发实践和应用案例,包括第6、7章。

① 第6章,详细介绍SG-UAP平台的应用开发过程和实践指南,包括单体应用开发、微服务开发、快速构建、云研发等重要技术形态的开发过程。

② 第7章,介绍SG-UAP平台在国家电网公司实际应用的3个系统,包括应用的业务需求,系统架构设计、功能设计和应用效果等。(4)最后,第8章是本书的总结与展望。

读者范围

本书的读者范围包括:企事业单位信息化主管及相关工作人员、软件平台咨询顾问、软件项目架构师、软件开发人员、其他相关的计算机从业者,以及对软件架构、云计算、微服务等感兴趣的人员。

编写分工

第1、2章由王继业编写,第3章由魏晓菁编写,第4章由孙德栋编写,第5章由刘迪编写,第6章由董爱强编写,第7、8章由柏峻峰编写。各章内容均经集体讨论修改,由王继业负责统稿。

致谢

本书的成稿得益于国家电网公司 SG-UAP项目组多年的技术积累和应用实践。在本书的出版过程中,得到了国网信息通信产业集团有限公司各级部门的大力支持,同时还得到了电子工业出版社的积极配合,在此一并表示衷心的感谢。编者2018年4月第1章引言1.1国家电网公司信息化发展

国家电网公司信息化起步于电力生产自动化,并经历了信息化应用新建、信息化共享集中、信息化统一架构组织的发展过程。“十五”前,随着计算机技术的推广和发展,为满足公司业务应用的需要,国家电网公司在财务、营销、行政办公等方面率先开展了一些信息化建设工作。“十五”期间,许多基层公司为提升自身工作效率,自主开展了许多信息化系统的设计建设工作,这是国家电网公司信息化的发展阶段,在此期间形成大量单一业务线的信息系统。“十一五”期间,国家电网公司全面实施了信息化SG186工程,坚持“四统一”原则,按照“统一组织、典型设计、试点先行、分步推广”的工作思路,大力推进信息化建设,推动信息化向集中统一和优化整合方向发展,完成了信息化从条块分割的部门级向横向集成、纵向贯通的巨大转变,实现了信息化跨越发展。“十二五”期间,围绕建设“一强三优”现代国有企业的战略目标,在继承和发展SG186工程建设成果的基础上,全面建成SG-ERP,国家电网公司信息化建设和应用水平得到大幅提升,一体化平台业务支撑能力更强,业务应用系统覆盖面更广、集成度更深、智能化更高,信息系统安全运行保障更可靠。国家电网公司建成了统一应用开发平台(State Grid Unified Application Platform,SG-UAP),实现面向服务、基于构件的开发,实现开发资源的有效继承与共享,初步实现信息系统的快速开发实施。

近年来,信息技术快速发展,科技革命和产业变革不断推进,第三次工业革命、工业4.0、工业互联网、全球能源互联网相继提出,伴随着中国制造、互联网+等战略部署,信息化战略地位突显,国家电网公司迎来新的发展机遇与挑战,需要应用信息技术推动引领创新发展。“十三五”期间,国家电网公司将以优化提升SG-ERP建设成果为载体,广泛应用云计算、大数据、物联网和移动技术,全面提升信息平台承载能力和业务应用水平,实现信息化融入公司全业务、全流程,实现数据资产集中管理、数据资源充分共享、信息服务按需获取,建成智慧化的国家电网公司一体化集团企业资源计划系统(SG-ERP 2.0)。1.2国家电网软件开发平台建设

为有效支撑大规模应用系统开发和运行,形成完备的行业解决方案,并逐步将平台应用范围拓展至整个电力行业,最终具备社会化运营能力,国家电网公司积极践行先进的软件工程方法和软件生产线的开发模式。自2006年以来,不断融合Java EE、SOA/Web服务、微服务等架构技术,以及云计算的PaaS和SaaS关键技术要素,全力打造国内领先、国际先进的商业化成熟软件产品——SG-UAP平台。它是一套企业级信息系统基础框架和公共套件集,支撑业务应用系统的设计、开发、测试、发布、运维的全过程,使用对象主要为业务应用系统的开发和实施人员。SG-UAP平台是在PI3000和SoTower 基础之上,融合多个平台的优点研发而成的综合性开发工具及应用运行平台。SG-UAP平台统一了技术标准,屏蔽了大量的底层技术细节,提供了高效能的开发工具和大量可复用的功能组件,提高了业务系统的开发效率,降低了系统开发与维护成本。2013年以来,SG-UAP积极顺应国家电网公司云计算的发展趋势,实现云环境中的业务系统运维、治理能力,成为运行在公司私有云中的PaaS平台。

总体来说,国家电网软件开发平台的发展,大致可分为三个阶段:2006—2012年,SoTower产品阶段;2012—2015年,SoTower融合形成SG-UAP阶段;2015年至现在,SG-UAP云研发阶段,形成SG-UAP 3.0云研发平台。具体如图1-1所示。(1)SoTower是面向电力行业的企业级应用系统的开发和运行支撑平台,它负责提供应用系统开发过程中所需的各项基础技术组件和业务组件,并在应用系统的运行期提供安全、稳定的运行支撑环境。SoTower平台对复杂的应用开发进行了分层,帮助应用开发团队在标准化开发与个性化开发之间找到一个完美的契合点。SoTower平台屏蔽了大量的底层技术细节,使得开发人员从纷繁复杂的技术细节中脱身出来,更多地将注意力投入到业务需求的分析与设计上,从而提高了开发效率,保障了开发质量;提供大量可配置化的开发功能,提高了代码的可复用度与可读性,从而减少了项目后期的调整与维护成本;提供可视化设计与开发工具,降低了开发人员的学习成本,减少了项目的前期投入成本,并优化了团队组成结构。图1-1 国家电网软件开发平台发展历程(2)SG186工程建设中,公司自主研发的SoTower和PI3000平台,累计提供12大项、近4300小项功能,成功应用于电力生产管理、营销管理、应急指挥、运维监管、电子商务、综合管理等业务系统,覆盖国家电网过半的信息化系统建设项目,同时也覆盖了约60%的业务应用。为提高公司业务应用系统技术架构的一致性,充分共享和整合研发资源,提高软件开发质量和服务水平,降低建设与运营成本,满足公司信息系统一级部署、高性能数据处理等新业务应用的需求,自2012年起,公司在继承SoTower平台和PI3000平台成果的基础上,采用融合路线建设了SG-UAP平台。(3)SG-UAP平台经过多年的建设,其功能已基本满足公司业务应用系统建设的需要。近年来,结合“十三五”信息化建设工作开展的需要,SG-UAP在微应用框架建设、基于云环境的研发、功能完善与组件丰富上做出了积极的探索和发展。首先,“云大物移”推动统一应用开发平台,不断提升平台自身架构水平,提升研发效率,降低研发难度,从而支撑公司信息化发展。随着云计算技术的迅猛发展及国家电网云资源池的建设,基础开发平台(平台即服务)的云架构化已是不可阻挡的新兴模式,在全网实现统一快捷的云上应用的构建、部署及管理可节省大量应用建设和管理维护成本。其次,根据公司信息化建设工作的规划和部署,未来业务系统之间应充分实现信息共享与业务融合,避免功能上的重复建设,需要将业务功能演化成一个个独立的服务,应用更加轻量化。随着建设国家电网公司一体化国网云应用平台目标的确立,SG-UAP对原有功能继续做完善提升的同时在研发方向上还需要思考如何为平台提供应用构建组件,以使得能够高效地开发出符合国家电网云平台运行需要的应用。2015年年底,国家电网公司正式将SoGrid云平台融合到SG-UAP,开始云研发平台的研制工作。截至2017年7月,正式发布SG-UAP 3.0云研发平台。(4)在“十三五”SG-ERP 2.0信息化总体框架中,SG-UAP平台属于“应用构建板块”,框架规划明确指出应用构建平台(含SG-UAP)应该“建立‘一站式’集成开发环境,实现业务功能的敏捷开发和快速部署,支撑需求快速实现”;同时,基于SG-ERP 2.0提出的“微应用”模式,SG-UAP平台应该对微应用的架构模型、开发框架、运行监控提供支持,从应用构建角度助力“多场景、微应用”目标的实现。1.3企业级软件生产线2.0

国家电网公司在软件开发平台建设发展过程中,积极探索和实践先进的软件工程理论和软件开发方法学,凝练出企业级软件生产线 2.0方法论,并形成SG-UAP平台作为企业级软件生产线平台,共支撑144个项目的建设,覆盖营销、生产、基建、电力交易、人资、财务等核心资源及国家电网主营业务信息化建设。

软件生产线是当前信息领域最流行的软件工程方法和软件复用技术之一,它最初由卡耐基-梅隆大学的软件工程研究所提出,经过十几年的发展,软件生产线方法在理论和实践上都取得了较大的进展,并在许多基本理论和基本原则上形成了共识。随着云计算、大数据、物联网、移动互联网等新兴技术和平台的大量应用,互联网基础架构得到了极大扩展,分布性、自治性、异构性、海量性、可演化性成为网络平台及其网络化信息系统的主要特征。在这种环境下,基础软件和应用软件的开发面临极大的挑战,如何在新环境下有效地组织和管理资源,通过网络化协同的方式完成高质量软件系统的快速开发、持续集成、可靠运行,需要从软件工程方法论、技术架构、支撑平台等多个层面提出新方法和新技术。另外,从国家电网公司的信息化建设面临的困境上分析,业务应用的快速变化和创新已经成为公司信息化发展的新常态,公司已有平台在应用灵活性、系统扩展性、持续交付能力、运维成本等方面均难以满足新形势的要求。

国家电网公司以软件生产线为导向,以物联网、移动互联网等新网络环境的应用系统为目标,以云计算等新型基础平台为基础,提出新型的软件生产方法论及相应的技术框架、平台架构等,形成SG-UAP软件生产线方法,我们称之为“企业级软件生产线2.0”。相比于已有的软件生产线方法和平台,企业级软件生产线2.0以SaaS和微服务等面向服务为核心架构理念、以模型驱动为核心开发方法、以在线研发为主要工作方式、以DevOps一体化为主要运行形态。第2章软件开发与软件生产线2.1软件的发展阶段

软件包括与计算机系统操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。它是一系列按照特定顺序组织的计算机数据和指令的集合。

在电子计算机出现之前,已存在各种面向数学计算的机械式计算机,如查尔斯·巴贝奇(Charles Babbage)的分析机。1860年,著名诗人拜伦的女儿 Ada Lovelace就尝试为巴贝奇分析机编写程序,她因此被称为世界上第一个程序员。同样,在电子计算机出现之前,就已经有很多数学家为计算机软件的出现打下了坚实的数学理论基础,比如著名的数学家阿兰· 图灵在1930年创立了图灵机理论,从理论上解决了计算机软件及其核心——“计算复杂性”和“算法表示”问题。

正是有了这些数学理论作为基础,加上当时电子技术的突飞猛进,二者相结合,才产生了电子计算机。1946年,世界上第一台电子计算机ENIAC在美国宾夕法尼亚大学诞生。伴随着电子计算机的诞生,以编写软件为职业的人才开始出现。在电子计算机发展的初期,硬件通常用来执行一个单一的程序,而这个程序又是为一个特定的目的而编制的。早期当通用硬件开始普及的时候,软件的通用性却是很有限的。大多数软件是由使用该软件的个人或机构研制的,软件往往带有强烈的个人色彩。早期的软件开发也没有系统的方法可以遵循,软件设计是在某个人的头脑中完成的一个隐藏的过程。

从1946年至今,计算机软件的形态经历了六个大的发展阶段,依次为裸机阶段、操作系统与数据库阶段、客户/服务器(C/S)阶段、浏览器/服务器(B/S)阶段、SOA/Web服务阶段、RESTful服务与SaaS阶段。这些阶段没有严格的时间划分,而且新发展阶段中,原发展阶段的软件形态依然存在。例如,云计算出现后,很多软件以SaaS的形式在云平台上部署运行,但Web服务形态的软件、B/S结构形态的软件依旧有大量的应用。计算机软件的发展阶段如图2-1所示。图2-1 计算机软件的发展阶段

第一阶段:裸机阶段

最初的软件是直接用机器语言编写的,机器语言是内置在计算机电路中的指令,由0和1组成。不同的计算机使用不同的机器语言,程序员必须记住每条机器语言指令的二进制数字组合,因此,只有少数专业人员能够为计算机编写程序,这大大限制了计算机的推广和使用。用机器语言进行程序设计不仅枯燥费时,而且容易出错。随后出现了面向机器的程序设计语言——汇编语言。汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆,从而增强了程序的可读性并且降低了编写难度。机器语言和汇编语言都是低级语言,而高级语言是高度封装了的编程语言,它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示。1954年,IBM公司发明了第一个用于科学与工程计算的FORTRAN语言。1964年,BASIC语言发明。高级语言都有相应的编译器,可以把高级语言编写的语句翻译成等价的机器指令。

第二阶段:操作系统与数据库阶段

20世纪60年代,开始出现操作系统和数据库,1969年UNIX出现。计算机软件的开发和运行开始依托于操作系统,许多用户用各自的终端同时与一台计算机进行通信。控制这一进程的是操作系统,它负责组织和安排各个作业。同时,为解决多用户、多应用共享数据的需求,使数据为尽可能多的应用程序服务,出现了数据库技术,以及统一管理数据的软件系统——数据库管理系统(DBMS)。

20世纪70年代以后,出现了结构化程序设计技术,Pascal语言和Modula-2语言都是采用结构化程序设计规则制定的,Basic这种为第三代计算机设计的语言也被升级为具有结构化的版本,此外,还出现了灵活且功能强大的C语言。同时,更好用、更强大的操作系统也被开发了出来。为IBM PC开发的PC-DOS和为兼容机开发的MS-DOS都成了微型计算机的标准操作系统。Macintosh机的操作系统引入了鼠标的概念和点击式的图形界面,彻底改变了人机交互的方式。

第三阶段:C/S阶段

C/S结构是20世纪80年代末提出的。在C/S形态的软件系统中,服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle或 SQL Server。客户端需要安装专用的客户端软件。通过这种方式,将任务合理分配到客户端和服务器端,既充分利用了两端硬件环境的优势,又实现了网络上信息资源的共享。由于这种结构比较适用于局域网运行环境,因此逐渐得到了广泛应用。

在C/S阶段,远程过程调用(Remote Procedure Call,RPC)是一个非常重要的技术。RPC的概念与技术早在1981年由Nelson提出。1984年,Birrell和Nelson将其用于支持异构型分布式系统间的通信。RPC成为当时实现分布式计算的事实标准之一,CORBA、DCOM、Java RMI/EJB等都采用RPC的思想。

20世纪90年代,面向对象的程序设计逐步代替了结构化程序设计,成为目前最流行的程序设计技术。面向对象的程序设计尤其适用于规模较大、具有高度交互性、反映现实世界中动态内容的应用程序。Java、C++、C#等都是面向对象程序设计语言。随之而来的是面向对象建模语言(以UML为代表)、软件复用、基于构件的软件开发等新的方法和领域。CORBA、EJB、COM/DCOM成为面向C/S的三大主要分布式构件技术。

第四阶段:B/S阶段

1990年,英国研究员提姆· 柏纳李(Tim Berners-Lee)创建了一个全球Internet文档中心,并创建了一套技术规则和创建格式化文档的HTML语言,以及能让用户访问全世界站点上信息的浏览器。正因为这些重大的发明,2017年提姆获得了有“计算机领域诺贝尔奖”之称的图灵奖。Internet的发展给传统应用软件的开发带来了深刻的影响,尤其是Web技术和网络分布式构件技术的飞速发展,促进了许多应用系统的体系结构从C/S结构向更加灵活的B/S多层分布式结构演变。

B/S结构是C/S结构的一种改进,它主要利用Web浏览器技术,包括多种脚本语言和ActiveX、Applet、Flash等,来实现原来需要复杂专用软件才能实现的强大功能。它最大的优点是使用Web浏览器即可使用软件,可以在任何地方进行操作而不用安装任何专门的软件,实现了客户端零安装、零维护。B/S结构应用越来越多,推动了AJAX技术的发展。AJAX程序可以在浏览器上进行部分处理,从而大大地减轻了服务器的负担,同时增加了交互性,能进行局部实时刷新。

在B/S阶段,服务器端软件主要采用分布式构件技术和数据库管理系统进行开发,并部署在应用服务器之上。而浏览器端的软件则大多采用动态脚本语言进行开发并动态生成,如JSP、ASP、PHP等。

第五阶段:SOA/Web服务阶段

B/S结构的发展极大地促进了Internet上信息的传递和资源的共享,利用Web技术可以轻松地在 Internet环境下实现电子商务、电子政务等多种应用。但是Internet上企业应用系统之间数据/系统的集成和互操作、企业业务流程的随需而变等方面的需求非常普遍,传统Web技术难以应对,SOA和Web服务技术随之出现。1998年,万维网联盟(W3C)发布XML 1.0标准。同年,IBM、Microsoft等共同提出SOAP(Simple Object Access Protocol,简单对象访问协议),并于2000年提交给万维网联盟成为联盟标准。2001年,IBM、Microsoft等将WSDL(Web Services Description Language,Web服务描述语言)提交给万维网联盟,成为联盟推荐的标准。这样,Web服务技术初步形成。

2001年,比尔盖茨在Microsoft .NET Today上提到:大多数业务信息都存储在集中式的数据库中,在需要时,向个人用户一次提供一个Web页面。这种孤立的应用和Web网站创建的是功能和数据的孤岛,解决方案的核心是XML及Web服务技术。2005年,比尔盖茨在《计算机世界日报》上提到:由于XML和丰富Web服务的出现,企业能够与合作伙伴无缝分享信息和过程,并建立跨越多个机构、统一整体的供应链,从而实现个人之间、个人与企业之间、企业之间的信息互连。

Web服务是一个平台独立、低耦合、自包含、基于可编程的Web应用程序,使用开放的 XML标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。Web服务通过WSDL来描述,通过SOAP进行服务访问,在UDDI商业注册中心发布,从而使开发者和电子商务应用程序可以搜索并定位到该服务。在Web服务开发的过程中包含三个清晰的角色:服务提供者、服务请求者和服务注册中心。

面向服务的架构(SOA)将应用程序的不同功能单元(服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它独立于实现服务的硬件平台、操作系统和编程语言,从而使得各种系统中的服务以一种统一和通用的方式进行交互。SOA体现了软件开发方式的一种根本性的变化,即不再是构造新的应用或调用已有的应用来完成特定的业务,而是通过在网络上发现并调用可用的服务来组合成一个系统,而且服务提供者与服务使用者是松散耦合的。

第六阶段:RESTful服务与SaaS阶段

随着互联网技术、移动网络、智能终端的快速发展和云计算模式的成熟,SaaS (Software-as-a-Service,软件即服务)是近年来一种完全创新的软件应用模式,逐渐成为互联网应用的主要形态。同时,物联网、互联网+等网络新形态,以及大数据应用的需求,使得软件的应用对象、开发环境、运行环境等都产生了质的变化。SaaS将软件作为服务提供给用户,用户则通过网络来使用这些软件。在SaaS模式下,用户不需要管理或者控制底层的云计算基础设施,也不需要考虑应用类软件的安装、配置、调试、运行维护和升级,只是以按需租用的方式使用其提供的服务。SaaS服务提供商则负责维护和管理应用类软件。

SaaS软件模式的基础是Web服务,但是传统的Web服务技术使用XML作为消息格式、以SOAP封装、由HTTP传输,Web服务访问和执行的开销较大。因此,SaaS大多采用RESTful服务,它相比于SOAP更加简单明了,倾向于用更加简单轻量的方法设计和实现。REST代表表述性状态转移(Representational State Transfer),它是一种网络化超媒体应用的架构风格。它主要是用于构建轻量级、可维护、可伸缩的Web服务。基于REST的服务被称为RESTful服务。REST不依赖于任何协议,但是几乎所有RESTful服务都使用HTTP作为底层协议。2.2现代软件的分类与特征

经过70年的发展,软件产品已经向着种类繁多、高度复杂的方向发展,我们大致可将现代计算机软件分为系统软件、支撑软件和应用软件三类。(1)系统软件是属于计算机系统中最靠近硬件的软件。其他软件一般都通过系统软件发挥作用,它与具体的应用领域无关。操作系统、编译软件和数据库管理系统等都属于系统软件。(2)支撑软件是支撑软件开发、运行和维护的软件。传统的支撑软件以工具软件为主,包括建模工具、语言工具、开发工具、测试工具、版本维护工具等。随着网络技术的发展,网络应用软件需求促进了基于网络的中间件和基础架构平台软件的发展,这些软件用于支撑各种网络应用软件的开发、部署、运行、集成、管理、安全和维护,属于支撑软件的范畴。(3)应用软件是支持各种不同领域应用的专门软件。目前,计算机应用已经渗透到各行各业,软件对于国家经济、国防安全和人民生活的重要性,都是通过应用软件而为用户所直接感受到的。

如图2-1所示,计算机软件发展过程中,第二阶段出现了系统软件,从第三阶段开始出现了支撑软件,如EJB容器、Web容器、Web服务容器、微服务容器等。现代软件的发展,演变最多的是支撑软件。2.3软件开发方式的进化

软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。伴随着软件技术的发展,软件开发方式大致经历了4个主要的阶段,包括软件作坊阶段、软件工程阶段、构件软件工程阶段和软件生产线阶段。各阶段的时间跨度大致如图2-2所示,图中我们保留了计算机软件的发展阶段,使读者可以对软件和软件开发方式的阶段有一个对比。图2-2 软件开发方式的发展阶段

第一阶段:软件作坊阶段

这个阶段处于电子计算机出现之后至软件工程概念出现之前,大致从 1946年至1970年。电子计算机出现的最初10年中,尚无软件的概念,程序设计主要围绕硬件进行开发,规模很小,工具简单,无明确分工(开发者和用户),程序设计追求节省空间和编程技巧,无文档资料(除程序清单外),主要用于科学计算。

这个阶段的后期,硬件环境相对稳定,出现了“软件作坊”的开发组织形式。开始广泛使用产品化软件,从而建立了软件的概念。

伴随着计算机的广泛应用,计算机软件在计算机系统中的地位越来越重要。人们需要的软件越来越多,而且趋向大型化和复杂化,使软件开发变得越来越复杂,程序设计人员越来越满足不了需要,软件产品质量也变得难以满足各方面的要求,加上软件生产率低,导致软件成本大幅上涨。而在20世纪60年代末期,工业发达国家就已经意识到一种软件危机,即软件成本的急剧增长成为计算机系统最大开支项目,软件开发周期长,进度很难控制,质量也难以保证。

第二阶段:软件工程阶段

由于“软件危机”的产生,迫使人们不得不研究、改变软件开发的技术手段和管理方法。1968年,北大西洋公约组织(NATO)的计算机科学家们在联邦德国召开国际会议,讨论软件危机问题。在这次会议上正式提出并使用了“软件工程”这个名词。从此,软件工程作为一门学科正式诞生,人们开始了软件工程的研究。

软件工程是一种层次化的技术,包括软件工具、方法、过程三大要素。过程是软件工程的根基,它定义一组关键的过程区域;方法定义了“如何做”,它贯穿了过程中每一个步骤,提供解决方案;工具是用于支持过程和方法自动和半自动化的工作,它同样贯穿过程中每一个步骤。

软件工程的提出是为了解决软件危机,它为人们提供了一种新的系统化、规范化、数量化的工程原则和方法去进行软件的开发和维护,使得人们越来越认识到,按照工程化的原则和方法来组织管理软件的开发与维护工作,是摆脱软件危机的一个主要出路。此后一直到现在,以软件工程为指导思想的模式逐渐成为软件开发的主要模式。

20世纪70年代,为了解决软件项目失败率高、错误率高及软件维护任务重等问题,人们提出软件开发工程化的思想,形成了软件工程的概念、框架、方法和手段。此阶段硬件已向巨型化、微型化、网络化和智能化四个方向发展;数据库技术已成熟并广泛应用,第三代、第四代语言出现;结构化程序设计在数值计算领域取得良好效果;软件测试技术、方法、原理用于软件生产过程;处理需求定义技术用于软件需求分析和描述。

20世纪80年代末期逐步发展起来的面向对象的分析与设计方法,形成了完整的面向对象技术体系,使系统的生存周期更长,适应更大规模、更广泛的应用。这时,进一步提高软件生产率、保证软件质量就成为软件工程追求的更高目标。软件开发开始进入以过程为中心的阶段。这个时期人们认识到,应从软件生存周期的总费用及总价值来决定软件开发方案。在重视发展软件开发技术的同时,人们提出软件能力成熟度模型、个体软件过程和群组软件过程等概念,软件开发过程从目标管理转向过程管理。

第三阶段:构件软件工程阶段

在1968年的NATO国际会议上,Mcllroy在论文“大量生产的软件构件”中,提出了“软件组装生产线”的思想。从那以后,采用构件技术实现软件复用,采用“搭积木”的方式生产软件,成为软件开发人员的梦想。有效的软件复用可以提高软件开发的效率和质量,建立在构件复用基础上的软件复用将会带来极大的价值。

20世纪60年代末到80年代初,结构化的软件开发思想占主导地位,当时的复用是函数和模块。从20世纪80年代起,面向对象的软件开发思想迅速发展起来,通过类的封装、继承和应用,有效地实现了功能的复用。但是,这些复用方式脱离不了代码级复用的本质,复用的粒度较低,软件开发中的复用的潜力远远没有发挥出来。

进入20世纪90年代以后,软件开发技术的主要处理对象为网络计算和支持多媒体信息的互联网。为了适应超企业规模、资源共享、业务协同工作的需要,需要开发大量的分布式处理系统。这一时期软件工程的目的不仅在于提高个人生产率,而且通过支持跨地区、跨部门、跨时空的信息共享、协同工作来提高组织整体生产效率。同时,随着网络规模、技术与应用的快速发展,软件技术与系统也日益体现出网络化、分布性等特性。构件技术在互联网时代突飞猛进,为实现软件复用的理想,把握软件危机所带来的机遇,软件构件技术被大量开发,主流的包括微软公司提出的COM/COM+、SUN公司提出的JavaBean/EJB、OMG提出的CORBA等。它们为应用软件的开发提供了可移植性、异构性的实现环境和健壮平台,结束了面向对象中的开发语言混乱的局面,解决了软件复用在通信、互操作等环境异构的瓶颈问题。

人们认识到计算机软件开发领域的特殊性,不仅要重视软件开发方法和技术的研究,更要重视总结和发展包括软件体系结构、软件设计模式、互操作性、标准化、协议等领域的重用经验。软件复用和软件构件技术逐步成为主流软件技术。基于构件技术,可以在更高抽象层次上实现大粒度的软件复用,奠定了现实可行的软件工业化生产技术基础。基于构件复用的软件开发技术是实现软件产业工业化生产的核心技术,也是形成软件产业规模化生产的技术基础。

第四阶段:软件生产线阶段

构件技术为软件开发提供了更高抽象层次、大粒度的软件复用,为软件工业化生产奠定了技术基础。随着软件应用的普及,企业对软件也越来越重视,不断地要求软件提高效率,提升技能,增强企业竞争力。随着客户的增多,软件企业需要面对更多的客户处理软件共性和个性问题。如何保证低成本、高质量、快速上市等要求就成为了企业竞争力的主要表现之一。结合软件工程的理念,如何在工程化思想的指导下,基于构件复用技术和强大的软件开发平台,实现软件产品的自动化组装/生产是软件工业化生产的重大问题。就像现代化的汽车生产工厂,输入一定的原材料,在少量生产工人参与的情况下,汽车生产线可以自动化、大批量地生产出完整的汽车。

2000年卡耐基-梅隆大学软件工程研究所发起召开了第一届国际软件产品线会议,并提出一个完整的、经实践确认的软件产品线开发方法。2004年,微软公司提出“软件工厂”(Software Factory)的理念,它作为一种创新的方法,可以帮助我们基于可重用流程和软件框架之上创建产品线,采用软件工厂将会帮助我们从系统化的重用中获得规模化开发,获得更快的交付时间,更少的测试但更高的质量及更好的可维护性等。软件工厂是软件生产实现社会化、标准化的一种组织形式,是能按需要形成批量生产软件产品的场所。软件工厂是使用一个基于工厂模式的模版来配置外部工具、过程和内容的一条产品线。通过适配、装配和配置一些框架化的构件,能够自动化地对一个典型架构的产品进行开发并维护产品的变化。软件工厂主要有两种模式,一种是基于软件开发的软件工厂,另外一种是基于软件组装的全自动化软件工厂。

此处,读者暂且不必深究软件工厂、软件产品线和软件生产线之间的关系和区别,在本章第2.5节中,将会详细讲述。2.4构件软件工程

构件是面向软件体系架构的可复用软件模块,是可复用的软件组成成分,可被用来构造其他软件。它可以是被封装的对象类、类树、一些功能模块、软件框架、软件构架、文档、分析件、设计模式等。构件以一个逻辑紧密的程序代码包的形式出现,有着良好的接口,开发者可以通过组装已有的构件来开发新的应用系统,从而达到软件复用的目的。

软件构件的种类很多,包括面向分布式计算的构件、面向业务流程的构件、面向数据的构件、面向用户界面的构件等。随着网络规模、技术与应用的快速发展,软件技术与系统也日益体现出网络化、分布性等特性。分布式计算构件技术在互联网时代突飞猛进,主流的软件构件技术包括OMG提出的CORBA、SUN公司提出的JavaBean/EJB、微软公司提出的COM/COM+及开放的Web服务构件等。

CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)是OMG组织在1991年基于众多开放系统平台厂商提交的分布式对象互操作内容制定的公共对象请求代理体系规范,用来定义“分布式对象系统”的标准。CORBA技术将面向对象的概念糅合到分布计算中,使得CORBA规范成为开放的、基于客户/服务器模式的、面向对象的分布计算的工业标准。对象请求代理(ORB)使对象能在一个分布式环境下透明地建立、接收请求和回答。它是建立分布式对象应用的基础,也是在异构和同构环境中应用之间交互的基础。ORB是CORBA规范的核心,它提供了许多机制,这些机制用于接收请求、定位请求的对象实现,或用于准备对象实现及与组成请求的数据通信等。

J2EE(Java 2 Platform Enterprise Edition)是SUN公司在1999年提出的开发、部署和管理基于Java的分布式应用的标准平台,之后提交JCP进行维护。J2EE的核心是一组规范和指南,定义了一个使用Java语言开发多层分布式应用系统的标准中间件体系结构,包括JSP、Servlet容器、EJB容器、JDBC、JNDI(命名目录服务)、JTS/JTA(事务服务)、JMS(消息服务)等。J2EE使用EJB服务器作为构件的部署环境,提供了分布式计算环境中构件需要的服务,例如组件生存周期的管理、数据库连接管理、分布式事务支持、命名服务等。J2EE利用Java语言自身具有的跨平台性、可移植性、对象特性、内存管理等方面的性能,为应用服务器的事务提供了一个完整的底层框架。

Windows DNA/COM是由微软公司提出的基于Windows操作系统平台的构件技术规范及实现,其最新形式是.NET。DNA是微软公司面向分布式应用的技术解决方案,是微软基于组件的分布式应用程序框架结构,其目的是为Windows平台上的应用开发提供一个框架和环境。COM(Component Object Model)是微软公司的一种构件对象模型。COM+是COM/DCOM/MTS的统一体,继承了它们所有的优点,并且更容易开发、发布和维护。COM+的基础是 COM,并增强了一些通用服务,如负载均衡、内存数据库、事件模型、对象库、队列组件、组件的管理和目录信息等。

软件构件技术是软件复用的关键因素,也是软件复用技术研究的重点。软件构件技术主要包括构件获取、构件模型、构件描述语言、构件分类与检索、构件组装等,这些都是构件复用的核心技术。基于构件复用的软件开发过程如图 2-3所示。图2-3 基于构件复用的软件开发过程2.5软件生产线2.5.1 基本概念

在软件生产线阶段的软件开发方式中,有一些核心的概念,如软件产品线、软件产品线工程、软件生产线、软件工厂等,这里对这些概念做一下具体阐述。(1)软件产品线(Software Product Line):这个概念由卡耐基-梅隆大学的软件工程研究所提出,他们将软件产品线定义为“共享一组公共受控特征,满足特定市场需要,并且按照预定方式在相关核心资产基础上开发而成的一系列软件系统”。软件产品线是软件企业实现系统化复用的有效方法。一个产品线是共享一组共同设计及标准的产品族,从市场角度看是在某市场片断中的一组相似的产品。这些产品属于同一领域,具有公共需求集,可以根据特定的用户需求对生产线体系结构进行定制,在此基础上通过可复用构件和特定应用构件的组装得到。(2)软件产品线工程:为了进行软件产品线开发,卡内基-梅隆大学软件工程研究所给出了软件产品线实践框架,从而帮助人们了解和建立软件产品线。软件产品线实践是一种系统的方法,通过按照一定的生产方式,使用核心资产进行集成、实例化或者产生多种产品来构成软件产品线。软件产品线实践包括了战略级、粗粒度的重用。软件产品线实践也称为软件产品线工程,主要包括领域工程和应用工程两个阶段。在应用工程阶段,人们利用领域工程产生的核心资产进行组装集成来生产产品家族的软件制品。(3)软件生产线(Software Production Line):为了进行软件产品线实践,人们引入了软件生产线。自北大青鸟工程提出软件生产线概念和思想之后,在国家863计划重点课题“可信的国家软件资源共享与协同生产环境”中给出了软件生产线的确切定义:软件生产线是按照一定的软件生产方法,将若干软件生产工具和构件有序组织起来的软件开发环境,生产线能够较为完整地提供成套的软件开发支撑。(4)软件工厂:微软公司将软件工厂定义为“使用一个基于软件工厂模式(Software Factory Schema)的软件工厂模板(Software Factory Template)来配置外部工具、过程和内容的一条产品线。通过适配、装配和配置一些框架化的组件,能够自动化地对一个典型架构的产品进行开发并维护产品的变化”。软件工厂的四个核心要素分别是软件产品线、模型驱动开发、架构框架和构建指南。

综上,可以看出软件生产线和软件工厂的概念比较接近:①软件生产线中的软件生产方法包括模型驱动开发、架构框架和构建指南等;②软件生产线中的软件开发环境可有效实现软件工厂所需的适配、装配和配置等;③软件生产线中的构件,包含软件工厂中的软件产品线和一些框架化的组件。而软件产品线是软件生产线的加工成果,是在生产线中开发出来的、满足特定市场需求的一组共性的软件系统。软件产品线工程则是软件生产线的生产方法。

本书后面的章节将使用软件生产线这个概念,包含软件工厂的内涵及软件产品线和产品线工程方法。2.5.2 软件生产线及其应用

软件生产线是软件企业实现系统化复用的有效方法,复用的对象包括生产线体系结构、构件、过程模型等。基于生产线的软件产品开发的特点是维护公共软件资产库,并在开发过程中复用这些资产。

生产线工具可以涵盖软件生产过程、管理协同过程和质量过程等软件开发全生命周期。通过软件生产线集成框架能够集成软件工具、软件构件、软件服务及相应的协同机制,从而形成一条软件生产线,实现软件制品的开发或加工处理。

根据不同软件生产模式和集成策略,可以形成不同的软件生产线,例如基于构件的软件生产线、面向服务的软件生产线、支持异构集成的软件生产线和支持监控的软件生产线等。软件生产线实现软件制品的加工处理,其共性基础是:在软件可信保障机制、开发协同平台及共享资源库的共同支撑下,灵活组合软件需求分析、建模、开发、组装/集成和部署等各阶段生产工具,形成一条软件制品转换流程,通过对输入制品的有序加工处理,形成所需要的加工后软件制品。因此,可以认为软件生产线的实质就是支持软件产品线实践的开发环境,其内涵为按照一定的软件生产方法,利用核心资产和相关工具支持进行特定领域内软件家族制品的生产。

软件生产线是软件工程界的一个研究热点。2000年卡耐基-梅隆大学软件工程研究所发起召开了第一届国际软件生产线会议,并提出了一个完整的、经实践确认的软件生产线开发方法。除此之外,软件复用国际会议等也将软件生产线作为一个主要的关注点。IBM、Microsoft等公司则提出了特征驱动、面向方面、基于模型驱动架构的生产线开发项目——feasiPLe。Beglever软件公司的GEARS为创建软件大规模定制生产线提供了底层框架和开发环境,通过与传统的软件工程工具和技术联合使用,GEARS可以方便地对面向单一软件产品开发的系统进行扩展,实现软件产品的大规模定制生产。ESAPS作为欧洲6个国家12家公司和10家研究机构合作研发的项目,旨在为大型软件组织引入产品家族开发概念,以提高医学成像、移动电话、航班控制、能源销售和汽车电子等领域的嵌入式软件和分布式软件产品的开发效率。ESAPS结合商业、体系结构、流程和组织4个开发关注点,试图从开发样式和复用两个层面来提高软件产品生产率,并已经在 Philips、Nokia、Siemens、Thales和 Telvent等公司推广试用。

软件生产线在软件产业界也得到了很好的实践。早在20世纪90年代,美国国防部的NUWC(Naval Undersea Warfare Center)中心就开发了RangeWare生产线。ATAPO(Army Technology Applications Program Office)则成功地为美国陆航特勤队的战场软件开发了软件生产线系统;同时,软件生产线方案也被美国军方的FBCB2(Force XXI Battle Command Bridge and Below)和FCS (Future Combat System)系统所采用。在工业界,ABB的燃气涡轮控制软件、Boeing的航空设备电子软件、Philips的openTV交互式机顶盒软件和医学影像软件,以及包括 Siemens、Nokia等在内的一系列国际知名企业,均采用了软件生产线方法用于开发和维护面向不同用户需求的软件产品家族。其他著名的应用范例,还有瑞典CelsiusTech System公司和美国空军电子系统中心的生产线系统等。2.5.3 软件生产线工程

从技术和工程上看,软件生产线的工程框架如图2-4所示,分为两个阶段:领域工程和应用工程。领域工程产出平台的公共核心资产,应用工程产出产品。在整个开发生命周期中,需求、设计、实现和测试等子流程都紧密相连。领域工程的子流程目的在于满足通用需求,而应用工程是为了生产可供使用的产品。应用工程的子流程可以重用多达90%的领域工程资产,在生产过程中会不断地提供反馈给领域工程,这种循环反馈才能确保平台一直都能有效地生产出最终产品。每个产品基于平台开发,产品和平台有各自的开发团队和开发生命周期。图2-4 软件生产线的工程框架2.6国家科技计划重大项目2.6.1 核高基中间件研发项目

核高基就是“核心电子器件、高端通用芯片及基础软件产品”的简称,是2006年国务院发布的《国家中长期科学和技术发展规划纲要(2006—2020年)》中与载人航天、探月工程并列的16个重大科技专项之一。2009年,中创软件作为牵头单位,联合国防科技大学、北京大学、北京航空航天大学、中科院软件所、南京大学、西安交通大学、金蝶、东方通、中和威等国内权威中间件产学研单位,承担了核高基国家科技重大专项“国产中间件参考实现及平台”建设,担负起国产中间件标准体系制定、核心技术研究与产品化、产业化的创新使命。

在专项课题的建设中,国内中间件领域最权威的“产学研用”力量汇聚在一起,以“兼容并蓄,开拓进取”为理念,形成“四方国件中间件产业技术创新联盟”,大大推动了中间件产业资源的整合及协调。国产中间件生态链的形成,对提升国产中间件研究、开发、服务和应用水平,提炼形成我国中间件标准体系,促进国产中间件技术和产业的快速健康发展具有重要意义。联盟以“十一五”核高基中间件项目主要承担单位为组成主体,在现阶段主要是围绕核高基中间件项目开展合作,打造一个由联盟成员共同开发、共同分享、共同维护的国产中间件参考实现框架,提升国产中间件整体竞争力。2.6.2 中国云专项

中国云重点专项根据《中国云科技发展“十二五”专项规划》,部署实施了《云计算关键技术与系统》重大项目一期(2011—2013年)、二期(2013—2015年)和三期(2015—2017年)任务。云一期任务重点是总体技术与典型互联网服务云平台;云二期任务重点是共性核心关键技术与装备;云三期主要基于一期的总体技术,并基于二期的关键技术与装备,结合云计算核心软件和支撑平台的技术需求,重点突破混合云管理、云端和终端资源的自适应协同与融合、云服务开发等云计算关键技术,研制相应系统或平台,并在典型领域开展示范应用。整个云专项的实施方案如图2-5所示。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载