软件工程之设计文档
一、前言
软件设计文档在学习软件工程课程中提到很重要的环节。在实际开发中工程师往往忽略这个工作,并且在敏捷开发盛行的当下,越来越多的工程师不喜欢写文档,不喜欢阅读文档,然后每次项目复盘都会提出一个总结,软件设计文档不全或者缺失的问题,导致了设计不合理、变动大、设计没对齐的问题。
不管是瀑布开发采用线性的开发流程,按照预先规划的顺序依次进行需求分析、设计、编码、测试和维护等环节。每个环节都有明确的交付物和里程碑。开发团队在完成上一个环节后才能进入下一个环节;还是敏捷开发采用迭代和增量的开发方式,开发工作被划分为短期的迭代周期,每个迭代周期通常持续数周到数月。在每个迭代周期中,团队会完成一部分功能的开发,并进行测试和评审。随着迭代的进行,产品逐渐完善。两种方式都需要在开发过程中提供设计文档。本文就记录一次设计文档编写包括的要素。
二、文档结构
三、结构介绍
1、引言,对项目整体情况的概况。包括①项目背景,提出这个项目的世界背景、社会背景、公司背景、行业背景阐述项目的必要性;②业务现状,描述当前未建设系统前业务运行情况,业务处理大致流程,当前业务问题,当前业务问题导致的效益问题;如果存在旧系统,旧系统带来的问题。③项目预期,建设项目目标,社会的要求,公司高层的战略,给业务带来的效益,给整个公司带来的效益(数据说明)。④术语与缩写解释,描述系统涉及的专业的业务术语、全局缩写解释等。⑤参考资料,系统设计文档参考的资料来源。
2、概要设计,对项目的软件整体概要设计阐述。包括①软件概述,描述软件主要涉及的内容、功能、实现目的,从系统层面阐述。②模块设计,首先绘制系统功能架构图,对系统模块的划分、功能项的归类,使用架构图的形式呈现,从而对系统功能一个直观的理解。然后分别通过概要性、总结性的对各个模块、功能项的介绍。③业务流程,使用时序图、活动图、泳道图绘制系统的核心业务流程,对业务流程的简要描述。④系统用例,描述系统相关的角色、角色的操作与权限或者使用用例图详细划分用例。⑤接口设计,包括内部接口与外部接口的设计,通过系统的接口(接口名称、接口请求方式、加密方式、接口地址、传入参数、传出参数、错误码信息、异常信息)。⑥非功能性需求,包括系统性能需求比如查询检索、统计报表、接口处理、并发处理的响应速度最大值,并发处理的用户并发访问量、CPU、内存状态。系统安全性需求比如系统密码复杂度、系统登录验证码、SQL注入风险、其他安全漏洞攻击等防范措施、系统级的异常处理等。⑦系统兼容性需求如浏览器、设备的兼容性要求。
3、详细设计,对各个模块的各个功能项的详细描述,主要内容包括详细描述该模块实现的功能,各个功能项的功能描述,数据项说明(数据项名称、描述)、功能清单(新增、修改、删除、查询、导出等)、业务规则、具体算法、模块或功能的业务流程图、原型设计、类图。通过上述项从不同的维度说明功能,从而提供数据表设计、模块设计、功能设计、接口设计、代码设计的指导工作。当然上述项越多、越详细则开发越明确、越清晰。
4、数据库设计,对系统的数据表、存储设计方案的描述。包括数据存储设计,使用关系型数据库、非关系型数据库、其他数据库、缓存数据库的选型、理由、使用方式的阐述,通过数据存储架构图呈现形式整个系统数据存储方案。数据表设计对系统涉及的数据表的罗列、说明。数据表详情对数据表的主键、主键类型、索引字段、字段名称、数据类型、允许为空、默认值、约束关系、mysql脚本、包括E-R关系图。通过存储设计、表概况、表详细设计、E-R图呈现整个数据库的设计。当然对于数据库设计可以单独成文档个在详细编写。
5、系统架构图,对系统各个维度通过架构图的绘制,使用直观方式呈现整个系统包括业务架构图、系统架构图、技术架构图等图表说明。
四、总结
系统设计文档是开发过程中重要一环,包括对单方向的设计文档如技术的技术文档、数据存储的数据设计文档、流程引擎的流程引擎设计文档等,通过使用架构图、UML图、E-R图、流程图、表格、接口文档、数据统计多维度进行描述。开发者不太愿意阅读大段的文字信息,所以需要结合图表的方式进行编写,逐渐培养开发阅读设计文档的习惯,并且以设计文档为依据进行开发系统,从而让开发团队保持一致的系统目标、系统认识,减少开发偏差。当然开发过程不是要设计文档编写完成才开始开发,而是对文档不断完善、调整、讨论的过程,最终归档形成知识库。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)