如何做详细设计之序
来源:互联网 发布:布施知子折纸作品集pdf 编辑:程序博客网 时间:2024/06/07 01:02
详细设计是软件开发中非常重要的环节,无论你是工作几年的技术大牛,还是只有一两年工作经验的小菜。可能你看到设计两个字,就觉得非常高大上,然而你只要在用心写代码,在思考如何定义方法,如何定义类,你都在做着详细设计。至于做的怎么样,那就另说了。
详细设计涉及哪些内容?
首先详细设计不同于架构设计,架构设计主要关注系统的架构模型、系统开发语言选型、系统数据存储方式选型、系统模块的划分以及系统模块间的关系,关键技术的选型,系统部署架构,系统硬件需求、系统的安全性扩展性等内容。
详细设计不同于代码实现,代码实现主要关注方法级别的算法实现,以及方法级别的调试,单元测试,以及各个模块间的接口联调。
那么详细设计是包括哪些内容?详细设计包括业务接口的定义、领域模型的定义、持久化层接口定义、关键业务设计模式的选用、关键业务模块的设计方案、关键方法的实现算法的选用等。当然如果web项目还包括请求响应接口的定义,我认为这是一个非常重要的工作。哪些地方可以使用ajax,哪些地方选用直接输出html。直接影响着响应速度以及用户体验。
详细设计需要具备什么能力?
1、深刻理解架构设计模型,理解为什么选用这种架构。这种架构对于目前系统的利与弊。
2、深入理解业务需求,并且能够预测部分需求的变化方向。能够理解业务的本质。
3、具备面向对象思维,熟悉面向对象的基本设计原则,熟悉设计模式、重构技术。
我只是暂时想到了那么多,还涉及其他能力。当然我也是在为达到以上的能力努力中。从以上可以看出,成为一名好的详细设计人员还是非常有难度的。这可能具备良好这种能力人少的原因之一吧。
详细设计重要吗?
当然对于一个小的系统或者一个简单的系统,详细设计做的非常好可能不是必须的。但是对于一个互联网产品,我认为还是非常重要的。现在很多互联网产品都提倡敏捷开发。在不断快速迭代的过程中,如果详细设计没做好的话,随着迭代版本的增加,代码会变得面目全非。甚至推倒重来。
1、详细设计决定着系统的质量。在软件系统开发过程中,可能一直存在这个问题,修了一个bug可能引起一堆bug,这个可能都不陌生。详细设计人员需要考虑设计的方方面面,比如职责如何分离,接口职责如何定义。可以有效减少这种情况出现的可能性。当然不能完全杜绝,^_^。
2、详细设计决定着系统的可扩展性。系统的扩展性,一直是一个头疼的问题。特别是在互联网产品中,需求变化之快,以及用户量增加又比较迅速。详细设计人员需要考虑业务方面的扩展性,也需要考虑一些性能上的扩展性(当然性能的可扩展性,大部分属于架构设计的范畴)
3、详细设计决定着系统的可维护性。可维护性指的是改正、改进、改动软件的难度,这个的控制大部分把握在详细设计人员的手里。详细设计做的好对于软件的迭代非常有利的。
4、详细设计决定着你需不需要加班。这个就不用说了。相信大家都明白。
我也是一位学习者
以上扯得够多了,本系统主要总结一些详细设计的方法,大家共同学习,首先我不是详细设计的大牛,只是菜鸟,之所以写本系列,主要是对于详细设计的一些思考总结分享给大家,使自己也能够技术上得到进步。对于本系列中的思考,非常感谢znyin,和他共事将近一年,学到了很多详细设计方法以及思想,给了我很多宝贵的实践机会,非常感谢,本系列也是我从他那学习的技术的总结。
本系列计划包括如下内容:
1、如何做详细设计之序
2、如何做详细设计之设计即编码
3、如何做详细设计之规范
4、如何做详细设计之设计原则
5、如何做详细设计之理解业务本质
6、如何做详细设计之重构
7、如何做详细设计之设计模式
8、如何做详细设计之总结
本系列文中观点仅是个人观点,欢迎讨论。
同步于yywang.info,每天同步一篇,同步至csdn
- 如何做详细设计之序
- 架构设计三部曲之如何做架构设计(转)
- 如何写详细设计
- 如何做设计
- 工程师如何做设计?
- 从零开始设计一款APP之如何做原型图
- 详细设计到底应该怎样做
- 如何写详细设计文档
- 如何写详细设计文档
- 概要设计与详细设计如何编写
- 华为设计总监:如何做设计决策
- 概要设计与详细设计分别要做什么
- 复习资料-软件工程之“详细设计”
- 详细设计之(人机界面设计问题)
- 如何做RAID5之图解
- 如何编写详细设计说明书(仅供参考)
- [软件开发]详细设计如何写
- 如何写模块的详细设计
- 图片上传--SpringMVC实现RESTful接口
- 池化方法总结(Pooling)
- 图片主题色提取算法小结(Node.js 版)
- java中常见的排序算法
- Java执行 oracle存储过程
- 如何做详细设计之序
- Hibernate缓存:一级缓存和二级缓存
- Java中的动态代理
- 架构、框架、模式、模块、组件、插件、控件、中间件的含义和区别
- MySQL性能分析工具profile使用教程
- redhat linux修改乱码
- LINUX终端乱码解决方法
- 在 OS X 上安装 Docker 管理工具 Panamax
- 在 V2EX 的开发环境里尝试了一下 OneAPM @livid