系统设计过程

来源:互联网 发布:iphone已停用备份数据 编辑:程序博客网 时间:2024/05/22 00:49

对系统设计过程的思考

系统设计是如何将一定的需求从无到有实现出来或者如何解决既有问题的系统性描述。系统设计不是闭门造车,需要借助以往的项目经验积累,需要有相对比较开阔的视野,尽可能熟悉和了解常用的各种技术。在特定公司做项目,项目必然依托于特定公司的技术积累,异步调用框架,安全框架,服务框架、定时调度等等,因此还要尽可能熟悉和了解公司内部的常用技术及系统。拥有越开阔的视野,越丰富的经验积累,在设计各种系统时就会越游刃有余,所做出的设计不一定是最NB的,但一定要是最实用和最适合特定项目和公司的。设计应该是很灵活的,不会是呆板的,千篇一律套用某个成功的项目经验。需要能够总结以往的项目经验,并灵活运用于未来的项目中。

设计通常有分析问题,总体概要设计,模块详细设计,编写设计文档等几个阶段,是一个从无到有,从粗到细的过程。


首先是分析问题阶段,此时需求已经确定清楚,明确了要开发一个什么东西,主要有哪些功能。此时应该集中精力关注如何实现功能,刚刚分析问题的时候,你会感觉到问题很多很多,什么都想不清楚,没有关系,此时需要记录能够想到的所有问题。针对所有问题进行重要优先级排序,找出影响项目的关键问题。针对性的对每个关键问题进行思考,可以通过画时序图等方式帮助分析,经过这个过程,你会了解所需开发功能的细节。可以通过不断的完善时序图促进对功能更细节的思考。经过该阶段的分析,可以初步整理出系统涉及到的表及字段信息,和其他系统交互的接口信息。

在对关键问题进行逐一分析之后,此时基本上对系统有了总体上的把握。此时就进入了总体概要设计阶段。可以画系统结构图、系统部署图帮助自己更好的把握整体。这个阶段不但要关注如何实现功能,还要考虑实际的非功能性需求。针对每个关键问题,找相关领域专家咨询,
可能有几种不同的解决方案。这个阶段的目标就是考虑清楚所有非功能性需求,如用户量、访问量、数据量、性能、安全、并发、日志、异常监控、可用性、可靠性、健壮性、容错性等,然后根据项目人员组成,资源情况,项目目标、价值等方面比较每种方案并最终做出选择。没有最佳方案,只有最适合的方案,进行权衡,选取最适合的方案。方案定下来后,如果有几种技术都可以实现该方案,需要根据学习成本、开发成本、维护成本、风险等方面决定采用哪种技术实现。最后还要产出数据库设计、外部接口设计,并完成系统模块划分。


此时关键问题的解决方案和实现技术都已经确定下来了,对系统整体和边界有了比较深刻的认识。此时就进入到了详细设计阶段。依据概要设计阶段产出的模块划分图,可以分模块进行详细设计。该阶段的目标就是指导开发人员完成相应模块的编码。再时间允许的情况下,尽可能的详细。该阶段需要定义领域模型对象,完成详细类体系结构设计,并对每个模块的内部实现进行设计,涉及到的业务逻辑定义清楚,实现算法描述清楚,可以采用流程图、状态图等来帮助理清业务逻辑。最后定义清楚项目工程代码包结构,约定好统一的代码风格和代码格式化模板。该阶段的产出对开发最具指导意义。同时需要根据具体模块详细设计进行任务分解,并安排好开发顺序,核心内容、被依赖的部分应该先于其他任务的开发。


接下来你应该着手编写设计文档,好的设计文档可以减少沟通和理解成本,让其他开发人员更容易理解设计意图。之前的各个阶段,基本上整理好了编写设计文档所需要的各种素材,此时要做的就是把各种素材组织到设计文档里面。

原创粉丝点击