为梦而战
全部博文(185)
分类: 架构设计与优化
2015-04-03 09:41:27
软件架构师没有时间对‘所有需求’进行深入分析,这既是策略,也是现实。
需求是任何促成设计决策的因素,但是很少有开发者可以拥有一个稳定的需求集,所以,关键的第一步就是要缩小范围,范围的标准是具有重要性、可能性并且数量要少。
从需求转向架构的过程中,存在的几个问题:
关键需求决定架构的必要性和影响
什么是软件架构的关键需求?
一般可以从功能需求、质量需求和商业需求三方面来进行分类。
任何功能需求,都是由一条特定的‘模块协作链’完成的。所谓图案件架构就是关于如何构建软件的一些重要决策,这些决策往往是围绕着将系统分为哪些部分、各部分之间如何交互展开的。所以对软件架构关键的功能需求,就是它涉及的模块最多、最典型的功能需求。
要达到高质量属性的要求,是有成本的,而且不同的质量属性之间往往具有相互制约性,使得有些质量属性需求同时达到高要求比较困难。对架构至关重要的质量需求是那些经过权衡取舍、最终决定重点支持的质量属性需求。
商业需求也称业务需求,一般情况下,商业需求是指“组织或客户高层次的目标”,它关注从客户群、企业现状、未来发展、预算、立项、开发、运营、维护在内的整个软件生命周期涉及到的商业因素,包括了商业层面的目标、期望和限制。
如何确定对软件架构关键的需求
可以分为4步:1. 全面整理需求;2. 分析约束性需求;3. 确定关键功能需求;4. 确定关键质量属性需求。
全面整理需求后,可以对需求建立通盘认识。因为大多数情况下需求文档未必有软件架构师所需要的所有信息,例如质量需求一般在需求文档中一带而过,这样,架构师只有通盘理解需求后,才能将缺失的、隐藏的需求找出来。
约束性需求可以通过3种方式影响架构设计:1. 直接制约设计决策;2. 转化为功能需求;3. 转化为质量属性需求。
如何去定关键功能需求
确定关键质量属性需求