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

来源:互联网 发布:淘宝网晚礼服 编辑:程序博客网 时间:2024/05/16 14:25

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

  • 模块内的数据结构进行设计。比如模块中类、结构体的设计
  • 对数据结构进行物体设计。比如数据库表的设计,文件存储的设计,文件存储目录的设计
  • 每个模块进行详细算法设计。比如每个方法的实现算法,对方法的实现画出流程图
  • 编写详细设计说明书。详细说明每个方法的输入和输出。
  • 详细设计评审报告。
现在公司都使用敏捷开发,认识敏捷开发:
  • 以用户需求进化为核心
  • 采用迭代、循序渐进的方法进行软件开发。
敏捷开发中详细设计的目标:
  • 让代码保持简洁。比如在详细设计时使用规范的命名来提高程序的可读性
  • 让设计拥抱变化。从需求的本质出发来设计类和方法,来提高它的灵活性
  • 在产品迭代中“越跑越块”。
详细设计对技术团队的好处:
  • 为构建高并发、高可用和高扩展的应用打下良好的基础
  • 在产品迭代中“越跑越块”。
  • 有效降低程序“推到重来”的概率
  • 减少产品运行中的错误。
详细设计对开发者个人的好处:
  • 更加清晰、严谨的逻辑思维能力。
  • 良好的面向对象设计能力。
优秀的详细设计,需要具备一下能力:
  • 良好的面向对象思维
  • 懂得如何在设计思路、开发周期、业务需求之间取舍
  • 熟悉产品技术架构模型
  • 深入了解产品行业,熟悉业务的细节,并能洞察业务未来
详细设计初学者的学习思路:
  • 从为每个方法、每个类起个好名字做起
  • 培养实现代码前,做详细设计的习惯
  • 让总结成为一种习惯
推荐书籍:
  • 代码整洁之道
  • 重构-改善既有代码的设计
  • 敏捷软件开发:原则、模式和实践
  • 设计模式(大话设计模式、设计模式之禅)
  • 高效程序员的45个习惯(团队管理、持续学习)
详细设计有“章法”,但没有“公式”
“章法”:规范,比如命名、注释等。
这些不是“公式”:设计模式、相同业务功能的经典案例等。

  • 详细设计永远把解决当前问题,放在第一位。
比如一个积分兑换系统实现使用积分可以兑换话费功能。此时我们会想到使用设计模式中的策略模式,以便支持各种规则的兑换。但是当前第一版的需求只是兑换话费,现在引入策略模式会增加代码的复杂性,是不值得的。
  • 详细设计中,欢迎“拿来主义”。优先考虑使用市面上的成熟产品。优点:节省大量的开发成本、时间成本、人力成本。缺点:个性化需求、依赖第三方,如果第三方软件不能使用,那么可能整个程序就无法使用。
如何表达设计
UML作为表达详细设计的缺点:
  • 团队成员都需要懂UML图
  • UML转换为代码,需要一定的时间
  • 在需求变化中,UML很难保持即时性
UML并不适合,在追求简单、快速、拥抱变化的详细设计中来表达设计。

文档作为表达设计的一种方式,完善的文档可以记录系统的设计过程和设计思路。在传统的软件开发中,通常把文档作为需求分析、概要设计、详细设计的产物。
优点:经验开发继承、加深系统了解、提高写作功底等。
缺点:开发周期增加、增加文档维护成本、很多开发人员不乐易等。

使用代码表达设计,详细设计时直接通过编写代码以及代码注释来表达自己的设计思路。
在详细设计过程中,产生如下具体产物:
  • 设计实体类
  • 设计前后端调用方式以及数据格式
  • 设计业务接口。就是定义输入和输出,以及业务接口的实现方式
  • 设计数据库访问层接口
  • 设计数据库表结构,字段、字段类型、索引等。
UML:适用于系统设计、详细交流设计、设计评审、系统设计文档等。
代码:适用于敏捷开发中的详细设计
0 0