之前的博客详细描述了软件工程中的系统文献映射研究方法。这里接着给出一个我曾经做过的工作作为例子,以更直观地展示这种研究类型。该研究的背景信息这里不再赘述。
这篇博客主要介绍第二个研究问题的结果,即软件开发中的假设条件有哪些类型。
软件开发由数个基本的活动构成[1]。此系统文献映射研究中,采用SWEBOK[1]中建议的软件开发活动,并对照软件开发活动对假设条件进行分类。
需求工程。软件需求工程指不同涉众对软件产品的关注点。需求工程包括数个子活动,如需求抽取、需求分析、需求归档。
软件设计。软件设计可细分为体系结构设计(即聚焦于软件的高层次结构)和详细设计(即聚焦于构件的细节及其实现)。
软件构造。软件构造指基于需求工程和软件设计的输出以实现软件。
软件测试。软件测试旨在通过测试验证软件。例如软件是否达到期望的需求或具备期望的行为。
软件维护和演化。软件可随时间变化(如由于新的需求),且需要在交付后进行维护(如修正软件的错误)。
尽管现存对软件开发活动的不同分类,选择SWEBOK的原因为:在软件开发领域中,SWEBOK被广泛认可和接受。分类结果如下表所示。假设条件映射到各个软件开发活动的依据为:假设条件在某活动中被制定或者假设条件关注某活动的制品(如需求、体系结构设计决策、代码)。因一篇文献可能将假设条件关联到多个软件开发活动,所以一篇文献可能被分类至多个类型中。
软件开发活动 |
数量(%) |
备注 |
需求工程 |
76 (56.7%) |
即有76篇文献提到了在需求工程中制定假设条件或将假设条件关联到需求工程中的某种制品。 |
软件设计 |
104 (77.6%) |
即有104篇文献提到了在软件设计中制定假设条件或将假设条件关联到软件设计中的某种制品。 |
软件构造 |
36 (26.9%) |
即有36篇文献提到了在软件构造中制定假设条件或将假设条件关联到软件构造中的某种制品。 |
软件测试 |
16 (11.9%) |
即有16篇文献提到了在软件测试中制定假设条件或将假设条件关联到软件测试中的某种制品。 |
软件维护和演化 |
22 (16.4%) |
即有22篇文献提到了在软件维护和演化中制定假设条件或将假设条件关联到软件维护和演化中的某种制品。 |
部分文献对需求工程和软件设计中的假设条件进一步分类。此处提供两个例子。
领域的假设条件的分类[2](需求工程):(a)强制的领域假设条件指产品线开发中对必要的需求制定的假设条件(如假设应包含某需求);(b)可选的领域假设条件指在备选需求中选择某需求时制定的假设条件(如假设在多个需求中应选择某特定需求);(c)多个领域假设条件指在备选需求中选择多个需求时制定的假设条件。
体系结构假设条件的分类[3][4](软件设计):(a)技术的假设条件指关于系统的技术环境的假设条件(如数据库);(b)组织的假设条件指可能影响软件开发的关于公司的假设条件(如公司的文化);(c)管理的假设条件指商业目标决策的假设条件(如管理策略)。
参考文献
[1] P. Bourque and R.E. Fairley. Guide to the Software Engineering Body of Knowledge (SWEBOK (R)): Version 3.0. IEEE Computer Society Press, 2014.
[2] J. Savolainen and J. Kuusela. Consistency management of product line requirements. In: Proceedings of the 5th IEEE International Symposium on Requirements Engineering (RE), Toronto, Ont, Canada, 2001.
[3] P. Lago and H. van Vliet. Observations from the recovery of a software product family. In: Proceedings of the 3rd International Conference on Software Product Lines (SPLC), Boston, MA, USA, pp. 214-227, 2004.
[4] P. Lago and H. van Vliet. Explicit assumptions enrich architectural models. In: Proceedings of the 27th International Conference on Software Engineering (ICSE), St Louis, Missouri, USA, pp. 206-214, 2005.