之前的博客详细描述了软件工程中的系统文献映射研究方法。这里接着给出一个我曾经做过的工作作为例子,以更直观地展示这种研究类型。该研究的背景信息这里不再赘述。
这篇博客主要介绍第六个研究问题的结果,即软件开发中假设条件管理的相关涉众是哪些。
下表根据软件开发活动将从入选文献中识别的涉众进行分类,且将每一类涉众进一步与假设条件管理活动关联。选择软件开发活动作为分类基准以及SWEBOK的原因与对假设条件进行分类的原理相同。此外,除将涉众与假设条件管理活动关联,还识别出其他四类涉众与假设条件管理的关联关系。
1. 涉众影响假设条件管理或被其影响
在文献[1]中,若供需求工程师使用的信息未被客户确认,则需求工程师不得不制定假设条件。这些假设条件可导致多种问题,如返工和项目失败。在文献[2]中,若假设条件隐式存在,则架构师在体系结构的评价和维护中可能遇到问题。
2. 涉众使用假设条件以辅助特定的软件开发活动
在文献[3]中,设计师评价假设条件并使用识别的无效的假设条件来修改相关的需求模型。在文献[4]中,由于在系统验证阶段系统的真实环境未知,开发人员不得不使用环境的假设条件以描述系统属性。
3. 假设条件的内容与特定涉众关联
在文献[5]中,作者指出部分假设条件的内容与用户的档案有关。在文献[6]中,作者指出部分假设条件的内容与用户的行为有关。
4. 假设条件和涉众间的其他关联关系
在文献[7]中,作者认为用户应参与假设条件管理。在文献[8]中,作者认为开发人员应特别注意那些在他们工作环境之外的假设条件。
软件开发活动 | 涉众 | 假设条件管理活动 |
需求工程 | 客户、用户、系统管理员 | 假设条件制定、描述、评价、维护、交流、理解 |
| 需求工程师 | 假设条件制定、描述、评价、交流、理解 |
| 领域专家 | 假设条件制定、评价、交流 |
软件设计 | 设计师 | 假设条件制定、描述、评价、维护、监视、交流、理解 |
| 架构师、模型设计师、构件设计师、构件用户 | 假设条件制定、描述、评价、维护、追溯、交流、恢复、理解 |
软件构造 | 开发人员 | 假设条件制定、描述、评价、追溯、交流、恢复、组织 |
| API开发人员、API用户、构件开发人员、方面开发人员、库用户、系统集成人员、实现顾问 | 假设条件制定、描述、评价、维护 |
软件维护和演化 | 维护人员 | 假设条件制定 |
其他 | 项目经理、部署经理 | 假设条件制定 |
| 技术涉众、技术专家 | 假设条件制定、评价 |
参考文献
[1] Ö. Albayrak, H. Kurtoğlu, and M. Bıçakçı. Incomplete software requirements and assumptions made by software engineers. In: Proceedings of the 16th Asia-Pacific Software Engineering Conference (APSEC), Penang, Malaysia, pp. 333-339, 2009.
[2] A. Tang, Y. Jin, and J. Han. A rationale-based architecture model for design traceability and reasoning. Journal of Systems and Software, 80(6): 918-934, 2007.
[3] R. Ali, F. Dalpiaz, P. Giorgini, and V.E.S. Souza. Requirements evolution: from assumptions to reality. In: Proceedings of the 12th International Conference on Enterprise, Business-Process and Information Systems Modeling (BPMDS), London, UK, pp. 372-382, 2011.
[4] D. Giannakopoulou, C.S. Păsăreanu, and J.M. Cobleigh. Assume-guarantee verification of source code with design-level assumptions. In: Proceedings of the 26th International Conference on Software Engineering (ICSE), Edinburgh, Scotland, UK, pp. 211-220, 2004.
[5] A. Filieri and C. Ghezzi. Further steps towards efficient runtime verification: Handling probabilistic cost models. In: Proceedings of the 1st International Workshop on Formal Methods in Software Engineering: Rigorous and Agile Approaches (FormSERA), Zurich, Switzerland, pp. 2-8, 2012.
[6] D. Klappholz and D. Port. Introduction to MBASE (Model-Based (System) Architecting and Software Engineering). Advances in Computers, 62: 203-248, 2004.
[7] J.P. Near, A. Milicevic, E. Kang, and D. Jackson. A lightweight code analysis and its role in evaluation of a dependability case. In: Proceedings of the 33rd International Conference on Software Engineering (ICSE), Honolulu, HI, USA, pp. 31-40, 2011.
[8] I. Ostacchini and M. Wermelinger. Managing assumptions during agile development. In: Proceedings of the 4th Workshop on SHAring and Reusing architectural Knowledge (SHARK), Vancouver, BC, Canada, pp. 9-16, 2009.