论文部分内容阅读
开发人员和其他涉众在软件开发过程中需要不断对需求、环境、设计等做出各种假设。然而,这些假设条件通常是隐式的且未被记录,导致开发人员常常忽略软件开发中已提出和制定的假设条件。同样的信息在某种环境下可能是假设条件,而在另一环境下可能是完全不同类型的制品。除非涉众以特定方式明确表达假设条件信息,否则难以在不了解上下文的情况下判断该信息是否是假设条件。因此,缺乏使用哪些术语和语言模式来表达假设条件的相关知识,以及在不同场景下如何识别假设条件的类型。假设条件在软件开发中并不是独立存在的,而是与许多其它类型的软件制品交织在一起。假设条件通常与需求、设计、构件等制品相关。但研究者和实践者在软件开发中仅关注有限类型的假设条件,例如需求假设条件,没有深入探究与记录假设条件和假设条件与其它软件制品之间的关联。另一方面,开源软件(Open Source Software,简称OSS)开发近年来成为软件产业的重要组成部分。参与式文化在软件开发中非常普遍,特别是在开发人员交流沟通频繁的OSS社区中,以分享关于需求、代码、体系结构等想法和知识为宗旨,社交媒体在这种文化中起着至关重要的作用。邮件列表作为一种社交媒体,是开源软件开发中涉众交流开发知识的主要来源。因此,我们以开发者邮件列表作为研究对象,对OSS开发中的假设条件进行了探索性研究和分析。在本研究中,我们选择了从2000年1月到2014年8月之间ArgoUML开发者邮件列表中的26,439封电子邮件,以及从2002年1月到2006年8月之间Hibernate开发者邮件列表中的8,913封电子邮件,手动识别并抽取了这两个大型开源软件项目的开发者邮件列表中假设条件的相关信息。目的是为了探索OSS开发中对假设条件的理解,包括:OSS开发过程中假设条件的表达形式,OSS开发过程中假设条件的分类,OSS开发过程中假设条件随着时间维度的发展趋势,OSS开发过程中假设条件的关联制品等四个研究问题。最终我们从ArgoUML和Hibernate的开发者邮件列表中分别识别并抽取了2399和832个假设条件。研究结果表明:(1)ArgoUML和Hibernate中的假设条件表达语言模式的主要类型是“特征请求”(Feature Request)和“解决方案提议”(Solution Proposal),而其它类型的表达语言模式则相对较少;(2)ArgoUML和Hibernate中设计假设条件(Design Assumption)和需求假设条件(Requirements Assumption)这两类假设条件之和分别占ArgoUML和Hibernate中已识别出的假设条件数量总和的83.8%和86.5%,且设计假设条件占各自已识别出的假设条件的比重分别为53.9%和54.4%;(3)ArgoUML和Hibernate两个开源软件项目在本文研究的开发时间段内都存在假设条件;(4)与ArgoUML和Hibernate中已识别出的假设条件关联最多的制品是设计文档,占比都接近于50%,即大多数假设条件都是针对软件设计的。本研究结果表明在开源项目开发过程中,开发者使用假设条件从时间维度上来看基本跨越整个开源软件开发的周期,尤其是在需求分析和软件设计阶段,并且假设条件的表达形式在开发过程中具有多样性。