(1)技术栈与源码目录结构设计
> 涉及到系统大功能模块的划分、重要任务集的确定;
> 功能模块的调用关系和层次关系的设计;
(2)业务模型与数据流设计(以实现应用级功能为导向)
> 明确软件的应用级业务(以实现应用功能为最终目标来设计,先不考虑其他辅助功能)流程和关键业务节点,提炼抽象构件,固化业务的软件框架为业务模型;
> 以流水线的形式设计“指令处理数据流”;
> 包括确定从新指令输入系统到执行器执行的整个过程中所涉及到的存储空间、数据结构、系统行为(既相关线程及其行为)。
(3)系统架构与类图设计(加入对非应用级功能的考虑)
> 提取“指令处理数据流”中所有的对象(操作系统内核对象),设计出“系统类图”;
> 该图应包含系统中存在的所有线程,以及线程之间的同步/通信机制(标志位、信号量、消息队列、共享内存、管道和套接字等)。
(4)线程状态机设计
> 根据“指令处理数据流”和“系统类图”来深入设计各个线程的“有限状态机”模型;
> 模型应涵盖线程所有可能的状态、各个状态的功能,以及所有状态之间的触发-转换事件。
(5)设计校验
> 检查(4)中设计出的所有线程“有限状态机”能否在“系统类图”所描述的架构中实现(2)中设计的“指令处理数据流”。
> 排查明显的死锁风险。