CN102053825A - 用于处理软件设计冲突的方法和系统 - Google Patents
用于处理软件设计冲突的方法和系统 Download PDFInfo
- Publication number
- CN102053825A CN102053825A CN2009102113785A CN200910211378A CN102053825A CN 102053825 A CN102053825 A CN 102053825A CN 2009102113785 A CN2009102113785 A CN 2009102113785A CN 200910211378 A CN200910211378 A CN 200910211378A CN 102053825 A CN102053825 A CN 102053825A
- Authority
- CN
- China
- Prior art keywords
- design
- isomorphism
- design element
- node
- software
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及识别和解决并行软件设计方式下的设计结果之间的冲突,提供一种用于处理软件设计冲突的方法和系统,该方法包含:接收软件设计的设计图,其中,设计图包含多个节点和连接不同节点的有向边,每个节点表示一个设计元素,从一个节点指向另一个节点的有向边,表示该一个节点对应的设计元素依赖于该另一个节点对应的设计元素;识别步骤,确定设计元素在设计图中的层次,识别设计图的给定层次中依赖于同一个设计元素的不同设计元素,并将它们标识为同构设计元素;输出步骤,输出标识了同构设计元素的设计图。利用本发明,可以按照软件设计的层次自下而上地自动识别相关软件设计之间的冲突,以方便冲突的解决。
Description
技术领域
本发明总体涉及软件设计,尤其涉及并行软件设计方式下的设计结果之间的冲突的识别和解决。
背景技术
软件开发过程一般划分成三个主要阶段,需求分析阶段、软件设计阶段和软件实现阶段。软件设计阶段根据需求分析阶段给出的需求说明书,按照一定的规范进行软件设计,设计结果作为编程人员在软件实现阶段的蓝图。在大型软件开发项目中,软件设计通常采用并行设计(亦称分布设计或协作设计)的方式,在这种方式下,首先按要设计的软件的不同功能划分,形成不同的设计任务,然后将不同的设计任务分配给不同的设计者。最后,将不同设计者提供的设计结果合成,形成一个完整的软件设计。
不同设计者的设计结果,存在潜在的冲突。例如,一个设计者的设计中的设计元素与另一个设计者的设计中的设计元素,使用相同的计算资源(例如访问同一个数据库或数据表或调用同一个功能)。在软件设计阶段消除或尽量减少冲突,有利于编程阶段的编程效率、减少软件运行时可能发生的错误以及软件的维护。为了解决冲突,首先需要识别不同设计者的设计结果之间的冲突。然而,由于设计结果的复杂性,人工识别不同设计结果之间的冲突非常困难,在涉及成千上万的设计元素的大型软件设计项目中尤其如此。
发明内容
为此,本发明提出一种自动识别软件设计中的冲突的机制。
一方面,本发明提供一种用于处理软件设计冲突的方法,包含:接收软件设计的设计图,其中,设计图包含多个节点和连接不同节点的有向边,每个节点表示一个设计元素,从一个节点指向另一个节点的有向边,表示该一个节点对应的设计元素依赖于该另一个节点对应的设计元素;识别步骤,确定设计元素在设计图中的层次,识别设计图的给定层次中依赖于同一个设计元素的不同设计元素,并将它们标识为同构设计元素;输出步骤,输出标识了同构设计元素的设计图。
另一方面,本发明提供一种用于处理软件设计冲突的系统,包含:接收单元,用于接收软件设计的设计图,其中,设计图包含多个节点和连接不同节点的有向边,每个节点表示一个设计元素,从一个节点指向另一个节点的有向边,表示该一个节点对应的设计元素依赖于该另一个节点对应的设计元素;识别单元,用于确定设计元素在设计图中的层次,识别设计图的给定层次中依赖于同一个设计元素的不同设计元素,并将它们标识为同构设计元素;输出单元,用于输出标识了同构设计元素的设计图。
利用本发明,可以按照软件设计的架构层次自下而上地自动识别相关软件设计之间的冲突,以方便冲突的解决。
附图说明
通过对附图中本发明示例实施例的更详细描述,将使本发明的上述、以及其它目的、特征和优点变得更加明显;附图中相同或类似的标记,一般表示本发明示例性实施例中的相同或相类似的部件或部分。
图1示例性地表示按照本发明实施例的软件设计系统的体系结构;
图2A-2C示意性地表示一个示例性软件设计的设计子图;
图3A示意性地表示包含图2A-2C所示的设计子图的合成设计图;
图3B-3F示意性地表示识别和解决软件设计之间冲突的过程;以及
图4示意性地表示按照本发明实施例的方法的流程图。
具体实施方式
下面参照附图更加详细地描述本发明的实施方式,在附图中显示了本发明的实施例。然而,本发明可以以各种形式实现,而不应该理解为受到所描述的实施方式的限制。在不妨碍所属技术领域的技术人员理解和实施本发明的情况下,实施例和附图中省略了与本发明的内容没有直接关系的部件或细节,这是为了更加突出本发明的内容,使所属技术领域的技术人员更清楚地理解本发明的实质。
本发明识别并行设计之间冲突的基本构思是,针对分层结构的设计中的给定层,分析不同的设计元素是否依赖相同的下层设计元素,如果是,则可能存在冲突,否则,则不存在冲突。利用本发明,可以以自底向上的方式来识别和解决并行设计中的冲突。
参看图1,图1表示按照本发明实施例的软件设计系统10的体系结构。
图1所示的软件设计系统10包含:设计任务分配单元1010,设计收集和分析单元1020和设计冲突解决单元1030。
设计任务分配单元1010用于将设计任务分配给不同的设计者。系统运行时,设计任务分配单元1010根据软件开发的需求分析阶段得出的需求说明书向设计者分配任务,并在数据库中对应地记录设计任务和设计者。如图1所示,作为设计任务分配单元1010的输入的需求说明书,例如可包括用例(或功能)、数据表(数据库)、设计模型、命名规则(未予示出)等等。用例(use case)是软件的组成部分,或者说,一个软件可以看作是由多个用例构成的。在软件设计的并行设计方式中,通常首先按照用例将设计任务分配给设计者,然后将设计者的设计结果收集起来,合成为一个完整的设计。
按照本发明的实施例,设计任务分配单元1010按照用例划分设计任务,并将划分的任务分配给各个设计者。需要指出的是,设计任务的分配,可以手工完成。
设计者按照设计标准完成对所分配的用例的设计,提交设计结果。所述设计标准包括-但不限于-遵循规定的分层结构规范、命名规范和设计深度,数据访问层的设计元素必须与相关的数据库或数据表连接,对用例的设计元素以及它们之间的内部关系的描述等等。
设计收集和分析单元1020用于收集设计结果,并对设计结果进行冲突分析。在本发明的上下文中,采用术语“冲突”来指设计元素之间的一种关系。两个设计元素之间冲突,指的是这两个设计元素均依赖于同一个其它设计元素,例如均调用一个共同的其它设计元素,或者均访问同一个数剧源(例如数据库)。关于冲突分析的细节,将在下文通过举例作进一步说明。
设计冲突解决单元1030用于根据设计收集和分析单元的分析结果,解决设计之间的冲突,并在解决冲突的基础上,得到新的设计结果。
新的设计结果,可以输出到设计收集和分析单元1020,用于进一步分析;或者可以提供给软件编程阶段中作为编程的依据。
在下文对本发明识别和解决并行设计的冲突的实施方式作更详细的说明之前,首先介绍一个示例性软件设计所涉及的几个用例,以便更好地理解对识别和解决并行设计的冲突的实施方式的说明。
用例1:用户注册
用例1具有以下功能:
用户在平台首页的登录窗口,点击‘注册’按钮;
进入注册页面的角色选择页面,选择要注册的角色;
a)如果选择的角色是公司项目经理和质量管理员:
-点击‘同意合约’,然后点击‘确定’,就进入输入公司帐号页面;
-输入正确的公司管理员的用户名和密码,点击确定,就进入用户信息填写页面;
-输入正确的信息后,点击确定,信息就保存成功,出现提示页面;
b)如果选择的角色是公司管理员,则进入管理员信息页面;
c)如果选择的角色是公司开发人员,则进入公司开发人员信息页面;
d)如果选择的角色是个人开发者,则进入个人开发人员信息页面;
e)如果选择的角色是个人项目管理员,则进入个人项目管理员信息页面;
f)如果选择的角色是个人质量管理员,则进入个人质量管理人员信息页面。
为了简要,在对上述b)-f)的各种情形的描述中省略了与a)的情形中相同的部分,例如“输入正确的信息后......出现提示页面”。
用例2:登录
用户在平台首页的登录窗口,输入用户名和密码,点击‘登陆”按钮;
如果用户名或密码错误,进入登陆失败页面,否则,根据数据库中记录的该用户名的角色,
如果该角色是项目经理:
-查询到该用户管理的所有项目,并将该项目显示到项目列表页面中;
如果该角色是公司管理员:
-查询到该公司下的所有项目,进入项目列表页面;
如果该角色是开发人员:
-查询到该用户下的所有任务,进入开发人员的任务列表页面;
如果该角色是质量管理人员:
-查询到该用户管理的所有项目,进入质量管理人员项目列表页面。
用例3:查看项目
以登陆的用户的角色为项目经理为例。
在项目经理的项目列表页面,点击项目名称。
进入项目基本信息页面。
用例4:查看当前任务列表
项目经理在项目基本信息页面点击左边导航栏中的“当前任务列表”菜单。
后台查询当前项目下的所有任务,并显示在当前任务列表页面。
需要指出的是,上述对用例的说明仅仅是示例性的。在后文的说明中,假设设计任务分配单元1010将用例1的设计作为任务1分配给设计者1,将用例3和4的设计作为任务2分配给设计者2,将用例2的设计作为任务3分配设计者3。
现在以任务1为例,说明软件设计过程中的设计结果的例子。
设计者1提交的设计结果,如图2A所示,该图示意性地表示用例1的设计过程中的一个设计结果的设计子图。
图2A中所示的设计子图,包含节点、节点之间的有向边和节点类型。例如,附图标记101表示的一个名称为“userCreateDAO”节点,通过有向边连接到代表数据库(DB)的“user”节点,这表示在设计子图对应的软件设计中,设计元素“userCreateDAO”访问另一个设计元素的数据库“user”。类似地,图中还表示,设计元素“userCreateService”(201)调用“userCreateDAO”(101),设计元素“userAddAction”(301)调用“userCreateService”(201),设计元素“userRegisterJsp”(401)调用“userCreateService”(301)。位于最底层的节点“user”、“project”、“task”和“company”表示数据库的数据表。
上述符合命名规范的设计元素的名称中分别包含的“Jsp”、“Action”、“Service”和“DAO”,表示对应的设计元素的类型分别为“Jsp”、“Action”、“Service”和“DAO”,它们的含义如下表所示。
类型之间自下而上的层次顺序是:Jsp->Action->Service->DAO->DB,这是由软件架构层次决定的。
图2A中用不同的框代表不同类型的节点(即节点所表示的设计元素的类型),并用横线自下而上地划分了各节点所在的的层次。例如节点101由矩形框表示,表明其表示的设计元素属于“DAO”类。节点201由圆形框表示,表明其表示的设计元素属于“Service”类。
需要指出的是,上述的类型“Jsp”、“Action”、“Service”、“DAO”、“DB”只是为了表示设计元素的层次所举的例子。所属技术领域的技术人员知道,在具体实践中,可以根据软件的具体要求选择不同的软件架构层次。
类似地,上文所述的用例2和用例3的设计子图,分别如图2B和2C所示,在此不再详述它们表示的内容。
需要指出的是,在本发明书中,采用图2A以及图2B和2C所示的形式来表示设计结果,然而,本发明并不限于此。在具体实现时,也可以用其他方式表示、例如用表格来表示设计结果,这是所属技术领域的技术人员容易实现的。本发明并不限于用特定形式的设计子图来表示设计结果。
按照本发明的实施例,在软件设计的过程中,设计收集和分析单元1020分别从设计者1、设计者2和设计者3收集用例1、用例3和4、用例2的设计子图2A、2B和2C。
按照本发明的一个实施例,设计收集和分析单元1020可以将收集的设计子图,合并成一个设计图,本文将其称为“合成(的)设计图”。例如,图3A所示的是一个综合了图2A-2C所示的设计子图的内容的合成设计图,显然,图3A与图2A-2C相比只是合并了表示数据库的节点,合成设计图的内容与图2A-2C分别表示的内容的组合是相当的,只是更直接、更直观地显示了不同设计子图之间通过数据库而形成的关系。
以上示例性介绍了软件设计的用例、用例的设计子图、合成设计图等概念。在此基础上,下文将结合附图4的流程图和附图3A-3F的示例,说明按照本发明的用于处理软件设计冲突的方法。
图4示意性地表示按照本发明实施例的一个用于在软件设计过程中识别软件设计冲突的方法的流程图。图4中所示的流程包含三个主要步骤。
步骤4010,接收软件设计的设计图。在本发明的实施例中,接收如图2A-2C所示的三个设计(子)图。如上文结合图2A所述的那样,每个设计图(本例中也称“设计子图”)包含多个节点和连接不同节点的有向边,每个节点表示一个设计元素,每个节点的层次由对应的设计元素决定,从一个节点指向另一个节点的有向边,表示该一个节点对应的设计元素依赖于该另一个节点对应的设计元素。
应当明白,“设计子图”与“设计图”虽然名称不一样,它们的结构特征却是相同的,在这个意义上,设计子图就是一种设计图。在上下文清楚的情况下,“设计图”可以指综合了若干“设计子图”的合成设计图。
步骤4020,确定设计元素在设计(子)图中的层次,识别并标识设计(子)图的给定层次中的同构设计元素。具体来说,将给定层次中依赖于同一个设计元素的不同设计元素,标识为同构设计元素。
可以按照软件架构层次,例如按照设计元素的类型,确定设计图中设计元素的层次。
按照一个实施例,如果步骤4010接收软件设计的至少两个设计子图,则在可以在步骤4020之前,在将所接收的设计子图合并成一个设计图(步骤4015)。在这种情况下,步骤4020在合成的设计图中确定设计元素的层次,识别并标识合并后的设计图中的同构设计元素。
例如,分析如图3A所示的合成设计图中自下而上的第二层,发现设计子图2A中表示设计元素UsersearchDAO的节点104指向下一层的数据表节点“user”,设计子图2C中表示设计元素UsersearchDAO的节点112也指向节点“user”。于是,将节点104的设计元素UsersearchDAO与节点112的设计元素UsersearchDAO标识为同构设计元素,如图3B所示。图3B中用同一种颜色或阴影来标识节点104和节点112,以表示节点104的设计元素UsersearchDAO与节点112的设计元素UsersearchDAO为同构设计元素。
图3B中还用其它颜色或阴影来标识自下而上的第二层中的节点103和节点111,以表示设计子图2A中的节点103的设计元素CompanysearchDAO与设计子图2C中的节点111的设计元素CompanysearchDAO为同构设计元素;类似地,位于该层的设计子图2B中的节点108的设计元素taskSearchDAO与设计子图2C中的节点110的设计元素taskSearchDAO均访问位于底层的数据表节点“task”库,它们也被标识为同构设计元素。
需要指出的是,虽然图3B中用颜色/阴影来标识同构设计元素,然而,本发明并不限于此,显然还可以有各种不同的标识方式,例如直接在一个表中记录哪些设计元素属于同构设计元素。
步骤4030,输出标识了同构设计元素的设计图。如果在步骤4015中将所接收的设计子图合并成了一个合成设计图,则步骤4030输出的是标识了同构设计元素的合成的设计图,例如图3B。
按照本发明一个实施例,上述步骤可以由图1所示的设计收集和分析单元1020执行。设计收集和分析单元1020将标识了同构设计元素的设计图输出到设计冲突解决单元1030,用以解决不同设计之间的冲突。
下面说明设计冲突解决单元1030解决设计之间的冲突的方式。
首先,识别设计子图之间的同构设计元素之间的冲突属于何种冲突。在软件设计实践中,同构设计元素之间的冲突关系包括“重复(duplicate)”关系和“可合并(mergeable)”关系。
如果两个同构设计元素“重复”,表明这两个同构设计元素可互相替代。
如果两个同构设计元素“可合并”,表明这两个同构设计元素可以被合并成一个新的设计元素,代替这两个同构设计元素。
按照本发明的实施例,如果判断多个同构设计元素之间的关系是重复的,设计冲突解决单元1030可以将多个同构设计元素中的一个同构设计元素保留,删除其余的同构设计元素,并将指向被删除同构设计元素的节点的有向边,改为指向被保留同构设计元素的节点,如图3C所示。这里假设节点104的设计元素和节点112的设计元素之间的关系是“重复”的,节点103的设计元素和节点111的设计元素之间的关系是“重复”的,因此,同构设计元素的节点104和节点112中的任意一个节点104被保留,节点112被删除,原来指向节点112的有向边,改为指向被保留的节点104_112;类似地,同构设计元素的节点103和节点111中的任意一个节点111被保留(如附图标记103_111所示),节点103被删除。
如果多个同构设计元素之间的关系是可合并的,设计冲突解决单元1030可以将这多个同构设计元素合并成一个新的设计元素,设置在一个设计子图中,同时删除这多个同构设计元素,并将原来连接到被删除同构设计元素的有向边,改为连接到该新的设计元素。例如,假设节点108的设计元素和节点110的设计元素之间的关系是“可合并”,因此,在图3C中,同构设计元素的节点108和节点110均被删除,取而代之的是一个新的节点108_110。需要指出的是,新节点108_110所代表的设计元素的内容,已经不同于图3A中的节点108所代表的设计元素的内容。
在软件设计实践中,可以以人工方式操作设计冲突解决单元1030以解决冲突。例如,对于重复的同构设计元素,设计者之间可以通过协商确定要将其中的哪些同构设计元素删除,以及如何提供调用被保留的同构设计元素的接口;对于可合并的同构设计元素,设计者之间可以通过协商确定如何将它们合并成新的设计元素的方式,以及如何提供调用合并后的设计元素的接口。
作为解决冲突的结果,设计者得出新的设计子图。新的设计子图可以继续被设计收集和分析单元1020用于分析。
可以将以设计冲突解决单元1030生成的图3C所对应的设计子图输入到设计收集和分析单元1020,自下而上地针对对应于“Service”类型的更高层次重复执行步骤4010-4030。
如图3D所示,步骤4020识别出节点207和208均连接到同一个下层节点108_110,表明节点207对应的设计元素taskViewService和节点208对应的设计元素taskViewService均依赖于节点108_110对应的设计元素taskCreateDAO,于是把节点207对应的设计元素taskViewService和节点208对应的设计元素taskViewService标识为同构设计元素。
设计收集和分析单元1020将图3所示的合成图提供到设计冲突解决单元1030后,后者根据对设计元素207与设计元素208之间的关系的判断,对设计元素207和设计元素208进行删除或合并处理,其结果如图3E所示,图3D中所示的节点207和208被节点207_208代替,原来从节点303指向节点207的连线,以及从节点306指向节点207的连线,现在都改为指向节点207_208。
以类似的方式,通过设计收集和分析单元1020与设计冲突解决单元1030之间的交互,自下而上地逐层识别和解决设计之间的冲突,最初的设计子图2A、2B和2C变成类似于图3F所示的合成设计图,图3F与图3A相比,节点的数目减少,节点之间的关系也更加简明。
上文的说明的实施例中,冲突是在设计冲突解决单元1030中解决的。然而,按照本发明的一个实施例,可以在设计收集和分析单元1020中实现设计冲突解决单元1030的部分功能。
例如,设计收集和分析单元1020在步骤4020中或者之后,可以进一步根据设计结果的其它信息,判断同构设计元素之间的关系是“重复的”还是“可合并的”。
前文说过,视具体的设计标准而定,设计者提交设计结果可能包括对设计元素的描述,这种描述的详细程度完全有可能足以自动地判断同构设计元素之间的关系是“重复”关系还是“可合并”关系。
如上文结合图4所述的那样,如果判断多个同构设计元素之间的关系是“重复”,则可以将多个同构设计元素中的一个同构设计元素保留,删除其余的同构设计元素,并将指向被删除同构设计元素的节点的有向边,改为指向被保留同构设计元素的节点,如上文结合图3B、3C所述的对节点104的设计元素和节点112的设计元素所作的处理一样。
与上述处理相对应,还可以将关于上述处理的方式以及所涉及的设计元素等信息,通知设计冲突解决单元1030。
以下参照图1,说明按照本发明实施例的系统10中的设计收集和分析单元1020的一种更详细的实现方式。
如图1所示,设计收集和分析单元1020包含:接收单元2010、识别单元2020、输出单元2030。
接收单元2010用于接收软件设计的设计(子)图。其中,设计(子)图包含多个节点和连接不同节点的有向边,每个节点表示一个设计元素,从一个节点指向另一个节点的有向边,表示该一个节点对应的设计元素依赖于该另一个节点对应的设计元素。
识别单元2020用于确定设计元素在设计(子)图中的层次,识别设计(子)图的给定层次中依赖于同一个设计元素的不同设计元素,并将它们标识为同构设计元素。
可以有各种各样的方式确定设计元素的层次。按照本发明的实施例,识别单元2020可以按照软件架构层次,确定设计图中设计元素的层次。在本发明实施例中,根据设计元素的符合命名规范的名称,得出设计元素的类型,就能导出对应节点的层次。当然,所属技术领域的技术人员知道,还可以有其它的方式,例如根据在设计子图中以某种方式进行的直接指定,或者根据表格形式提供的设计子图中对设计元素的详细说明,确定设计元素的层次。
输出单元2030用于输出标识了同构设计元素的设计子图。
应当指出,虽然表示冲突识别过程的图3A-3F都是合成的设计图,但是显然也可以将合成设计图划分成设计子图,因此,即使输出的是合成设计图,也可以理解是输出了合成设计图所包含的设计子图。
可选地,设计收集和分析单元1020还包含合并单元2015,如果接收单元接收了软件设计的至少两个设计子图,则合并单元2015将接收单元接收的所述至少两个设计子图合并成一个合成的设计图提供给识别单元2020。一种简单的合并方式,是将位于设计子图最底层的对应于相同数据表的不同节点,合并成一个节点,如图3A所示的那样。
识别单元2020确定设计元素在设计(子)图中的层次,识别并标识设计(子)图的给定层次中的同构设计元素。具体来说,将给定层次中依赖于同一个设计元素的不同设计元素,标识为同构设计元素。输出单元440输出标识了同构设计元素的合成设计图。
设计者通过设计冲突解决单元1030,根据输出单元2030的输出的设计图,协调解决软件设计之间的冲突,从而生成新的软件设计。按照本发明的实施例,可以将所生成的新的软件设计,以设计(子)图的形式通过接收单元2010提供给设计收集和分析单元1020,以便自下而上地继续识别设计之间的冲突。
按照本发明的实施例,在通过设计冲突解决单元1030解决软件设计之间的冲突时,如果判断同构设计元素之间的关系属于重复关系,则将多个同构设计元素中的一个同构设计元素保留,删除其余的同构设计元素,并将指向被删除同构设计元素的节点的有向边,改为指向被保留同构设计元素的节点。如果同构设计元素之间的关系属于可合并关系,则将同构设计元素合并成一个新的设计元素,删除同构设计元素,并将原来连接到被删除同构设计元素的有向边,改为连接到该新的设计元素。
根据本发明原理,也可以在识别冲突的同时解决冲突。按照本发明的一个实施例,设计收集和分析单元1020可以进一步包含删除单元2025,用于删除重复的同构设计元素。具体来说,删除单元2025可以判断识别单元1020标识的多个同构设计元素之间的冲突关系是否属于重复关系,如果是,则将多个同构设计元素中的一个同构设计元素保留,删除其余的同构设计元素,并将指向被删除同构设计元素的节点的有向边,改为指向被保留同构设计元素的节点。
以上概略性地描述说明了本发明的用于处理并行设计的设计冲突的方法和系统。应当明白,为了简要,上述说明省略了许多有关软件设计的细节。然而,所属技术领域的技术人员根据说明书中对本发明原理及其各种实施方式的上述描述,完全可以实现所述的以及更多的实施方式。
以上参照附图描述了本发明及其示例性实施例,但是应该理解本发明并不严格限于这些实施例,在不背离本发明的范围和宗旨的情况下,本领域普通技术人员能对实施例进行各种变化和修改。所有这些变化和修改意欲包含在所附权利要求中限定的本发明的范围中。
并且根据上述描述,所属技术领域的技术人员知道,本发明可以体现为装置、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即,可以是完全的硬件、完全的软件(包括固件、驻留软件、微代码等)、或者本文一般称为“电路”、“模块”或“系统”的软件部分与硬件部分的组合。此外,本发明还可以采取体现在任何有形的表达介质中的计算机程序产品的形式,该介质中包含计算机可用的程序码。
可以使用一个或多个计算机可用的或计算机可读的介质的任何组合。计算机可用的或计算机可读的介质例如可以是——但不限于——电的、磁的、光的、电磁的、红外线的、或半导体的系统、装置、器件或传播介质。计算机可读介质的更具体的例子(非穷举的列表)包括以下:有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、诸如支持因特网或内部网的传输介质、或者磁存储器件。注意计算机可用的或计算机可读的介质甚至可以是上面印有程序的纸张或者其它合适的介质,这是因为,例如可以通过电扫描这种纸张或其它介质,以电子方式获得程序,然后以适当的方式加以编译、解释或处理,并且必要的话在计算机存储器中存储。在本文件的语境中,计算机可用的或计算机可读的介质可以是任何含有、存储、传达、传播、或传输供指令执行系统、装置或器件使用的或与指令执行系统、装置或器件相联系的程序的介质。计算机可用的介质可包括在基带中或者作为载波一部分传播的、由其体现计算机可用的程序码的数据信号。计算机可用的程序码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等。
用于执行本发明的操作的计算机程序码,可以以一种或多种程序设计语言的任何组合来编写,所述程序设计语言包括面向对象的程序设计语言——诸如Java、Smalltalk、C++之类,还包括常规的过程式程序设计语言——诸如”C”程序设计语言或类似的程序设计语言。程序码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为一个独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络-包括局域网(LAN)或广域网(WAN)-连接到用户的计算机,或者,可以(例如利用因特网服务提供商来通过因特网)连接到外部计算机。
此外,本发明的流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得通过计算机或其它可编程数据处理装置执行的这些指令,产生实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能指令计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令产生一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置的制造品,
也可以把计算机程序指令加载到计算机或其它可编程数据处理装置上,使得在计算机或其它可编程数据处理装置上执行一系列操作步骤,以产生计算机实现的过程,从而在计算机或其它可编程装置上执行的指令就提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
Claims (14)
1.一种用于处理软件设计冲突的方法,包含:
接收步骤,接收软件设计的设计图,其中,设计图包含多个节点和连接不同节点的有向边,每个节点表示一个设计元素,从一个节点指向另一个节点的有向边,表示该一个节点对应的设计元素依赖于该另一个节点对应的设计元素;
识别步骤,确定设计元素在设计图中的层次,识别设计图的给定层次中依赖于同一个设计元素的不同设计元素,并将它们标识为同构设计元素;
输出步骤,输出标识了同构设计元素的设计图。
2.权利要求1的方法,其中,接收步骤接收至少两个设计子图,该方法进一步包含:
将所述至少两个设计子图合并成一个合成的设计图。
3.权利要求1的方法,其中,所述确定设计元素在设计图中的层次,包括按照软件架构层次确定设计图中设计元素的层次。
4.权利要求2的方法,其中,所述确定设计元素在设计图中的层次,包括按照软件架构层次确定合成的设计图中设计元素的层次。
5.权利要求1至4任何之一的方法,进一步包含:
判断所标识的同构设计元素之间的关系是否是重复关系,如果是,则将同构设计元素中的一个同构设计元素保留,删除其余的同构设计元素,并将指向被删除同构设计元素的节点的有向边,改为指向被保留同构设计元素的节点。
6.一种用于处理软件设计冲突的系统,包含:
接收单元,用于接收软件设计的设计图,其中,设计图包含多个节点和连接不同节点的有向边,每个节点表示一个设计元素,从一个节点指向另一个节点的有向边,表示该一个节点对应的设计元素依赖于该另一个节点对应的设计元素;
识别单元,用于确定设计元素在设计图中的层次,识别设计图的给定层次中依赖于同一个设计元素的不同设计元素,并将它们标识为同构设计元素;
输出单元,用于输出标识了同构设计元素的设计图。
7.权利要求6的系统,进一步包含:
合并单元,响应于接收单元接收的所接收的设计图包含至少两个设计子图,将至少两个设计子图合并成一个合成的设计图提供给识别单元。
8.权利要求6的系统,其中,识别单元按照软件架构层次确定设计图中设计元素的层次。
9.权利要求7的系统,其中,识别单元按照软件架构层次确定合成的设计图中设计元素的层次。
10.权利要求6至9任何之一的系统,进一步包含:
删除单元,用于将识别单元标识的多个属于重复关系的同构设计元素之一保留,删除其余的同构设计元素,并将指向被删除同构设计元素的节点的有向边,改为指向被保留同构设计元素的节点。
11.权利要求6至9任何之一的系统,进一步包含:
设计冲突解决单元,用于根据输出单元的输出结果,解决软件设计之间的冲突,从而生成新的软件设计。
12.权利要求11的系统,其中,设计冲突解决单元进一步将所生成的新的软件设计,提供给接收单元。
13.权利要求11的系统,其中,如果同构设计元素之间的关系属于重复关系,设计冲突解决单元将多个同构设计元素中的一个同构设计元素保留,删除其余的同构设计元素,并将指向被删除同构设计元素的节点的有向边,改为指向被保留同构设计元素的节点。
14.权利要求11的系统,其中,如果同构设计元素之间的关系属于可合并关系,设计冲突解决单元将同构设计元素合并成一个新的设计元素,删除同构设计元素,并将原来连接到被删除同构设计元素的有向边,改为连接到该新的设计元素。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102113785A CN102053825A (zh) | 2009-10-30 | 2009-10-30 | 用于处理软件设计冲突的方法和系统 |
US12/913,913 US9009652B2 (en) | 2009-10-30 | 2010-10-28 | Method and system for handling software design conflicts |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102113785A CN102053825A (zh) | 2009-10-30 | 2009-10-30 | 用于处理软件设计冲突的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102053825A true CN102053825A (zh) | 2011-05-11 |
Family
ID=43926761
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009102113785A Pending CN102053825A (zh) | 2009-10-30 | 2009-10-30 | 用于处理软件设计冲突的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9009652B2 (zh) |
CN (1) | CN102053825A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912338A (zh) * | 2016-04-15 | 2016-08-31 | 中国人民解放军海军航空工程学院 | 面向用户操作流程的软件设计方法 |
TWI658409B (zh) * | 2017-06-02 | 2019-05-01 | 日商三菱電機股份有限公司 | Program code generating device and program code generating program product |
CN113574517A (zh) * | 2019-03-14 | 2021-10-29 | 李亚东 | 生成分布式系统的规则编译器引擎装置、方法、系统和介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10331426B1 (en) * | 2018-07-19 | 2019-06-25 | Capital One Services, Llc | Systems and methods of diagram transformation |
US10860295B1 (en) | 2019-01-03 | 2020-12-08 | Amazon Technologies, Inc. | Automated detection of ambiguities in software design diagrams |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1700652A (zh) * | 2005-06-01 | 2005-11-23 | 合肥工业大学 | 一种基于协同模板的协同设计方法 |
CN101126976A (zh) * | 2006-08-15 | 2008-02-20 | 国际商业机器公司 | 模型变换中分析和呈现冲突以及自动协调模型变换的方法和系统 |
CN101329638A (zh) * | 2007-06-18 | 2008-12-24 | 国际商业机器公司 | 程序代码的并行性的分析方法和系统 |
CN101370009A (zh) * | 2008-03-12 | 2009-02-18 | 武汉理工大学 | 基于Linux内核网络子系统的虚拟网络块框架的构建方法 |
US20090144704A1 (en) * | 2005-03-24 | 2009-06-04 | Dspace Digital Processing And Control Engineering | Comparison of Interfaces Between Software Components |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7703027B2 (en) * | 2005-01-13 | 2010-04-20 | National Instruments Corporation | Merging graphical programs |
US8726226B2 (en) * | 2009-06-05 | 2014-05-13 | Microsoft Corporation | Integrated work lists for engineering project change management |
-
2009
- 2009-10-30 CN CN2009102113785A patent/CN102053825A/zh active Pending
-
2010
- 2010-10-28 US US12/913,913 patent/US9009652B2/en not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090144704A1 (en) * | 2005-03-24 | 2009-06-04 | Dspace Digital Processing And Control Engineering | Comparison of Interfaces Between Software Components |
CN1700652A (zh) * | 2005-06-01 | 2005-11-23 | 合肥工业大学 | 一种基于协同模板的协同设计方法 |
CN101126976A (zh) * | 2006-08-15 | 2008-02-20 | 国际商业机器公司 | 模型变换中分析和呈现冲突以及自动协调模型变换的方法和系统 |
CN101329638A (zh) * | 2007-06-18 | 2008-12-24 | 国际商业机器公司 | 程序代码的并行性的分析方法和系统 |
CN101370009A (zh) * | 2008-03-12 | 2009-02-18 | 武汉理工大学 | 基于Linux内核网络子系统的虚拟网络块框架的构建方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912338A (zh) * | 2016-04-15 | 2016-08-31 | 中国人民解放军海军航空工程学院 | 面向用户操作流程的软件设计方法 |
TWI658409B (zh) * | 2017-06-02 | 2019-05-01 | 日商三菱電機股份有限公司 | Program code generating device and program code generating program product |
CN113574517A (zh) * | 2019-03-14 | 2021-10-29 | 李亚东 | 生成分布式系统的规则编译器引擎装置、方法、系统和介质 |
Also Published As
Publication number | Publication date |
---|---|
US20110107303A1 (en) | 2011-05-05 |
US9009652B2 (en) | 2015-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Farwick et al. | A situational method for semi-automated Enterprise Architecture Documentation | |
Simperl et al. | Collaborative ontology engineering: a survey | |
US9508039B2 (en) | Deployment pattern realization with models of computing environments | |
Zhdanova et al. | Community-driven ontology matching | |
US20140019933A1 (en) | Selecting a development associate for work in a unified modeling language (uml) environment | |
CN106528613B (zh) | 智能问答方法及装置 | |
Schönig et al. | Mining team compositions for collaborative work in business processes | |
CN109144481B (zh) | 面向领域的软件密集型系统的构件化软件配置方法 | |
CN113934868A (zh) | 政务大数据治理方法及系统 | |
CN109146081A (zh) | 一种用于机器学习平台中快速创建模型项目的方法及装置 | |
CN102053825A (zh) | 用于处理软件设计冲突的方法和系统 | |
Campagna et al. | Product and production process modeling and configuration | |
Huang et al. | Business process decomposition based on service relevance mining | |
CN105871998A (zh) | 一种数据展示方法及装置 | |
Postina et al. | An ea-approach to develop soa viewpoints | |
Chigani et al. | The process of architecting for software/system engineering | |
Miksa et al. | Defining requirements for machine-actionable data management plans. | |
EP1646940A2 (en) | Designing computer programs | |
Belchior et al. | A survey on business process view integration | |
Lautenbacher et al. | Planning support for enterprise changes | |
van Zwienen et al. | A Process for Tailoring Domain-Specific Enterprise Architecture Maturity Models | |
Sooksatra et al. | Monolith to microservices: Vae-based gnn approach with duplication consideration | |
CN101599010A (zh) | 流程处理方法和装置 | |
Harzenetter et al. | Automated detection of design patterns in declarative deployment models | |
AbuJarour et al. | Discovering linkage patterns among web services using business process knowledge |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110511 |