CN101615117A - 软件开发过程建模系统和方法 - Google Patents
软件开发过程建模系统和方法 Download PDFInfo
- Publication number
- CN101615117A CN101615117A CN200810131818A CN200810131818A CN101615117A CN 101615117 A CN101615117 A CN 101615117A CN 200810131818 A CN200810131818 A CN 200810131818A CN 200810131818 A CN200810131818 A CN 200810131818A CN 101615117 A CN101615117 A CN 101615117A
- Authority
- CN
- China
- Prior art keywords
- software development
- attribute
- case
- approach
- value
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本发明的目的在于提供一种软件开发过程建模方法与系统,能够基于以往软件开发案例及条件输入来自动建立软件开发过程,并且能够累计实践经验,将经验应用到以后的软件开发过程建模中。本发明的软件开发过程建模系统,包括:存储单元,存储有软件开发基础活动及历史案例,该历史案例中包括与软件开发有关的历史数据;输入单元,受理用户对开发方法、该开发方法的属性及属性值的输入;决策单元,根据历史数据以及由输入单元受理的开发方法的属性和属性值,决定是否采用该开发方法;组合单元,将存储在存储单元中的基础活动与决策单元决定采用的开发方法组合成软件开发过程;以及输出单元,输出软件开发过程。
Description
技术领域
本发明涉及一种软件开发过程建模技术,特别涉及一种能够基于以往软件开发案例及条件输入来自动建立软件开发过程的软件开发过程建模系统和方法。
背景技术
在软件开发中,规范得体的软件开发过程(process)可以避免随机人为因素带来的混乱。软件开发过程是指按照软件项目的进度、成本和质量限制,开发和维护满足用户需求的软件所必需的一组有序的软件开发活动集合。软件开发活动(activity)是指为开发软件项目而执行的一项具有明确任务的具体工作,例如需求分析、设计、编码和单元测试、系统测试、验收测试等。
软件开发过程发展至今,已形成若干公知的软件开发过程,如最初的瀑布模型等等,上述瀑布模型是基于最佳实践的统一过程(RUP:RationalUnified Process)而强调交付结果的敏捷开发过程。每一种软件开发过程都有其自身的特点,不同程度地采用原型、迭代、持续集成、测试驱动等软件开发方法。软件开发方法(method)是指软件开发过程所遵循的办法和步骤。每一种开发过程根据其采用的开发方法都有其最适合的项目环境。
项目环境是指具有特定属性的软件项目及相应的人、技术等。例如,原型法适用的项目环境包括:适合相互联系程度较大的系统,如联机事物处理,而不适合批处理系统;适合结构化的系绕,而不适合使用大量算法的问题;适合难以肯定详细需求但能积极参与的用户,而不适合不能提供及时反馈的用户;适合有快速实现原型工具的场合,而不适合系统构造困难的场合。
以上介绍了本领域的一些已知技术术语,对于其他技术术语,由于是公知技术,所以省略详细的说明。
通过上述说明可知,在利用软件开发方法建立与项目环境相适应的软件开发过程的软件开发过程建模技术中,根据项目环境选择适当的软件开发方法是十分重要的。但是,经验不足的用户通常并不知道如何为一个项目选择一种或多种软件开发方法,即如何为一个特定的项目环境配置一个最合适的软件开发过程。而在现有技术中,能够辅助用户选择和配置软件开发过程的软件开发过程建模系统还比较少,主要有以下技术。
专利文献1:CN 101004801A
专利文献2:CN 1928814A
在专利文献1(CN 101004801A)中描述了一种软件开发过程模型裁剪和例化的方法。该方法提供了三种标准生命周期(过程)的模板:瀑布型、增量型和原型法供用户选择。用户可以根据系统提供的生命周期的特点和适用范围的描述选择一个相对合适的标准生命周期。对于一个特定的软件项目,如果其属性在系统描述的适用范围之外,用户可以修改标准生命周期的模板,即用户根据需要添加和裁剪生命周期中的软件开发活动,并将修改后的模板保存,作为自定义的生命周期。但是在该方法中,存在下述问题,即,系统不能根据一个软件项目的特定属性,利用用户的经验,自动为用户选择一种生命周期。
在专利文献2(CN 1928814A)中描述了一种基于组织实体能力的软件开发过程建模方法和系统。该系统可以根据过程主体的资源和能力、知识和经验、以及输入的约束目标生成软件开发过程和计划。并且,该系统还具有学习能力,不断地将历史数据转变为经验知识,使用户的经验得到积累和应用。但是专利文献2中描述的系统所生成的包含计划的软件开发过程是基于用户输入的约束目标而定义的软件开发活动,即软件开发过程是由用户输入的软件开发活动组成。系统没有提及用户如何组织开发过程中的各种软件开发活动,即如何确定采用开发过程中的各种软件开发方法,相应地也没有这些方法的经验积累和应用手段。而合适的软件开发过程是建立有效计划的前提。
发明内容
本发明就是鉴于上述技术问题而完成的,其目的在于提供一种软件开发过程建模方法与系统,能够基于以往软件开发案例及条件输入来自动建立软件开发过程,并且,具有学习能力,能够累计实践经验,将经验应用到以后的软件开发过程建模中。
为了实现本发明的目的,本发明的一个技术方案是软件开发过程建模系统,其特征在于,包括:存储单元,存储有软件开发基础活动及历史案例,该历史案例中包括与软件开发有关的历史数据;输入单元,受理用户对开发方法、该开发方法的属性及属性值的输入;决策单元,根据历史数据以及由输入单元受理的所述开发方法的属性和属性值,决定是否采用该开发方法;组合单元,将存储在存储单元中的基础活动与决策单元决定采用的所述开发方法组合成软件开发过程;以及输出单元,输出所述软件开发过程。
此外,本发明的另一技术方案是软件开发过程建模系统,包括模块:输入模块,接收用户指定的开发方法的属性的值;决策模块,根据用户的输入和历史数据判断每个方法是否被采用;组合模块,基于必须的基础活动将被采用的方法组合成软件开发过程;输出模块,将建立的开发过程输出给用户;反馈模块,接收用户指定的实际的过程信息即所采用开发方法的经验;存储模块,存储每个方法的描述、属性及所有历史案例。
本发明的技术效果在于:通过受理用户根据特定的项目环境所指定的软件开发方法如何被采用的属性及属性值,能够根据受理的属性值及软件开发方法的经验值自动选择合适的软件开发方法并组成软件开发过程,从而提高软件开发的效率。并且,通过不断积累历史案例,能够更准确地提供软件开发过程。
附图说明
图1是本发明第一实施方式的软件开发过程建模系统的结构示意图;
图2A是本发明第一实施方式中的软件开发过程建模系统的软件开发过程建模过程的流程图;
图2B是在软件开发过程建模结束后系统存储实际软件开发过程的案例的流程图。
图3A是本发明第一实施方式中的预存储的基础活动的表格;
图3B是本发明第一实施方式中受理的软件开发方法的表格;
图3C是本发明第一实施方式中预存储的与“原型”软件开发方法有关的历史案例的示意图;
图3D是本发明第一实施方式中预存储的与“迭代”软件开发方法有关的历史案例的示意图;
图4是本发明第一实施方式中用于受理对每个软件开发方法的属性及其属性值的指定的属性设定界面的示意图;
图5是本发明第一实施方式中将所受理的软件开发方法与历史案例进行比较的案例比较匹配算法的流程图;
图6是本发明第一实施方式中的定位软件开发方法在基础活动中的实施位置的流程图;
图7是本发明第一实施方式中组合软件开发过程的示意图;
图8是本发明第一实施方式中的存储软件开发过程实施经验(历史案例)的软件开发过程输出和存储界面的示意图。
图9A是本发明第二实施方式中受理的软件开发方法的表格;
图9B是本发明第二实施方式中预存储的与“原型”软件开发方法有关的历史案例的示意图;
图9C是本发明第二实施方式中预存储的与“持续集成”软件开发方法有关的历史案例的示意图;
图9D是本发明第二实施方式中预存储的与“结对编程”软1件开发方法有关的历史案例的示意图;
图10是本发明第二实施方式中用于受理对每个软件开发方法的属性及其属性值的指定的属性设定界面的示意图;
图11是本发明第二实施方式中组合软件开发过程的示意图;
图12是本发明第二实施方式中的存储软件开发过程实施经验(历史案例)的软件开发过程输出和存储界面的示意图。
具体实施方式
下面结合附图详细描述本发明的软件开发过程建模系统。
(第一实施方式)
图1是本发明第一实施方式的软件开发过程建模系统的结构示意图。如图1所示,软件开发过程建模系统1的结构大致分为三部分:决策区、存储区和经验学习区。其中,决策区包括输入模块10、软件开发方法决策模块20、软件开发过程组合模块30以及软件开发过程输出模块40。输入模块10利用显示器等输入机构受理用户的输入,具体包括用户对某个软件开发方法的指定以及所指定的软件开发方法的属性、属性值等。软件开发方法决策模块20根据用户的输入数据和历史经验数据(历史案例)决定是否采用该元件开发方法。软件开发过程组合模块30将软件开发过程中所必要的基础活动与被采用的软件开发方法组合,生成软件开发过程。软件开发过程输出模块40将生成的软件开发过程输出给用户。
此外,经验学习区包括反馈经验输入模块50,用户在软件开发完成后,接收所生成的软件开发过程在实际应用当中的实际利用数据及经验值,其中,“经验值”表示在实际的软件开发过程中实际采用相应的软件开发方法的程度。当然,反馈经验输入模块50不仅能够接收本软件开发过程建模系统1生成的软件开发过程的经验数据,还能够接收任何在实际应用当中具体应用的软件开发过程的经验数据。
并且,由于反馈经验输入模块50并不直接参与软件开发过程的建模活动,因此在软件开发过程建模系统1中也可以不包括反馈经验输入模块50,但是,通过具有反馈经验输入模块50,能够使系统不断学习到软件开发经验,因此优选。
此外,存储区包括存储模块60,存储在软件开发过程建模动作中生成的各种数据,例如基本活动、用户所指定的软件开发方法、属性及属性值的表格、历史案例等。以下具体介绍在存储模块60中存储的内容。
其中,图3A是本发明第一实施方式中的预存储的基础活动的表格。所述基础活动用来定义建立生存周期过程的基础结构所需的基本活动,在本发明的第一实施方式中,基础活动包括:需求分析、设计、编码和单元测试、系统测试以及验收测试。当然,基础活动并不是唯一的,能够根据需要进行设定,例如基础活动还可以包括问题定义,可行性分析,运行维护等。
图3B是本发明第一实施方式中受理的软件开发方法的表格。在该表格中存储所受理的软件开发方法、属性以及与该软件开发方法有关的其他描述。其中,软件开发方法的“描述”信息将用在后述的过程输出界面(图7),如果用户需要了解该方法的详细实施过程,可以查看此信息。开发方法的“开始活动、结束活动”定义了该方法在基础软件开发过程中的执行阶段。在本实施方式中,根据在软件开发方法中的“开始活动、结束活动”中定义的某些基础活动,可以得到该软件开发方法的具体实施阶段。
在本发明的第一实施方式中,预先存储有图3B所示的内容,定义了软件开发方法“原型”和“迭代”以及“原型”和“迭代”中常用的属性,以生成初始属性设定界面,方便用户进行输入。当然也可以由用户对该表格中的内容进行修改、增减等编辑。由于在受理内容表格中已经预存储有这些内容,因此,在用来受理用户输入的属性设定界面上显示如图4所示的内容。
关于设定的各个属性,由于软件开发方法决策模块20决定是否采用某个软件开发方法,属于多属性决策的问题。多属性决策就是指对于一个问题,有多个解决方案,每个方案又有多个属性,每个属性都有一定的权重,符合归一化条件,决策的目的就是找出这些方案中最满意的一个。在本发明中,软件开发方法的属性是指对于特定的项目环境,影响该开发方法是否被使用的因素,包括项目属性、团队属性、技术属性等。
例如,对于图3B中的软件开发方法“原型”621来说,“描述”可能包括原型的类型、实施手段、实施步骤等信息,在此实施方式中不详细列出。“开始活动”为“需求分析”,“结束活动”为“编码和单元测试”,说明原型的实施阶段在基本活动中从“需求分析”开始到“编码和单元测试”结束。“属性”包括“领域知识、开发经验、技术能力、需求变更风险”,分别表示目标项目的开发团队拥有的该项目的业务领域知识、类似项目的开发经验、采用技术的难度和需求变更的可能性,这些都是影响是否采用原型法的因素。
对于图3B中的软件开发方法“迭代”622,“描述”可能包括迭代的周期、次数、开发范围如何决定等信息,在此实施方式中不详细列出。“开始活动”为“需求分析”,“结束活动”为“系统测试”,说明迭代的实施阶段在基本软件过程中从“需求分析”开始到“系统测试”结束。“属性”包括“需求变更风险、项目规模、难度、客户满意度”,分别表示需求变更的可能性、项目规模的大小、采用技术的难度和客户对交付软件的质量要求程度,这些都是影响是否采用迭代的因素。
在本发明中,开发方法包括但不限于原型,迭代,测试驱动开发,持续集成,结对编程等,但如果未来出现新的软件开发方法,当然也能够应用本发明。
图4是本发明第一实施方式中用于受理对每个软件开发方法的属性及其属性值的指定的属性设定界面的示意图。如图4所示,在第一实施方式中示例性地显示了两种软件开发方法:原型和迭代。针对这两种软件开发方法,具体显示了存储在图3B的表格中存储的各个属性,并且,在该界面上具有属性输入栏111、112、113、114,能够受理用户对所对应的属性值的输入。在该界面上还具有多个可选项目120、121、131、132、133,能够对软件开发方法进行编辑,并且还能够增加新的软件开发方法。此外,还能够在界面上增加其他可选项目,来对属性进行编辑。
此外,在本发明第一实施方式中,“原型”和“迭代”方法被预先存放在存储模块中,并且,在存储模块中还预先存储有与“原型”和“迭代”等软件开发方法有关的历史案例。图3C是本发明第一实施方式中预存储的与“原型”软件开发方法有关的历史案例的示意图;图3D是本发明第一实施方式中预存储的与“迭代”软件开发方法有关的历史案例的示意图。
在本实施方式中,每个历史案例的数据包括历史案例的ID、属性及其属性值以及经验值。其中,案例是指开发方法的应用实例,它被纪录在数据库中,包括特定项目环境的属性值和经验值。“ID”号被用来区分案例的唯一性,在此实施方式中采用开发方法的决策日期作为案例号。“属性及其属性值”记录了在采用案例所表示的软件开发方法之前对每个属性的估计属性值。“经验值”记录了采用上述软件开发方法之后该软件开发方法的实际采用程度。
例如:在图3C中,“原型”的一个ID为20070304的案例,其各个属性的属性值被分别估计为[8,2,6],实际经验值为7.5。
在图3D中,“迭代”的一个ID为20070304的案例,其各个属性的属性值被分别估计为[8,5,6,4],实际经验值为8。
以上说明了本发明中涉及的基本概念,下面具体说明本发明的软件开发过程建模系统1的软件开发过程建模过程流程图。
图2A是本发明第一实施方式中的软件开发过程建模系统的软件开发过程建模过程的整体流程图。
首先,在步骤100,用户能够通过输入模块10根据经验指定所选择的软件开发方法的每个属性的属性值。根据预先存储的开发方法(图3B),当软件开发过程建模系统1启动时,在输入模块10的显示器上显示图4所示的包含“原型”和“迭代”的初始属性设定界面(无属性值)。用户根据特定的项目环境,指定一个或多个开发方法中的一个或多个属性的值。
在此例中,每个属性值的取值范围为0到10.0。0表示该属性在决定该开发方法是否被采用时的影响作用最小。10.0代表该属性在决定该方法是否被采用时的影响作用最大。当然,该取值范围的定义方法能够根据需要进行更改,只要能够表示属性对决定软件开发方法所起到的作用程度的高低,就可以设计成任意定义方法,例如在0到100之间取值等。
在此,在存在帮助模块(图中未示)的基础上,软件开发过程建模系统1能够对如何设定每个软件开发方法的属性值给出简单辅助说明,
例如,对于“原型”方法,存在说明:
领域知识业务领域知识越少,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
开发经验越少,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
技术能力越低,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
需求变更风险越大,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
另外,对于“迭代”方法,存在说明:
需求变更风险越大,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
项目规模越大,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
难度越大,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
客户满意度要求越高,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
接着,用户指定“原型”方法的属性111、112、113、114分别为[5,9,3,4],“迭代”方法的属性151、152、153、154分别为[4,8,3,9]。此例中的数值显示,用户对这类软件有一定的业务知识,但是开发经验很少。虽然客户要求比较高,但用户认为难度不大。此外,该项目规模比较大,但需求预计变化不大。
用户指定完属性值后,“保存”选择项目133被点击,从而软件开发方法的属性、属性值连同其ID号20080214一起被相应地保存在图3c、3d所示的记录中。系统转入步骤200。
在步骤100中,用户根据自己的经验和项目环境也可以修改一个开发方法,添加或删除一个开发方法。例如,当用户点击“添加开发方法”131时,可以在系统中加入一个新的开发方法如“测试驱动开发”,图3B中会相应的增加一条“测试驱动开发”的记录条目在存储模块中。用户也可以从系统中删除一个开发方法132。当用户点击“修改开发方法”121时可以修改一个方法,例如添加一个新的属性“交付期限”,图3B中“迭代”的记录中会相应的增加一个属性“交付期限”;用户也可以删除该开发方法的一个属性。通过上述添加、修改、删除操作,用户可以使系统更适合特定的项目环境,也可以积累更多的实践经验。
在步骤200,软件开发方法决策模块20自动决策是否采用在步骤100中受理的软件开发方法。具体来说,在由输入模块10受理到用户的输入之后,软件开发方法决策模块20系统根据用户的输入和历史经验数据决定是否采用每个开发方法。在本实施方式中,利用属性值进行属性相关程度的计算,因此,对于用户没有指定属性值的软件开发方法,软件开发过程建模系统1将其处理为无此软件方法,从而不参与决策算法。所受理的软件开发方法的历史案例作为经验数据在步骤200中用到,首先,软件开发方法决策模块20根据用户输入的属性以及属性值,查找该软件开发方法的历史数据中的相关案例,并计算它们的平均经验值,根据平均经验值决定是否采用该方法。
具体的历史案例查找流程如图5所示。图5是本发明第一实施方式的查找某个软件开发方法的相关历史案例的匹配算法示意图。通过比较该输入方法与历史案例的属性及属性值的匹配算法,检测出软件开发方法的相关案例。首先,在开始历史案例查找处理之后,在步骤201中,进行受理的软件开发方法与历史案例的属性匹配,即判断受理的软件开发方法与历史案例的属性是否完全一致,如果案例的属性并不完全相同(步骤201为“否”),则不是相关案例,从而转到步骤205,准备进行下一个案例的判断。如果属性完全相同(步骤201为“是”),则进入步骤202,利用规定的匹配算法计算每个属性的相似程度Rji。该规定算法只要能够体现出属性之间的相似程度即可,并没有特别限制,可以使用现有的各种算法。
在本实施方式中,使用下述匹配算法。设j为软件开发方法的序号,a为案例序号,i为属性序号,Iji为方法j的第i个属性的值,Iai为案例a的第i个属性的值,Rji为受理的软件开发方法j和案例a之间第i个属性的相似程度,从而利用公式1求出Rji。
Rji=1-|Iji-Iai |/10 (公式1)
这里,Rji取值范围在0~1之间,并且属性值的相似程度越高,Rji值越大。
接着,在步骤204将每个属性的相似程度与预定的阈值G进行比较,在相似程度Rji低于阈值G时(步骤204为“是”),则判断出所对比的案例也不是相关案例,从而进入步骤205,在步骤205递增案例序号a,并判断a是否超过L(L为存储在存储模块60中的该软件开发方法的历史案例的个数),在a超过L时(步骤205为“是”),判断为已经对所存储的所有历史案例进行了判断,从而结束对该软件开发方法的相关案例的判断。在a没有超过L时(步骤205为“否”),返回步骤201,从而进行下一个案例的相关程度的判断,直到a超过L为止。
在相似程度Rji不低于阈值G时(步骤204为“否”),则进入步骤203,递增属性序号i,并判断i是否超过M(M是该软件开发方法中的属性的个数),在i超过M时(步骤203为“是”),判断为已经对所存储的所有属性进行了判断,转到步骤S205。在i没有超过M时(步骤203为“否”),则返回步骤202,进行同一个历史案例中的下一个属性的相关程度的计算,直到i超过M为止。
通过步骤204、步骤203的流程可知,在本实施例中,只有所有属性的相关程度都超过阈值G的案例,才被作为相关案例。这是由于,对某个软件开发方法的历史案例来说,认为那些属性完全相同并且属性相关程度都较大的案例与本软件开发方法之间的相关性更大。但是,当然也可以根据不同的项目要求而对判断条件进行调整。
通过图5的流程,就能够在一个软件开发方法的整个历史案例记录中遍历,并得到该开发方法的所有相关案例。
此外,G为预先设定的属性的相关阈值,阈值G设定了相关案例的判断标准,G值越趋近于1,要求案例与受理的软件开发方法越相似,G=1时,案例与受理的软件开发方法完全相同。在该发明的实施方式中,阈值G在输入方法的属性之前可以由用户通过界面指定,推荐值在0.8~1之间。G值越大,选出的相关案例与输入的方法越相似,但相关案例个数相应减少。
在检测出相关案例之后,软件开发方法决策模块20根据公式2,计算所检测出的所有相关案例的经验值平均值Ej(其中,k为相关案例的序号,r为相关案例总数,Ek为案例k的经验值)。经验值Ek被记录在存储模块中。
接着,软件开发方法决策模块20根据所计算出的经验值平均值Ej,决定是否采用该软件开发方法,即在经验值平均值Ej超过预定的经验值阈值时决定为采用该软件开发方法,在经验值平均值Ej不超过预定的经验值阈值时决定为不采用该软件开发方法,或者,在存在多种受理的软件开发方法的情况下,比较多种软件开发方法的经验值平均值,将经验值平均值最大的软件开发方法决定为采用。此外,比对方法还有很多种,例如在等于阈值时也决定为采用等。
具体举例来说,在本实施方式中,如图3C所示,对于输入的“原型”软件开发方法20080214(j=1)来说,其属性及属性值分别为[“领域知识、开发经验、技术难度、需求变更”]和[5,9,3,4]。匹配算法遍历图3C所示的原型的历史案例记录。第一个ID为20070304的案例,由于与20080214的属性不同,因此该案例不是所受理的软件开发方法的相关案例。第二个ID为20070523的案例,其属性相同,然后根据公式1计算每个属性的相似程度Rji。第一个属性,Rji为1-|5-4|/10=0.9。依此类推,所有属性的相似程度由同样的算法得出为[0.9,0.9,1,0.9]。如果一个属性的相似程度Rji低于阈值G,则此案例就不是相关案例。在此例中,阈值G的值设为0.8。根据这个规则,案例20070523是所受理的软件开发方法的相关案例。第三个案例20070816,由于属性的相似程度分别为[1,1,0.9,1],此案例也是所受理的软件开发方法的相关案例。第四个案例200701030,由于第一个属性的相似程度为0.7,低于阈值G,此案例不是所受理的软件开发方法的相关案例。
然后基于所有相关案例的经验值Ek,根据公式2计算出经验值平均值Ej。对于受理的“原型”软件开发方法,相关案例20070523的经验值Ek为6,相关案例20070816的经验值Ek为5.5,则此例中“原型”方法的经验值平均值E1为(6+5.5)/2=5.75。
此外,对于输入的“迭代”软件开发方法的记录20080214(j=2),其属性及属性值分别为[“需求变更风险、项目规模、难度、客户满意度”]和[4,8,3,9]。匹配算法遍历图3D所示的历史案例。第一个ID为20070304的案例,其属性相同,然后根据公式1计算每个属性的相似程度Rji。其中,第一个属性,Rji为1-|8-4|/10=0.6,低于阈值G,则此案例不是所受理的软件开发方法的相关案例。第二个ID为20070523的案例,其属性相同,且所有属性的相似程度为[0.9,1,1,0.9],均高于阈值G,案例20070523是所受理的软件开发方法的的相关案例。第三个案例20070816,由于属性的相似程度分别为[1,0.9,0.9,0.9],此案例是所受理的软件开发方法的的相关案例。第四个案例200701030,由于第二个属性的相似程度为0.7,低于阈值G,此案例不是相关案例。
然后基于所有相关案例的经验值Ek,根据公式2计算出经验值平均值Ej。对于输入的“迭代”方法,经验值平均值E2为(7.5+6)/2=6.75。
这里,由于“原型”方法的经验值平均值E1为5.75,“迭代”方法的经验值平均值E2为6.75,建议“迭代”方法被优先采用。
在本实施方式中,软件开发方法决策模块20根据软件开发方法的属性值,查找该方法历史案例中的相关案例,计算相关案例的平均经验值Ej,根据平均经验值Ej判断是否采用该开发方法。
此外,在其它实施例中,如果用户新建立一个软件开发方法,或新添加一个软件开发方法的属性,或在存储模块中没有找到相关历史案例,则该方法没有相应项目环境的经验值。此时,该方法是否被采用可以由输入属性的平均值Ij利用多属性模糊方法论得出决策结果。例如,根据公式3计算每个开发方法的属性的输入平均值Ij(j为软件开发方法的序号,i为属性的序号,m为属性总数,Iji为属性i的值)。还是以图3C、图3D为例,“原型”方法的属性值输入平均值I1为(5+9+3+4)/4=5.25;“迭代”方法的输入平均值I2为(4+8+3+9)/4=6。基于优先采用属性值输入平均值或经验值平均值最大的软件开发方法的原则。据此,建议“迭代”方法被优先采用。
如果每个软件开发方法的输入平均值和经验值平均值都相同,则设定规则:按照方法的顺序建议第一个方法被优先采用。
至此,回到图2A的流程,在步骤300,软件开发过程组合模块30将建议被优先采用的软件方法与基础活动组合,形成一个完整的软件开发过程。
首先介绍上文中提到的基础活动(图3A)。这些基础活动是一个完整的开发过程所必须的基本步骤,如“需求分析”、“设计”、“编码和单元测试”、“系统测试”和“验收测试”等。这些基础活动在开发过程中的执行顺序,将在下面过程详细描述。
图6是本发明第一实施方式中的定位软件开发方法在基础活动中的实施位置的流程图。在软件开发过程中,每个软件开发方法都有其预先定义的“开始活动”和“结束活动”,如图3B所示。在图6中,首先,在步骤311,基于上述基础活动的内容,从第一个基础活动“需求分析”开始依次向后查找直到找到被采用的软件开发方法的开始活动为止。然后,进入步骤312,从最后一个基础活动“验收测试”开始依次向前查找,直到找到被采用的软件开发方法的结束活动为止。由于找到了所采用的软件开发方法在基础活动中的“开始活动”和“结束活动”,从而找到了所采用的软件开发方法在基础活动中的位置,根据“开始活动”和“结束活动”,将所采用的软件开发方法组合到基础活动中。
具体来说,对于此例采用的“迭代”方法,首先找到其开始步骤为“需求分析”,然后从“验收测试”向前查找找到结束步骤为“系统测试”。因此组合成图7所示的软件开发过程。
接着,在步骤400,软件开发过程输出模块40输出由软件开发过程组合模块30建立的软件开发过程。
用户能够参照图7所示的软件开发过程进行软件开发。此外,软件开发过程输出模块40还能够输出其它软件开发方法的属性值输入平均值Ij或经验值平均值Ej等附加信息供用户参考。输出界面如图8所示。在图示中,还可以输出该经验值是从多少相关案例得到的数值,来供用户判断经验值的可参考性。
在本实施方式中,对于“原型”方法,输入平均值I1为5.25(标号411),从2个相关案例(标号423)得到的经验值平均值E1为5.75(标号421)。对于“迭代”方法,输入平均值I1为6(标号412),从2个相关案例(标号424)得到的经验值平均值E2为6.75(标号422),用户被建议优先采用“迭代”方法。经验相对较少的用户还可以点击方法名,打开相应开发方法的详细描述信息,以便更好地实施整个过程。
此外,在软件开发过程建模系统1中还可以具有反馈经验输入模块50,从而进行软件开发方法的反馈处理。图2B是在软件开发过程建模结束后系统存储实际软件开发过程的案例的流程图。如图2B所示,在步骤500,用户保存每个软件开发方法的经验值,在此实施方式中,用户被要求输入的经验值在[0,10]范围内,并且经验值越小,表明在该项目环境下不适合采用该开发方法;经验值越大,表明在该项目环境下越适合采用该开发方法。因此经验值平均值Ej的大小决定了该开发方法将是否被采用。在其他实施方式中,用户也可以自定义经验值的范围。在此例中设定决策规则:对于经验值平均值Ej最大的开发方法,建议这个方法被优先采用。
软件开发过程输出模块40输出软件开发过程之后,用户根据所输出的软件开发过程(参照图7)和附加信息(图8)进行软件开发。
但是,在实际的软件开发过程中,可能会出现一些无法预料的因素,使得实际采用的软件开发过程中的软件开发方法与所输出的方法有所不同。
在此例中,对于“原型”方法,用户实际采用的软件开发方法和输出的软件开发方法一致,因此用户相对成熟地掌握了该方法的应用环境。对于“迭代”方法,用户发现实际采用的迭代比预期的程度大,因为一些因素如需求变更被低估。
在上述情况下,在步骤500,用户通过反馈经验输入模块50根据软件开发方法的实际使用经验,指定每个软件开发方法的经验值。并且,在步骤600,存储模块60与输入模块10所受理的软件开发方法、属性及属性值相对应地存储经验值,作为新的历史案例。
此外,还可以在软件开发结束后,将实际的软件开发过程通过图8所示的界面保存到存储模块60中。每个软件开发方法的经验值640和属性及属性值一起保存在图3C或3D所示的存储模块60中,作为经验值在以后的决策过程中采用。还可以更新属性值后再保存。
在此例中,“原型”方法的经验值是5.2(标号641),因为用户实际采用的程度和系统建议的一致。“迭代”方法的经验值是7.5(标号642),因为用户在实际采用时发现低估了某些属性。
(第二实施方式)
接下来说明本发明的第二个实施方式。
在第二个实施方式中,“原型”、“持续集成”和“结对编程”方法被预先保存在存储模块60中。“原型”方法在第一个实施方式中已经介绍。“持续集成”(Continuous Integration)是极限编程中强调的一个软件开发方法,通过持续产生可执行的发布版本,系统集成测试的风险较少。它适用于小到中型规模的项目,有一个全面的单元测试验证集,有合适的集成工具,带有主线的开发项目而不是多个版本并行开发等。“结对编程”(PairProgramming)也是极限编程中的一个软件开发方法,由两个开发人员在同一台电脑上共同编写解决同一问题的代码,通常一个人负责写代码,而另一个负责保证代码的正确性与可读性。结对编程是一种非正式的同级评审。它要求两个开发人员在性格和技能上应该相互匹配;由于结对需要磨合时间,因此项目的周期在三个月以上比较见效;在项目交期紧迫、开发人员人手不足的情况下不适合;适合新功能的开发,不适合代码重构和维护等。
在第二实施方式中,与第一实施方式相同的结构被赋予相同的标号,并省略详细的说明。
第二实施方式中的软件开发过程建模系统1的主要结构要素与第一实施方式相同,其中,存储模块60中存储有“原型”、“持续集成”和“结对编程”方法的预存储数据。即在第二实施方式中,输入模块10受理对三种软件开发方法的属性及属性值的输入,但是受理的软件开发方法的数量并没有限制,可以是任意数量。
图9A是本发明第二实施方式中受理的软件开发方法的表格。其中预存有软件开发方法的描述、开始活动、结束活动和属性。对于“原型”方法623,与第一实施方式中的“描述”、“开始活动”和“结束活动”信息相同。在此例中新加入一个属性“客户参与度”,表明客户积极参与是采用原型法的又一个因素。
对于开发方法“持续集成”624,“描述”可能包括该方法需要的工具、如何实施等信息,在此实施方式中不详细列出。“开始活动”和“结束活动”为“编码和单元测试”,说明该方法用在基本软件过程中的编码和单元测试阶段。“属性”包括“项目规模、集成工具、测试集的全面性、多个版本是否并行”,表明项目规模大小、集成工具是否便利、测试集预计达到的全面程度和多个版本是否并行开发都是影响是否采用持续集成的因素。
对于开发方法“结对编程”625,“描述”可能包括该方法如何实施等信息,在此实施方式中不详细列出。“开始活动”和“结束活动”为“编码和单元测试”,说明该方法用在基本软件过程中的编码和单元测试阶段。“属性”包括“开发人员技能水平程度、项目周期、开发人员是否充足、是否新功能开发”,表明开发人员技能水平相似的程度、项目周期的长短、开发人员是否充足和是否新功能开发都是影响是否采用结对编程的因素。
图9B是本发明第二实施方式中预存储的与“原型”软件开发方法有关的历史案例的示意图。存储有本发明第二实施方式的“原型”方法的一些预存储历史案例的ID、属性及属性值和经验值。
图9C是本发明第二实施方式中预存储的与“持续集成”软件开发方法有关的历史案例的示意图。存储有本发明第二实施方式的“持续集成”方法的一些预存储历史案例的ID、属性及属性值和经验值。
图9D是本发明第二实施方式中预存储的与“结对编程”软件开发方法有关的历史案例的示意图。存储有本发明第二实施方式的“结对编程”方法的一些预存储历史案例的ID、属性及属性值和经验值。
以下说明软件开发过程建模的流程。第二实施方式中的处理流程与第二实施方式大致相同,但是处理的软件开发方法的数量不同。
首先,在步骤100,用户通过输入模块10指定每个软件开发方法的属性及属性值。
当系统启动时,根据预先存储的软件开发方法(图9A),对用户提示图10所示包含“原型”、“持续集成”和“结对编程”方法的初始界面(无属性值)。
用户根据特定的项目环境,在图10所示的界面中指定这些软件开发方法的属性的属性值。在此例中,每个属性值的取值范围仍为0到10.0。0表示该属性在决定该开发方法是否被采用时的影响作用最小。10.0代表该属性在决定该方法是否被采用时的影响作用最大。系统对如何设定每个开发方法的属性值也做简单辅助说明:
对于“原型”方法:
业务领域知识越少,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
开发经验越少,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
技术能力越低,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
需求变更风险越大,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
客户参与度越高,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
对于“持续集成”方法:
项目规模越小,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
集成工具越便利,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
测试集的全面性越高,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
多个版本并行开发越少,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
对于“结对编程”方法:
开发人员技能水平程度越相似,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
项目周期越长,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
开发人员越充足,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
新功能开发越多,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
在输入界面上,用户指定“原型”方法的属性161、162、163、164、165分别为[6,4,2,8,2],此例中的数值显示,用户对该软件项目有一定的业务知识,有一定的开发经验,技术难度不大,但需求变更风险较大,用户参与很少。用户指定“持续集成”方法的属性171、172、173、174分别为[5,9,5,10],此例中的数值显示,该软件项目的项目规模中等,有便利的集成工具,测试集预计达到的全面程度为50%,同一时间只有单个版本开发。用户指定“结对编程”方法的属性181、182、183、184分别为[5,9,4,9.5],此例中的数值显示,开发人员技能水平程度有差别,项目周期长,开发人员数量相对紧张,几乎全部为新功能开发。
用户指定完属性值后,点击“保存”133,将软件开发方法的属性、属性值连同其ID号20080526一起被相应地保存在图9B、9C、9D所示的记录中。系统转入步骤200。
在步骤200,当软件开发方法决策模块20接收到用户的输入数据后,根据用户的输入和历史经验数据决定是否采用某个软件开发方法。
首先,根据图5所示的查找一个开发方法的相关历史案例的匹配算法示意图,依次查找受理的“原型”、“持续集成”和“结对编程”方法的相关历史案例。
在此例中,对于受理的“原型”方法的记录20080526(j=1),其属性及其值分别为[“领域知识、开发经验、技术难度、需求变更、客户参与度”]和[6,4,2,8,2]。匹配算法遍历图9B所示的“原型”方法的历史案例记录。前五条纪录(从ID为20070304的案例到ID为20080214的案例),因为其属性与输入记录20080526的属性不相同,它们均不是相关历史案例。第六个案例20080312,其属性与输入记录20080526的属性相同,然后根据公式1计算每个属性的相似程度Rji。第一个属性“领域知识”,Rji为1-|6-5|/10=0.9。所有属性的相似程度由同样的算法得出为[0.9,0.9,0.9,0.8,1]。每一个属性的相似程度Rji均不低于阈值G0.8,因此案例20080312是输入方法的相关案例。历史纪录查找完毕,然后基于所有相关案例的经验值Ek,根据公式2计算出经验值平均值Ej。由于只找到一条相关案例20080312,其经验值Ek为2,此例中“原型”方法的经验值平均值E1为2/1=2。
此外,对于受理的“持续集成”方法的记录20080526(j=2),其属性及其值分别为[“项目规模、集成工具、测试集的全面性、多个版本是否并行”]和[5,9,5,10]。匹配算法遍历图9C所示的“持续集成”方法的历史案例记录。第一个ID为20070304的案例,因为其属性与输入的记录20080526的属性不相同,它不是相关历史案例。第二个ID为20070523的案例,其属性与输入记录20080526的属性相同,然后根据公式1计算每个属性的相似程度Rji。第一个属性“项目规模”,Rji为1-|5-9|/10=0.6,低于阈值G0.8,因此该案例不是输入方法的相关案例。第三个案例20070816,其属性与输入记录20080526的属性相同,且所有属性的相似程度[0.9,1,0.8,0.9]均不低于阈值G0.8,因此该案例是输入方法的相关案例。历史纪录查找完毕,然后基于所有相关案例的经验值Ek,根据公式2计算出经验值平均值Ej。由于只找到一条相关案例20070816,其经验值Ek为7.5,此例中“持续集成”方法的经验值平均值E2为7.5/1=7.5。
最后,对于受理的“结对编程”方法的记录20080526(j=3),其属性及其值分别为[“开发人员技能水平程度、项目周期、开发人员是否充足、是否新功能开发”]和[5,9,4,9.5]。匹配算法遍历图9D所示的“结对编程”方法的历史案例记录。第一个ID为20070304的案例,其属性与输入记录20080526的属性相同,然后根据公式1计算每个属性的相似程度Rji。第一个属性“项目规模”,Rji为1-|5-8|/10=0.7,低于阈值G0.8,因此该案例不是输入方法的相关案例。第二个案例20070523,其属性与输入记录20080526的属性相同,且所有属性的相似程度[0.8,0.9,0.9,0.95]均不低于阈值G0.8,因此该案例是输入方法的相关案例。历史纪录查找完毕,然后基于所有相关案例的经验值Ek,根据公式2计算出经验值平均值Ej。由于只找到一条相关案例20070523,其经验值Ek为7.5,此例中“结对编程”方法的经验值平均值E3为5/1=5。
然后,软件开发方法决策模块20根据“原型”、“持续集成”和“结对编程”方法的经验值平均值决定优先采用哪种方法。根据规则:对于经验值平均值Ej最大的软件开发方法,建议该方法被优先采用,因为E2>E3>E1,因此“持续集成”方法建议被优先采用。
接着,在步骤300,软件开发过程组合模块30将建议被优先采用的软件方法与基础活动组合,形成一个完整的软件开发过程。
首先,按照图6所示的将被采用的软件开发方法在基础活动中定位的流程,组合软件开发方法和基础活动。对于此例,由于采用“持续集成”方法,根据开始活动“编码和单元测试”和结束活动“编码和单元测试”(图9A中624所示),在基础软件过程的基础活动(图3A:“需求分析”、“设计”、“编码和单元测试”、“系统测试”和“验收测试”)中找到其开始步骤和结束步骤均为“编码和单元测试”,即“持续集成”方法是在编码和单元测试阶段采用。
形成软件开发过程之后,转入步骤400。在步骤400,软件开发过程输出模块40输出所建立的软件开发过程。
系统输出显示在如图11所示的输出界面上,用户可以参照图11所示的输出内容进行软件开发。此外,软件开发过程输出模块40还能够输出其它软件开发方法的属性值输入平均值Ij或经验值平均值Ej等附加信息供用户参考。输出界面如图12所示。在图示中,还可以输出该经验值是从多少相关案例得到的数值,来供用户判断经验值的可参考性。
在此例中,对于“持续集成”方法,输入平均值为7.25,从1个相关案例得到的经验值平均值E2为7.5,用户被建议优先采用“持续集成”方法,采用程度为7.5。对于“结对编程”方法,输入平均值为6.88,从1个相关案例得到的经验值平均值E3为5,用户可以按自己意愿采用该方法。对于“原型”方法,输入平均值为4.4,从1个相关案例得到的经验值平均值E1为2,不建议采用该方法。经验相对较少的用户还可以点击方法名,打开该开发方法的详细描述信息,以便更好地实施整个过程。
此外,在软件开发结束后,实际的开发过程通过图12所示的界面保存到系统中。每个方法的实际经验值640被输入到界面中,和属性及其值一起保存在图9B,9C或9D所示的存储模块中,作为经验值在以后的决策过程中采用。在此例中,“持续集成”方法的经验值是7.5(643),因为用户实际采用的程度和系统建议的一致。“结对编程”方法的经验值是4(644),因为用户在实际采用时发现了别的影响因素(用户可以在图10所示的界面中通过124打开编辑界面加入一个属性,在此不再详述)。“原型”方法的经验值仍为2(645),因为用户尝试采用此方法,但客户没有时间给出原型的反馈意见,进度被拖延后中止。
此外,也可以没有反馈模块,从而在图12显示的界面上不存在实际经验值输入的栏目,也同样可以实施本发明。
综上所述,本发明提供了一种基于用户经验选择的方法建立软件开发过程的方法与系统。虽然详细描述了本发明的实现实例,但本领域技术人员应当理解,软件开发过程建模中用到的具体决策算法和组合算法在不偏离本发明实质的情况下,可以做出各种改变,这些变形同样属于本发明的范围。并且,本发明的构思在于结合实际的软件开发过程的经验数据来自动生成针对具体项目的软件开发过程。在不超过本发明的发明构思的范围内容的各种变形都属于本发明的范围。
Claims (18)
1、一种软件开发过程建模系统,其特征在于,包括:
存储单元,存储有软件开发基础活动及历史案例,该历史案例中包括与软件开发有关的历史数据;
输入单元,受理用户对开发方法、该开发方法的属性及属性值的输入;
决策单元,根据历史数据以及由输入单元受理的所述开发方法的属性和属性值,决定是否采用该开发方法;
组合单元,将存储在存储单元中的基础活动与决策单元决定采用的所述开发方法组合成软件开发过程;以及
输出单元,输出所述软件开发过程。
2、如权利要求1所述的软件开发过程建模系统,其特征在于,
还具有反馈单元,该反馈单元受理用户对所述软件开发过程的实际利用信息,作为新的历史案例存储到存储单元中。
3、如权利要求1所述的软件开发过程建模系统,其特征在于,
所述输入单元包括显示用户访问界面的显示单元,通过用户访问界面受理对每个开发方法、该开发方法的属性及属性值的编辑,其中,所述编辑包括删除、添加、修改及存储。
4、如权利要求1所述的软件开发过程建模系统,其特征在于,
所述历史数据包括各个历史案例的经验值,
所述决策单元比较输入单元受理的每个开发方法的属性与历史案例中的属性,将属性相同的历史案例作为相关案例,计算相关案例的平均经验值,在所述平均经验值超过预定的经验值阈值时判断为采用该开发方法。
5、如权利要求4所述的软件开发过程建模系统,其特征在于,
所述决策单元计算开发方法与相关案例之间的各个属性相关度,并且仅计算各个属性相关度都大于预定的相关度阈值的相关案例的平均经验值,在平均经验值超过预定的经验值阈值时判断为采用该开发方法。
6、如权利要求5所述的软件开发过程建模系统,其特征在于,
在设Iji为第j个开发方法的第i个属性的属性值、设Iai为第a个相关案例的第i个属性的属性值的情况下,第i个属性的相关度计算公式为:
Rji=1-|Iji-Iai|/10。
7、如权利要求4所述的软件开发过程建模系统,其特征在于,
在输入单元受理了多个开发方法并且存储单元中不存在相关案例的情况下,所述决策单元计算所输入的每个开发方法的平均属性值,将多个开发方法中的平均属性值最大的开发方法决定为要采用的开发方法。
8、如权利要求1所述的软件开发过程建模系统,其特征在于,
所述组合单元基于要采用的开发方法预先定义的开始活动和结束活动,检索存储在存储单元中的基础活动,并确定要采用的开发方法在基础活动中的实施位置。
9、如权利要求1所述的软件开发过程建模系统,其特征在于,
所述输出单元还与软件开发过程一起输出与被采用的开发方法有关的平均属性值及相关案例的平均经验值,作为附加参考信息。
10、一种软件开发过程建模方法,其特征在于,包括:
输入步骤,受理用户对开发方法、该开发方法的属性及属性值的输入;
决策步骤,根据存储在存储单元中的历史数据以及由输入单元受理的所述开发方法的属性和属性值,决定是否采用该开发方法;
组合步骤,将存储在存储单元中的基础活动与在所述决策步骤中决定采用的所述开发方法组合成软件开发过程;以及
输出步骤,输出所述软件开发过程。
11、如权利要求10所述的软件开发过程建模方法,其特征在于,
还包括反馈步骤,受理用户对所述软件开发过程的实际利用信息,作为新的历史案例存储到存储单元中。
12、如权利要求10所述的软件开发过程建模方法,其特征在于,
所述输入步骤包括通过用户访问界面受理对每个开发方法、该开发方法的属性及属性值的编辑的步骤,其中,所述编辑包括删除、添加、修改及存储。
13、如权利要求10所述的软件开发过程建模方法,其特征在于,
所述历史数据包括各个历史案例的经验值,
所述决策步骤包括:
比较步骤,比较在输入步骤中受理的每个开发方法的属性与历史案例中的属性,将属性相同的历史案例作为相关案例;以及
计算步骤,计算相关案例的平均经验值,在所述平均经验值超过预定的经验值阈值时判断为采用该开发方法。
14、如权利要求13所述的软件开发过程建模方法,其特征在于,
所述计算步骤为,计算开发方法与相关案例之间的各个属性相关度,并且仅计算各个属性相关度都大于预定的相关度阈值的相关案例的平均经验值,在平均经验值超过预定的经验值阈值时判断为采用该开发方法。
15、如权利要求14所述的软件开发过程建模方法,其特征在于,
在设Iji为第j个开发方法的第i个属性的属性值、设Iai为第a个相关案例的第i个属性的属性值的情况下,第i个属性的相关度计算公式为:
Rji=1-|Iji-Iai|/10。
16、如权利要求13所述的软件开发过程建模方法,其特征在于,
在输入单元受理了多个开发方法并且存储单元中不存在相关案例的情况下,所述决策单元计算所输入的每个开发方法的平均属性值,将多个开发方法中的平均属性值最大的开发方法决定为要采用的开发方法。
17、如权利要求10所述的软件开发过程建模方法,其特征在于,
所述组合步骤包括,基于要采用的开发方法预先定义的开始活动和结束活动,检索存储在存储单元中的基础活动,并确定要采用的开发方法在基础活动中的实施位置。
18、如权利要求10所述的软件开发过程建模方法,其特征在于,
所述输出步骤包括:还与软件开发过程一起输出与被采用的开发方法有关的平均属性值及相关案例的平均经验值,作为附加参考信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810131818A CN101615117A (zh) | 2008-06-23 | 2008-06-23 | 软件开发过程建模系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810131818A CN101615117A (zh) | 2008-06-23 | 2008-06-23 | 软件开发过程建模系统和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101615117A true CN101615117A (zh) | 2009-12-30 |
Family
ID=41494776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810131818A Pending CN101615117A (zh) | 2008-06-23 | 2008-06-23 | 软件开发过程建模系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101615117A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102254069A (zh) * | 2011-07-14 | 2011-11-23 | 华东理工大学 | 一种基于本体pcb设计的重用方法 |
CN103809985A (zh) * | 2014-03-06 | 2014-05-21 | 吕建 | 一种软件开发方案的生成方法及系统 |
CN106445560A (zh) * | 2016-10-30 | 2017-02-22 | 合肥微匠信息科技有限公司 | 一种用于芯片操作系统的测试方法 |
CN106874014A (zh) * | 2017-03-06 | 2017-06-20 | 北京领航里程碑软件技术有限公司 | 基于模型和框架的三层代码生成方法 |
CN107315579A (zh) * | 2016-04-27 | 2017-11-03 | 上海爱韦讯信息技术有限公司 | 软件研制计划自动生成方法及系统 |
CN108038222A (zh) * | 2017-12-22 | 2018-05-15 | 冶金自动化研究设计院 | 用于信息系统建模和数据访问的实体-属性框架的系统 |
CN113678099A (zh) * | 2019-05-09 | 2021-11-19 | 株式会社日立制作所 | 软件分析辅助系统及其计算机程序 |
CN116257220A (zh) * | 2023-05-16 | 2023-06-13 | 长春慧程科技有限公司 | 基于云边协同的软件开发数据管理方法及系统 |
-
2008
- 2008-06-23 CN CN200810131818A patent/CN101615117A/zh active Pending
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102254069A (zh) * | 2011-07-14 | 2011-11-23 | 华东理工大学 | 一种基于本体pcb设计的重用方法 |
CN103809985A (zh) * | 2014-03-06 | 2014-05-21 | 吕建 | 一种软件开发方案的生成方法及系统 |
CN107315579A (zh) * | 2016-04-27 | 2017-11-03 | 上海爱韦讯信息技术有限公司 | 软件研制计划自动生成方法及系统 |
CN107315579B (zh) * | 2016-04-27 | 2020-07-03 | 上海爱韦讯信息技术股份有限公司 | 软件研制计划自动生成方法及系统 |
CN106445560A (zh) * | 2016-10-30 | 2017-02-22 | 合肥微匠信息科技有限公司 | 一种用于芯片操作系统的测试方法 |
CN106874014A (zh) * | 2017-03-06 | 2017-06-20 | 北京领航里程碑软件技术有限公司 | 基于模型和框架的三层代码生成方法 |
CN108038222A (zh) * | 2017-12-22 | 2018-05-15 | 冶金自动化研究设计院 | 用于信息系统建模和数据访问的实体-属性框架的系统 |
CN108038222B (zh) * | 2017-12-22 | 2022-01-11 | 冶金自动化研究设计院 | 用于信息系统建模和数据访问的实体-属性框架的系统 |
CN113678099A (zh) * | 2019-05-09 | 2021-11-19 | 株式会社日立制作所 | 软件分析辅助系统及其计算机程序 |
CN113678099B (zh) * | 2019-05-09 | 2023-08-11 | 株式会社日立制作所 | 软件分析辅助系统及其计算机可读记录介质 |
CN116257220A (zh) * | 2023-05-16 | 2023-06-13 | 长春慧程科技有限公司 | 基于云边协同的软件开发数据管理方法及系统 |
CN116257220B (zh) * | 2023-05-16 | 2023-08-08 | 长春慧程科技有限公司 | 基于云边协同的软件开发数据管理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101615117A (zh) | 软件开发过程建模系统和方法 | |
Prowell et al. | Cleanroom software engineering: technology and process | |
US6968326B2 (en) | System and method for representing and incorporating available information into uncertainty-based forecasts | |
Berends et al. | External designers in product design processes of small manufacturing firms | |
JP4943240B2 (ja) | ビジネスプロセス作成方法、ビジネスプロセス作成装置、及びビジネスプロセス作成プログラム | |
CN100468414C (zh) | 仿真复杂设备或过程的计算机系统及方法 | |
Ozorhon et al. | Case-based reasoning model for international market selection | |
CN106875206A (zh) | 信息获取、评估、问卷调查方法、装置及服务器 | |
Hammori et al. | Interactive workflow mining—requirements, concepts and implementation | |
Piirainen et al. | The joint struggle of complex engineering: A study of the challenges of collaborative design | |
Wahono | Analyzing requirements engineering problems | |
CN117350266B (zh) | 一种自动生成文档的方法及系统 | |
Djebbi et al. | Deriving product line requirements: the red-pl guidance approach | |
Ruangkanjanases et al. | Assessing supply chain management ambidexterity, integration of knowledge management use and user satisfaction | |
Van der Blom et al. | Sparkle: Toward Accessible Meta-Algorithmics for Improving the State of the Art in Solving Challenging Problems | |
Stewart | Concepts of interactive programming | |
Maruster et al. | Discovering distributed processes in supply chains | |
Gordillo et al. | Modeling and Composing Navigational Concerns in Web Applications. Requirements and Design Issues. | |
CN109240671A (zh) | 使用流程生产的流程编辑器系统 | |
Mohamed et al. | COTS evaluation supported by knowledge bases | |
Woestenenk et al. | Capturing design process information in complex product development | |
Comuzzi | Optimal paths in business processes: Framework and applications | |
Alloui et al. | Advanced services for process evolution: Monitoring and decision support | |
de Koning | Scientific grounding of lean six sigma's methodology | |
Büttner et al. | A reference model for data-driven Sales Planning: Development of the model's framework and functionality |
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: 20091230 |