软件工程之Java实现策略 - 编程入门网
中任务划分之前必须准确度量各语言结构之间的层次关系,在层次关系的基础上进行任务的分配和管理。这一过程往往伴随着对源工程的理解一起进行,并使用层次图的方式进行描述。
定义3:函数C(X)表示语言结构X的层次。 构造层次图的方式有两种: (1)自顶向下的划分 1)如果所有的语言结构均不依赖于某个语言结构A,则记A的层次为0; 2)如果有且仅有i个语言结构X1,X2,X3,…Xi依赖于某语言结构A,则 C(A)=MAX(C(X1),C(X2),C(X3)…C(Xi))+1; (2)自底向上的划分 1)如果某个语言结构A不依赖于任何语言结构,则记A的层次是0; 2)如果某个语言结构依赖于i个语言结构X1,X2,X3,…,Xi 则C(A)=MAX(C(X1),C(X2),C(X3),…,C(Xi))+1; 从形式上来看这两种方式的定义是相似的,但它们的实质是完全不同的。从其层次的标的来看,自顶向下的方式是C(A)<C(B),当且仅当A的层次高于B;自底向上的方法则是完全相反,C(A)>C(B),当且仅当A的层次高于B。构造出的层次图也局部不同。 定义4:一个程序结构的准备度定义为它所依赖程序结构中已经完成的比例。 按照上面的讨论,位于同一层次的类A要先于类B完成,类1、类2、类3、类4的准备度增加了。但是类1、类2、类3位于较高的层次,它们的实现还必须依赖于类4、类6、类7所在层的某个或某些类的实现。完成类A后,直接的效果是类4可以开始进行(是否能够立刻开始依赖于是否还有较低层次的依赖类没有完成)。相比之下类B的完成虽然不能像类A那样对4个类的准备度有所贡献,但直接的效果是类6、类7都可能立即开始进行。对于整个工程来说类B的重要程度应当优于类A。因此,一个程序结构在某层的重要程度首先应当由直接高层的依赖程度决定。 如果采用自顶向下的层次图的生成方式,即标号越小表示层次层越高,一个语言结构的优先函数定义为: F(A)=Σn=1i=1(kci)/N(i)×kn-1 其中:n是语言结构A所在的层次,R(i)是第i层依赖于语言结构A的语言结构个数,N(i)是第i层语言结构的总数。优先函数越大则该语言结构在本层中的重要程度越高,越应当优先完成。而其中的常数K是任意指定的,它反映了相邻层次的依赖之间的重要程度,K越大,较低层次的依赖关系拥有越大的权。合理选择K是必要的,太大的K使得所求得的优先函数值过于集中,而太小的K不利于依赖关系层次的区多类的层次包含的类个数的50%为K。 如采用自底向上的层次构造方法,只是其层次的编号不同,其定义是类似的。 在LED航显系统移植项目中,同时有n个程序员要求任务时,我们根据层次和优先函数挑选出n个任务,根据他们的熟练程度,熟练的程序员被派发较大的任务。基本上没有出现程序员的相互等待。应当指出,无论怎样精巧的安排任务都不能完全杜绝等待的可能。 软件工程之Java实现策略(3)时间:2011-01-06第5章 代码编写 为了保证接口定义的一致性、代码的可读性以及工程质量,在同一个移植工程中协作的程序员必须遵守相同的移植策略。这些策略应当是一种全局的约定,而且应当以文件的形式固定下来。移植蓝图就是包含了这些策略以及其他相关的内容的一系列文件,它应当包括以下几个部分。 (1)语法结构的移植标准。进行移植时,如何将源语言的结构以目标语言进行重写。以C++到Java的移植为例,这些移植标准有的是易见的,例如相应类型以及流程语句的移植。有些则需要改变原来语言结构,甚至逻辑结构,例如对多继承的移植。有的移植方案是多种的,例如对C++中输入输出参数的移植。移植蓝图中必须指出源工程中涉及到的所有语言结构以及相应的移植方式,对有多种移植方案的应当根据源工程的特点进行选择。 (2)类的管理策略。对源工程的移植的理想情况是类的"一对一"移植,即一个源程序的类对应于一个目标工程中的实现类。但这种情况往往是不可能的,对多重 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |