如何开展软件架构之需求分析

如何开展软件架构之需求分析

 在开始讨论如何开展软件架构之前,先让我们来看一张漫画。

相信大家看到这漫画的时候,总会不自主地会心一笑,客户希望得到礼物,我们却给了他一骨头。

是什么原因造成这一情况呢?

可能原因有二:

一):未进行充分地需求分析。

解析:架构师未能初别用户群及使用环境约束因素,也许在接到项目时,他还在想着上一个为狗开发的项目,在这个项目中自然而然地认为用户是狗。

二):架构设计过于高屋建瓴,未给开发提供有效的指导与约束。

解析:架构师给出总体设计,要求软件工程师建造一个生产香蕉的工厂,可是软件工程师由于经验,技能或时间不足,最终建造的工厂生成的却是只有其神而无其形的食物,猴子一见不是自己想要的,尝也不尝一下,哪怕真的有香蕉味。

那么如何避免以上两种情况呢?

对,答案就是

一):做好需求分析,在需求分析阶段,应掌握需求大局观,分析约束对需求的影响,发现隐藏需求,发现关键功能需求及关键质量需求

二)架构设计应接地气,通过多阶段,多视图的方法描述描述软件实现过程中的方方面面,

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:分析约束影响

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值