需求分析之道——需求分析要做什么。

需求分析是架构师开始做架构设计的第一步,对架构师来讲非常非常的重要。因为需求分析能够告诉我们,到底我们要做什么,架构设计就是为了去完成这件事情而做的。

接下来,我们就从实战的角度来讲一讲,需求分析的一些方法,都是咱们多年经验的总结,也许听上去或者说大家看上去,没有那么高大上,但是是非常实用的知识,从几10万的小项目到数千万的大项目都可以用得上这些方法。

咱们要做一件事情,首先要紧盯目标,这样你才能够找到自己前进的方向;然后再盯脚下的路,找到具体做事的方法。一步一步,认认真真去做,最终达到这个目标。这里也一样,先来看看需求分析的目标是什么?

一:需求分析的目标:

是尽可能准确、全面、深入的理解业务。

关于这个话题,内容比较多,特别在上一篇《深入理解需求分析的目标》详细讲述了,这里就不再啰嗦了。

二:识别重难点业务

第二个大的任务,就是识别重难点业务。这个可能要求架构师有一定的业务经验,这个也算是架构师的一个基本功。拿到需求过后,架构师要能够快速的识别出里面的一些重难点的业务,足够的业务经验,就能告诉我们,要做这样子的业务,里面有哪些功能是非常重要的,有哪些业务可能是比较难做的,也就是咱们俗称的重难点的业务。

识别出重难点业务有什么样的作用呢?就是接下来,在进行分析设计的时候,我们要重点去考虑这些重点业务、难点业务的实现,如果能够把重难点的业务都解决了,一般来说,常规的、相对普通一些的业务功能,咱们的架构设计,是能够很好的去满足的。

这些重难点业务,很可能会影响到咱们后面的,包括像技术选型、具体的架构设计、架构形式,可能都会受到它的影响。

毕竟,软件只是一个工具,工具嘛,不就是用来干活的吗?软件是用来干什么的呢?就是帮助用户或者客户,实现业务活动的工具。架构设计是干什么的呢?架构设计是为了把软件造好,也可以说它是为了软件服务的,开发和制作软件这个工具

所以,我们要去识别重难点业务,软件就是来解决这些业务问题的,肯定首先盯的,就是要解决重难点的业务,这些解决了,那些普通业务肯定能解决。是这个道理吧。

咱们的架构设计,就是在考虑,我怎么能够把这个软件做好。因此,对于重难点业务的把握,可能就直接决定了架构设计的成败,咱们一定要非常非常的重视。

这一点对于经验弱一些的架构师,可能就是一个小小的问题了,因为刚开始,他可能不能很快的去识别这些重难点的业务,但这个也没有关系,即使你刚开始没有识别出来,那你就尽量验证的全面一些。比方说,做完你的架构设计了,在做架构验证的时候,你就多挑一些业务来验证你的这个架构设计,这样也能够避免出现一些问题。

三:识别非功能需求,还有质量约束

第三的一个,要去识别非功能需求,还有质量约束。

啥叫非功能需求呢?就是除去咱们的业务功能需求之外的,剩下的这些需求,统称为非功能性需求,通常也是软件质量约束的一部分。

比如说,我们对这个系统提出了一些要求,但不是功能性的,常见的有:性能方面的要求,可靠性方面的要求,可扩展性方面的要求,可维护性方面的要求等等的。当然也还有其他的,比如说安全的要求,备份、恢复的要求等等,这些要求对于架构设计的影响也是非常非常大的。

很多都是架构设计要重点考虑的一些问题,比如说像性能问题,可靠性问题,高并发问题,海量数据的问题,可扩展的问题等。这些对咱们做架构设计都是有非常大的影响的,所以,在做需求分析的时候,就要把这些识别出来。

最后想要强调一点,需求分析对架构师而言,是非常非常重要的。可以这么说,需求分析是架构师做架构设计的起点,需求分析没有做好,后面的全部都是在瞎做

因为,需求分析会告诉我们:到底要做什么?如果说,连要做什么,我们都不知道,那你想想,如果一片迷茫的情况下,就去做所谓的架构设计,请问这个架构设计为谁做的?做来干什么?

现在有一些所谓的架构师,轻业务而重技术,成天高谈阔论很多新的技术,各种技术大词、名词满天飞,为了技术而技术。但是他忘了架构设计的初心,架构设计的目的是为了软件服务的,是为了更好的去开发和制作软件这个工具,仅此而已,不是为了你去炫耀技术的。

可以毫不客气的说这些人,根本就算不上是真正的架构师,我们可以称之为是伪架构师,或者说是PPT架构师,有那么一句话:“离开业务场景谈架构设计,那就是在耍流氓”。所以说,大家一定要重视起来,业务很重要,需求分析很重要。

为了大家更好的交流架构设计的思想和知识,大家可以加sishuok,拉你进架构设计群,一起共同学习,共同进步。

需求分析之道——需求分析要做什么(C系架构设计法,sishuok)的更多相关文章

  1. python-django电商项目-需求分析架构设计数据库设计_20191115

    python-django电商项目需求分析 1.用户模块 1)注册页 注册时校验用户名是否已被注册. 完成用户信息的注册. 给用户的注册邮箱发送邮件,用户点击邮件中的激活链接完成用户账户的激活. 2) ...

  2. Day1:了解APICloud平台、理解APICloud应用设计思想、掌握平台使用流程。学习如何对一款APP进行需求分析、功能分解和架构设计等编码之前重要的准备工作

    学习目标 总体上了解一下APICloud平台,重点介绍相关的学习资源,入门资料,常见的FAQ等 明确我们这七天要开发一个什么样的APP,明确功能需求,跟上每天的课程节奏,可以课前预习 梳理出对于一款A ...

  3. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-3.在线教育站点需求分析和架构设计

    笔记 3.在线教育站点需求分析和架构设计     简介:分析要开发的功能点和系统架构应该怎样架构 1.开发的功能:                     首页视频列表                ...

  4. atitit 研发管理 要不要自己做引擎自己实现架构?.docx

    atitit 研发管理 要不要自己做引擎自己实现架构?.docx 1.1. 目前已经有很多引擎了,还要自己做吗??1 1.2. 答案是自己做更好,利大于弊1 2. 为什么要自己做??1 2.1. 从历 ...

  5. 如何通过 Vue+Webpack 来做通用的前端组件化架构设计

    目录:   1. 架构选型     2. 架构目录介绍     3. 架构说明     4. 招聘消息 目前如果要说比较流行的前端架构哪家强,屈指可数:reactjs.angularjs.emberj ...

  6. 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获

    项目开发中的一些注意事项以及技巧总结   1.jquery采用ajax向后端请求时,MVC框架并不能返回View的数据,也就是一般我们使用View().PartialView()等,只能返回json以 ...

  7. tornado框架学习及借用有道翻译api做自动翻译页面

    趁着这几天有时间,就简单的学了一下tornado框架,简单做了个自动翻译的页面 仅为自己学习参考,不作其他用途 文件夹目录结构如下: . ├── server.py ├── static │   └─ ...

  8. 如何做JS 单体模式的设计---->>js设计模式<<-------单体模式

    1. 单体模式是js中最基本 单最有用的模式之一,非常常用. 单体模式的基本结构如下: var Person = { name: 'lilu', age:', sayHi: function(){ a ...

  9. 从零开始做UI-静电的sketch设计教室 视频教程

    全套31集目录 01-初识Sketch  http://www.ui.cn/detail/52223.html02-sketch的下载与安装  http://www.ui.cn/detail/5222 ...

  10. Java小对象的解决之道——对象池(Object Pool)的设计与应用

    一.概述 面向对象编程是软件开发中的一项利器,现已经成为大多数编程人员的编程思路.很多高级计算机语言也对这种编程模式提供了很好的支持,例如C++.Object Pascal.Java等.曾经有大量的软 ...

随机推荐

  1. 杭电oj 蟠桃记

    Problem Description 喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题!什么问题?他研究的问题是蟠桃一共有多少 ...

  2. iOS开发之实现自定义浮动操作框效果

    今天有个需求是如上图实现类似微信的自定义浮动操作框效果 我自己就写了个demo,大家感兴趣的可以试试,下面是代码 VC代码如下 #import "TestCustomMenuItemVC.h ...

  3. jquery语言中获取input标签后如何给input标签添加disabled的属性

    jquery语言中获取input标签后如何给input标签添加disabled的属性 1.使用JQuery函数prop():$("input").prop("disabl ...

  4. pytorch学习笔记(3)--dataset使用

    下载数据集 import torchvision from torch.utils.tensorboard import SummaryWriter dataset_transform = torch ...

  5. 逆向学习物联网-网关ESP8266-05课程小结

    1. 移花接木 本章利用自己设计的网关代替体验系统中的网关,开启了分模块设计系统的设计模式. 2.透明传输 终端传输来的数据,以MQTT协议透明传输到云及其他订阅者,简化终端系统的设计. 3. 利用状 ...

  6. KinectFusion算法论文解读/代码解读随笔

    --2021.6.8 上图是kinectfusion的流程图,是整个系统的工作流.我们对上面的流程进行分析以及相关代码的解读,使用的代码库是pcl的Kinectfusion复现.(ps:因为我只在ub ...

  7. 一套高效的iOS面试题一套高效的iOS面试题

    runtime相关问题 runtime是iOS开发最核心的知识了,如果下面的问题都解决了,那么对runtime的理解已经很深了. runtime已经开源了,这有一份别人调试好可运行的源码objc-ru ...

  8. 力扣:面试题58 - II. 左旋转字符串

    菜鸡小白不禁感叹:C++真好用!!! 题目描述: 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串"abcdefg& ...

  9. 1903021126 申文骏 Java 第四周作业 Java分支语句学习

    项目 内容 课程班级博客链接 19级信计班(本) 作业要求链接 Java第四周作业 博客名称 1903021126  申文骏  Java 第四周作业 Java分支语句学习 要求 每道题要有题目,代码( ...

  10. 项目实训DAY6

    今天主要的工作是把功能界面丰富了一下,查阅了一下论文,将页面中添加了可视化元素:同时决定了最后几天的工作计划.