CN106371840A - 基于众包的软件开发方法及装置 - Google Patents
基于众包的软件开发方法及装置 Download PDFInfo
- Publication number
- CN106371840A CN106371840A CN201610786273.2A CN201610786273A CN106371840A CN 106371840 A CN106371840 A CN 106371840A CN 201610786273 A CN201610786273 A CN 201610786273A CN 106371840 A CN106371840 A CN 106371840A
- Authority
- CN
- China
- Prior art keywords
- product
- mdt
- code
- argument information
- internet user
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/10—Requirements analysis; Specification techniques
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种基于众包的软件开发方法及装置,该方法包括:接收需求提供者输入的原始软件需求;将所述原始软件需求分发至产品经理,以使所述产品经理根据所述原始软件需求生成并发布产品需求文档PRD;生成PRD对应的第一模块开发任务MDT;将所述第一MDT分发至产品架构师,以使所述产品架构师根据所述第一MDT生成多个第二MDT并向互联网用户发布所述多个第二MDT;接收所述互联网用户提交的至少一组交付件,将所述至少一组交付件分发至所述产品架构师,以使所述产品架构师根据所述至少一组交付件生成所述原始软件需求对应的软件产品。本发明可以实现大规模的并发开发,极大提高软件开发速度。
Description
技术领域
本发明涉及计算机技术,尤其涉及一种基于众包的软件开发方法及装置。
背景技术
众包是指一个公司或机构把过去由员工执行的工作任务,以自由自愿的形式外包给非特定的大众网络的做法,将众包的概念应用于软件开发过程中,可以显著地提升软件开发的速度。尤其对于提供基于安卓系统的应用的企业,需要快速开发安卓应用来抢占市场,基于众包的软件开发方法由于其自身的优势可以快速完成安卓应用的开发。
现有技术中,利用众包进行软件开发时,可以使用基于开源方式的众包或者基于比赛的众包,其中,基于开源方式的众包是通过将软件开发需求提交到主流开源社区的方式,吸引社区成员来进行贡献,最终收回软件产品,基于比赛的众包是通过在平台内部设立专家团队,将软件开发流程拆分为一系列连续的子过程,并将每个子过程作为一个比赛发布到网络上,吸引网络用户来参与,并通过参赛者互相评选的方式,选出每个比赛阶段的优胜者,作为该子过程的输出,最终完成整个软件产品的开发。
但是,现有技术所提供的基于众包的软件开发方法没有充分实现并行化的开发,因此,软件开发的速度并不能满足用户的要求。
发明内容
本发明提供一种基于众包的软件开发方法及装置,用于解决现有技术中的软件开发方法所存在的软件开发速度不能满足用户要求的问题。
本发明第一方面提供一种基于众包的软件开发方法,该方法应用于基于众包的软件开发平台,该方法包括:
接收需求提供者输入的原始软件需求;
将所述原始软件需求分发至产品经理,以使所述产品经理根据所述原始软件需求生成并发布产品需求文档PRD;
生成所述PRD对应的第一模块开发任务MDT;
将所述第一MDT分发至产品架构师,以使所述产品架构师根据所述第一MDT生成多个第二MDT并向互联网用户发布所述多个第二MDT;
接收所述互联网用户提交的至少一组交付件,所述交付件包括软件代码以及测试报告,所述交付件与所述第二MDT或者功能开发任务FDT一一对应,其中,所述FDT由所述互联网用户对所述第二MDT进行分解后获得,所述FDT用于实现一个函数功能;
将所述至少一组交付件分发至所述产品架构师,以使所述产品架构师根据所述至少一组交付件生成所述原始软件需求对应的软件产品。
进一步地,所述将所述原始软件需求分发至产品经理,以使所述产品经理根据所述原始软件需求生成并发布产品需求文档PRD之后,还包括:
接收所述互联网用户针对所述PRD的至少一条意见信息,所述意见信息通过评论方式生成,所述意见信息为对所述PRD的补充或修改;
根据所述产品经理的特点,对所述意见信息进行排序;
将排序之后的意见信息分发至所述产品经理,以使所述产品经理根据所述意见信息更新所述PRD。
进一步地,所述意见信息中包括意见的类别,相应地,所述根据所述产品经理的特点,对所述意见信息进行排序,包括:
根据所述意见信息的类别以及所述产品经理的特点,确定各类别的意见信息的顺序;
根据所述意见信息的评论结果,对每种类别的意见信息进行排序,形成所述意见信息的排序结果。
进一步地,所述FDT由所述互联网用户对所述第二MDT进行分解后获得,包括:
所述FDT由所述互联网用户对所述第二MDT进行至少一次分解并发布之后获得,以使选择所述FDT的互联网用户实现所述FDT。
进一步地,所述接收所述互联网用户提交的至少一组交付件之后,还包括:
将所述交付件中的软件代码中的恒真代码替换为实际调用代码,其中,所述恒真代码用于替代所述软件代码中的待调用代码,所述恒真代码具有起始标识以及结束标识。
进一步地,还包括:
接收所述互联网用户输入的函数名称;
对所述函数名称进行拆分,确定所述函数名称中的至少一个关键词;
根据所述至少一个关键词,从预设的推荐代码库中查找与所述函数名称匹配的推荐代码。
进一步地,所述根据所述至少一个关键词,从预设的推荐代码库中查找与所述函数名称匹配的推荐代码,包括:
按照关键词数量由多到少的顺序从预设的推荐代码库中查找与所述关键词匹配的推荐代码;
按照所述推荐代码的星级评分对查找出的推荐代码进行排序;
向所述互联网用户显示排序后的所述推荐代码。
本发明第二方面提供一种基于众包的软件开发装置,包括:
第一接收模块,用于接收需求提供者输入的原始软件需求;
第一分发模块,用于将所述原始软件需求分发至产品经理,以使所述产品经理根据所述原始软件需求生成并发布产品需求文档PRD;
生成模块,用于生成所述PRD对应的第一模块开发任务MDT;
第二分发模块,用于将所述第一MDT分发至产品架构师,以使所述产品架构师根据所述第一MDT生成多个第二MDT并向互联网用户发布所述多个第二MDT;
第二接收模块,用于接收所述互联网用户提交的至少一组交付件,所述交付件包括软件代码以及测试报告,所述交付件与所述第二MDT或者功能开发任务FDT一一对应,其中,所述FDT由所述互联网用户对所述第二MDT进行分解后获得,所述FDT用于实现一个函数功能;
第三分发模块,用于将所述至少一组交付件分发至所述产品架构师,以使所述产品架构师根据所述至少一组交付件生成所述原始软件需求对应的软件产品。
进一步地,还包括:
第三接收模块,用于接收所述互联网用户针对所述PRD的至少一条意见信息,所述意见信息通过评论方式生成,所述意见信息为对所述PRD的补充或修改;
排序模块,用于根据所述产品经理的特点,对所述意见信息进行排序;
第四分发模块,用于将排序之后的意见信息分发至所述产品经理,以使所述产品经理根据所述意见信息更新所述PRD。
进一步地,所述意见信息中包括意见的类别,相应地,所述排序模块包括:
确定单元,用于根据所述意见信息的类别以及所述产品经理的特点,确定各类别的意见信息的顺序;
排序单元,用于根据所述意见信息的评论结果,对每种类别的意见信息进行排序,形成所述意见信息的排序结果。
进一步地,所述FDT由所述互联网用户对所述第二MDT进行分解后获得,包括:
所述FDT由所述互联网用户对所述第二MDT进行至少一次分解并发布之后获得,以使选择所述FDT的互联网用户实现所述FDT。
进一步地,还包括:
替换模块,用于将所述交付件中的软件代码中的恒真代码替换为实际调用代码,其中,所述恒真代码用于替代所述软件代码中的待调用代码,所述恒真代码具有起始标识以及结束标识。
进一步地,还包括:
第四接收模块,用于接收所述互联网用户输入的函数名称;
拆分模块,用于对所述函数名称进行拆分,确定所述函数名称中的至少一个关键词;
查找模块,用于根据所述至少一个关键词,从预设的推荐代码库中查找与所述函数名称匹配的推荐代码。
进一步地,所述查找模块包括:
查找单元,用于按照关键词数量由多到少的顺序从预设的推荐代码库中查找与所述关键词匹配的推荐代码;
排序单元,用于按照所述推荐代码的星级评分对查找出的推荐代码进行排序;
显示单元,用于向所述互联网用户显示排序后的所述推荐代码。
本发明所提供的基于众包的软件开发方法及装置,通过在基于众包的软件开发平台上设置四种角色,可以快速的聚合互联网上软件对应的目标用户,进行高效的需求分析,扩展,规约,快速完成由想法到原型的过程,同时,通过将软件开发任务拆分为低至一个函数开发的超细粒度的微任务,可以实现大规模的并发开发,极大提高软件开发速度,另外,通过将调度协调的任务从平台专家团队转移到了互联网用户中,使得管理成本融入了开发成本中,因此也降低了软件开发的成本。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的基于众包的软件开发方法实施例一的流程示意图;
图2为本发明提供的基于众包的软件开发方法实施例二的流程示意图;
图3为本发明提供的基于众包的软件开发方法实施例三的流程示意图;
图4为本发明提供的基于众包的软件开发方法实施例四的流程示意图;
图5为本发明提供的基于众包的软件开发方法实施例五的流程示意图;
图6为本发明提供的基于众包的软件开发装置实施例一的模块结构图;
图7为本发明提供的基于众包的软件开发装置实施例二的模块结构图;
图8为本发明提供的基于众包的软件开发装置实施例三的模块结构图;
图9为本发明提供的基于众包的软件开发装置实施例四的模块结构图;
图10为本发明提供的基于众包的软件开发装置实施例五的模块结构图;
图11为本发明提供的基于众包的软件开发装置实施例六的模块结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明所提供的方法应用于基于众包的软件开发平台,如前所述,众包是指一个公司或机构把过去由员工执行的工作任务,以自由自愿的形式外包给非特定的大众网络的做法,将众包应用于软件开发过程中时,就可以将软件开发任务外包给大众用户来完成。在本发明所提供的基于众包的软件开发平台中,提供了四种角色,分别为:需求提供者、产品经理、产品架构师以及互联网用户,其中,由需求提供者来发布原始软件需求,由产品经理对这些原始软件需求进行分析和抽象,从中提炼出具体的软件需求,并将其整理为规范的产品需求文档(Product Requirement Document,简称PRD),由产品架构师针对PRD来划分软件模块,并将软件模块交由互联网用户来完成,互联网用户可以通过在基于众包的软件开发平台上注册来申请进行软件模块对应的软件代码实现。通过上述四种角色的配合,来完成基于众包的软件开发过程。
图1为本发明提供的基于众包的软件开发方法实施例一的流程示意图,该应用于基于众包的软件开发平台,以下简称平台。如图1所示,该方法包括:
S101、接收需求提供者输入的原始软件需求。
需求提供所输入的原始软件需求是使用自然语言进行描述的。
S102、将上述原始软件需求分发至产品经理,以使产品经理根据上述原始软件需求生成并发布PRD。
平台接收需求提供者输入的原始软件需求后,会将其分发到该需求对应的产品经理,即显示给产品经理。产品经理与需求的对应关系可以预先在平台上进行设置。产品经理接收到原始软件需求后,对其进行分析和抽象,从而生成PRD。产品经理会将PRD在平台上发布,所发布的PRD对所有的互联网用户可见。
S103、生成PRD对应的第一模块开发任务MDT。
模块开发任务(Module Develop Task)是在PRD基础上所设计出的软件实现架构,当产品经理将PRD发布之后,平台会首先生成一个特殊的MDT,即第一MDT,这个MDT只能由产品架构师来接取,即,通过这个特殊的MDT来触发产品架构师进行实际的软件架构设计。
S104、将上述第一MDT分发至产品架构师,以使产品架构师根据第一MDT生成多个第二MDT并向互联网用户发布多个第二MDT。
第二MDT是产品架构师基于PRD和第一MDT,将整个软件开发的任务所划分成的一系列核心模块,当产品架构师设计出多个第二MDT之后,会将多个MDT发布到平台上,这些第二MDT对所有的互联网用户可见。
S105、接收互联网用户提交的至少一组交付件,该交付件包括软件代码以及测试报告,该交付件与第二MDT或者功能开发任务FDT一一对应,其中,FDT由互联网用户对第二MDT进行分解后获得,FDT用于实现一个函数功能。
当产品架构师将多个第二MDT发布之后,平台上的大量的互联网用户就可以来接取这些MDT实现任务。互联网用户可以选择接取一个第二MDT,并由自己一人直接实现这个第二MDT,并提交对应的软件代码和测试报告,这种情况下,这个互联网用户所提交的交付件就与第二MDT对应。但是,实际情况下,平台上所注册的互联网用户数量非常大,互联网用户之间的水平也参差不齐,对于有些互联网用户来说,可能难以由自己直接完成一个第二MDT,因此,本发明中提出了一种“微任务”方式,即,当接取第二MDT的互联网用户认为自己无法直接完成一个第二MDT时,可以对第二MDT进行分解,将其不断进行演变划分,直至划分为一个一个的函数任务,这些任务被称为功能开发任务(Function Develop Task,简称FDT),即“微任务”,由于微任务是函数级别的任务,因此,对于互联网用户的水平要求相对较低,因此能够保证这些FDT都能被接取并实现,同时,将原本的一个MDT分解为多个FDT,就使得多个FDT被多个互联网用户同时实现,从而真正实现了并行开发。当实现FDT的互联网用户完成任务之后,就形成了与FDT对应的交付件并提交。
S106、将上述至少一组交付件分发至产品架构师,以使产品架构师根据上述至少一组交付件生成原始软件需求对应的软件产品。
需要说明的是,对于FDT对应的交付件,互联网用户在提交这个交付件之后,这个交付件会分发至发布这个分解任务的互联网用户,由这个互联网用户对所有的FDT交付件进行整合,形成自己所接取的MDT的交付件,并将这些交付件提交,由平台将这些交付件统一分发至产品架构师,由产品架构师根据这些交付件生成整个软件产品。
进而,产品架构师对整合的完整的软件产品还要进行测试,如果测试成功,则结束软件开发过程。如果测试失败,则由负责失败模块的互联网用户层层进行问题定位,并由最终责任人进行修正调试。
当产品架构师测试完成后,还需要将软件产品交由需求提供者再次进行测试,以保证软件产品的可靠性。
本实施例中,通过在基于众包的软件开发平台上设置四种角色,可以快速的聚合互联网上软件对应的目标用户,进行高效的需求分析,扩展,规约,快速完成由想法到原型的过程,同时,通过将软件开发任务拆分为低至一个函数开发的超细粒度的微任务,可以实现大规模的并发开发,极大提高软件开发速度,另外,通过将调度协调的任务从平台专家团队转移到了互联网用户中,使得管理成本融入了开发成本中,因此也降低了软件开发的成本。
另一实施例中,上述步骤S105中FDT由互联网用户对第二MDT进行分解后获得具体为:
FDT由互联网用户对第二MDT进行至少一次分解并发布之后获得,以使选择该FDT的互联网用户实现该FDT。
即,互联网用户对第二MDT进行分解时可能是进行多层分解,直至分解成一个一个的FDT,当分解成一个一个的FDT时,互联网用户需要发布这些FDT,这些FDT任务不允许用户进行进一步的分解,用户若要接取该类任务,就需将函数实现,在本地完成测试,并将实现的软件代码和测试报告一并提交给进行分解的互联网用户。
图2为本发明提供的基于众包的软件开发方法实施例二的流程示意图,如图2所示,在上述步骤S102之后,还包括:
S201、接收互联网用户针对PRD的至少一条意见信息,该意见信息通过评论方式生成,该意见信息为对PRD的补充或修改。
S202、根据产品经理的特点,对上述意见信息进行排序。
S203、将排序之后的意见信息分发至产品经理,以使产品经理根据意见信息更新PRD。
对于很多的小团队来说,为了节约时间和成本,在真正进行软件开发之前,充分的理解并验证自己的想法是非常重要的,比如,自己所提的需求点是否满足市场痛点,是否具备技术可行性等等。同时,对于初创团队,团队内很可能并不具有专业的产品经理,如何有效的在开发人员和团队成员之间进行沟通也非常重要。
本实施例中,当产品经理发布PRD之后,该PRD对所有的互联网用户都是可见的,任何互联网用户看到这个PRD之后,都可以以评论的方式来针对PRD中的每一条需求进行扩充或者修改,互联网用户同样可以添加新的需求条目,当该任务超过截止时间之后,平台会根据产品经理的特点对所有的数据结果进行整理和排序,并返回给产品经理,产品经理将更新后的信息整理为新的PRD,从而实现需求提供者、产品经理和互联网用户之间协同完成需求分析的过程,保证了需求的可行性。
图3为本发明提供的基于众包的软件开发方法实施例三的流程示意图,如图3所示,上述意见信息中包括意见的类别,相应地,上述步骤S202具体包括:
S301、根据意见信息的类别以及产品经理的特点,确定各类别的意见信息的顺序。
对于不同的软件开发领域,可以设置意见信息的类别,例如,对于安卓应用的开发,可以将意见信息划分为四类:用户界面、动画、安全、用户管理。另外,每个专业的产品经理都有其固有偏好,即,具有其自身的特点,产品经理的特点可以通过分析该产品经理的历史数据来获得,例如,该产品经理对哪方面的软件需求更感兴趣。
当互联网用户提交针对某个PRD的意见信息时,平台提供一个类别选项,由互联网用户来选择意见信息的类别,平台在进行排序前,首先根据产品经理的特点来确定产品经理更偏向哪种类别,进而会将产品经理所偏向的一类意见信息排在第一位,进而,平台可以通过两类意见信息之间的相似度,来确定其他类别的意见信息的排序。例如,假设用户界面类别的意见信息是排序最靠前的一类意见信息,如果通过相似度判断出动画类别和用户界面类别的相似度最高,则将动画类别的意见信息排在第二位。在进行相似度判断时,平台可以通过计算两种类别之间的谷本系数来确定,谷本系数的计算公式为其中,Ta表示产品经理之前选择a类别的次数,Tb表示产品经理之前选择b类别的次数,Tc表示产品经理同时选择a和b的次数。表1为对用户界面、动画、安全、用户管理四种类别进行谷本系数计算的示例,假设通过分析产品经理的历史数据确定产品经理最感兴趣的类别为安全类别,则根据表1所得到的谷本系数可以得到各类别的排序为:安全、动画、用户界面、用户管理。
表1
安全 | 用户界面 | 动画 | 用户管理 | |
安全 | 1 | 0.62 | 0.72 | 0.16 |
用户界面 | 0.45 | 1 | 0.57 | 0.24 |
动画 | 0.44 | 0.71 | 1 | 0.38 |
用户管理 | 0.81 | 0.59 | 0.42 | 1 |
S302、根据上述意见信息的评论结果,对每种类别的意见信息进行排序,形成上述意见信息的排序结果。
通过执行上述步骤,对每种类别的意见信息进行了排序,而在每种类别的意见信息内部也需要进行排序。具体地,平台会根据每种类别的意见信息中各意见信息的评论结果来进行排序,其中,意见信息的评论结果是指平台上的用户对于该条评论是点赞还是点踩。对于一种类别内的多条意见信息,点赞最多的意见信息的信息最靠前,依次类推,可以确定出每种类别内部的意见信息的排序。
由于平台上注册的互联网用户的数量很多,各互联网用户之间的水平差距很大,如果将这些互联网用户所发表的所有评论数据直接反馈给产品经理,产品经理对这些信息的整理和筛选的工作量将会非常大,而通过本实施例的方法,对大量的意见信息根据产品经理的特点进行了排序,可以使得产品经理首先看到自己最感兴趣、价值最高的评论评论数据,从而提升了协同进行需求分析的效率,进而提升了软件开发的速度和效率。
另一实施例中,在上述步骤S105中接收互联网用户提交的至少一组交付件之后,还包括:
将上述交付件中的软件代码中的恒真代码替换为实际调用代码,其中,该恒真代码用于替代软件代码中的待调用代码,该恒真代码具有起始标识以及结束标识。
具体地,由于在FDT的开发过程中,不同函数之间很难保证完全的相互独立,在很多情形下,会存在相互调用的情况,因此,平台提供了FDT横向发布任务的功能,即,互联网用户可以在开发FDT的过程中发布新的FDT任务,同时,为了避开多个FDT存在的同步情形,增加开发并发性,平台提供了自动调用代码替换功能,用户在开发过程中,需要调用其他函数时,可以直接以恒为真的替代代码进行开发,并完成测试,在其发布的FDT有了合理提交结果之后,平台将会自动把其中的恒真代码替换为真实的调用代码。如下是一个恒真代码的示例:
int num=0;
//@pseudo_call_start
//num=getConnectionNum();
//@pseudo_call_end
//@replaceable_start
num=3;
//@replaceable_end
如上述代码所示,该FDT中真实的调用代码应该为num=getConnectionNum(),即需要调用getConnectionNum()这个函数,为保证开发并行性,在FDT开发过程中,将这个真实调用函数注释掉,并在这个真实调用函数的前后加上起始和结束标识,进而,在此处增加恒真代码num=3,并在该恒真代码前后加上起始和结束标识,即使得恒真代码具有起始和结束标识,当该FDT提交之后,平台根据真实调用函数的起始和结束标识,以及恒真代码的起始和结束标识,将真实调用函数的注释去掉,并为恒真代码加上注释,从而使得FDT可以正常调用真实的调用函数。
图4为本发明提供的基于众包的软件开发方法实施例四的流程示意图,如图4所示,该方法还包括:
S401、接收互联网用户输入的函数名称。
S402、对上述函数名称进行拆分,确定函数名称中的至少一个关键词。
S403、根据上述至少一个关键词,从预设的推荐代码库中查找与上述函数名称匹配的推荐代码。
如前所述,互联网用户可以对MDT进行分解后形成FDT并发布,FDT具体是一个一个的函数,接收该FDT任务的互联网用户在完成FDT的过程中,经常会存在该FDT对应的函数是一个较普遍使用的函数,因此,可以使用已有的优秀的代码进行参考。基于此,本发明中提供了代码推荐功能,只要用户在平台上输入需要参考的函数名称,平台就会从中提取函数名称中的关键词,并根据关键词,从预设的推荐代码库中查找推荐代码。
其中,在确定函数名称中的关键词时,平台将自动过滤掉常见动词如get,set等,将剩余函数名称字符串依自然语言单词进行拆分并作为关键词进行提取,将待过滤数据依照关键词拟合度进行阶段式排序。例如,对于互联网用户输入的getFileAbsolutePath这个函数,平台会将函数名自动拆成file,absolute,path三个关键词,并在预设的推荐代码库中进行检索。
可选地,在进行上述检索之前,平台首先会根据FDT的开发语言对推荐代码库进行一次过滤,例如,FDT的开发语言为Java语言,则平台首先会将不是Java语言的推荐代码过滤掉,以提升后续的检索准确度。
另外,平台所提供的预设的推荐代码库,可以直接是指互联网中开源代码平台,也可以是平台从开源代码平台中下载代码所生成的代码库,此处不做具体限制。
本实施例中,通过为互联网用户提供代码推荐功能,可以进一步加快软件开发的速度,提高软件开发者的效率,降低软件开发者的能力门槛和软件开发的成本。
图5为本发明提供的基于众包的软件开发方法实施例五的流程示意图,如图5所示,上述步骤403具体包括:
S501、按照关键词数量由多到少的顺序从预设的推荐代码库中查找与上述关键词匹配的推荐代码。
以上述getFileAbsolutePath这个函数为例,当互联网用户输入getFileAbsolutePath这个函数名称之后,平台确定出file,absolute,path这三个关键词,对于这三个关键词,平台首先将三个关键词一起进行查询,如果查询不成功,则减少为两个关键词进行查询,依次类推,得到推荐代码查询结果。
S502、按照上述推荐代码的星级评分对查找出的推荐代码进行排序。
S503、向互联网用户显示排序后的推荐代码。
推荐代码库中的代码都具有对应的星级,在查找出推荐代码后,平台对这些推荐代码按照星级进行排序,并显示给互联网用户,以使得互联网用户首先查看到与自己待完成的代码最接近并且最优秀的推荐代码。
图6为本发明提供的基于众包的软件开发装置实施例一的模块结构图,如图6所示,该装置包括:
第一接收模块601,用于接收需求提供者输入的原始软件需求。
第一分发模块602,用于将原始软件需求分发至产品经理,以使产品经理根据原始软件需求生成并发布PRD。
生成模块603,用于生成PRD对应的第一MDT。
第二分发模块604,用于将第一MDT分发至产品架构师,以使产品架构师根据第一MDT生成多个第二MDT并向互联网用户发布多个第二MDT。
第二接收模块605,用于接收互联网用户提交的至少一组交付件,该交付件包括软件代码以及测试报告,该交付件与第二MDT或者FDT一一对应,其中,FDT由互联网用户对第二MDT进行分解后获得,FDT用于实现一个函数功能。
第三分发模块606,用于将上述至少一组交付件分发至产品架构师,以使产品架构师根据上述至少一组交付件生成原始软件需求对应的软件产品。
该装置用于实现前述方法实施例,其实现原理和技术效果类似,此处不再赘述。
图7为本发明提供的基于众包的软件开发装置实施例二的模块结构图,如图7所示,该装置还包括:
第三接收模块607,用于接收互联网用户针对PRD的至少一条意见信息,该意见信息通过评论方式生成,该意见信息为对PRD的补充或修改。
排序模块608,用于根据产品经理的特点,对意见信息进行排序。
第四分发模块609,用于将排序之后的意见信息分发至产品经理,以使产品经理根据意见信息更新PRD。
图8为本发明提供的基于众包的软件开发装置实施例三的模块结构图,如图8所示,上述意见信息中包括意见的类别,相应地,排序模块608包括:
确定单元6081,用于根据意见信息的类别以及产品经理的特点,确定各类别的意见信息的顺序。
排序单元6082,用于根据意见信息的评论结果,对每种类别的意见信息进行排序,形成意见信息的排序结果。
另一实施例中,上述FDT由互联网用户对第二MDT进行分解后获得,包括:
上述FDT由互联网用户对第二MDT进行至少一次分解并发布之后获得,以使选择上述FDT的互联网用户实现上述FDT。
图9为本发明提供的基于众包的软件开发装置实施例四的模块结构图,如图9所示,该装置还包括:
替换模块6010,用于将交付件中的软件代码中的恒真代码替换为实际调用代码,其中,该恒真代码用于替代软件代码中的待调用代码,该恒真代码具有起始标识以及结束标识。
图10为本发明提供的基于众包的软件开发装置实施例五的模块结构图,如图10所示,该装置还包括:
第四接收模块6011,用于接收互联网用户输入的函数名称。
拆分模块6012,用于对函数名称进行拆分,确定函数名称中的至少一个关键词。
查找模块6013,用于根据至少一个关键词,从预设的推荐代码库中查找与函数名称匹配的推荐代码。
图11为本发明提供的基于众包的软件开发装置实施例六的模块结构图,如图11所示,查找模块6013包括:
查找单元60131,用于按照关键词数量由多到少的顺序从预设的推荐代码库中查找与关键词匹配的推荐代码。
排序单元60132,用于按照推荐代码的星级评分对查找出的推荐代码进行排序。
显示单元60133,用于向互联网用户显示排序后的推荐代码。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种基于众包的软件开发方法,其特征在于,所述方法应用于基于众包的软件开发平台,所述方法包括:
接收需求提供者输入的原始软件需求;
将所述原始软件需求分发至产品经理,以使所述产品经理根据所述原始软件需求生成并发布产品需求文档PRD;
生成所述PRD对应的第一模块开发任务MDT;
将所述第一MDT分发至产品架构师,以使所述产品架构师根据所述第一MDT生成多个第二MDT并向互联网用户发布所述多个第二MDT;
接收所述互联网用户提交的至少一组交付件,所述交付件包括软件代码以及测试报告,所述交付件与所述第二MDT或者功能开发任务FDT一一对应,其中,所述FDT由所述互联网用户对所述第二MDT进行分解后获得,所述FDT用于实现一个函数功能;
将所述至少一组交付件分发至所述产品架构师,以使所述产品架构师根据所述至少一组交付件生成所述原始软件需求对应的软件产品。
2.根据权利要求1所述的方法,其特征在于,所述将所述原始软件需求分发至产品经理,以使所述产品经理根据所述原始软件需求生成并发布产品需求文档PRD之后,还包括:
接收所述互联网用户针对所述PRD的至少一条意见信息,所述意见信息通过评论方式生成,所述意见信息为对所述PRD的补充或修改;
根据所述产品经理的特点,对所述意见信息进行排序;
将排序之后的意见信息分发至所述产品经理,以使所述产品经理根据所述意见信息更新所述PRD。
3.根据权利要求2所述的方法,其特征在于,所述意见信息中包括意见的类别,相应地,所述根据所述产品经理的特点,对所述意见信息进行排序,包括:
根据所述意见信息的类别以及所述产品经理的特点,确定各类别的意见信息的顺序;
根据所述意见信息的评论结果,对每种类别的意见信息进行排序,形成所述意见信息的排序结果。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述FDT由所述互联网用户对所述第二MDT进行分解后获得,包括:
所述FDT由所述互联网用户对所述第二MDT进行至少一次分解并发布之后获得,以使选择所述FDT的互联网用户实现所述FDT。
5.根据权利要求1所述的方法,其特征在于,所述接收所述互联网用户提交的至少一组交付件之后,还包括:
将所述交付件中的软件代码中的恒真代码替换为实际调用代码,其中,所述恒真代码用于替代所述软件代码中的待调用代码,所述恒真代码具有起始标识以及结束标识。
6.根据权利要求1所述的方法,其特征在于,还包括:
接收所述互联网用户输入的函数名称;
对所述函数名称进行拆分,确定所述函数名称中的至少一个关键词;
根据所述至少一个关键词,从预设的推荐代码库中查找与所述函数名称匹配的推荐代码。
7.根据权利要求6所述的方法,其特征在于,所述根据所述至少一个关键词,从预设的推荐代码库中查找与所述函数名称匹配的推荐代码,包括:
按照关键词数量由多到少的顺序从预设的推荐代码库中查找与所述关键词匹配的推荐代码;
按照所述推荐代码的星级评分对查找出的推荐代码进行排序;
向所述互联网用户显示排序后的所述推荐代码。
8.一种基于众包的软件开发装置,其特征在于,包括:
第一接收模块,用于接收需求提供者输入的原始软件需求;
第一分发模块,用于将所述原始软件需求分发至产品经理,以使所述产品经理根据所述原始软件需求生成并发布产品需求文档PRD;
生成模块,用于生成所述PRD对应的第一模块开发任务MDT;
第二分发模块,用于将所述第一MDT分发至产品架构师,以使所述产品架构师根据所述第一MDT生成多个第二MDT并向互联网用户发布所述多个第二MDT;
第二接收模块,用于接收所述互联网用户提交的至少一组交付件,所述交付件包括软件代码以及测试报告,所述交付件与所述第二MDT或者功能开发任务FDT一一对应,其中,所述FDT由所述互联网用户对所述第二MDT进行分解后获得,所述FDT用于实现一个函数功能;
第三分发模块,用于将所述至少一组交付件分发至所述产品架构师,以使所述产品架构师根据所述至少一组交付件生成所述原始软件需求对应的软件产品。
9.根据权利要求8所述的装置,其特征在于,还包括:
第三接收模块,用于接收所述互联网用户针对所述PRD的至少一条意见信息,所述意见信息通过评论方式生成,所述意见信息为对所述PRD的补充或修改;
排序模块,用于根据所述产品经理的特点,对所述意见信息进行排序;
第四分发模块,用于将排序之后的意见信息分发至所述产品经理,以使所述产品经理根据所述意见信息更新所述PRD。
10.根据权利要求9所述的装置,其特征在于,所述意见信息中包括意见的类别,相应地,所述排序模块包括:
确定单元,用于根据所述意见信息的类别以及所述产品经理的特点,确定各类别的意见信息的顺序;
排序单元,用于根据所述意见信息的评论结果,对每种类别的意见信息进行排序,形成所述意见信息的排序结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610786273.2A CN106371840A (zh) | 2016-08-30 | 2016-08-30 | 基于众包的软件开发方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610786273.2A CN106371840A (zh) | 2016-08-30 | 2016-08-30 | 基于众包的软件开发方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106371840A true CN106371840A (zh) | 2017-02-01 |
Family
ID=57899839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610786273.2A Pending CN106371840A (zh) | 2016-08-30 | 2016-08-30 | 基于众包的软件开发方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106371840A (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107590718A (zh) * | 2017-08-31 | 2018-01-16 | 科大讯飞股份有限公司 | 共享技能开发平台及方法、共享技能应用平台及方法 |
CN107730131A (zh) * | 2017-10-24 | 2018-02-23 | 北京航空航天大学 | 一种众包软件开发者的能力预测及推荐方法、装置 |
CN108008977A (zh) * | 2017-12-27 | 2018-05-08 | 遵义职业技术学院 | 一种面向函数外包的软件开发服务平台 |
CN108122071A (zh) * | 2017-12-14 | 2018-06-05 | 方物语(深圳)科技文化有限公司 | 产品制作信息的处理方法、装置、计算机设备及存储介质 |
CN108170405A (zh) * | 2017-12-27 | 2018-06-15 | 遵义职业技术学院 | 一种面向业务变量的软件开发方案生成方法 |
CN108280631A (zh) * | 2018-02-10 | 2018-07-13 | 武汉空心科技有限公司 | 一种前端开发任务管控方法及系统 |
CN108334353A (zh) * | 2017-08-31 | 2018-07-27 | 科大讯飞股份有限公司 | 技能开发系统及方法 |
CN108830571A (zh) * | 2018-05-28 | 2018-11-16 | 北京小米移动软件有限公司 | 结算方法、装置、设备及存储介质 |
CN108876173A (zh) * | 2018-06-28 | 2018-11-23 | 魏代利 | 一种事件的实现方法和装置 |
CN108874655A (zh) * | 2017-05-15 | 2018-11-23 | 华为技术有限公司 | 一种处理众包测试数据的方法及装置 |
CN108876435A (zh) * | 2018-05-25 | 2018-11-23 | 北京百度网讯科技有限公司 | 人工智能平台实现方法、装置、计算机设备及存储介质 |
CN108921679A (zh) * | 2018-06-13 | 2018-11-30 | 深圳缘梦互联网科技有限公司 | 一种基于统一开发平台的众包软件开发方法及系统 |
CN109118059A (zh) * | 2018-07-24 | 2019-01-01 | 武汉空心科技有限公司 | 快速交付的前端软件开发方法、平台及系统 |
CN111612135A (zh) * | 2020-05-22 | 2020-09-01 | 京东数字科技控股有限公司 | 用于信息交互的方法和装置 |
CN112000316A (zh) * | 2020-08-25 | 2020-11-27 | 橙色云设计有限公司 | 一种全要素开放式协同研发系统和方法 |
CN117055844A (zh) * | 2023-09-14 | 2023-11-14 | 深圳市多美达数码科技有限公司 | 一种基于互联网和云计算的软件开发方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104267973A (zh) * | 2014-10-21 | 2015-01-07 | 北京航空航天大学 | 一种群体软件工程过程开发方法 |
US20150268951A1 (en) * | 2012-09-28 | 2015-09-24 | Emc Corporation | Subject and audience oriented instant collaborative development |
-
2016
- 2016-08-30 CN CN201610786273.2A patent/CN106371840A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150268951A1 (en) * | 2012-09-28 | 2015-09-24 | Emc Corporation | Subject and audience oriented instant collaborative development |
CN104267973A (zh) * | 2014-10-21 | 2015-01-07 | 北京航空航天大学 | 一种群体软件工程过程开发方法 |
Non-Patent Citations (1)
Title |
---|
李勇军等: "基于众包的软件开发模式", 《计算机系统应用》 * |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108874655A (zh) * | 2017-05-15 | 2018-11-23 | 华为技术有限公司 | 一种处理众包测试数据的方法及装置 |
CN107590718A (zh) * | 2017-08-31 | 2018-01-16 | 科大讯飞股份有限公司 | 共享技能开发平台及方法、共享技能应用平台及方法 |
CN108334353A (zh) * | 2017-08-31 | 2018-07-27 | 科大讯飞股份有限公司 | 技能开发系统及方法 |
CN108334353B (zh) * | 2017-08-31 | 2021-04-02 | 科大讯飞股份有限公司 | 技能开发系统及方法 |
CN107730131A (zh) * | 2017-10-24 | 2018-02-23 | 北京航空航天大学 | 一种众包软件开发者的能力预测及推荐方法、装置 |
CN107730131B (zh) * | 2017-10-24 | 2021-09-10 | 北京航空航天大学 | 一种众包软件开发者的能力预测及推荐方法、装置 |
CN108122071A (zh) * | 2017-12-14 | 2018-06-05 | 方物语(深圳)科技文化有限公司 | 产品制作信息的处理方法、装置、计算机设备及存储介质 |
CN108008977A (zh) * | 2017-12-27 | 2018-05-08 | 遵义职业技术学院 | 一种面向函数外包的软件开发服务平台 |
CN108170405A (zh) * | 2017-12-27 | 2018-06-15 | 遵义职业技术学院 | 一种面向业务变量的软件开发方案生成方法 |
CN108280631A (zh) * | 2018-02-10 | 2018-07-13 | 武汉空心科技有限公司 | 一种前端开发任务管控方法及系统 |
CN108876435A (zh) * | 2018-05-25 | 2018-11-23 | 北京百度网讯科技有限公司 | 人工智能平台实现方法、装置、计算机设备及存储介质 |
CN108830571A (zh) * | 2018-05-28 | 2018-11-16 | 北京小米移动软件有限公司 | 结算方法、装置、设备及存储介质 |
CN108921679A (zh) * | 2018-06-13 | 2018-11-30 | 深圳缘梦互联网科技有限公司 | 一种基于统一开发平台的众包软件开发方法及系统 |
CN108876173A (zh) * | 2018-06-28 | 2018-11-23 | 魏代利 | 一种事件的实现方法和装置 |
CN108876173B (zh) * | 2018-06-28 | 2022-04-01 | 魏代利 | 一种事件的实现方法和装置 |
CN109118059A (zh) * | 2018-07-24 | 2019-01-01 | 武汉空心科技有限公司 | 快速交付的前端软件开发方法、平台及系统 |
CN111612135A (zh) * | 2020-05-22 | 2020-09-01 | 京东数字科技控股有限公司 | 用于信息交互的方法和装置 |
CN111612135B (zh) * | 2020-05-22 | 2024-04-16 | 京东科技控股股份有限公司 | 用于信息交互的方法和装置 |
CN112000316A (zh) * | 2020-08-25 | 2020-11-27 | 橙色云设计有限公司 | 一种全要素开放式协同研发系统和方法 |
CN112000316B (zh) * | 2020-08-25 | 2021-08-27 | 橙色云互联网设计有限公司 | 一种全要素开放式协同研发系统和方法 |
CN117055844A (zh) * | 2023-09-14 | 2023-11-14 | 深圳市多美达数码科技有限公司 | 一种基于互联网和云计算的软件开发方法 |
CN117055844B (zh) * | 2023-09-14 | 2023-12-22 | 深圳市多美达数码科技有限公司 | 一种基于互联网和云计算的软件开发方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106371840A (zh) | 基于众包的软件开发方法及装置 | |
US20220066772A1 (en) | System and Method for Code and Data Versioning in Computerized Data Modeling and Analysis | |
US11080336B2 (en) | System and method for fuzzy concept mapping, voting ontology crowd sourcing, and technology prediction | |
US10268753B2 (en) | System and method for optimized query execution in computerized data modeling and analysis | |
US10275502B2 (en) | System and method for interactive reporting in computerized data modeling and analysis | |
CN109121436B (zh) | 增广、探索、和维护项目分层结构的方法 | |
US8843879B2 (en) | Software design and automatic coding for parallel computing | |
AU2024201723A1 (en) | Systems and methods configured to enable an operating system for connected computing that supports user use of suitable to user purpose resources sourced from one or more resource ecospheres | |
CN106663224A (zh) | 用于机器学习模型评估的交互式界面 | |
CN107993019B (zh) | 一种简历评估方法及装置 | |
WO2018236886A1 (en) | SYSTEM AND METHOD FOR MANAGING CODE AND DATA VERSIONS IN COMPUTERIZED DATA MODELING AND ANALYSIS | |
JP7502283B2 (ja) | 人工知能/機械学習を用いたicsフローのオートコンプリートのためのシステムおよび方法 | |
Hu et al. | Service net algebra based on logic Petri nets | |
Sarkar | Overview of web development life cycle in software engineering | |
Khan et al. | Propagating visual designs to numerous plots and dashboards | |
Wu et al. | Comparison of multi-criteria decision-making methods for online controlled experiments in a launch decision-making framework | |
CN108182512B (zh) | 一种简历评估方法及装置 | |
Rico et al. | History of computers, electronic commerce and agile methods | |
Reich et al. | Scheduling crash tests at ford motor company | |
CN108009735B (zh) | 一种简历评估方法及装置 | |
Jebreen et al. | Packaged software implementation requirements engineering by small software enterprises | |
Soriano | Maximizing benefits from IT project management: from requirements to value delivery | |
CN110796425A (zh) | 知识产权转移转化管理方法、系统及存储介质 | |
US20110067002A1 (en) | Distributed Collaborative Environment Definition System and Method | |
CN108153829B (zh) | 一种简历评估方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170201 |
|
RJ01 | Rejection of invention patent application after publication |