知识卡片

约束需求的四类环境因素

普通读书笔记卡

内容

业界对约束需求普遍不够重视,常被简单理解成”必须使用Oracle”“必须在Linux上运行”这类零散的技术限定,但更系统的梳理是:约束需求=业务环境因素+使用环境因素+构建环境因素+技术环境因素。业务环境因素来自客户或出资方:架构师必须充分考虑客户对上线时间的要求、预算限制、集成需要,客户所处业务领域的业务规则和业务限制,以及相关法律法规、专利限制。使用环境因素来自用户:软件将提供给哪个阶层的用户、用户年龄段及使用偏好、用户是否遍及多个国家、使用期间是否存在电磁干扰或车船移动这类特殊使用环境因素。构建环境因素来自开发者和升级维护人员:开发团队技术水平是否有限(有些企业甚至希望用便宜的程序员降低成本)、团队磨合程度、是否分布在不同城市、开发管理和源代码保密方面的要求。技术环境因素则容易被遗忘,但业界当前的技术环境本身就是一种约束:技术平台、中间件、编程语言的流行度和认同度、优缺点,以及技术发展趋势。这四类因素共同说明,约束需求不是可以最后补一句”注意一下预算”就打发过去的边角料,而是和功能、质量需求平级、需要系统梳理的一类需求——架构师必须直接或(通过需求分析员)间接了解和掌握这些约束及其对架构的影响,才能设计出真正合适的架构,例如预算有限的小型客户就不宜采用依赖大量昂贵中间件的架构方案。

参考来源

- 位置:《软件架构设计:程序员向架构师转型必备》第5章《需求分析》"5.3.4 约束"节(源文件:_epub-src/OEBPS/text00008.html) - 结论依据:原文给出"约束需求=业务环境因素+使用环境因素+构建环境因素+技术环境因素"的分类公式,并逐一列举四类因素各自涵盖的具体考量点,直接支撑本卡片结论。 - 原始内容:约束需求=业务环境因素+使用环境因素+构建环境因素+技术环境因素。第一,业务环境因素(来自客户或出资方的约束性需求)……第四,技术环境因素(也不能遗忘,业界当前技术环境本身也是约束性需求)。