如何开展软件架构之需求分析
如何开展软件架构之需求分析
在开始讨论如何开展软件架构之前,先让我们来看一张漫画。
相信大家看到这漫画的时候,总会不自主地会心一笑,客户希望得到礼物,我们却给了他一骨头。
是什么原因造成这一情况呢?
可能原因有二:
一):未进行充分地需求分析。
解析:架构师未能初别用户群及使用环境约束因素,也许在接到项目时,他还在想着上一个为狗开发的项目,在这个项目中自然而然地认为用户是狗。
二):架构设计过于高屋建瓴,未给开发提供有效的指导与约束。
解析:架构师给出总体设计,要求软件工程师建造一个生产香蕉的工厂,可是软件工程师由于经验,技能或时间不足,最终建造的工厂生成的却是只有其神而无其形的食物,猴子一见不是自己想要的,尝也不尝一下,哪怕真的有香蕉味。
那么如何避免以上两种情况呢?
对,答案就是
一):做好需求分析,在需求分析阶段,应掌握需求大局观,分析约束对需求的影响,发现隐藏需求,发现关键功能需求及关键质量需求
二)架构设计应接地气,通过多阶段,多视图的方法描述描述软件实现过程中的方方面面,
a) 通过逻辑视图,描述系统各职责的层次结构,描述各功能职责链的协作,
b) 通过数据视图,描述数据组织,持久化设计
c) 通过控制流视图,描述控制流组织及相互间的交互,锁机制的实现
d) 通过开发视图,描述代码目录结构,依赖的第三方库及模块的划分
e) 通过物理视图,描述系统部署方式。
如何做好需求分析
作为软件架构师,往往是在系统分析人员完成需求分析之后才开始工作,虽然架构师应该全程参与需求分析工作,但更多的时候却并没有这样的工作安排。
对于架构师来说,更多的时候,是根据需求用例说明书来进行设计。
如若可行,希望需求用例能以以下的格式描述:
用例名:员工签到
层次:用户目标
前置条件:已经登入系统
步聚:
1:打开签到画面
2:点击签到按钮
3:提示签到成功
后置条件:
员工签到成功
扩展:
3a:若员工重复签到,则提示已经签到
采用以上用例描述格式,有以下几好处
1:便于用户在系统未成型之前对系统形为有大致了解,可尽早反馈意见
2:便于系统分析人员分析系统行为,审查行为的合理性
2:便于开发人员了解系统行为,尤其是软件异常处理的实现
前面我们提到,若需求是否充分分析,是架构是否成功的关键因素之一。
那么需求是如何影响架构的呢?
需求类型
首先 需求有三种类型:
1. 功能需求:软件需要实现的功能
2. 质量需求:软件在运行期的质量需求(性能,可靠性,安全性 等)与开发期需求(可调试性,可扩展性,可互操作性等)
3. 约束需求:主要来源于四个方面:
a. 业务环境:系统所处的业务中约束,比如金融领域系统,对于安全性的约束就相当严格。
b. 用户群及使用环境,比如用户是一群Linux控,那么系统可能就要为Linux平台开发,以满足用户的喜好
c. 开发及构造环境,比如团队成员没有一个从事开发C++的软件工程师,系统还会采用C++为开发语言吗
d. 当前技术环境:目前平板风头正劲,你的项目可能得考虑是否支持平板。
从以上需求类型可以看到,缺少对任何一种需求的分析,都会给架构失败带来不确定因素。
功能需求是架构设计的驱动力,如若遗漏关键功能需求,架构就并不是完善的,在后期变更时,将存在较大风格
质量需求是架构设计完善的驱动力,如若不考虑质量需求:则无法保证架构产品能满足用户预期,只能在后期进行优化,然后优化是恶魔,时不时地会窜出来咬你一口
约束需求则从多方面影响架构,
a. 约束可能直接影响设计,如用户的使用环境是Linux,架构则必须考虑Linux平台
b. 约束可能转化为功能需求,如磁盘空间有限,则在存储数据文件时,架构时必须考虑是否删除过期的文件。
c. 约束可能转化为质量需求,如部署项目的计算机内存较少,则架构时必须尽量地降低对内存资源的消耗。
需求层次
再者,需求也是分层次的,分为三类
1:业务级需求:用户要达到的业务目标,如用户需要一个企业信息管理系统
2:用户级需求:用户使用系统来辅助完成哪些工作,如用户通过企业信息管理系统的签到功能完成签到
3:开发级需求:开发人员需要实些什么功能,如需要实现签到管理模块
需求分析方法
从前面了解到,需求层次可以了解到:用户需求来源于业务需求,而开发需求而由于源于用户级需求。
而约束需求又影响功能需求及质量需求。
所以可以通过二维矩阵的方式来 推导需求,查找遗留需求,具体二维矩阵格式如下图所示
推导需求的方法是从上向下,从右向左。
从上图所示,通过业务需求的功能需求(2:未来实现固定资产,人力资产等管理)推导出系统应具有高的可扩展性,从业务需求的约束中(应能导入用户自身员工的管理信息)推导出系统应有较好的互操作性。
另外在需求分析过程中,往往会忽略会质量需求,因此在二维矩阵分析过程中应重点关注是否遗漏质量需求
在需求分析过程中使用的
工具为二维需求矩阵
方法有
推导方法:从上至下,从左到右
查漏方法:重点关注质量属性
步聚:
1:结构化需求
2:分析约束影响