传统软件开发中的详细设计:

  • 模块内的数据结构进行设计。比如模块中类、结构体的设计
  • 对数据结构进行物体设计。比如数据库表的设计,文件存储的设计,文件存储目录的设计
  • 每个模块进行详细算法设计。比如每个方法的实现算法,对方法的实现画出流程图
  • 编写详细设计说明书。详细说明每个方法的输入和输出。
  • 详细设计评审报告。
现在公司都使用敏捷开发,认识敏捷开发:
  • 以用户需求进化为核心
  • 采用迭代、循序渐进的方法进行软件开发。
敏捷开发中详细设计的目标:
  • 让代码保持简洁。比如在详细设计时使用规范的命名来提高程序的可读性
  • 让设计拥抱变化。从需求的本质出发来设计类和方法,来提高它的灵活性
  • 在产品迭代中“越跑越块”。
详细设计对技术团队的好处:
  • 为构建高并发、高可用和高扩展的应用打下良好的基础
  • 在产品迭代中“越跑越块”。
  • 有效降低程序“推到重来”的概率
  • 减少产品运行中的错误。
详细设计对开发者个人的好处:
  • 更加清晰、严谨的逻辑思维能力。
  • 良好的面向对象设计能力。
优秀的详细设计,需要具备一下能力:
  • 良好的面向对象思维
  • 懂得如何在设计思路、开发周期、业务需求之间取舍
  • 熟悉产品技术架构模型
  • 深入了解产品行业,熟悉业务的细节,并能洞察业务未来
详细设计初学者的学习思路:
  • 从为每个方法、每个类起个好名字做起
  • 培养实现代码前,做详细设计的习惯
  • 让总结成为一种习惯
推荐书籍:
  • 代码整洁之道
  • 重构-改善既有代码的设计
  • 敏捷软件开发:原则、模式和实践
  • 设计模式(大话设计模式、设计模式之禅)
  • 高效程序员的45个习惯(团队管理、持续学习)
详细设计有“章法”,但没有“公式”
“章法”:规范,比如命名、注释等。
这些不是“公式”:设计模式、相同业务功能的经典案例等。
  • 详细设计永远把解决当前问题,放在第一位。
比如一个积分兑换系统实现使用积分可以兑换话费功能。此时我们会想到使用设计模式中的策略模式,以便支持各种规则的兑换。但是当前第一版的需求只是兑换话费,现在引入策略模式会增加代码的复杂性,是不值得的。
  • 详细设计中,欢迎“拿来主义”。优先考虑使用市面上的成熟产品。优点:节省大量的开发成本、时间成本、人力成本。缺点:个性化需求、依赖第三方,如果第三方软件不能使用,那么可能整个程序就无法使用。
如何表达设计
UML作为表达详细设计的缺点:
  • 团队成员都需要懂UML图
  • UML转换为代码,需要一定的时间
  • 在需求变化中,UML很难保持即时性
UML并不适合,在追求简单、快速、拥抱变化的详细设计中来表达设计。

文档作为表达设计的一种方式,完善的文档可以记录系统的设计过程和设计思路。在传统的软件开发中,通常把文档作为需求分析、概要设计、详细设计的产物。
优点:经验开发继承、加深系统了解、提高写作功底等。
缺点:开发周期增加、增加文档维护成本、很多开发人员不乐易等。
使用代码表达设计,详细设计时直接通过编写代码以及代码注释来表达自己的设计思路。
在详细设计过程中,产生如下具体产物:
  • 设计实体类
  • 设计前后端调用方式以及数据格式
  • 设计业务接口。就是定义输入和输出,以及业务接口的实现方式
  • 设计数据库访问层接口
  • 设计数据库表结构,字段、字段类型、索引等。
UML:适用于系统设计、详细交流设计、设计评审、系统设计文档等。

代码:适用于敏捷开发中的详细设计

软件开发中的详细设计相关推荐

  1. 软件开发中 常见英文文档 缩写(转)

    软件开发中常见英文缩写和各类软件开发文档的英文缩写: 英文简写 文档名称 MRD market requirement document (市场需求文档) PRD product requiremen ...

  2. 软件开发中的瀑布模型

    软件开发的流程 软件开发的流程有很多种模型,这里讲的一种软件开发的流程是瀑布模型     瀑布模型是将软件生存周期的各项活动规定为固定顺序的若干阶段工作,最终得到软件产品. 他的核心思想是按工序将问题 ...

  3. 软件开发中会使用到的图

    文章目录 软件开发中会用到的图 一.背景 二.图为了解决什么问题 三.不同流程中适合运用的图 四.实际的运用 五.结语 软件工程中的各种图 软件工程用的15种图 数据关系流图怎么画?这款软件教你轻松绘 ...

  4. 概要设计 英文_互联网知识大全:软件开发中和文档常见的英文缩写,还不快收藏...

    概要设计 英文_互联网知识大全:软件开发中和文档常见的英文缩写,还不快收藏... https://blog.csdn.net/weixin_39914243/article/details/11123 ...

  5. 软件开发中 常见英文文档 缩写

    软件开发中常见英文缩写和各类软件开发文档的英文缩写: 英文简写 文档名称 MRD market requirement document (市场需求文档) PRD product requiremen ...

  6. 软件开发中常见英文缩写和各类软件开发文档的英文缩写

    软件开发中常见英文缩写和各类软件开发文档的英文缩写: 文章复制粘贴来源于:http://blog.sina.com.cn/s/blog_7326867a0100yfdl.html 英文简写 文档名称 ...

  7. 彼之蜜糖,吾之砒霜——聊聊软件开发中的最佳实践

    作者:sherrywasp https://www.cnblogs.com/sherrywasp/p/9436623.html "描述一个事物,唯有一个名词定义它的概念,唯有一个动词揭露它的 ...

  8. 视频互动直播软件开发中的连麦问题分析

    直播行业发展至今,我们经常会听到很多朋友谈论"互动直播".那么何谓互动直播呢?其实互动直播的核心在于通过连麦技术,让视频直播有一个超过文字的更深层次的互动交流. 在视频互动直播软件 ...

  9. 统治软件开发中的著名定律

    文| https://www.timsommer.be/famous-laws-of-software-development/ 翻译| 码农翻身 和其他领域一样,在软件开发的世界中也有一些有趣而著名 ...

最新文章

  1. 阿里1688直播推荐算法实践
  2. Cocos Creator学习目录
  3. 概率论与数理统计中的算子半群 第一讲 Banach-Steinhaus定理2 Banach-Steinhaus定理的应用
  4. spark 持久化 mysql_Spark 从零到开发(八)nginx日志清洗并持久化实战
  5. MATLAB中:左右除法、逆inv、广义逆pinv的区别
  6. zabbix mysql.status_Zabbix 监控 Mysql 状态
  7. 常用计算机网络性能指标的是什么,什么是Bit?【计算机网络的性能指标】
  8. oracle在group by时某列有多个值的拼接
  9. CSS选择器必备的3个知识点
  10. 汇编语言---GCC内联汇编
  11. 这个城市推出黄金“外卖”!价值低于5.8万元的,只能摩托车配送...
  12. nginx https 根据应用不同的标识转发到不同的服务器端口
  13. 机器学习相关资料和书籍推荐
  14. 韩媒:开城韩商访朝申请或最晚25日出结果
  15. 名词用作动词举例_[名词的活用] 名词的活用例子
  16. Foxmail中配置Gmail实现gmail客户端收(转)
  17. 交通灯keil程序加2位数码管_51单片机红绿灯两个数码管显示实验报告
  18. 门限签名(1)——秘密共享
  19. Andorid微信刷脸支付使用过程解析
  20. MFC中CFile读取中文乱码

热门文章

  1. Code Wars游戏说明
  2. 磁盘阵列和存储服务器的区别
  3. Cannot find module 'chalk'
  4. margin-top不起作用???
  5. 基于ssm框架实现网上购物管理系统【附项目源码+论文说明】
  6. python终端命令执行提示找不到自定义模块
  7. 宝钢大型高炉控制中心介绍
  8. 前端性能优化:1.什么是前端性能优化
  9. 已知三边 求三角形面积
  10. 【超长序列建模】美团CIKM‘22:《Sampling Is All You Need on Modeling Long-Term User Behaviors for CTR Prediction》