产品线

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Prior to 1986 Previous Technical Infrastructure
Minicomputers
1986 New Technical Infrastructure
Microcomputers
Few processors on point-to-point links Walterfall life cycle early attempts At incremental development Structured analysis/design
700K SLOC;300engineeryears over 7years
Multiprocessors, minicomputers Point-to-point links
30-100K SLOC
Platforms
Analog and 16-bit digital systems
通过对前后两个时间段CelsiusTech公司软件开发情况的比较 可以发现,随着时间的推移,其开发的系统越来越复杂,代码 行由30-100K SLOC增长到700K SLOC,原有的开发方法已经 不能满足要求,于是开始采用新的技术,如下表所示,并在这 些新的技术基础上建立起SS2000族软件产品线。
2 SA技术
软件体系结构(software architecture)技术关心和描述的, 是大型软件系统在组织结构特性方面的性质。 在很多大型软件系统开发的各种活动中,人们发现软件体系 结构的正确设计和选择,往往是整个软件系统最终成功的最为关 键的因素。 软件体系结构包括了对以下4方面所作的决策: (l)软件系统的组织; (2)构成系统的结构元素和各元素之间的接口,以及由元素 间各种协作所规定的各元素行为; (3)结构元素和行为元素合成为逐渐增大的子系统; (4)指导这种组织的软件体系结构风格、元素以及它们的接 口、协作和组合。
通过采用产品线技术,可以使软件产品的开发过程得到合理 的简化,减少软件开发和维护的费用,将产品快速推向市场。同 时,由于大量采用已有的组件,可以有效地规避风险。
运用产品线技术方法要注意以下4个重要结论: (l)为了在初始阶段获得业务案例,开发组织应该侧重干缓 解关键风险; (2)为了降低成本、减少缺陷和缩短上市时间,开发组织必 须使用可重用的构件; (3)为了避免交付延期、预算超支和产品质量低劣,开发组 织必须“首先抓住要害”。 (4)为了避免在交付时所构造的产品过时,开发组织不能固 执地认为不应作任何修改,如果采用分阶段迭代的方法可使开发 过程能够进一步沿着开发踪迹来处理变更。
对产品线一个更为通俗化的解释是:产品线中有仅有一个体 系结构以及一系列相关的组件,这些组件都是基于该体系结构构 建出来的;这些构件作为产品线成员共有一些属性,同时各自具 有其独有的一些属性;一个组织如果拥有一产品线,则可以源源 不断地生产出新的产品,同时这些新的产品也成为产品线的一员。 因为软件产品不同硬件产品,软件产品只是将副本交付给用户即 可,所以它可以保留在产品线中成为新成员,这便是软件复用的 立足点。
CBSD主要是关注运行级构件和它们之间的互操作,提供了 一种自低向上的、基于预先定制包装好的类属元素(构件)来 构造应用系统的途径。不过CBSD关注的重点都局限在二进制构 件的规范上,例如CORBA、EJB和DCOM。仅仅提供了在实现 层次上支持构件交互的基础机制,缺少系统化的指导开发过程 的方法学。实际上,我们没有理由仅仅局限在运行层次上来看 待构件,也不应该只是对代码进行复用,构件复用应该涵盖软 件生命周期的各个阶段。当前,虽然也存在一些开发过程,如 统一开发过程(unified process)和CATALYSIS,可以用于指导 CBSD,但是,提出这些过程模型的出发点井非针对CBSD,因 此未能全面展现CBSD的本质。
Rational development environment
SS2000族软件产品线层次化的软件体系结构如下图所示, 将整个软件体系结构从下到上分成四层:基本系统2000(Base System 2000)、基础层(Fundamentals)、普通应用层 (Common Applications)、一般应用层(General Applications), 底层直接与机器交互,主要采用C语言和汇编语言,上层与用户 交互,主要采用Ada语言。这样就可以实现对底层的封装,在系 统的顶层提供Target Tarcking、Fire Control、ASC、ECM四个接 口,通过对这些接口进行修改即可满足不同的应用需求。
1970-1980: MK2 Systems Kind of system
Size
Real-time embedded fire control Assembly language and RTL/2
1980-1985: MKFra Baidu bibliotek.5 Systems
Real-time embedded C3 RTL/2
CBSD的兴起主要是源于下面4个背景:在研究方面,现代 软件工程思想特别是对复用技术的强调,在产业方面,支持用 构件来建造GUI、数据库和应用部件的一些理论上质朴但实际可 用的技术的成功;在策略方面,某些主流互操作技术,如 CORBA、COM和EJB的开发者的推动;在软件界,对象技术的 广泛使用提供了建造和使用构件的概念基础和实用工具。
0
引言
软件复用技术可以极大地提高软件生产率、降低软件成本、 增强软件产品的可靠性,它是克服软件危机的行之有效的办法。
近年来关于软件复用的研究,人们主要集中于功能部件的复 用上,这也是源代码级的复用。然而,随着用户需求的提高和软 件技术的快速发展,在软件的设计开发过程中,特别是对大型的、 复杂的软件系统而言,开发者不仅要考虑到功能部件的设计和复 用,而且更要考虑到软件体系结构的设计和复用问题 在软件工程领域中,软件体系结构(SA)己经成为越来越重 要的课题,是设计的技术基础。它可以作为满足需求的框架,促 使软件工程的重点从功能向结构转移,以支持大型的复杂的软件 系统的开发和维护。但是,整个软件体系结构技术从理论到实践 还处在发展的时期,是抽象意义上的概念模型,如何构建软件体 系结构并没有切实可行的办法
产品线:基于软件体系结构、面向构件、实现 复用的软件开发方法
本 文 通 过 对 基 于 构 件 的 软 件 开 发 ( component based software development 简 称 CBSB ) 技 术 和 软 件 体 系 结 构 (software architecture 简称SA)技术进行综合以及引入瑞 典摄氏技术(CelsiusTech)公司和北大青鸟工程等软件产品线 成功案例,介绍一种以软件体系结构为指导、面向构件、实现 复用的软件开发方法,即产品线。它能不断地生产出一系列软 件产品,实现软件生产的规模化、系列化、标准化和工厂化。
但是,软件体系结构不只涉及结构和行为,还涉及到使用、 功能、柔性、重用、可理解性、经济性和技术约束,以及折衷 方案、美学等。一个大型的、复杂的软件系统从某些方面未讲, 它通常是无先例可循的,或是独一无二的。它常采用未经证实 的技术或各种技术的新颖组合,并把现有的技术推向极至,且 在构造时还必须适应将来一系列的巨大变化。随着系统的日益 复杂,设计问题超过了计算的算法和数据结构,设计和确定整 个系统的结构便成了一类新的问题,在这种情况下SA技术呼之 欲出。 软件体系结构研究受到了广泛的关注和重视,井被认为将 会在软件开发中发挥十分重要的作用。它将大型软件系统的总 体结构作为研究的对象,认为系统中的计算元素和它们之间交 互的高层组织是系统设计的一个关键方面。其研究和实践目的 在于将一个系统的体系结构显式化,以在高抽象层次处理诸如 全局组织和控制结构、功能到计算元素的分配、计算元素间的 高层交互等设计问题。
Locally developed support tools
Many processors on commercial LAN
Prototyping iterative incremental development
Domain analysis,object-based analysis/design
1 CBSD技术
近年来,在中间件技术的基础上结合软件复用思想和面向 对象方法,基于构件的软件开发(component bassed software development 简称CBSB)技术受到了高度重视。通过标准化运 行级构件的规约,依靠构件运行平台(中间件平台)提供的基 础设施CBSD提供了一种自低向上的。使用标准软件购件构造系 统的有效途径,并得到广泛的应用。
4 瑞典摄氏技术(CelsiusTech)成功案例分析
瑞典摄氏技术(CelsiusTech)是一家承建瑞典海军防御系统 的软件公司。它将其软件产品线称为SS2000族,这条产品线可 以为不同战舰提供集成了火力控制系统(control)、命令传达系 统(command)和通信系统(communication)的整合系统即3C 系统。各个系统随着战舰的吨位及火力装备等不同而变化。
SA实用化的尝试: Bass等人对体系结构的风格进行分类整理,试图给出在实际 系统开发中应用软件体系结构的指导方法; Mary Shaw在Unicon中,通过预定义构件和连接子的种类, 可以利用工具在一定程度上自动生成系统(代码)。 这些尝试都不是很成功,其原因首先在于对体系结构的求精 和实现的支持能力明显不足。例如对于如何在系统开发中选择适 当的体系结构风格现在还缺乏行之有效的指导方法。SA的研究 现在还主要是对己有的软件系统进行整理、描述,而不是如何去 指导软件的开发。
作为其最重要的一个贡献SA的研究将构件之间的交互显式 地表现为连接子(connector),井将连接子视为系统中与构件同 等重要的一阶实体。这样SA提供了一种在较高抽象层次观察、 设计系统井推理系统行为和性质的方式,也提供了设计和实现可 复用性更好的构件、甚至复用连接子的途径。 SA研究的主要成果表现为体系结构描述语言(architecture description language简称ADL)从构件组装的角度来看ADL可以 视为对构件描述语言(CDL)的进一步。扩展构件描述语言的基 本思想是将构件看成是一个黑盒,通过描述构件接口的语法和语 义,使得复用者不必过多地涉及构件代码细节,就可以在构件描 述这一抽象层次之上进行构件组装。而ADL除了描述构件接口的 语法和语义之外,还负责描述系统中包括的构件和连接子以及它 们之间的交互关系、构件的非功能类性质以及构件间协议,从而 为构件组装提供了更为有力的支持。
另一个重要原因是,从SA模型到实际系统实现之间存在着 较大的距离。由于目前主流的设计和实现语言都是面向对象的, 如何从高层抽象的SA模型转换到具体的底层实现一直都没有一 个比较好的解决方法。对于这个问题,现在也有一些将构件、连 接约束等体系结构概念引入编程语言的努力,例如 Washington大 学的 Archjava和 Utah大学的 Jiazzi。
3 产品线技术介绍
SA也采用了基于构件的思想。它从系统的总体结构入手,将 系统分解为构件和构件之间的交互关系,可以在高层抽象上指导 和验证构件组装过程,提供了一种自顶向下、基于构件的复用途。 作为己被业界广泛接受的CBSD技术,其相关技术和主要的 构件规范己经相当成熟,它不仅定义了构件如何在运行时刻迸行 交互,而且还提供了使用对象来构造构件的手段,这就在高层的 SA模型和详细的OO设计模型以及具体的OO语言实现之间提供了 一个现实可行的桥梁。 产品线(Product Line)方法将SA与CBSD相结合,以SA模型 作为系统蓝图指导系统的开发全过程,把分布式构件技术作为构 件组装的实现框架和运行时的支撑,使用工具支持的映射规则缩 小设计和实现间的距离,自动地组装、验证所需要的系统。 产品线可以规范地定义为一些系统的聚集,这些系统共享一 个从核心软件资源通用集合构造出来的已管理的特征集合。
相关文档
最新文档