如何学习一个新的系统

学习系统主要分为三个部分

一、业务学习可以从如下几点寻找答案

系统所在行业的情况是怎样?

系统的目标用户是谁?比如是给公司高层做决策用?给运营或客服用?还是互联网用户用?

平均有多少人在使用?高峰期多有少人在用?

系统有什么业务价值?有哪些指标可以衡量系统业务价值?

系统有哪些功能模块?

系统有哪些领域概念?梳理下系统的领域模型。

系统的关键业务流程有哪些?关键业务流程是怎样?

系统的非功能性需求有哪些?如性能、质量、扩展性、安全性等。

系统未来的发展规划是怎样?

二、技术学习

技术学习主要学习系统的架构、如何实现、系统的运维等。描述一个系统的架构有五视图方法论,五视图分别是:逻辑架构、开发架构、运行架构、物理架构、数据架构。

【1】逻辑架构

逻辑架构着重考虑功能需求,系统应当向用户提供什么样的服务,关注点主要是行为或职责的划分。常用表达图形,静态图有包图、类图、对象图,动态图有序列图、协作图、状态图、活动图。逻辑架构的核心设计任务是模块划分、接口定义、领域模型细化。

常见问题:

有哪些子系统或模块?系统之间是什么样的关系?

对外上下游接口有哪些?对接人是谁?

关键业务流程怎么实现的?用类图、序列图等方式表达出来。

【2】开发架构

开发架构关主要关注系统源代码、第三方SDK、使用的框架、中间件、工具包。

常见问题:

代码在哪?

包怎么划分的?怎么分层?如 mvc、controller-service-dao。

用了什么框架?如 ssh、dubbo。

用了哪些工具包?如 apache commons、guava。

用了哪些中间件?如 kafka、windQ、ucc,scm,rsf等,

依赖哪些平台?如scm,windQ,kafka,duts等。

【3】运行架构

运行架构的着重考虑运行期质量属性,关注点是系统的并发、同步、通信等问题,这势必涉及到进程、线程、对象等运行时概念,以及相关的并发、同步、通信等。

常见问题:

系统能支撑多少 qps ?峰值 qps 多少?

与上下游系统怎么交互的?rpc?http?同步还是异步?

【4】物理架构

物理架构的设计着重考虑安装和部署需求,关注点是目标程序及其依赖的运行库和系统软件最终如何安装或部署到物理机器,以及如何部署机器和网络来配合软件系统的可靠性、可伸缩性、持续可用性、性能和安全性等要求。

常见问题:

系统如何发布部署?有哪些部署环境?

系统有多少台机器?

系统部署怎么部署的?关注接入层,部署方式,如集群部署、分布式部署等。

有没有容器化?

有没有多机房部署?

【5】数据架构

数据架构的设计着重考虑数据需求,关注点是持久化数据的存储方案,不仅包括实体及实体关系数据存储格式,还可能包括数据传递、数据复制、数据同步等策略。

常见问题:

数据存储在哪?用了什么数据库,如 oracle、mysql。

梳理 E-R 图。

数据量有多少?是否有分库分表?

用了哪些 nosql 库?

有哪些数据同步任务?

大数据框架的使用情况如何?

【6】系统运维

系统运维重点关注什么时候会出问题,出了问题怎么解决。

常见问题:

什么时间容易出问题?比如电商双十一,对系统的压力很大,这时候很容易出问题。

对关键功能是否有监控?需要看系统有配置了哪些报警项,监控了哪些方面。

出了问题怎么解决?日志在哪?是否有全链路跟踪?是否有一些紧急操作,比如开关配置、降级、限流配置。

系统有哪些坑?找开发同学回顾历史问题,以免踩坑。通过同事总结的 case,或者与负责的产品、运营、技术与了解。系统总会有一些坑,需要把这些坑填上。历史代码经过多次迭代总会导致复杂度高(分支、嵌套、循环很多),存在设计漏洞,性能隐患等,很难维护,这些就需要我们去重构了。记住有一句话:填的坑越大,能力越大。

运营、客服反馈的常见问题有哪些?

三、实战

做需求、修 bug、重构等方式,亲自动手编码、调试、测试、上线。

如何学习一个新的系统相关推荐

  1. 如何着手学习一个新的PHP框架

    如今的PHP框架层出不穷,名气也各不相同.如何快速掌握一种框架?看看本文吧~ 如今的PHP框架层出不穷,名气也各不相同.我不是这方面的专家,甚至不能熟练地使用其中的一种,所以就不作推荐了.这里我要讨论 ...

  2. 学习一个新领域的知识的最佳方法和最快时间各是什么?

    Liu Cao ,「学习方法」是个伪命题 玉某人.冷峻.淡之 等人赞同 有个TED演讲简直是为这个问题量身订做的. The first 20 hours-How to learn Anything. ...

  3. 如何学习一个新的PHP框架

    2019独角兽企业重金招聘Python工程师标准>>> 如今的PHP框架层出不穷,我不是这方面的专家,甚至不能熟练地使用其中的一种,所以我不做推荐,也不想讨论哪些算是框架哪些不算框架 ...

  4. 如何学习一个新的计算机概念(协议等),如snmp? 上官网学习【官网集合】

    snmp学习,不要仅仅只在百度上翻阅.要养成习惯,去snmp的官网,读英文官方文档.这里会有一手的教程.源代码.命令行. Qt官网:https://www.qt.io .https://doc.qt. ...

  5. 快速学习一个新的模块

    1.模块名.__doc__查看函数简介,为了便于查看,采用print(模块名.__doc__)打印出来,这样的格式便于查看. 2.采用内置方法dir()查看模块的变量.函数.类等等:采用"模 ...

  6. 华为鸿蒙系统是怎么样的一个系统,华为手机是什么系统,鸿蒙操作系统是一个怎样的系统...

    用来这么久的华为手机,大家知道华为手机是什么系统么?大家对EMUI和安卓之间的关系有所了解么?知道EMUI有什么特色么?接下来我们就来一起了解一下华为的EMUI系统吧. 华为手机是什么系统?目前华为大 ...

  7. qemu学习之添加一个新machine

    qemu学习之添加一个新machine 1 xlnx-versal-virt machine所在的代码 1.1 声明一个新的machine 1.1.1 xlnx-versal-virt machine ...

  8. 3.2 实战项目二(手工分析错误、错误标签及其修正、快速地构建一个简单的系统(快速原型模型)、训练集与验证集-来源不一致的情况(异源问题)、迁移学习、多任务学习、端到端学习)

    手工分析错误 手工分析错误的大多数是什么 猫猫识别,准确率90%,想提升,就继续猛加材料,猛调优?     --应该先做错误分析,再调优! 把识别出错的100张拿出来, 如果发现50%是"把 ...

  9. Linux学习-25-useradd命令:添加新的系统用户

    8.9 Linux useradd命令:添加新的系统用户 添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号.用户组.主目录和登录Shell等资源.刚添加的账号是被锁定的,需设置密码,才可 ...

最新文章

  1. 微服务化后,这几点一定要注意
  2. linux shell合并文件命令paste
  3. oracle列设置标题,oracle实现某一列的值转换为列标题
  4. Java中的DatagramPacket与DatagramSocket的初步
  5. word无法打开请去应用商店_word文档打不开的4种解决方法
  6. HDMI视频光端机常见故障问题及解决方法
  7. 用vs命令提示符来使用 Installutil.exe来安装和卸载Windows服务
  8. web后端http协议使用过程中安全防范及https协议实现原理
  9. QueryPerformanceFrequency使用方法--Windows高精度定时计数
  10. 高接低挡,Isilon三款新品铺开战线
  11. 【底层原理】x86-64体系下一个奇怪问题的定位
  12. list元素求和_C# lamda =gt;与 数组 list,简单应用
  13. 物联网技术及应用计算机,物联网的关键技术及计算机物联网的应用
  14. 六足仿生机器人的控制与实现
  15. 不到最后一刻,绝不放弃!
  16. awk 的内置变量 NF、NR、FNR、FS、OFS、RS、ORS
  17. 马云:你穷,是因为你没有极度渴望成为成功的野心
  18. 关闭ubuntu18.04软键盘及多指操作
  19. Ubuntu16.04搜索不到wifi
  20. 电脑维修不求人:电脑常见故障维修大全及解决方法

热门文章

  1. 谈谈Java的try..catch...
  2. 谷歌浏览器chrome假死、卡死、经常无反应,火狐firefox闪黑格子的解决办法(显卡/驱动兼容问题)...
  3. jquery插件函数传参错误
  4. GLCM opencv
  5. 数据平台建设的几种方案
  6. php项目打不开DNS,电脑无法打开网页显示错误代码dns_probe_possible怎么解决?
  7. python能处理图片吗_python的Image和skimage处理图片
  8. python查看类的属性和方法_python—类的属性和方法总结
  9. linux代替ps的软件,Photoshop的开源替代品 图像编辑器GIMP迎来25岁生日
  10. AcWing 900. 整数划分(完全背包计数问题)