概要设计、详细设计:概念、方法、实践步骤

2023-10-27

完整软件开发流程:


需求分析、概要设计、详细设计


1.  概念、方法、实践步骤

设计是指根据需求开发的结果,对产品的技术实现由粗到细进行设计的过程。根据设计粒度和目的的不同可以将设计分为概要设计、详细设计等阶段以便于管理和确保质量。设计内容也要根据软件系统的实际情况进行定义,比如对于交互性要求高的系统可以有视觉设计等等。

一般来说可以将设计阶段划分为概要设计、详细设计2阶段进行管理,程序设计可以结合项目管理、作业配分、开发团队的能力以及质量要求等因素来决定是否作为单独的阶段进行管理。

n  概要设计: 定义实现需求的工作产品技功能、技术构架,定义设计准则及共通处理方针,分解划分功能模块,定义各功能模块的功能和业务处理,定义模块间的接口关系。典型的工作产品有《概要设计书》、《设计准则》及《共通处理方针》。一般包括系统技术构架,机能一览,机能迁移图,数据库逻辑设计,数据文件逻辑定义,系统各单位功能模块及接口定义,设计准则及共通处理方针(外观、操作、错误处理、日志、提示信息、异常处理、命名规约、编码规约等方针)等内容。

n  详细设计:定义各功能模块的功能单元的详细实现,包括接口的物理定义,明确数据库/数据文件的物理定义等。典型的工作产品:《详细设计书》。典型的内容包括各模块的功能单元实现的详细描述,数据库物理设计,数据文件物理定义,接口物理定义,状态码物理设计,输出信息(MSG/LOG)设计等内容。

 

程序设计:结合具体的编码语言,编码过程中对代码的设计。根据经验对于团队中有大量初学者来说,进行一定量的程序设计可以提高编码的质量和效率。

 

2.    设计阶段的主要流程

设计阶段的主要活动包括以下内容:设计阶段的计划或规划、确定设计的准则、设计以及制作设计文档、设计产物评审等。

1.设计阶段的计划或规划内容为确定设计团队的组织并授权、评估设计阶段的工作量、明确设计的工作任务(WBS分解)以及完成时间、定义设计阶段的质量标准以及效率标准。这部分活动主要是PDCA中首要步骤,除上述内容外,还需要考虑项目管理中一些共同管理规划,比如风险管理、配置管理、干系人管理、变更管理、决策分析管理等等内容。在多人或团队作业的工作,制定合理的计划和规划是首要的步骤。

2.设计不同类型的系统其设计方法、方式等有很大的区别,比如图像处理系统、监控系统和ERP等管理系统的差异是显而易见的。因此设计阶段有个关键的活动就是确定设计准则,这个活动的主要目的就是根据系统的实际情况,选择最佳的实践,用最优的方法指导设计的进行。设计准则通常要考虑的内容包括:设计的内容、方法、工具、模板、命名规约、模块划分规则(尤其设计粒度)、质量以及效率评估方式等等。

3.设计以及制作设计文档:根据设计准则以及设计规划执行设计任务并制作设计文档多数情况不是一件复杂的工作,但是对软件系统来说却是一个迭代的、消化大量时间的过程。从我们讨论设计思路、形成初步草案、充分沟通、决策优劣、再修正、评审通过都需要理解、学习、反复迭代并花费大量时间。软件系统的设计无论采用什么形式,分层、抽象、归纳、汇总是设计的主要方法。分层和抽象是最关键的步骤,也是相对比较难掌握的,无论分层和抽象都是从分类开始的,比如功能的分类、业务的分类、信息的分类、控制模式的分类等等,只要能逐层分类就很容易进行分层和抽象。另外,归纳、汇总是常见的方法,也是体力工作,只要认真细致就能很好的完成。

4.设计产物评审:针对设计设计产物进行评审以及相关的沟通是确保设计质量的主要活动。从形式上,可以采用多种方法,比如设计小组评审、P2P评审、正式会议评审等等。

设计阶段的主要活动设计阶段的计划或规划、确定设计的准则、设计以及制作设计文档、设计产物评审等是个反复迭代的过程。本质上设计是个学习迭代的过程、通过不断的评审、确认、改善达到成熟,因此设计的保证手段主要是设计准则和评审。

根据软件项目类型的不同具体流程也有一些细节差异,每个软件开发组织可以结合业务特征具体定义,下面举例介绍2种典型的流程。

例:软件外包企业,工程类的典型流程(概要设计)

主要特征:

ü  流程强调客户的参与,比如对设计的计划、设计的成果的评审。

ü  强调对关键的过程,比如系统架构的结果进行质量管控。

ü  对不同规模、技术、质量、进度要求的项目进行分级控制。

3.1制定及修改项目计划

•   项目经理根据《项目计划规程》制定概要设计计划,明确设计(式样)管理组中参与概要设计人员的工作任务和完成时间,并通知各相关者进行确认。

•   项目进行中,根据给定需求的变更和概要设计的实际进度状况的跟踪结果,及时调整或重新制定概要设计的详细进度计划。

•   根据概要设计的进展状况,必要时修正计划并与客户达成一致。

注:与客户达成一致是外包的核心,计划以及核心内容和客户达成一致非常重要。

•   项目概要设计计划并入项目计划中。

 

3.2确定系统架构和概要设计准则

•   确定系统架构

a.  对于A、B类项目

  启动DAR(参见《决策分析规程》),分析风险、成本、进度的制约、技术、质量的要求,决定是否需要购买商业组件、是否复用已有构件。如果确认需要进行采购,请参见《供应商合同管理规程》。

  根据公司人员情况、项目业务特征、性能数据量要求、可靠性要求、成本、效率、风险等方面内容提出多种系统架构进行评定,最终选定适合项目的系统架构。

  输出参见《决策分析规程》的输出。

b.  对于非A、B类项目

  设计(式样)管理组根据公司人员情况、项目业务特征、性能数据量要求、可靠性要求、成本、效率、风险等方面内容对多种系统架构进行评定,最终选定适合项目的系统架构。

如果用户有不同于一般项目的要求或者采用了公司不熟悉的架构,开发技术(环境)组需制作项目原型,以验证技术架构方案并确保其正确性。

注:根据不同工作量、技术、质量、进度要求、团队规模等识别出项目分类,并对概要设计的关键控制点(体系结构)进行不同的管控。

 

•   确定概要设计准则

  设计(式样)管理组根据项目情况,确定项目的概要设计准则,准则通常包括:项目概要设计的方法、项目概要设计所使用的工具、概要设计成果物所使用的部分模板等。

  设计(式样)管理组定义各种方针,各单位机能模块设计时应遵循已定义的各类方针。

  通常需要定义的方针包括:操作、错误处理、日志、提示信息、异常处理、命名规约等方针。

  所定义的所有的处理方针均需形成文档,进行配置管理。

  对定义的所有内容形成《概要设计准则》。

3.3设计业务机能

•   设计(式样)管理组对《系统要件定义书》中定义的业务组件使用各种方法进行细化(包括拆分、合并、分组等),并将各需求分配到这些细分的业务组件或功能模块上。

•   设计(式样)管理组根据各类处理方针,对各单位机能组件和功能模块的外观、数据项目定义、功能概要、数据处理流程、操作方法、各机能组件或功能模块的接口和参数等进行设计。

•   定义各机能组件和功能模块的接口和参数,各设计人员需验证其接口衔接上的一致性。

•   将以上的内容加入对系统架构的描述,形成《概要设计书》。

•   设计(式样)管理组将概要设计的内容按照其和需求的对应关系填入《需求追踪矩阵》。

•   数据库逻辑设计。

3.4评审系统概要设计

•   项目经理组织项目评审专家组对概要设计的成果物进行评审(参见评审规程)。评审中发现的问题需体现于《概要设计评审报告》中。评审结束后,开发经理(PJL)跟踪这些问题,直到问题得到修正。

•   评审结束后,项目评审专家组需要根据评审的结论产生《概要设计评审报告》,并上报项目经理(PM)。

3.5确认概要设计

•   概要设计评审通过后,项目经理(PM)针对《概要设计书》取得客户的认可。

注:软件外包中的概要设计结果一般还需要客户的评审,这个也是项目屏蔽风险的主要方法,但是不同的客户技术水平并不相同,还要根据实际情况来判断。

 

3.6纳入基线管理

•   概要设计评审通过后,《概要设计准则》、《概要设计书》、《需求追踪矩阵》需纳入基线管理

•   本规程所产生的所有文档均需进行配置管理(参见配置管理规程)。产生的文档通常包括:

  《概要设计准则》

  《概要设计书》

  《概要设计评审报告》

 

案例2:软件产品类的典型流程

主要特征:

ü  流程强调交互设计

ü  强调设计方针的管理。

ü  对设计内容进行的明确规范

 

 

3.1计划编制

产品研发经理根据《开发详细时间计划》细化设计工作,编制《系统设计计划》。经相关人员确认后,提交产品团队经理审核,审核通过后发布计划。

产品团队经理应将《系统设计计划》及时合并到《开发详细时间计划》中。

3.2设计准则确定

系统设计组根据项目情况,确定设计准则。准则通常包括:设计的方法、设计使用的工具、设计成果物所使用的模板等。

系统设计组制定各种设计方针,设计过程中需遵循已定义的方针。

3.2.1概要设计准则

概要设计方针通常包含:功能模块命名规约、功能模块操作、错误处理、异常处理、提示信息显示、日志记录等。

系统设计组汇总概要设计方针形成《概要设计准则》。

3.2.2详细设计准则

详细设计的方针通常包含:类和方法命名规约、方法输入参数的排列次序、方法输出参数的格式、提示信息输出格式、方法级日志输出格式等。

系统设计组汇总详细设计方针形成《详细设计准则》。

3.2.3设计准则评审

产品研发经理宜组织资源对《概要设计准则》、《详细设计准则》进行评审,评审通过后,由配置组进行配置管理。

3.3概要设计

3.3.1《概要设计书》编制

《概要设计书》应包含以下内容:

  系统架构设计

  根据产品的业务特征、性能要求、可靠性要求、成本等方面内容,针对产品使用的技术平台和软硬件架构,提出多种候选方案;

  方案的内容应包含:系统使用的软硬件技术平台及相关技术列表、系统的物理架构、物理器件类型、数据库管理系统类型、服务器类型、子系统划分及部署方式、系统的软件架构、第三方软件平台列表等;

  功能模块设计

  根据《产品规格说明书》的定义,结合产品的领域知识,通过拆分、合并、分组等方法,将产品的各项功能划分到子系统中,并细化到各机能组件和功能模块上;

  系统接口设计

  接口主要用于子系统/模块之间或内部系统与外部系统进行各种交互;

  接口设计应根据制定各种方针,结合业务特点,并使用相应的设计方法;

  接口设计的内容应包含:接口的名称、功能描述、接口的输入输出定义、接口的使用方法、接口的数据处理流程、输入输出的数据结构定义、异常处理机制、错误处理机制、日志记录方法及格式等;

  数据库设计

  根据业务的复杂程度和设计实现的需要,对核心和重要的数据生成数据字典,对于复杂的操作流程,进行适当的流程说明;

  完成核心和重要库表的逻辑设计;

3.3.2《概要设计书》评审

产品研发经理组织相关干系人对《概要设计书》进行评审。评审通过后,由配置组进行配置管理。

3.4视觉设计

  视觉设计的主要工作是根据交互设计的低保真原型进行高保真视觉效果设计;

  视觉设计主要内容为整体风格把握,包括页面颜色、元素外观、配图;

注:强调交互设计中的视觉设计,单独作为一项工作内容进行管理。

 

3.5详细设计

3.5.1《详细设计书》编制

《详细设计书》应包含以下内容:

  模块接口设计

  对用于持久化的文件进行设计,设计的内容应包含:文件的存放位置、文件名称、内容编码、内容结构、读写控制机制等;

  对持久化内存数据进行设计,设计的内容应包含数据的存储格式、数据的缓存刷新机制、数据的读写时机和方式等;

  对数据库进行物理设计。设计的内容应包含:表、视图、存储过程等;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

概要设计、详细设计:概念、方法、实践步骤 的相关文章

随机推荐

  • uniapp 拍照和从相册选择的弹窗

    1 在common创建一个vue 把下列代码复制进去
  • linux安装 MySQL 5.7

    我的是CentOS 7 虚拟机 因为之前一直安装失败 浪费了不少时间 特此记录一下正确安装步骤 亲测可用 1 下载命令 wget https dev mysql com get mysql57 community release el7 9
  • 微信小程序云开发——图片展示,视频播放案例

    这次是帮朋友写的一个简单的小程序 考虑到成本和页面简单的问题 我就决定用小程序云开发来进行开发 后来实际开发的时候发现 页面用到图片实在是太多 CDN流量一个月5G根本不够用 但是我看到了数据库一天可以免费访问5万次 我就决定用base64
  • 区块链存证原理

    公证通 Factom公证通 一本由共识算法维护的账本 网录科技 网录科技CTO汪波 区块链做存证的原理及方式 专注区块链技术开发 网录科技千万级天使轮融资 Blockstack 官网 https blockstack org 白皮书 htt
  • 用python编写daemon监控进程并自动恢复

    用python编写daemon监控进程并自动恢复 下面这个程序是用于python编写daemon监控进程并自动恢复 参考http pythonhosted org KiTT modules kitt daemon html usr bin
  • mac下 docker 挂载目录权限问题(operation not permitted)

    在docker run 或者 docker compose yml 添加privileged true privileged的含义是让容器内的root拥有真正root用户的权限 否则它只是一个名为root的普通用户 但是在macos下 即使
  • select函数使用时应注意的问题

    问题一 fd set和timeval的重置 select函数的使用一般分为以下几步 1 FD ZERO fd set 2 FD SET int fd fd set 3 int select int n fd set readfds fd s
  • VSCode批量代码比较

    前言 最近因为工作原因 需要找出一个工程里面修改过的地方 VSCode里自带代码比较功能 可以高亮代码不同的地方 然而手动一个个打开文件来比较显然非常的繁琐 在网上检索后发现并没有相关的方法 因此 为了解决这个问题 在查阅了官方文档后 决定
  • 操作系统笔记整理12——磁盘存储器的管理

    点此链接可跳转到 操作系统笔记整理 目录索引页 参考书籍 计算机操作系统 第四版 汤小丹等编著 文章目录 点此链接可跳转到 操作系统笔记整理 目录索引页 外存的组织方式 连续组织方式 链接组织方式 隐式链接 显示链接 FAT File Al
  • [架构之路-200]- 性能需求与性能分析:影响性能的主要因素

    目录 前言 关于性能的几点说明 第一章 性能需求 提出各种性能指标 1 1 可靠性或可用性 stablity 1 2 处理能力或效率 Performance 1 2 1 指标是吞吐率 1 2 2 指标是响应时间 1 2 3 指标是资源利用率
  • 数据库SQL查询(一)

    本文介绍SQL查询 如何在海量数据中筛选想要数据 数据库管理系统选择 关系型数据库mysql 数据库管理工具选择 navicat 本文中查询语句和查询案例参考自 https edu csdn net course detail 27673
  • QXlsx读写数据库

    最近写读写xlsx文件的工具 用了Qt自带的比较卡 操作也不舒服 最后选择用了QXlsx QXlsx源码地址 github https github com dbzhang800 QtXlsxWriter QXlsx官网连接 Documen
  • AIX 软件包理论与实践

    AIX 软件包理论与实践 文档选项 打印本页 将此页作为电子邮件发送 未显示需要 JavaScript 的文档选项
  • Win10系统如何共享文件夹,教你怎么操作

    如何在两台电脑之间实现快速传输文件 最简单快捷的方法就是让这两台电脑共享文件夹 甚至都不用第三方的工具了 很多人可能都不知道如何设置共享文件 这里就和大家分享以下方法吧 更多系统教程尽在小白系统重装官网 系统 win10专业版 电脑 惠普
  • 使用openmv将检测到的视频传输到esp8266-12f使用spi来传输视频

    使用 OpenMV 将检测到的视频传输到 ESP8266 12F 使用 SPI 来传输视频的步骤如下 在 OpenMV 中使用摄像头捕捉视频 然后使用图像处理算法进行处理 将处理后的视频帧转换为适合通过 SPI 传输的格式 例如 JPEG
  • vue导出功能

    导出功能支持多级表头导出 导出后的excel自带可修改的样式 目录 前言 一 安装相关依赖 二 文件目录 1 Blob js 2 export js 3 Export2Excel js 三 创建导出组件 四 使用导出组件 前言 表格导出功能
  • Linux OOM killer(转)

    OOM killer 当物理内存和交换空间都被用完时 如果还有进程来申请内存 内核将触发OOM killer 其行为如下 1 检查文件 proc sys vm panic on oom 如果里面的值为2 那么系统一定会触发panic 2 如
  • 最新AI创作系统ChatGPT程序源码+详细搭建部署教程+微信公众号版+H5源码/支持GPT4.0+GPT联网提问/支持ai绘画+MJ以图生图+思维导图生成!

    使用Nestjs和Vue3框架技术 持续集成AI能力到系统 新增 MJ 官方图片重新生成指令功能 同步官方 Vary 指令 单张图片对比加强 Vary Strong Vary Subtle 同步官方 Zoom 指令 单张图片无限缩放 Zoo
  • stm32 esp8266配网-smartConfig和BT串口方式配网

    stm32 esp8266 ota系列文章 stm32 esp8266 ota 快速搭建web服务器之docker安装openresty stm32 esp8266 ota升级 tcp模拟http stm32 esp8266 ota升级 h
  • 概要设计、详细设计:概念、方法、实践步骤

    完整软件开发流程 需求分析 概要设计 详细设计 一 1 概念 方法 实践步骤 设计是指根据需求开发的结果 对产品的技术实现由粗到细进行设计的过程 根据设计粒度和目的的不同可以将设计分为概要设计 详细设计等阶段以便于管理和确保质量 设计内容也