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

标签: 软件架构 需求分析 | 发表时间:2013-07-22 16:51 | 作者:cuiweican
出处:http://blog.csdn.net

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

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

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

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

可能原因有二:

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

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

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

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

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

对,答案就是

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

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

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

作者:cuiweican 发表于2013-7-22 16:51:19 原文链接
阅读:94 评论:0 查看评论

相关 [软件架构 需求分析] 推荐:

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

- - CSDN博客架构设计推荐文章
如何开展软件架构之需求分析.  在开始讨论如何开展软件架构之前,先让我们来看一张漫画. 相信大家看到这漫画的时候,总会不自主地会心一笑,客户希望得到礼物,我们却给了他一骨头. 一):未进行充分地需求分析. 解析:架构师未能初别用户群及使用环境约束因素,也许在接到项目时,他还在想着上一个为狗开发的项目,在这个项目中自然而然地认为用户是狗.

软件架构

- - 研发管理 - ITeye博客
    对于外包业务类型的项目,软件架构设计的目的与产品类型的项目有所不同,在这里主要讨论外包类型项目的软件架构设计目的.     1、为大规模开发提供基础和规范,并提供可重用的资产,软件系统的大规模开发,必须要有一定的基础和遵循一定的规范,这既是软件工程本身的要求,也是客户的要求. 架构设计的过程中可以将一些公共部分抽象提取出来,形成公共类和工具类,以达到重用的目的.

如何做需求分析

- - 人人都是产品经理
这段时间我做了两个大项目,其中一个项目算是商业模式上和使用规范上的调整,另一个项目是之前功能的重做,为什么重做我下面会说到. 关于需求分析,我认为把需求抽象成产品功能花费的时间占到了软件开发周期的40%,产品设计到评审完的时间大概是20%,也就是说实际开发之前产品团队介入的工作占据项目的60%,在需求分析阶段我有一些个人观点.

需求分析中的产品定位

- Jessica - 所有文章 - UCD大社区
看过《定位》最大的感受就是产品在诞生之前就决定了他是否能存活或成功. 就像走在商场中,面对玲琅满目的产品,你似乎很难找到一两款绝对同质化的大品牌:. 各式的服装,NIKE的衣服是运动的,但也不会和做户外运动的哥伦比亚冲突. 都是做化妆品,Fancl打出“无添加”没有防腐剂也收获了一群喜爱天然的用户…...

软件架构设计

- - 企业架构 - ITeye博客
软件架构设计尚没有万灵的方法论支持,还是个非常新兴的行业,给出个人理解的行业软件架构设计过程,受个人水平有限,仅供参考:. 1.业务分析:针对目标行业的业务战略、蓝图、业务功能及流程进行分析,提出其中部分功能可以使用信息化进行处理,通过分析可以得出信息化要解决的问题. 2.解决方案设计:根据业务战略,形成行业信息化解决方案.

软件架构风格 - welfear

- - 博客园_我所说的,都是错的
文档名称:软件架构风格(software architecture style). 文档维护:Xuefeng Chang([email protected]). 文档创建:2013.07.27. 如果说设计模式是从代码角度为系统降低耦合度,那么架构风格便是从数据角度解耦. 架构是更加宏观和全面的视角,它不再是解决单一的技术问题,而是为系统提供更加.

软件架构师的沟通修炼

- - 博客 - 伯乐在线
在架构师的角色中,沟通是要求有效果的必备技能与工具. 换句话说,沟通是架构师指示别人或群体完成特定行动唯一真正有效的手段. 架构师通常没有对为其项目工作的他人的直接管理权. 他们的项目往往是跨部门的,也可能会跨好多个行业单位. 由于不能直接管理他人,所以架构师指示别人或群体完成特定行动的能力就受到限制.

软件架构师的职责

- - 研发管理 - ITeye博客
架构师需要参与项目开发的全部过程,包括需求分析、架构设计、系统实现、集成、测试和部署各个阶段,负责在整个项目中对技术活动和技术说明进行指导和协调.     在项目开发过程中,架构师是在需求规格说明书完成后介入的,需求规格说明书必须得到架构师的认可. 架构师需要和分析人员反复交流,以保证自己完整并准确地理解用户需求.

【译】软件架构师之路

- - 掘金架构
今天给大家带来一篇自己翻译的干货《软件架构师之路》. 本周Github上升很快的项目. 其内容对致力于成为软件架构师(不论前后端)的同学应该都会有极大的帮助. 中文地址 github.com/gamedilong/…. 原文地址 github.com/justinamill…. 如果有看完英文原文,发现本文翻译内容中存在问题或者错误的欢迎到中文Git地址PR,如能够对大家起到一定的帮助也欢迎star.

软件架构设计(二)——软件架构设计过程

- - BlogJava-首页技术区
      一般来讲,涉众包括客户(资方)代表、承接方(劳方)代表、用户代表.       对于要明确实现某种标准的软件系统,通常确定边界非常容易,直接按标准圈定的scope分析即可,比如像SIPServlet容器,是要求遵从JSR168规范的,那么软件系统的Scope就是JSR168规定的Scope,但是也有例外,比如客户或者劳方明确指定要复用一个现有的实现了部分功能的系统或组件,那么Scope就不同了.