详细设计是软件开发中非常重要的环节,无论你是工作几年的技术大牛,还是只有一两年工作经验的小菜。可能你看到设计两个字,就觉得非常高大上,然而你只要在用心写代码,在思考如何定义方法,如何定义类,你都在做着详细设计。至于做的怎么样,那就另说了。
详细设计涉及哪些内容?
首先详细设计不同于架构设计,架构设计主要关注系统的架构模型、系统开发语言选型、系统数据存储方式选型、系统模块的划分以及系统模块间的关系,关键技术的选型,系统部署架构,系统硬件需求、系统的安全性扩展性等内容。
详细设计不同于代码实现,代码实现主要关注方法级别的算法实现,以及方法级别的调试,单元测试,以及各个模块间的接口联调。
那么详细设计是包括哪些内容?详细设计包括业务接口的定义、领域模型的定义、持久化层接口定义、关键业务设计模式的选用、关键业务模块的设计方案、关键方法的实现算法的选用等。当然如果web项目还包括请求响应接口的定义,我认为这是一个非常重要的工作。哪些地方可以使用ajax,哪些地方选用直接输出html。直接影响着响应速度以及用户体验。
详细设计需要具备什么能力?
1、深刻理解架构设计模型,理解为什么选用这种架构。这种架构对于目前系统的利与弊。
2、深入理解业务需求,并且能够预测部分需求的变化方向。能够理解业务的本质。
3、具备面向对象思维,熟悉面向对象的基本设计原则,熟悉设计模式、重构技术。
我只是暂时想到了那么多,还涉及其他能力。当然我也是在为达到以上的能力努力中。从以上可以看出,成为一名好的详细设计人员还是非常有难度的。这可能具备良好这种能力人少的原因之一吧。
详细设计重要吗?
当然对于一个小的系统或者一个简单的系统,详细设计做的非常好可能不是必须的。但是对于一个互联网产品,我认为还是非常重要的。现在很多互联网产品都提倡敏捷开发。在不断快速迭代的过程中,如果详细设计没做好的话,随着迭代版本的增加,代码会变得面目全非。甚至推倒重来。
1、详细设计决定着系统的质量。在软件系统开发过程中,可能一直存在这个问题,修了一个bug可能引起一堆bug,这个可能都不陌生。详细设计人员需要考虑设计的方方面面,比如职责如何分离,接口职责如何定义。可以有效减少这种情况出现的可能性。当然不能完全杜绝,_。
2、详细设计决定着系统的可扩展性。系统的扩展性,一直是一个头疼的问题。特别是在互联网产品中,需求变化之快,以及用户量增加又比较迅速。详细设计人员需要考虑业务方面的扩展性,也需要考虑一些性能上的扩展性(当然性能的可扩展性,大部分属于架构设计的范畴)
3、详细设计决定着系统的可维护性。可维护性指的是改正、改进、改动软件的难度,这个的控制大部分把握在详细设计人员的手里。详细设计做的好对于软件的迭代非常有利的。
4、详细设计决定着你需不需要加班。这个就不用说了。相信大家都明白。
我也是一位学习者
以上扯得够多了,本系统主要总结一些详细设计的方法,大家共同学习,首先我不是详细设计的大牛,只是菜鸟,之所以写本系列,主要是对于详细设计的一些思考总结分享给大家,使自己也能够技术上得到进步。对于本系列中的思考,非常感谢znyin,和他共事将近一年,学到了很多详细设计方法以及思想,给了我很多宝贵的实践机会,非常感谢,本系列也是我从他那学习的技术的总结。
本系列计划包括如下内容:
1、如何做详细设计之序
2、如何做详细设计之设计即编码
3、如何做详细设计之规范
4、如何做详细设计之设计原则
5、如何做详细设计之理解业务本质
6、如何做详细设计之重构
7、如何做详细设计之设计模式
8、如何做详细设计之总结
本系列文中观点仅是个人观点,欢迎讨论。
本文同步http://yywang.info,每天同步一篇,将全部系列同步至博客园