首页 > 个人学习某个系统或平台的3问式的整理和细化指引

个人学习某个系统或平台的3问式的整理和细化指引

i:三问:

是什么?

为什么?

怎么样?

ii:详细化问题指引:

是什么的目的在于确定系统的大致范围,明确目标:

->平台的主要功能是什么?业务流程是怎样的?业务范围有多大?

->主体框架可知吗?用了什么技术和功能组件?用了什么算法?

->系统或者平台是否留下有历史文档,版本跟踪的信息?获得它们。。

->主要的几个子功能是什么呢?怎么切割?

->是否存在有GUI的界面,在Gui是怎么划分功能的呢?

->有数据库么?什么数据库?

->这个平台或者系统,是否和其它系统存在关系?

  -->所有的关系列表应列明如下:

    1、包含和被包含

    2、依赖和被依赖

    3、完全独立



为什么的目的在于明确系统的设计思路,基本实现:

->系统的框架是不是比较陈旧,是否有用新式框架代替的计划?

->主体架构,各个模块的架构,具体怎么组成?模块和模块之间的交互怎么完成?上层和底层的依赖怎么完成?符合3大设计原则么?

->数据库的ER图能画出来?尝试画一个;

->系统和平台和其它系统若是存在关系:

  --> 包含和被包含:

    ---> 什么数据产生了互相的引用和依赖;

    ---> 在被包含的系统中承担什么角色:工人模块(只是提供一个或者某些服务),管理者模块(为其它几个模块提供逻辑和调度工作)

    ---> 在包含其它系统中承担什么角色:服务调用者,所有服务的总体统一者

  --> 依赖和被依赖:

    ---> 依赖和被依赖的是哪个部分的数据或者功能模块,具体是那些功能和数据?

    ---> 用什么方式或者技术进行依赖(WebService,WebAPI等等) ? 这些方式有历史的接口文档吗?获得它们。。

    ---> 在依赖和被依赖的过程中,承担的角色是什么? 一般是 服务调用者,服务提供者,甚至是服务转接者(比如ESB平台)

怎么样的目的在于明确能明确的大部分细节,也应当是耗时最长的部分:

-> 按模块了解具体的实现,模块之间有交互的,要回到是什么和为什么继续细化了解。。

  --> 若是留有旧的需求文档,试图完善需求文档,查看文档是否有功能的缺失

  --> 若是不存在旧的需求文档,

    i: 应先画出具体的结构图,从业务的逻辑入手,了解具体实现,再慢慢整理出需求文档

    ii: 或者从系统界面入手,分界面模块切割,其实也是从业务层面处进行的入手

       (

      提示: 可以通过试写某些常用代码的方式,做一个大概的了解,比如数据库的增删查改操作;

        )

-> 系统或者平台怎么和数据库进行的交互?

  --> 目前掌握到的特征方法有三:

    比较基本的ORM(看不见具体Sql),数据库直接映射到实体:Linq dbml,NHibernate,Entiy Framework等

    比较特殊的ORM(在某些不是代码的地方看见Sql),数据库不一定直接映射到实体:SqlMap等

    比较直接的方法:直接使用Connection的方法,把Sql传入数据库

-> 和其它系统平台或者模块存在的关系:

  --> 了解当前平台和系统所承担的是什么角色的前提下,了解具体的实现方式,整理接口文档等等;

转载于:https://www.cnblogs.com/link2vond/p/5959160.html

更多相关:

  • 文章:GVINS: Tightly Coupled GNSS-Visual-Inertial Fusion for Smooth and Consistent State Estimation作者:Shaozu Cao, Xiuyuan Lu, and Shaojie Shen代码:https://github.com/HKUST-...

  • 数据存储系统的经典书籍: 从数据系统的特性开始,先讲单机存储引擎 再到 分布式存储系统,最后到一些数据流的处理方式,作者深入浅出,译者更是精雕细琢,本书需要细品。 将持续阅读整理,先从理论走一轮,再找一些系统做一做实验。...

  • 常见的linux进程状态如下: 关于源文件xmid,可以从Mind-Mapping获取 这里借助进程状态来描述一下linux系统中的平均负载的概念 当我们感觉到系统变慢时,通常通过top和uptime命令来了解系统的负载情况 [root@pub-ncpu-ndb0 ~]# uptime21:06:13 up 8 days, 7:...

  • 围绕分布式存储(ceph)绘制的技能图谱可参考分布式存储ceph 技能图谱 相关的原始编辑文件可以从github-mindMapping下载 如有缺失、不足之处欢迎指正 CEPH架构 关于系统架构,这里主要是将CEPH融入操作系统架构之中 且是根据L版本进行绘制的 关于文件系统 :因为bluestore跳过了本地文件系统,同时封...

  • linux 系统崩溃完全没有操作空间的系统修复 1、通过U盘系统启动 2、修复文件系统 https://editor.csdn.net/md/?articleId=106213788 此时硬盘会被挂在到U盘系统下作为一个目录, 例如/dev/sda2 修复它: fsck -y /dev/sda2 很多时候都有效 3、修复g...

  • 天地会珠海分舵注:随着微信应用号的呼之欲出,相信新一轮的APP变革即将发生。从获得微信应用号邀请的业内人士发出来的一张开发工具源码截图可以看到,reacjs及其相应的FLUX框架altjs很有可能会成为前端开发主流。作为行业内人士,自己之前从来没有做过web及webapp开发,所以这方面算是一名小白。这段时间在忙完工作之余准备储备...

  • 习题5 2. (1)写出关系模式: 学生:R1= U1={学号,姓名,出生日期,系名,班号,宿舍区}; F1={学号->(姓名,出生日期,系名,班号,宿舍区),班号->系名,系名->宿舍区}; 班级:R2= U2={班号,专业名,系名,人数,入校年份}; F2={班号->(专业名,人数,入校年份),专业名->系名,(专业名,入校年份)...

  • 1 模块简介在python中常见的模块有三种,在python解释器中的内置模块,第三方模块和自定义模块。模块的有使用python编写的文件,有已被编译为共享库或DLL的C或C++扩展,也有使用C编写连接到python解释器的内置模块和把一些列模块组织起来的文件(文件包)。python使用模块内置模块,第三方模块以及内置模块,是pyth...

  • 简介 OpenCV是一个C++库,用于实时处理计算机视觉方面的问题,涵盖了很多计算机视觉领域的模块。  OpenCV有两个Python接口,老版本的cv模块使用OpenCV内置的数据类型,新版本的cv2模块使用NumPy数组。 对于新版本的模块,可以通过下面方式导入: import cv2 而老版本的模块则通过下面方式导入: i...

  • 一. 背景 在 CMakeLists.txt 中,某模块 A 通过 add_subdirectory 引入模块 B ,模块 B 通过 add_subdirectory 引入模块 C。模块 C 里面本身就是一个开源的动态库,比如 libtask。目的想要将 C 模块打包成一个 Target ,以便在 A 模块中中使用方便。 二. 旧...

  • 一、python中的模块 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt函数,必须用语句#include 引入math.h这个头文件,否则是无法正常进行调用的。 那么在Python中,如果要引用一些其他的函数,该怎么处理呢? 在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Ja...

  •  对于一些大型的项目来说,将项目的各个模块理清并进行管理,便于后续项目的维护,使用maven管理是很方便的,它可以很好的构建模块来设计项目的整体结构,对一些小型的项目不建议使用 1、新建父maven模块(idea版本为2017.2) 选择maven类型 点击next,填写GroupId和AtifactId 点击next 确认工...