系统工程引论
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

4.6 敏捷系统工程

近年来,国外有人提出敏捷系统工程的概念,这是从制造业中的敏捷制造发展而来的。敏捷系统工程(英文是Agile systems engineering)可以有两种理解:一种是敏捷的系统工程,另一种是敏捷系统的工程(从参考文献Haberfellner R,Weck O.Agile SYSTEMS ENGINEERING versus AGILE SYSTEMS Engineering.Fifteenth Annual International Symposium of the INCOSE,2005.的题名中两个名词的大小写可以分辨出来)。后者指的是构建一个敏捷系统的工程,敏捷系统来源于制造业中的一种先进制造方式:敏捷制造。敏捷制造方式从产品推广到系统,就出现了敏捷系统的开发。

敏捷的系统工程则是指把敏捷系统开发的一些特点和做法引入一般系统工程的过程中,以提高系统工程的质量和效益。这里对这些特点和做法加以简介。

敏捷制造方式的核心就在于快速地生产出准确满足用户需求的产品。一方面要“快”,另一方面要“准”。敏捷制造模式强调将柔性的、先进的、实用的制造技术,熟练掌握生产技能的、高素质的劳动者以及企业之间和企业内部灵活的管理三者有机地集成起来,实现总体最优化,对千变万化的市场做出迅速反应。它在全球化的市场竞争中能以最短的交货期、最经济的方式,按用户需求生产出令用户满意的具有竞争力的产品。

敏捷的含义是迅速、灵巧、能够适应想不到的变化。这种变化是由于用户需求的不够清晰、由于新技术的引入等原因所招致的。敏捷系统需要具有对变化反应的能力。一般来说,变化有主动和被动两种。

主动变化发生在下列情况下。

(1)需要开发一个新系统来满足新的要求。例如需要和用户、供应商、合作伙伴建立新的联系,或者生成新的中介环节。

(2)需要改进或升级以提高系统性能。例如改善接口的性能。

(3)需要转到一种新思路或者利用一种新知识。例如采用一种新的软件体系。

(4)需要插入一个具有新功能的子系统。例如新增基础设施,增加新的功能。

被动变化则发生在下列情况下。

(1)改正一个有错误功能的子系统或者不希望发生的后果,例如找到了一个故障点。

(2)对系统输入或预期的输出要进行更改。例如实时在线能力的变更。

(3)对需要的能力加以增减。例如接口数目的变化。

(4)对子系统之间的关系加以重组。例如处理事务的改变。

反应能力的测度指标有:

(1)时间。

(2)成本。

(3)质量。

(4)规模。

时间和成本的含义是十分清楚的。所谓反应的质量,表现在对反应的预见性和茁壮性上。反应的规模是指能够反应的区间大小。

参考文献Dove R.,Fundamental Principles for Agile Systems Engineering,2005 Conference on Systems Engineering Research(CSER),Stevens Institute of Technology,Hobokin,NJ,2005.介绍了为获得敏捷性,系统设计师可采用的10条原理。这些原理的大致含义可以用一些简单的术语列述如下。

为了达到可重用性,可以:

(1)采用封装的模块结构。

(2)采用插入式的互换方式。

(3)采用便于重用和复制的模块。

为了达到可重组性,可以:

(1)采取扁平的互动方式。

(2)使模块间的关系尽可能短时化,不必要联系时尽可能推迟联系。

(3)采用分布式通信和控制。

(4)实现自组织。

为了实现可伸缩型,可以:

(1)使系统的框架逐步演化。

(2)采用冗余模块和多样化的模块。

(3)采用有弹性的能力规模。

上述各种术语,在不同领域中的含义是不同的,对于硬件系统来说容易理解,对软件系统也还可以理解,而对抽象的系统(例如组织机构)就要通过联想和类比来理解。例如模块,在硬件设备中指的是某一实物部件,而在软件中则是指一段程序,在组织机构中是一个部门。这些一般原则用到各领域时,需要结合具体实际,加以考虑。

敏捷性落实到具体系统时,就构成了敏捷的系统,并不是每一个系统都需要构建成敏捷的系统,只有在需要敏捷性时才值得采取上述措施。这种需要多半发生在下列几种情况之下:一是系统的生命周期长,在此期间会面临一些未可预料的变化;二是系统的投资大,任何重大变化会造成时间、资源的巨大损失;三是环境因素变化频繁。只有在上面说的几种情况下,才值得花费一定代价去获得敏捷性。

如果把这些原理运用于系统的生命周期的各个步骤,使系统的开发工作具有敏捷特性,就是敏捷的系统工程过程了。在过程中,可以采取下面一些措施。

(1)从过去类似的项目中吸取成功的经验和失败的教训。

(2)主要着眼于委托者或者用户的价值。

(3)尽可能将结果展示给用户看,并在较短的过程之后听取反馈意见,及时纠正偏差。

(4)不断进行信息、知识的集成。

(5)尽可能精简一些不必要的活动,等等。