序
担任系统设计师的职位一年了,尽管自己到现在为止仍然是个不合格的设计师,虽然这一年以来也不是完全从事设计的工作,但毕竟站在这个岗位上,主要从事的还是系统设计方面的工作,加上自己也有志于在这个方向发展,所以做一个年度总结是有必要的,也希望能对希望进入设计岗位的朋友们有些帮助,同时也希望得到在设计岗位上有经验的同行们的指点。
这也是自己真正担任系统设计师这个岗位的第一年,尽管在以前的工作中也曾经负责过设计部分,但现在回顾起来,觉得如果不在这个职位上,很多时候是无法了解到这个职位应该做的事的,自然也就无法去做了,在整个一年的工作中学到了很多的东西,同时也暴露了自己很多的不足,但总体而言自己是觉得已经踏入了系统设计的大门,但还需要不断的提高。
学到的东西
概述
一年以来作为系统设计师主要参与了公司的一个C/S结构的产品的研发、工作流系统研发的规划、一个办公应用系统的项目以及现在手头上的一个开发框架中。
详细
在从事C/S结构的产品的研发上,此产品的系统架构主要为插件体系架构,不过在实际实现过程中做的不够好,不过一直到现在插件体系架构仍然是我最为关注的,而且自己也在做这方面的事情,从设计角度的考虑上来说完成了远程调用、增量缓存等的设计实现方案,同时也根据场景运用了合适的模式。在这个产品中远程调用角度引入了同步、异步的机制,尽管后来异步一直没搞定,不过毕竟去摸索了,呵呵,现在倒是有解决方案了;增量缓存方面则是为了提升客户端与服务端的数据交互效率;模式方面运用的主要有命令模式、责任链模式、Template模式、Observer模式。这是自己第一次作为系统设计师负责整个产品的设计,现在回顾起来自己在那个阶段做的是不够的好,主要是在整体系统的设计上做的不够的周全,系统全貌的体现仍然不够,其实从一定程度上来讲就是架构不够完善,而且在架构的实现上做的也不到位。
在从事工作流系统研发的规划上,自己主要是作为规划人员对整个工作流系统的研发进行规划,同时也作为系统设计师对整个工作流系统进行设计,工作流系统一直是工作以来的重点,相对来说在这方面的经验比较的多,整个工作流系统研发的规划做的比较顺利,可惜后来由于公司的某些原因,无疾而终。
在办公应用系统的项目上自己作为项目经理和系统架构师双重角色,这里主要讲系统设计方面的工作,在这个项目上根据自己以往的经验完成了一个办公类应用系统的架构设计,同时完成了一个完整的权限系统以及一个基本的CMS的设计工作上,收获不小的项目。权限系统的设计也是在blog上曾经专门写了一个系列,而在CMS中的话主要是完成了缓存、模板机制、CMS模型的设计工作。
目前手头上则是一个开发框架的东西,这个东西则让自己开始真正的做框架级的设计,和实际项目的那种感觉是不一样的,难度大大增加,现在主要是做数据集的表现层组件、代码、配置文件的自动生成、缓存策略、通用子系统部分的设计和实现工作。
小结
一年以来觉得自己在系统设计方面学到的最多的就是产品的规划、设计、需求驱动的设计方式(需求到设计的映射)、领域模型的运用以及模式的适当运用。
最大的进步就在于逐渐的学会了从系统全局去分析系统,形成一个系统需求分析--->设计--->实现的步骤,对于系统的架构设计、概要设计以及详细设计也能够更加清楚的了解,设计的目的就是为了需求的实现,所以设计需要根据需求来产生。
架构设计中最重要的是根据对需求共性的分析形成系统的骨架,架构中考评的重点是对于系统实现的支撑
、扩展以及对非功能性需求的满足,同时还需要考虑架构中具体引入的技术或者框架,这个更多的是需要根据team、项目的大小、时间紧急等因素来决定,这也是架构设计中最为困难的一步,目前在做架构设计时更多的是参考业界内已有的架构体系,只是有些时候需要考虑特殊业务需求的实现方法,最后根据职责单一、内聚和松耦合的重要原则形成系统模块的划分以及接口的定义。
概要设计最重要的在于根据模块的划分以及接口的定义形成模块的设计和接口的实现设计,模块的设计受架构的约束形成。
详细设计则是具体的模块的设计的实现以及对象接口的定义。
关于架构、概要、详细设计将专门写blog来阐述。
另外一点来说就是在一个公司而言通常来说面对的往往是同类型的项目占多,这个时候架构的重用是非常明显的,在这种情况下为了保证公司的项目技术结构的统一以及技术人员的统一,通常会有框架的需求,这点以后也将专门写blog来阐述。
最后一点就是这一年来真正在架构体系的接触上来说应该就是插件架构体系,其他方面则主要是些系统方面的模型设计,如,自己在这个方面也是投入了巨大的关注,目前也在做这方面的东西,这个在我完成目前手上的东西后将专门来阐述插件架构体系以及其应用模式。
不足
在一年来各个项目的自己所做的设计来看,最大的不足在于自己缺乏一套系统的、理论的系统设计过程的指导,个人觉得即使这套理论不是很优秀也没关系,这个可以根据自己的实践经验来调整,但需要的是一个系统的过程,这点我觉得是自己现在最大的不足。
在自己的不足上,主要列了以下几点:
1、系统的、理论的系统设计过程的学习
需要有个清晰的系统设计过程的体现,并能足以明确的说明其形成的过程。
2、需求驱动以及领域驱动的深入实践和改进
设计对于需求的满足性以及符合性的体现。
领域模型驱动的体现以及建模的体现。
3、加强技术基本功
作为架构设计师,最重要的是设计合适的架构,特别是作为国内目前大部分的中小企业来说,面对的系统其实在业界内都是有成熟的架构体系的,关键是要根据team、时间等方面因素来做出选择,这个时候就要求架构师对于各种技术的选择、框架的选择需要有个准确的判断。
4、架构的合理性
这点和3中说的有重复,就是如何做出一个适合一定背景的架构?
5、模式的合理运用
对于模式的运用需要更加的纯熟,包括分析模式、架构模式和设计模式。