软部件库的构造

原创 2002年04月09日 09:36:00

软部件库的构造

(本文转载自软件工程专家网www.21cmm.com

域分析

  从软件工程的观点看,域就是向目标软件系统提出应用要求的问题及背景知识。域分析的主要任务是针对单个或一族相似的域,以软件重用为目标,探寻并挖掘域或域族中能够为多个目标软件系统共用的软部件,并对它们进行结构化组织以备重用。域分析与需求分析活动相似之处,它们都是软件项目中直接基于应用领域的开发活动,并且要完成程度不同的域建模任务。但是,域分析必须具有比需求更为广阔的视角:不仅要服务于当前软件项目,而且要从域的历史项目中发现软件项目之间的共同性和差异点,并放眼于同类或相似应用领域的未来软件项目。

  上图显示了域分析活动的主要输入、输出项目、参与人员及控制。域分析的输入信息可以从多种渠道获得:技术文献,已完成的同类软件项目(其中包括源代码、设计文档、测试方案、用户手册等),用户述评,专家建议,用户需求,以及当前软件项目反馈过来的域特征信息。域分析活动一般由域分析师、分析辅助人员和领域专家协同完成。它们在域分析方法和管理机制的控制下提交域分析活动的结果信息——一般化的域结构模型(包裹域中概念和实体分类方法),软件开发标准(包括需求分析与软件的方法框架、软件开发过程标准、编码标准、界面标准等),以及用于刻画域的特征、域中对象、操作及其关系的域语言。

  由于域分析与需求分析都以构筑应用领域的模型为主要任务,因此,某些需求分析技术可以在域分析过程中发挥作用,需求描述语言(数据流图、实体—关系图,面向对象的需求描述机制等)也可作为域语言的基础。但是,域分析必须进行一般化、抽象化和参数化,以抽象后的域模型元素表示同类域中不同软件项目之间的相似性,通过参数实例化刻画差异性,从而实现域模型元素面向不同软件项目的可适应性和灵活性。于是,在省略有关建模的技术细节之后,域分析过程可大致归纳以下步骤:
  (1) 发现并描述可重用的实体;
  (2) 对这些试题及它们之间的关系进行抽象化、一般化和参数化;
  (3) 对可重用的实体进行分类、归并,以备日后重用。

  除上图所示的域分析结果外,域分析还可产生一种重用超结构,以管理在后续软件项目的各个开发阶段的软件重用的可能性,以及收集有关重用活动的各类统计数据。这些数据可反馈至域分析方法,以便不断改进之。在重用超结构中,软部件库管理人员负责软部件的检索和提取,软部件人员负责软部件的质量控制和标准化,重用管理员则收集与重用有关的统计数据,协调所有的重用活动。

软部件的开发

  域分析的结果为软部件的选取提供了指导原则。一旦确定某些软件应该作为重用部件加入部件库,开发人员就必须实际构造它们。由于软部件的生命周期将跨越开发项目甚至应用领域,因此,软部件的开发具有相当的特殊性,即如何使软部件更为通用,更易于组装为新的软件系统,以及在新的运行环境下表现出更好的强壮性?

  代码级重用是最简单、也是最流行的。但是,本书的软部件不仅包括代码级部件,也涵盖域知识、需求分析文档、设计文档、测试方案、测试用例等软件元素,因为这些级别上的软部件可望更好的发挥重用技术的潜力,同时也是代码级重用的必要补充。

1. 需求及设计级软部件

  需求级软部件通常包括问题(及子问题)描述、有关域知识以及相应的需求规格说明。问题描述及域知识说明均用域语言表示,必要时可辅以结果化的自然语言。
  类似地,设计级软件部件包括设计规格说明(片段)、设计决策描述以及相应的设计文档(例如总体设计方案,抽象算法)。于是,设计级软件与需求级软部件相结合,使需求级部件和设计级部件的重用同时发生,简化了对这些软部件的理解和组装过程。
  需求级与设计级软件部件的开发必须遵循下列两项原则:
  (1) 将软部件应用的上下文与软部件严格分离;
  (2) 利用抽象化、参数化等手段提取公共性,增强软部件对未来不同应用项目的适应能力。
  需求级、设计级与代码级软部件相结合,有助于代码级软部件的提取和理解。借助较高抽象级别的软部件可望提高重用效能,因为这样不仅可以重用代码,而且可以重用需求模型和设计方案。

2.代码级软部件

  代码级重用是迄今为止研究最深入、应用最广泛的重用技术。代码级软部件除包含通常的代码段外,还必须辅以相应的解释和上下文说明。这些辅助说明可以用结构化自然语言或其他表示机制描述,但最好以相应的需求或设计软部件的形式出现。传统上,代码级软部件的主体是子程序(函数或过程)。现在,由于基于对象和面向对象的程序设计语言及相应开发环境的发展,软部件还可以用Ada程序及C++类实现。
  开发代码级软部件与通常的程序设计活动的主要区别在于,开发人员必须使用各种抽象化手段,以发觉公共性,分离软部件的应用上下文、功能及行为,从而提高可重用性。可以用下列三种抽象方法开发软部件:
  (1) 功能抽象:软部件的功能由接口说明中的输入-输出关系确定,实现细节对软部件使用者透明。
  (2) 数据透明:在功能抽象的基础上进一步隐藏除界面参数之外的所有数据。

windchill 中使用sql查询部件的软属性

今天有一个需求,需要使用一条sql来根据编码查询部件的实数/字符串类型软属性,由于sql语法中,针对不同类型的返回值集合是无法合并的,因此使用了to_char(12)函数来转换类型,并合并集合。以下语...
  • lizhi20091225
  • lizhi20091225
  • 2013年11月21日 22:14
  • 1384

Axure RP8.0 部件

图像部件 放置图像:        ①拖放一个图像部件到设计区并双击导入图片 ②直接复制黏贴图片 添加&编辑图像文字 右键单击图像—>选择编辑文字 保持宽高比例缩放图像 ...
  • qq_35095321
  • qq_35095321
  • 2017年03月15日 20:13
  • 596

Android通过软解码播放视频

Android通过软解码播放视频,其实这个在源码目录hardware/msm7k/libgralloc和libgralloc-qsd8k已有实现,源码中的确没有。可以完全仿照该目录下进行更改。以下参考...
  • lhzhang1985
  • lhzhang1985
  • 2010年12月06日 11:45
  • 6631

用Mac和Linux命令行工具使用Windows Azure

除了Windows Azure Web Sites和令人兴奋的新的虚拟机功能的引入,我们最近发布了一系列开放源代码的命令行工具使您可以在任何操作系统上用命令行管理和部署这些新的服务,包括第一次支持苹果...
  • azurechina
  • azurechina
  • 2012年07月16日 14:48
  • 2422

强、软、弱、虚引用+ReferenceQueue

Java对象的强、软、弱和虚引用原理+结合ReferenceQueue对象构造Java对象的高速缓存器 http://blog.csdn.net/coolwxb/article/details/793...
  • t1002760731
  • t1002760731
  • 2014年12月16日 11:28
  • 181

学习笔记:axure 高级教程 6 制作组件库

AxureRP提供了默认的线框图组件库和流程图组件库,并支持加载第三方的组件库,应该说扩展性非常的不错。网上也有很多共享的组件库,应用在不同的设计页面或者环境下,如windows效果,现在很火的and...
  • qq_16956581
  • qq_16956581
  • 2015年06月26日 21:52
  • 737

使用判别训练的部件模型进行目标检测

使用判别训练的部件模型进行目标检测 Pedro F. Felzenszwalb, Ross B.Girshick, David McAllester and Deva Ramanan   ...
  • hehainan_86
  • hehainan_86
  • 2016年11月24日 10:35
  • 5018

STL标准库六大组件 关系 作用

STL六大组件简介 1、容器(Containers):各种数据结构,如Vector,List,Deque,Set,Map,用来存放数据,STL容器是一种Class Template,就体积而...
  • qq_31108501
  • qq_31108501
  • 2017年02月13日 16:15
  • 544

Axure 元件库-原型

元件名称: 1、Axure交互原型设计指南 .rp 2、PC和移动原型常用元件.rp 3、后台模板.rp 4、全局说明.rp 下载地址:链接:https://pan.baidu.com/s/...
  • u014345860
  • u014345860
  • 2018年02月05日 11:01
  • 19

Arduino - 软串口

软串口跟硬串口一样,只不过用了两个数字IO口代替RX,TX。 【所用库文件】系统自带的 : SoftwareSerial 应用方法如下:#include //引用库文件 SoftwareSer...
  • sdlgq
  • sdlgq
  • 2015年12月22日 16:51
  • 2469
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:软部件库的构造
举报原因:
原因补充:

(最多只允许输入30个字)