五 业务流程图
聊到这里,其实还是一行代码也没写,呵呵,不过我们已经成功了一大半。架子已经有了,现在就差项目的业务流程了。曾记得有次面试,面试官鄙视做客户端或桌面应用程序的人,让我感到很不爽,不过后来这个面试官居然成为我的领导。如果谁敢鄙视桌面应用程序,那我就会问他,中国除了求伯君的WPS,还有什么比较拿得出手的软件呢?Adobe、Autodesk有谁能超越?其实桌面应用程序的业务流程复杂度远远超过服务器业务流程的复杂度。如果谁把服务器的业务流程设计的如同桌面应用程序,我想他一定是活得不耐烦了。
如果是设计终端,一般我使用UML的活动图和时序图来描述业务流程,当然也需要结合产品经理们画的流程图了。如果是设计服务端,我往往什么图也不画,而是使用伪代码来描述。因为服务端的流程往往非常简单,它着重强调的是性能。如果终端也使用伪代码,那死定了,呵呵!在写伪代码的过程中,核心业务类就基本确定了,接口也可确定个大概(功能可以确定,但参数往往难以确定)。这里捎带提一句,我以前追求的GOF设计模式,在这里就可以很好滴发挥作用了,OOA的分析模式也可以被充分利用了。
其实到了这一步,几乎架构设计就基本完成了。但还有三个比较大的东西需要我们做一下,那就是数据结构、算法和接口协议。不过这三个东西是划分到架构设计里还是概要设计里,就很难再区分了。我的经验是,尽量把核心的东西都定义出来,这样能保证后面的堆砌代码过程不会偏离自己的设计,软件质量有保障。如果把前面5张图纸叫做软件工程的话,则可以把伪代码过程叫做软件过程。当你把软件流程、数据结构、代码风格等等这些都定义好以后,后面的过程则会非常顺利且快速,项目绝对会按照自己预想的进度保质保量地完成。这里想说的话还很多,以后有机会再展开吧。