设计文档的心得——每天进步一点点

设计的思考步骤:
1、每个机能的启动与终了要优先考虑,确定启动与终了的触发条件;
2、每条函数调用与事件的发送都要考虑系统状态以及竞合的处理
3、未虑胜先虑败,每次函数调用和事件的传递要优先考虑不成功的情况,如果不成功,需要做什么样的failsafe
4,、函数调用与事件的发送会有时间的延迟,两个模块的通信,发送与接收之间会有时间差,如果这段时间差内又有新的调用或时间发送需要怎么处理(函数调用的处理方式还不太一致,事件的处理可以将新发送或接受的事件写进waitqueue,等系统完成上一action的完成,退出busy后,再从waitqueue中读取事件进行处理);
5、系统设计的时候要考虑模块间的通信方式,即进程间通信采取哪一种,目前socket是C/S模式中最常用的进程间通信,优点在于有唯一的标识,数据传输可靠;
6、基本设计要有状态机与状态迁移表:
①要列出所有的状态与触发事件;
②写状态迁移时用十字交叉法,即当前状态收到某一事件的action与迁移,至于根据栏,我目前接触到的都是用 - 代替,没有具体写些什么
7、如果是新规设计,模块构成图要在第一步做,而且一定要让客户认可后再画时序(我就吃过一次这个亏,基本设计完成后,客户说模块设置的太细致,要求再简单些,然后就重做了时序,虽然重做很简单,但毕竟浪费了工数);
8、V字模型开发时,做的任何文档都要符合上位文书的要求
9、时序中如果有REF,要避免循环参考(即A参考了B,B又参考了A);
10、完成某一机能时,要先有申请资源的操作,对相关函数、操作handle、分配到的内存空间等进行初始化;
11、没完成一次函数调用或事件操作后,要考虑下一步是否有不同的场景,如果有,要加ALT分别处理;
12、每次操作完成后,要考虑系统状态的更新;
13、所有操作完成后,要将系统设为IDLE状态,并将资源释放(按照初始化时的顺序,反着进行);
14、failsafe : 当需要确保两模块间通信成功时,可使用callback机制,timer的时间设置要符合有式样依据;
15、模块通信完成后,要保证状态保持一致;

设计修改的思考步骤:
1、为什么要修改,目的是什么;
2、增加或删除的流程是做什么用的,为什么这么做,修改后会不会因其他流程发生改变;
3、如果增加请求事件或函数调用,确定传入的参数数量和参数值是否正确,是否需要返回的事件或返回值;
4、事件与状态要分清楚,事件触发状态的改变;当系统处于busy状态时,要将新接收到的事件写进waitqueue,系统解除busy后,再将待处理事件读出,处理。

持续更新……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值