软件开发过程建模系统和方法

文档序号:6465631阅读:113来源:国知局
专利名称:软件开发过程建模系统和方法
技术领域
本发明涉及一种软件开发过程建模技术,特别涉及一种能够基于以往 软件开发案例及条件输入来自动建立软件开发过程的软件开发过程建模系 统和方法。
背景技术
在软件开发中,规范得体的软件开发过程(process)可以避免随机人 为因素带来的混乱。软件开发过程是指按照软件项目的进度、成本和质量 限制,开发和维护满足用户需求的软件所必需的一组有序的软件开发活动 集合。软件开发活动(activity)是指为开发软件项目而执行的一项具有明 确任务的具体工作,例如需求分析、设计、编码和单元测试、系统测试、 验收测试等。
软件开发过程发展至今,已形成若干公知的软件开发过程,如最初的 瀑布模型等等,上述瀑布模型是基于最佳实践的统一过程(RUP: Rational Unified Process)而强调交付结果的敏捷开发过程。每一种软件开发过程都 有其自身的特点,不同程度地采用原型、迭代、持续集成、测试驱动等软 件开发方法。软件开发方法(method)是指软件开发过程所遵循的办法和 步骤。每一种开发过程根据其采用的开发方法都有其最适合的项目环境。
项目环境是指具有特定属性的软件项目及相应的人、技术等。例如, 原型法适用的项目环境包括适合相互联系程度较大的系统,如联机事物 处理,而不适合批处理系统;适合结构化的系绕,而不适合使用大量算法 的问题;适合难以肯定详细需求但能积极参与的用户,而不适合不能提供 及时反馈的用户;适合有快速实现原型工具的场合,而不适合系统构造困 难的场合。
以上介绍了本领域的一些已知技术术语,对于其他技术术语,由于是 公知技术,所以省略详细的说明。
通过上述说明可知,在利用软件开发方法建立与项目环境相适应的软件开发过程的软件开发过程建模技术中,根据项目环境选择适当的软件开 发方法是十分重要的。但是,经验不足的用户通常并不知道如何为一个项 目选择一种或多种软件开发方法,即如何为一个特定的项目环境配置一个 最合适的软件开发过程。而在现有技术中,能够辅助用户选择和配置软件 开发过程的软件开发过程建模系统还比较少,主要有以下技术。
专利文献l: CN 101004801A 专利文献2: CN 1928814A
在专利文献1 (CN 101004801A)中描述了一种软件开发过程模型裁 剪和例化的方法。该方法提供了三种标准生命周期(过程)的模板瀑布 型、增量型和原型法供用户选择。用户可以根据系统提供的生命周期的特 点和适用范围的描述选择一个相对合适的标准生命周期。对于一个特定的 软件项目,如果其属性在系统描述的适用范围之外,用户可以修改标准生 命周期的模板,即用户根据需要添加和裁剪生命周期中的软件开发活动, 并将修改后的模板保存,作为自定义的生命周期。但是在该方法中,存在 下述问题,S卩,系统不能根据一个软件项目的特定属性,利用用户的经验, 自动为用户选择一种生命周期。
在专利文献2 (CN 1928814A)中描述了一种基于组织实体能力的软 件开发过程建模方法和系统。该系统可以根据过程主体的资源和能力、知 识和经验、以及输入的约束目标生成软件开发过程和计划。并且,该系统 还具有学习能力,不断地将历史数据转变为经验知识,使用户的经验得到 积累和应用。但是专利文献2中描述的系统所生成的包含计划的软件开发 过程是基于用户输入的约束目标而定义的软件开发活动,即软件开发过程 是由用户输入的软件开发活动组成。系统没有提及用户如何组织开发过程 中的各种软件开发活动,即如何确定采用开发过程中的各种软件开发方法, 相应地也没有这些方法的经验积累和应用手段。而合适的软件开发过程是 建立有效计划的前提。

发明内容
本发明就是鉴于上述技术问题而完成的,其目的在于提供一种软件开 发过程建模方法与系统,能够基于以往软件开发案例及条件输入来自动建立软件开发过程,并且,具有学习能力,能够累计实践经验,将经验应用 到以后的软件开发过程建模中。
为了实现本发明的目的,本发明的一个技术方案是软件开发过程建模 系统,其特征在于,包括存储单元,存储有软件开发基础活动及历史案 例,该历史案例中包括与软件开发有关的历史数据;输入单元,受理用户 对开发方法、该开发方法的属性及属性值的输入;决策单元,根据历史数 据以及由输入单元受理的所述开发方法的属性和属性值,决定是否采用该 开发方法;组合单元,将存储在存储单元中的基础活动与决策单元决定采 用的所述开发方法组合成软件开发过程;以及输出单元,输出所述软件开 发过程。
此外,本发明的另一技术方案是软件开发过程建模系统,包括模块-输入模块,接收用户指定的开发方法的属性的值;决策模块,根据用户的 输入和历史数据判断每个方法是否被采用;组合模块,基于必须的基础活 动将被采用的方法组合成软件开发过程;输出模块,将建立的开发过程输 出给用户;反馈模块,接收用户指定的实际的过程信息即所采用开发方法 的经验;存储模块,存储每个方法的描述、属性及所有历史案例。
本发明的技术效果在于通过受理用户根据特定的项目环境所指定的 软件开发方法如何被采用的属性及属性值,能够根据受理的属性值及软件 开发方法的经验值自动选择合适的软件开发方法并组成软件开发过程,从 而提高软件开发的效率。并且,通过不断积累历史案例,能够更准确地提 供软件开发过程。


图1是本发明第一实施方式的软件开发过程建模系统的结构示意图; 图2A是本发明第一实施方式中的软件开发过程建模系统的软件开发 过程建模过程的流程图2B是在软件开发过程建模结束后系统存储实际软件开发过程的案
、图3A是本发明第一实施方式中的预存储的基础活动的表格; 图3B是本发明第一实施方式中受理的软件开发方法的表格;图3C是本发明第一实施方式中预存储的与"原型"软件开发方法有 关的历史案例的示意图3D是本发明第一实施方式中预存储的与"迭代"软件开发方法有 关的历史案例的示意图4是本发明第一实施方式中用于受理对每个软件开发方法的属性及 其属性值的指定的属性设定界面的示意图5是本发明第一实施方式中将所受理的软件开发方法与历史案例进 行比较的案例比较匹配算法的流程图6是本发明第一实施方式中的定位软件开发方法在基础活动中的实 施位置的流程图7是本发明第一实施方式中组合软件开发过程的示意图8是本发明第一实施方式中的存储软件开发过程实施经验(历史案 例)的软件开发过程输出和存储界面的示意图。
图9A是本发明第二实施方式中受理的软件开发方法的表格;
图9B是本发明第二实施方式中预存储的与"原型"软件开发方法有 关的历史案例的示意图9C是本发明第二实施方式中预存储的与"持续集成"软件开发方 法有关的历史案例的示意图9D是本发明第二实施方式中预存储的与"结对编程"软件开发方 法有关的历史案例的示意图10是本发明第二实施方式中用于受理对每个软件开发方法的属性 及其属性值的指定的属性设定界面的示意图11是本发明第二实施方式中组合软件开发过程的示意图12是本发明第二实施方式中的存储软件开发过程实施经验(历史案 例)的软件开发过程输出和存储界面的示意图。
具体实施例方式
下面结合附图详细描述本发明的软件开发过程建模系统。 (第一实施方式)
图1是本发明第一实施方式的软件开发过程建模系统的结构示意图。如图1所示,软件开发过程建模系统1的结构大致分为三部分决策区、 存储区和经验学习区。其中,决策区包括输入模块IO、软件开发方法决策
模块20、软件开发过程组合模块30以及软件开发过程输出模块40。输入 模块IO利用显示器等输入机构受理用户的输入,具体包括用户对某个软件 开发方法的指定以及所指定的软件开发方法的属性、属性值等。软件开发 方法决策模块20根据用户的输入数据和历史经验数据(历史案例)决定是 否采用该元件开发方法。软件开发过程组合模块30将软件开发过程中所必 要的基础活动与被采用的软件开发方法组合,生成软件开发过程。软件开 发过程输出模块40将生成的软件开发过程输出给用户。
此外,经验学习区包括反馈经验输入模块50,用户在软件开发完成后, 接收所生成的软件开发过程在实际应用当中的实际利用数据及经验值,其 中,"经验值"表示在实际的软件开发过程中实际采用相应的软件开发方法 的程度。当然,反馈经验输入模块50不仅能够接收本软件开发过程建模系 统1生成的软件开发过程的经验数据,还能够接收任何在实际应用当中具 体应用的软件开发过程的经验数据。
并且,由于反馈经验输入模块50并不直接参与软件开发过程的建模活 动,因此在软件开发过程建模系统1中也可以不包括反馈经验输入模块50, 但是,通过具有反馈经验输入模块50,能够使系统不断学习到软件开发经 验,因此优选。
此外,存储区包括存储模块60,存储在软件开发过程建模动作中生成 的各种数据,例如基本活动、用户所指定的软件开发方法、属性及属性值 的表格、历史案例等。以下具体介绍在存储模块60中存储的内容。
其中,图3A是本发明第一实施方式中的预存储的基础活动的表格。 所述基础活动用来定义建立生存周期过程的基础结构所需的基本活动,在 本发明的第一实施方式中,基础活动包括需求分析、设计、编码和单元 测试、系统测试以及验收测试。当然,基础活动并不是唯一的,能够根据 需要进行设定,例如基础活动还可以包括问题定义,可行性分析,运行维 护等。
图3B是本发明第一实施方式中受理的软件开发方法的表格。在该表 格中存储所受理的软件开发方法、属性以及与该软件开发方法有关的其他
9描述。其中,软件开发方法的"描述"信息将用在后述的过程输出界面(图
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至j10. 0。 O表示该属性在决定 该开发方法是否被采用时的影响作用最小。10. 0代表该属性在决定该方法 是否被采用时的影响作用最大。当然,该取值范围的定义方法能够根据需 要进行更改,只要能够表示属性对决定软件开发方法所起到的作用程度的 高低,就可以设计成任意定义方法,例如在0到IOO之间取值等。
在此,在存在帮助模块(图中未示)的基础上,软件开发过程建模系 统1能够对如何设定每个软件开发方法的属性值给出简单辅助说明,
例如,对于"原型"方法,存在说明
领域知识业务领域知识越少,该方法建议被采用,属性值相应越大; 反之,该方法不建议被采用,属性值相应越小。
开发经验越少,该方法建议被采用,属性值相应越大;反之,该方法 不建议被采用,属性值相应越小。
技术能力越低,该方法建议被采用,属性值相应越大;反之,该方法 不建议被采用,属性值相应越小。
需求变更风险越大,该方法建议被采用,属性值相应越大;反之,该 方法不建议被采用,属性值相应越小。
另外,对于"迭代"方法,存在说明-
需求变更风险越大,该方法建议被采用,属性值相应越大;反之,该 方法不建议被采用,属性值相应越小。
项目规模越大,该方法建议被采用,属性值相应越大;反之,该方法 不建议被采用,属性值相应越小。
难度越大,该方法建议被采用,属性值相应越大;反之,该方法不建议被采用,属性值相应越小。
客户满意度要求越高,该方法建议被采用,属性值相应越大;反之, 该方法不建议被采用,属性值相应越小。
接着,用户指定"原型"方法的属性lll、 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自动决策是否采用在步骤IOO 中受理的软件开发方法。具体来说,在由输入模块10受理到用户的输入之 后,软件开发方法决策模块20系统根据用户的输入和历史经验数据决定是 否采用每个开发方法。在本实施方式中,利用属性值进行属性相关程度的 计算,因此,对于用户没有指定属性值的软件开发方法,软件开发过程建 模系统1将其处理为无此软件方法,从而不参与决策算法。所受理的软件 开发方法的历史案例作为经验数据在步骤200中用到,首先,软件开发方 法决策模块20根据用户输入的属性以及属性值,査找该软件开发方法的历 史数据中的相关案例,并计算它们的平均经验值,根据平均经验值决定是 否采用该方法。<formula>formula see original document page 14</formula>
具体的历史案例査找流程如图5所示。图5是本发明第一实施方式的 査找某个软件开发方法的相关历史案例的匹配算法示意图。通过比较该输 入方法与历史案例的属性及属性值的匹配算法,检测出软件开发方法的相 关案例。首先,在开始历史案例查找处理之后,在步骤201中,进行受理 的软件开发方法与历史案例的属性匹配,即判断受理的软件开发方法与历 史案例的属性是否完全一致,如果案例的属性并不完全相同(步骤201为 "否"),则不是相关案例,从而转到步骤205,准备进行下一个案例的判断。 如果属性完全相同(步骤201为"是"),则进入步骤202,利用规定的匹配 算法计算每个属性的相似程度Rji。该规定算法只要能够体现出属性之间的 相似程度即可,并没有特别限制,可以使用现有的各种算法。
在本实施方式中,使用下述匹配算法。设j为软件开发方法的序号,a 为案例序号,i为属性序号,Iji为方法j的第i个属性的值,Iai为案例a的 第i个属性的值,Rji为受理的软件开发方法j和案例a之间第i个属性的相 似程度,从而利用公式1求出Rji。
/10 (公式l) 这里,Rji取值范围在0 l之间,并且属性值的相似程度越高,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,进行同一个历史案例中的下一个属性的相关程度的计算,直至Ui超过M为止。
通过步骤204、步骤203的流程可知,在本实施例中,只有所有属性 的相关程度都超过阈值G的案例,才被作为相关案例。这是由于,对某个 软件开发方法的历史案例来说,认为那些属性完全相同并且属性相关程度 都较大的案例与本软件开发方法之间的相关性更大。但是,当然也可以根 据不同的项目要求而对判断条件进行调整。
通过图5的流程,就能够在一个软件开发方法的整个历史案例记录中 遍历,并得到该开发方法的所有相关案例。
此外,G为预先设定的属性的相关阈值,阈值G设定了相关案例的判 断标准,G值越趋近于1,要求案例与受理的软件开发方法越相似,G=l 时,案例与受理的软件开发方法完全相同。在该发明的实施方式中,阈值 G在输入方法的属性之前可以由用户通过界面指定,推荐值在0.8 1之间。 G值越大,选出的相关案例与输入的方法越相似,但相关案例个数相应减 少。
在检测出相关案例之后,软件开发方法决策模块20根据公式2,计算 所检测出的所有相关案例的经验值平均值Ej (其中,k为相关案例的序号, r为相关案例总数,Ek为案例k的经验值)。经验值Ek被记录在存储模块中。
Ey = Ii£*/r (公式2)
接着,软件开发方法决策模块20根据所计算出的经验值平均值Ej,决 定是否采用该软件开发方法,即在经验值平均值Ej超过预定的经验值阈值 时决定为采用该软件开发方法,在经验值平均值Ej不超过预定的经验值阈 值时决定为不采用该软件开发方法,或者,在存在多种受理的软件开发方 法的情况下,比较多种软件开发方法的经验值平均值,将经验值平均值最 大的软件开发方法决定为采用。此外,比对方法还有很多种,例如在等于 阈值时也决定为采用等。
具体举例来说,在本实施方式中,如图3C所示,对于输入的"原型" 软件开发方法20080214 (j=l)来说,其属性及属性值分别为["领域知识、 开发经验、技术难度、需求变更"]和[5, 9, 3, 4]。匹配算法遍历图3C 所示的原型的历史案例记录。第一个ID为20070304的案例,由于与20080214的属性不同,因此该案例不是所受理的软件开发方法的相关案例。 第二个ID为20070523的案例,其属性相同,然后根据公式1计算每个属 性的相似程度Rji。第一个属性,&为1-|5-4|/10=0.9。依此类推,所有属性 的相似程度由同样的算法得出为
。如果一个属性的相似 程度R」i低于阈值G,则此案例就不是相关案例。在此例中,阈值G的值设 为0.8。根据这个规则,案例20070523是所受理的软件开发方法的相关案 例。第三个案例20070816,由于属性的相似程度分别为[1, 1, 0.9, l], 此案例也是所受理的软件开发方法的相关案例。第四个案例200701030,由 于第一个属性的相似程度为0.7,低于阈值G,此案例不是所受理的软件开 发方法的相关案例。
然后基于所有相关案例的经验值Ek,根据公式2计算出经验值平均值 Ej。对于受理的"原型"软件开发方法,相关案例20070523的经验值Ek为 6,相关案例20070816的经验值Ek为5.5,则此例中"原型"方法的经验 值平均值Ei为(6+5.5)/2=5.75。
此外,对于输入的"迭代"软件开发方法的记录20080214 (j=2),其 属性及属性值分别为["需求变更风险、项目规模、难度、客户满意度"] 和[4, 8, 3, 9]。匹配算法遍历图3D所示的历史案例。第一个ID为20070304 的案例,其属性相同,然后根据公式l计算每个属性的相似程度Rji。其中, 第一个属性,Rji为1-|8-4|/10=0.6,低于阈值G,则此案例不是所受理的软 件开发方法的相关案例。第二个ID为20070523的案例,其属性相同,且 所有属性的相似程度为
,均高于阈值G,案例20070523 是所受理的软件开发方法的的相关案例。第三个案例20070816,由于属性 的相似程度分别为[1, 0.9, 0.9, 0.9],此案例是所受理的软件开发方法的 的相关案例。第四个案例200701030,由于第二个属性的相似程度为0.7, 低于阈值G,此案例不是相关案例。
然后基于所有相关案例的经验值Ek,根据公式2计算出经验值平均值 Ej。对于输入的"迭代"方法,经验值平均值£2为(7.5+6)/2=6.75。
这里,由于"原型"方法的经验值平均值E,为5.75,"迭代"方法的 经验值平均值E2为6.75,建议"迭代"方法被优先采用。
在本实施方式中,软件开发方法决策模块20根据软件开发方法的属性
16值,查找该方法历史案例中的相关案例,计算相关案例的平均经验值Ej, 根据平均经验值Ej判断是否采用该开发方法。
此外,在其它实施例中,如果用户新建立一个软件开发方法,或新添 加一个软件开发方法的属性,或在存储模块中没有找到相关历史案例,则 该方法没有相应项目环境的经验值。此时,该方法是否被采用可以由输入 属性的平均值Ij利用多属性模糊方法论得出决策结果。例如,根据公式3 计算每个开发方法的属性的输入平均值Ij (j为软件开发方法的序号,i为 属性的序号,m为属性总数,Iji为属性i的值)。还是以图3C、图3D为例, "原型"方法的属性值输入平均值I,为(5+9+3+4) /4=5.25;"迭代"方法 的输入平均值12为(4+8+3+9)/4=6。基于优先采用属性值输入平均值或经 验值平均值最大的软件开发方法的原则。据此,建议"迭代"方法被优先 采用。
6 = Ii々/附 (公式3)
如果每个软件开发方法的输入平均值和经验值平均值都相同,则设定
规则按照方法的顺序建议第一个方法被优先采用。
至此,回到图2A的流程,在步骤300,软件开发过程组合模块30将 建议被优先采用的软件方法与基础活动组合,形成一个完整的软件开发过 程。
首先介绍上文中提到的基础活动(图3A)。这些基础活动是一个完整 的开发过程所必须的基本步骤,如"需求分析"、"设计"、"编码和单元测 试"、"系统测试"和"验收测试"等。这些基础活动在开发过程中的执行 顺序,将在下面过程详细描述。
图6是本发明第一实施方式中的定位软件开发方法在基础活动中的实 施位置的流程图。在软件开发过程中,每个软件开发方法都有其预先定义 的"开始活动"和"结束活动",如图3B所示。在图6中,首先,在步骤 311,基于上述基础活动的内容,从第一个基础活动"需求分析"开始依次 向后査找直到找到被采用的软件幵发方法的开始活动为止。然后,进入步 骤312,从最后一个基础活动"验收测试"开始依次向前査找,直到找到被 采用的软件开发方法的结束活动为止。由于找到了所采用的软件开发方法在基础活动中的"开始活动"和"结束活动",从而找到了所采用的软件开 发方法在基础活动中的位置,根据"开始活动"和"结束活动",将所采用 的软件开发方法组合到基础活动中。
具体来说,对于此例采用的"迭代"方法,首先找到其开始步骤为"需 求分析",然后从"验收测试"向前査找找到结束步骤为"系统测试"。因
此组合成图7所示的软件开发过程。
接着,在步骤400,软件开发过程输出模块40输出由软件开发过程组 合模块30建立的软件开发过程。
用户能够参照图7所示的软件开发过程进行软件开发。此外,软件开 发过程输出模块40还能够输出其它软件开发方法的属性值输入平均值Ij或 经验值平均值Ej等附加信息供用户参考。输出界面如图8所示。在图示中, 还可以输出该经验值是从多少相关案例得到的数值,来供用户判断经验值 的可参考性。
在本实施方式中,对于"原型"方法,输入平均值L为5.25 (标号411), 从2个相关案例(标号423)得到的经验值平均值Ei为5.75 (标号421)。 对于"迭代"方法,输入平均值^为6 (标号412),从2个相关案例(标 号424)得到的经验值平均值E2为6.75 (标号422),用户被建议优先采用 "迭代"方法。经验相对较少的用户还可以点击方法名,打开相应开发方 法的详细描述信息,以便更好地实施整个过程。
此外,在软件开发过程建模系统1中还可以具有反馈经验输入模块50, 从而进行软件开发方法的反馈处理。图2B是在软件开发过程建模结束后系 统存储实际软件开发过程的案例的流程图。如图2B所示,在步骤500,用 户保存每个软件开发方法的经验值,在此实施方式中,用户被要求输入的 经验值在[O, IO]范围内,并且经验值越小,表明在该项目环境下不适合采 用该开发方法;经验值越大,表明在该项目环境下越适合采用该开发方法。 因此经验值平均值Ej的大小决定了该开发方法将是否被采用。在其他实施 方式中,用户也可以自定义经验值的范围。在此例中设定决策规则对于 经验值平均值Ej最大的开发方法,建议这个方法被优先采用。
软件开发过程输出模块40输出软件开发过程之后,用户根据所输出的 软件开发过程(参照图7)和附加信息(图8)进行软件开发。但是,在实际的软件开发过程中,可能会出现一些无法预料的因素, 使得实际采用的软件开发过程中的软件开发方法与所输出的方法有所不 同。
在此例中,对于"原型"方法,用户实际采用的软件开发方法和输出 的软件开发方法一致,因此用户相对成熟地掌握了该方法的应用环境。对 于"迭代"方法,用户发现实际采用的迭代比预期的程度大,因为一些因 素如需求变更被低估。
在上述情况下,在步骤500,用户通过反馈经验输入模块50根据软件 开发方法的实际使用经验,指定每个软件开发方法的经验值。并且,在步 骤600,存储模块60与输入模块10所受理的软件开发方法、属性及属性值 相对应地存储经验值,作为新的历史案例。
此外,还可以在软件开发结束后,将实际的软件开发过程通过图8所 示的界面保存到存储模块60中。每个软件开发方法的经验值640和属性及 属性值一起保存在图3C或3D所示的存储模块60中,作为经验值在以后 的决策过程中采用。还可以更新属性值后再保存。
在此例中,"原型"方法的经验值是5.2 (标号641),因为用户实际采 用的程度和系统建议的一致。"迭代"方法的经验值是7.5 (标号642),因 为用户在实际采用时发现低估了某些属性。 (第二实施方式)
接下来说明本发明的第二个实施方式。
在第二个实施方式中,"原型"、"持续集成"和"结对编程"方法被预 先保存在存储模块60中。"原型"方法在第一个实施方式中已经介绍。"持 续集成"(ContinuousIntegration)是极限编程中强调的一个软件开发方法, 通过持续产生可执行的发布版本,系统集成测试的风险较少。它适用于小 到中型规模的项目,有一个全面的单元测试验证集,有合适的集成工具, 带有主线的开发项目而不是多个版本并行开发等。"结对编程"(Pair Programming)也是极限编程中的一个软件开发方法,由两个开发人员在同 一台电脑上共同编写解决同一问题的代码,通常一个人负责写代码,而另 一个负责保证代码的正确性与可读性。结对编程是一种非正式的同级评审。 它要求两个开发人员在性格和技能上应该相互匹配;由于结对需要磨合时间,因此项目的周期在三个月以上比较见效;在项目交期紧迫、开发人员 人手不足的情况下不适合;适合新功能的开发,不适合代码重构和维护等。
在第二实施方式中,与第一实施方式相同的结构被赋予相同的标号, 并省略详细的说明。
第二实施方式中的软件开发过程建模系统1的主要结构要素与第一实 施方式相同,其中,存储模块60中存储有"原型"、"持续集成"和"结对 编程"方法的预存储数据。即在第二实施方式中,输入模块10受理对三种 软件开发方法的属性及属性值的输入,但是受理的软件开发方法的数量并 没有限制,可以是任意数量。
图9A是本发明第二实施方式中受理的软件开发方法的表格。其中预 存有软件开发方法的描述、开始活动、结束活动和属性。对于"原型"方 法623,与第一实施方式中的"描述"、"开始活动"和"结束活动"信息相 同。在此例中新加入一个属性"客户参与度",表明客户积极参与是采用原 型法的又一个因素。
对于开发方法"持续集成"624,"描述"可能包括该方法需要的工具、 如何实施等信息,在此实施方式中不详细列出。"开始活动"和"结束活动" 为"编码和单元测试",说明该方法用在基本软件过程中的编码和单元测试 阶段。"属性"包括"项目规模、集成工具、测试集的全面性、多个版本是 否并行",表明项目规模大小、集成工具是否便利、测试集预计达到的全面 程度和多个版本是否并行开发都是影响是否采用持续集成的因素。
对于开发方法"结对编程"625,"描述"可能包括该方法如何实施等 信息,在此实施方式中不详细列出。"开始活动"和"结束活动"为"编码 和单元测试",说明该方法用在基本软件过程中的编码和单元测试阶段。"属 性"包括"开发人员技能水平程度、项目周期、开发人员是否充足、是否 新功能开发",表明开发人员技能水平相似的程度、项目周期的长短、开发 人员是否充足和是否新功能开发都是影响是否采用结对编程的因素。
图9B是本发明第二实施方式中预存储的与"原型"软件开发方法有 关的历史案例的示意图。存储有本发明第二实施方式的"原型"方法的一 些预存储历史案例的ID、属性及属性值和经验值。
图9C是本发明第二实施方式中预存储的与"持续集成"软件开发方
20法有关的历史案例的示意图。存储有本发明第二实施方式的"持续集成"
方法的一些预存储历史案例的ID、属性及属性值和经验值。
图9D是本发明第二实施方式中预存储的与"结对编程"软件幵发方
法有关的历史案例的示意图。存储有本发明第二实施方式的"结对编程"
方法的一些预存储历史案例的ID、属性及属性值和经验值。
以下说明软件开发过程建模的流程。第二实施方式中的处理流程与第
二实施方式大致相同,但是处理的软件开发方法的数量不同。
首先,在步骤100,用户通过输入模块10指定每个软件开发方法的属
性及属性值。
当系统启动时,根据预先存储的软件开发方法(图9A),对用户提示 图IO所示包含"原型"、"持续集成"和"结对编程"方法的初始界面(无 属性值)。
用户根据特定的项目环境,在图IO所示的界面中指定这些软件开发方 法的属性的属性值。在此例中,每个属性值的取值范围仍为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=l),其属性 及其值分别为["领域知识、开发经验、技术难度、需求变更、客户参与度"] 和[6, 4, 2, 8, 2]。匹配算法遍历图9B所示的"原型"方法的历史案例 记录。前五条纪录(从ID为20070304的案例到ID为20080214的案例), 因为其属性与输入记录20080526的属性不相同,它们均不是相关历史案例。 第六个案例20080312,其属性与输入记录20080526的属性相同,然后根据 公式1计算每个属性的相似程度R」i。第一个属性"领域知识",Rji为 1-|6-5|/10=0.9。所有属性的相似程度由同样的算法得出为
。每一个属性的相似程度Rji均不低于阈值G0.8,因此案例20080312 是输入方法的相关案例。历史纪录査找完毕,然后基于所有相关案例的经 验值Ek,根据公式2计算出经验值平均值Ej。由于只找到一条相关案例 20080312,其经验值Ek为2,此例中"原型"方法的经验值平均值^为 2/1=2。
此夕卜,对于受理的"持续集成"方法的记录20080526 (j=2),其属性 及其值分别为["项目规模、集成工具、测试集的全面性、多个版本是否并 行"]和[5, 9, 5, 10]。匹配算法遍历图9C所示的"持续集成"方法的 历史案例记录。第一个ID为20070304的案例,因为其属性与输入的记录 20080526的属性不相同,它不是相关历史案例。第二个ID为20070523的 案例,其属性与输入记录20080526的属性相同,然后根据公式l计算每个 属性的相似程度Rji。第一个属性"项目规模",%为1-|5-9|/10=0.6,低于 阈值G0.8,因此该案例不是输入方法的相关案例。第三个案例20070816, 其属性与输入记录20080526的属性相同,且所有属性的相似程度
均不低于阈值G 0.8,因此该案例是输入方法的相关案例。历史 纪录查找完毕,然后基于所有相关案例的经验值Ek,根据公式2计算出经 验值平均值Ej。由于只找到一条相关案例20070816,其经验值Ek为7.5, 此例中"持续集成"方法的经验值平均值E2为7.5/1=7.5。
最后,对于受理的"结对编程"方法的记录20080526 (j=3),其属性
23及其值分别为["开发人员技能水平程度、项目周期、开发人员是否充足、
是否新功能开发"]和[5, 9, 4, 9.5]。匹配算法遍历图9D所示的"结对 编程"方法的历史案例记录。第一个ID为20070304的案例,其属性与输 入记录20080526的属性相同,然后根据公式1计算每个属性的相似程度 Rji。第一个属性"项目规模",R"为1-|5-8|/10=0.7,低于阈值G0.8,因此 该案例不是输入方法的相关案例。第二个案例20070523,其属性与输入记 录20080526的属性相同,且所有属性的相似程度
均不低于阈值G0.8,因此该案例是输入方法的相关案例。历史纪录查找完 毕,然后基于所有相关案例的经验值Ek,根据公式2计算出经验值平均值 Ej。由于只找到一条相关案例20070523,其经验值Ek为7.5,此例中"结 对编程"方法的经验值平均值E3为5/1=5。
然后,软件开发方法决策模块20根据"原型"、"持续集成"和"结对 编程"方法的经验值平均值决定优先采用哪种方法。根据规则对于经验 值平均值Ej最大的软件开发方法,建议该方法被优先采用,因为E2〉E3〉 El,因此"持续集成"方法建议被优先采用。
接着,在步骤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个相关案例得到的经验值平均 值E,为2,不建议采用该方法。经验相对较少的用户还可以点击方法名, 打开该开发方法的详细描述信息,以便更好地实施整个过程。
此外,在软件开发结束后,实际的开发过程通过图12所示的界面保存 到系统中。每个方法的实际经验值640被输入到界面中,和属性及其值一 起保存在图9B, 9C或9D所示的存储模块中,作为经验值在以后的决策过 程中采用。在此例中,"持续集成"方法的经验值是7.5 (643),因为用户 实际采用的程度和系统建议的一致。"结对编程"方法的经验值是4 (644), 因为用户在实际采用时发现了别的影响因素(用户可以在图10所示的界面 中通过124打开编辑界面加入一个属性,在此不再详述)。"原型"方法的 经验值仍为2 (645),因为用户尝试采用此方法,但客户没有时间给出原型 的反馈意见,进度被拖延后中止。
此外,也可以没有反馈模块,从而在图12显示的界面上不存在实际经 验值输入的栏目,也同样可以实施本发明。
综上所述,本发明提供了一种基于用户经验选择的方法建立软件开发 过程的方法与系统。虽然详细描述了本发明的实现实例,但本领域技术人 员应当理解,软件开发过程建模中用到的具体决策算法和组合算法在不偏 离本发明实质的情况下,可以做出各种改变,这些变形同样属于本发明的 范围。并且,本发明的构思在于结合实际的软件开发过程的经验数据来自 动生成针对具体项目的软件开发过程。在不超过本发明的发明构思的范围 内容的各种变形都属于本发明的范围。
权利要求
1、一种软件开发过程建模系统,其特征在于,包括存储单元,存储有软件开发基础活动及历史案例,该历史案例中包括与软件开发有关的历史数据;输入单元,受理用户对开发方法、该开发方法的属性及属性值的输入;决策单元,根据历史数据以及由输入单元受理的所述开发方法的属性和属性值,决定是否采用该开发方法;组合单元,将存储在存储单元中的基础活动与决策单元决定采用的所述开发方法组合成软件开发过程;以及输出单元,输出所述软件开发过程。
2、 如权利要求1所述的软件开发过程建模系统,其特征在于, 还具有反馈单元,该反馈单元受理用户对所述软件开发过程的实际利用信息,作为新的历史案例存储到存储单元中。
3、 如权利要求1所述的软件开发过程建模系统,其特征在于, 所述输入单元包括显示用户访问界面的显示单元,通过用户访问界面受理对每个开发方法、该开发方法的属性及属性值的编辑,其中,所述编 辑包括删除、添加、修改及存储。
4、 如权利要求1所述的软件开发过程建模系统,其特征在于, 所述历史数据包括各个历史案例的经验值,所述决策单元比较输入单元受理的每个开发方法的属性与历史案例中 的属性,将属性相同的历史案例作为相关案例,计算相关案例的平均经验 值,在所述平均经验值超过预定的经验值阈值时判断为采用该开发方法。
5、 如权利要求4所述的软件开发过程建模系统,其特征在于, 所述决策单元计算开发方法与相关案例之间的各个属性相关度,并且仅计算各个属性相关度都大于预定的相关度阈值的相关案例的平均经验 值,在平均经验值超过预定的经验值阈值时判断为采用该开发方法。
6、 如权利要求5所述的软件开发过程建模系统,其特征在于,在设Iji为第j个开发方法的第i个属性的属性值、设Iai为第a个相关 案例的第i个属性的属性值的情况下,第i个属性的相关度计算公式为巧,一/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个属性的相关度计算公式为 |/力,/。,|/10。
16、 如权利要求13所述的软件开发过程建模方法,其特征在于, 在输入单元受理了多个开发方法并且存储单元中不存在相关案例的情况下,所述决策单元计算所输入的每个开发方法的平均属性值,将多个开 发方法中的平均属性值最大的开发方法决定为要采用的开发方法。
17、 如权利要求10所述的软件开发过程建模方法,其特征在于, 所述组合步骤包括,基于要采用的开发方法预先定义的开始活动和结束活动,检索存储在存储单元中的基础活动,并确定要采用的开发方法在 基础活动中的实施位置。
18、 如权利要求10所述的软件开发过程建模方法,其特征在于, 所述输出步骤包括还与软件开发过程一起输出与被采用的开发方法有关的平均属性值及相关案例的平均经验值,作为附加参考信息。
全文摘要
本发明的目的在于提供一种软件开发过程建模方法与系统,能够基于以往软件开发案例及条件输入来自动建立软件开发过程,并且能够累计实践经验,将经验应用到以后的软件开发过程建模中。本发明的软件开发过程建模系统,包括存储单元,存储有软件开发基础活动及历史案例,该历史案例中包括与软件开发有关的历史数据;输入单元,受理用户对开发方法、该开发方法的属性及属性值的输入;决策单元,根据历史数据以及由输入单元受理的开发方法的属性和属性值,决定是否采用该开发方法;组合单元,将存储在存储单元中的基础活动与决策单元决定采用的开发方法组合成软件开发过程;以及输出单元,输出软件开发过程。
文档编号G06F9/44GK101615117SQ200810131818
公开日2009年12月30日 申请日期2008年6月23日 优先权日2008年6月23日
发明者三宅滋, 三部良太, 蕾 张, 柴梅平, 河合克己 申请人:株式会社日立制作所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1