架构师之所以很关注需求,是因为两个原因:一是需求影响架构。因为需求影响解决方案的架构,而解决方案的元素是按照其是否能够满足规定的需求来挑选的。二是定义良好的需求导致高质量的架构。由于需求驱动架构的定义,所以,一组定义良好的需求比粗劣定义的需求更能产生高质量的架构。

由于以上两个原因,架构师在制定架构时特别关注需求。同时,架构也会影响需求。在定义架构时,架构师经常必须在不同的需求之间进行取舍,如平衡性能和成本。业务分析师得到这些反馈,从而对需求进行必要的调整。一些第三方商业系统(可以是某个插件),也会对系统的一些功能和质量产生约束。当架构分解为各个部分时,架构定义子系统的需求,尽管这个关系不那么明显。
尽管负责需求相关的任务是需求分析师的工作,而架构师在需求规范中仅涉及外围的工作,我们还是有必要了解一些需求如何产生的。下面的图很好的说明了这个问题。

在讲解定义需求之前,我们来细化一下需求的定义。需求分为功能性需求和非功能性需求。功能性需求描述了支持用户目标、任务和活动的(IT)系统的行为(功能或服务)。非功能性需求包括约束和质量。约束是对我们在提供解决方案时所拥有的自由度的一个限制。质量是利益相关者关心的系统特性和特点,因而影响其对系统的满意度。
约束包括业务(如规章制度和资源约束)和技术(如强制的技术标准和强制的解决方案因素)方面的约束。质量包括运行期质量(如性能和可用性)和非运行期质量(如可维护性和可移植性)的质量。
需求定义并不是只在项目开始时发生一次的事情,因为通常不可能事先理解并编写系统的所有需求文档。相反,对需求的提炼贯穿于整个项目生命周期,这意味着我们需要有效的需求管理。强调需求活动的最佳时机是在项目初始阶段的后期和细化阶段的初期。一些需求任务在构建阶段执行,如详细描述剩余需求;有些甚至在移交阶段执行,如根据用户反馈改进需求。
定义需求的活动任务步骤,如下图所示:

由于前面我们已经论述过需求相关的概念,要理解上面这些步骤中的内容,并不是很难。因此,我们仅针对上述步骤中一些特别的地方,进行简述,以求架构师们能最有效的处理这些需求。
1、收集利益相关者的要求
*    缺陷:把要求当作需求
*    缺陷:购物车式的思维方式
*    缺陷:调查问卷过于技术性
*    缺陷:要求过于笼统
*    缺陷:要求不可测量
*    缺陷:和不适当的人讨论
2、获取常用词汇
指一些专业术语。
3、定义系统上下文
确保理解所开发系统的边界以及确认与该系统交互的最终用户和外部系统。
4、概述功能性需求
包括系统范围内的功能性需求(用例)和用例无法表达的功能性需求,如系统安全。
5、概述非功能性需求
主要从可用性、稳定性、性能、支持能力、业务约束、架构约束和开发约束方面阐述相关的需求。
6、排定需求的优先级
7、详述功能性需求
#1 细化用例
将用例图由顶层向下逐级划分。
#2 细化用例数据项        
#3 细化系统范围的功能性需求
#4 细化功能性需求场景
8、详述非功能性需求
细化非功能性需求场景
9、更新软件架构文档
将各种需求整理成文档。
10、与利益相关者复审需求
#1 定义工作产品的基线
#2 汇集工作产品
#3 复审工作产品
其实,在定义需求这些步骤中,每个环节都有很多的内容要写,不过毕竟这是写博客,而不是写书,所以只是概要的说明定义需求的步骤,希望能对那些想向架构师方向进军的人有一些帮助。如果您想了解更多的内容,我们可以私底下进行切磋。

向架构师进军--定义需求相关推荐

  1. **什么是架构师-架构师的定义**

    转自:https://blog.csdn.net/weixin_42424016/article/details/80822996 前言: 哲学家常思考的问题:" 我是谁?"&qu ...

  2. 《App架构师实践指南》:移动开发的进阶指南

    文章主要内容: 什么是 app 架构师 这本书主要内容 读完感受 什么是 App 架构师 成为"架构师"是许多程序员的梦想,当然也包括我,在工作的几年里,我见过很多架构师,他们在设 ...

  3. 如何从开发人员走向架构师

    很多架构师都是从好的开发人员逐步过渡而来的,但并非每个好的开发人员都希望成为架构师,而且他们并不是都适合做架构师.无论您是打算进行职业转型的开发 人员,还是寻找能承担体系结构设计责任的合适人选的经理, ...

  4. CTO不写代码就算了,架构师也不写?

    从什么时候起,技术角色的提升就意味着脱离技术与交付?CTO 不写代码已经引起诸多争议了,架构师也不写代码,能行吗? 当我面试架构师职位的候选人时,我通常会问一个这样的问题:"你认为架构师是否 ...

  5. 系统架构师学习笔记_第十四章_连载

    第十四章  基于ODP的架构师实践 14.1  基于ODP的架构开发过程 系统架构 反映了功能在系统系统构件中的 分布.基础设施相关技术.架构设计模式 等,它包含了架构的 原则 和 方法.构件关系 与 ...

  6. Java程序猿如何从码农晋升为架构师

    一.架构师的定义 首先必须具有丰富的软件设计与开发经验,这有助于理解并解释所进行的设计是如何映射到实现中去. 其次要具有领导能力与团队协作技能,软件架构师必须是一个得到承认的技术领导,能在关键时候对技 ...

  7. 开发人员如何成为架构师

    很多架构师都是从好的开发人员逐步过渡而来的,但并非每个好的开发人员都希望成为架构师,而且他们并不是都适合做架构师.无论您是打算进行职业转型的开发人员,还是寻找能承担体系结构设计责任的合适人选的经理,都 ...

  8. 如何成为一个Java高薪架构师?

    2019独角兽企业重金招聘Python工程师标准>>> 从内心讲我真的不想回答架构具体需要做什么,架构师应该具体负责什么.因为从实际情况看,在不同的系统层级,不同的需求下架构师的职责 ...

  9. 架构师,是否需要写代码?

    中生代高级架构师社群 读完需要 9 分钟 速读仅需 3 分钟 小编:架构师是否需要写代码,这个话题已经记不起从何时开始,在攻城狮圈内成为一个经常拿来讨论的话题,上周中生代深度交流群群友们对此问题做了有 ...

最新文章

  1. 《预训练周刊》第28期:M6-10T:高效多万亿参数预训练的共享去链接范式、大模型自然语言处理的最新进展综述...
  2. html图片显示和夫宽一样,功夫:HTML和CSS?
  3. 【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | DexFile.java 对应的 dalvik_system_DexFile.cc 本地函数分析 )
  4. jsp 使用base标签 没有作用_JSP学习篇
  5. JZOJ 5230. 【NOIP2017模拟A组模拟8.5】队伍统计
  6. MySQL提供了以下三种方法用于获取数据库对象的元数据
  7. 【每日一题】7月15日题目精讲—生日快乐
  8. Struts2基础知识
  9. (28)System Verilog进程间同步(事件event)
  10. vue开发移动端h5使用 lib-flexible移动端适配
  11. Axure9 导入元件库
  12. linux桌面环境组件下载,万能桌面小组件
  13. cximage函数总结
  14. C语言 用矩形法计算定积分∫(0—1)sinxdx、∫(-1—1)cosxdx、∫(0—2)e^xdx
  15. ROS智能车自主导航roslaunch racecar_gazebo racecar_runway_navigation.launch报错
  16. 蓝桥杯第十届省赛 NE555测方波
  17. linux中prometheus的使用
  18. AndroidQ文件存储适配
  19. MBD(一)-下载包-getstart-raspberry串口设置问题
  20. [翻译Pytorch教程]NLP从零开始:使用序列到序列网络和注意力机制进行翻译

热门文章

  1. 大数据_MapperReduce_与hive的集成_使用hive数据分析工具_关联操作hbase---Hbase工作笔记0025
  2. js工作笔记001---javascript中(function($){...})(jQuery)写法是什么意思
  3. C#.Net工作笔记017---C#事件的理解以及自定义事件的方法
  4. 数据那点事001---集合
  5. 工程验收工作笔记001---系统等保级别_系统等级保护
  6. 扒一扒那些奇葩的甲方吧
  7. 杭电1596find the safest road(spfa)
  8. ftk学习记(list篇)
  9. 从汇编的眼光看C++(之泛型编程)
  10. java el 函数_javaweb基础(30)_EL函数库