聊聊系统设计吧

系统设计, 理论上算是计算机工程领域的一个过程. 但是, 就像计算机的大部分领域一样, 并不是科学, 是艺术, 计算机就是披着羊皮的狼, 看上去是科学, 其实不是.

所以, 某些大牛可以吼: 数学没有用.

哦, 无知就是力量. 数学于计算机, 是本质

但是, 一般__情况下, 不用数学也可以写一般__的代码.

上面这一段纯属扯淡, 完全没有营养好不好?

###作系统设计, 我一般这么弄:

####阶段目标:

  1. 纸面阶段, 我一般解决几个问题:
    • 草草的草图.
    • 各种关系的草图.
    • 基础数据和核心数据关系的草图.
      - mindmap阶段:
      - 核心系统的核心架构
      - 核心数据之间的关系
      - 信息架构/业务逻辑关系架构
      - 泳道图阶段:
      - 关键业务逻辑
      - 主业务逻辑
      - 文本工具阶段:
      - 核心逻辑设计
      - 接口逻辑设计
      - 版本管理贯穿整个过程, 我们使用git作分布式版本管理. 这货太帅了.

####工具

  1. 最重要的工具是纸, 笔, 电话. 找需要找的人了解情况. 这是最基础的工具, 兵器之王: 拳头.
    • 有任何情况没了解到, 就继续找人, 相信我, 那是因为你没有找到合适的人.
    • 感谢moto, 高通, 苹果我们现在有了手机, 可以更方便的联系到我们要找的人.
    • 虽然最好是当面了解情况, 但是, 在现在社会, 想要当面观摩一个活人有多难, 大家都深有体会吧. 就连做爱, 很多创业o2o公司都嚷嚷着要虚拟化了.
    • 所以不要害羞, 打电话, 发微信, 用qq, 旺旺, 丁丁, 陌陌等等你一切知道的手段联系他吧. 顺便说, 不是两字重复的im工具一定会灭亡, 比如来往.
    • 纸面画好的内容, 最好能贴在墙上, 最好拍照存档.
  2. 不那么重要的工具: freemind.
    • 纸笔用的差不多了, 有好几张纸的素材了, 这个时候需要理一下思路.
      1. 我推荐使用古老的freemind. 这个应该是最早的mindmap工具,
      2. 虽然不够新潮, 但是, 功能实用, 尤其是快捷键, 非常好.
      3. 啥时候能够像其他文本编辑器一样, 支持emacs快捷键, 就好了.
      4. 但是, 我要说的是, 从0.9之后, 可能是换了程序员, 代码质量有严重的下降. 并且包尺寸急剧变大.
      5. 如果大家要用她, 那么, 有一个要点, 需要先打开程序, 再去双击打开文档.
      6. 如果大家不想用它, 那么可以使用其他的mindmap工具.
      7. mindnote, 后起之秀很漂亮, 同样漂亮的还有免费的xmind.
      8. 不推荐mindmanage, 收费而且丑.
  3. 不那么重要的工具: atom, macdown, 编辑文本很好用.
    • ulysis也很好用, 适合搞连续剧式的系统分析,
    • typora也是很好用的markdown, 可惜, 我搞不明白他的黑色背景咋搞.
    • 明白了, 可以直接使用themes, 脑子僵化了, 总觉得这种设置应该在配置里面, 结果发下竟然在菜单里面直接有这个一级菜单. 果断切换typora作为主要markdown工具.
  4. 泳道图工具: omni graffle, 反正这是一个通用的矢量图工具, 包括低保真原型也是他的范畴.
  5. 原型工具: sketch,
    • 这是一个伪装成位图工具的矢量图工具,
    • 普遍细致程度超过omni graffle,
    • 画的时候要注意多用模板(symbol), 不用symbol, 那么sketch的优势完全发挥不出来.
    • 另外, 不要用artboard, 那个货调整起来太烦. 多用group, group配合lock, 效果=artboard, 但是调整方便太多了.
      - github, 最好的留在最后, 工具之王, 没有这个工具我就活不下去了.
      - 如果, 没有他, 我们之前这些东西放到哪里呢?
      - 如果, 没有他, 我们就没有分布式, 支持markdown的wiki用.
      - 如果没有他, 我们就没有分布式, 支持markdown的blog用.
      - 其实cms也可以用它这套弄.
      - 图片, 设计稿等等文件可以git控制,
      - 文本直接markdown, 放到wiki控制.
      - 现在这个blog也是在github上面.