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传入数据库
-> 和其它系统平台或者模块存在的关系:
--> 了解当前平台和系统所承担的是什么角色的前提下,了解具体的实现方式,整理接口文档等等;